亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? search_playlist.c

?? Aqualung is an advanced music player primarily targeted for the GNU/Linux operating system, but als
?? C
字號:
/*                                                     -*- linux-c -*-    Copyright (C) 2004 Tom Szilagyi    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.    $Id: search_playlist.c,v 1.8 2006/09/03 00:05:42 pasp Exp $*/#include <config.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <gtk/gtk.h>#include <gdk/gdkkeysyms.h>#include "common.h"#include "playlist.h"#include "gui_main.h"#include "options.h"#include "i18n.h"/* search flags */#define SEARCH_F_CS (1 << 0)    /* case sensitive */#define SEARCH_F_EM (1 << 1)    /* exact matches only */#define SEARCH_F_SF (1 << 2)    /* select first and close */extern options_t options;extern int search_pl_flags;extern GtkWidget* gui_stock_label_button(gchar *blabel, const gchar *bstock);extern GtkListStore * play_store;extern GtkWidget * play_list;extern GtkWidget * playlist_window;extern GtkWidget * main_window;static GtkWidget * search_window = NULL;static GtkWidget * searchkey_entry;static GtkWidget * check_case;static GtkWidget * check_exact;static GtkWidget * check_sfac;static GtkWidget * sres_list;static GtkListStore * search_store;static GtkTreeSelection * search_select;static int casesens;static int exactonly;static int selectfc;static voidget_toggle_buttons_state(void) {        casesens = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_case)) ? 1 : 0;	exactonly = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_exact)) ? 1 : 0;	selectfc = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check_sfac)) ? 1 : 0;}static voidclear_search_store(void) {	int i;	GtkTreeIter iter;	i = 0;	while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(search_store), &iter, NULL, i++)) {		gpointer gptr;		GtkTreePath * path;		gtk_tree_model_get(GTK_TREE_MODEL(search_store), &iter,				   1, &gptr, -1);		path = (GtkTreePath *)gptr;		if (path != NULL) {			gtk_tree_path_free(path);		}	}	gtk_list_store_clear(search_store);}static gintclose_button_clicked(GtkWidget * widget, gpointer data) {        get_toggle_buttons_state();        search_pl_flags = (casesens * SEARCH_F_CS) | (exactonly * SEARCH_F_EM) | (selectfc * SEARCH_F_SF);	clear_search_store();        gtk_widget_destroy(search_window);        search_window = NULL;        return TRUE;}static intsearch_window_close(GtkWidget * widget, gpointer * data) {        get_toggle_buttons_state();        search_pl_flags = (casesens * SEARCH_F_CS) | (exactonly * SEARCH_F_EM) | (selectfc * SEARCH_F_SF);	clear_search_store();        search_window = NULL;        return 0;}static gintsfac_clicked(GtkWidget * widget, gpointer data) {        get_toggle_buttons_state();        if (selectfc) {                gtk_widget_hide(sres_list);                gtk_window_resize(GTK_WINDOW(search_window), 420, 138);        } else {                gtk_window_resize(GTK_WINDOW(search_window), 420, 355);                gtk_widget_show(sres_list);        }        return TRUE;}voidsearch_foreach(GPatternSpec * pattern, GtkTreeIter * list_iter) {	char * text;	char * tmp = NULL;	gtk_tree_model_get(GTK_TREE_MODEL(play_store), list_iter, 0, &text, -1);	if (casesens) {		tmp = strdup(text);	} else {		tmp = g_utf8_strup(text, -1);	}	if (g_pattern_match_string(pattern, tmp)) {		GtkTreeIter iter;		GtkTreePath * path;		path = gtk_tree_model_get_path(GTK_TREE_MODEL(play_store), list_iter);		gtk_list_store_append(search_store, &iter);		gtk_list_store_set(search_store, &iter, 0, text, 1, (gpointer)path, -1);	}	g_free(tmp);	g_free(text);	deflicker();}static gintsearch_button_clicked(GtkWidget * widget, gpointer data) {	int valid;	const char * key_string = gtk_entry_get_text(GTK_ENTRY(searchkey_entry));	char key[MAXLEN];	GPatternSpec * pattern;	int i;	GtkTreeIter list_iter;	GtkTreeIter sfac_iter;        get_toggle_buttons_state();	clear_search_store();	valid = 0;	for (i = 0; key_string[i] != '\0'; i++) {		if ((key_string[i] != '?') && (key_string[i] != '*')) {			valid = 1;			break;		}	}	if (!valid) {		return TRUE;	}	if (!casesens) {		key_string = g_utf8_strup(key_string, -1);	}	if (exactonly) {		strcpy(key, key_string);	} else {		snprintf(key, MAXLEN-1, "*%s*", key_string);	}	pattern = g_pattern_spec_new(key);	i = 0;	while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(play_store), &list_iter, NULL, i++)) {		if (gtk_tree_model_iter_has_child(GTK_TREE_MODEL(play_store), &list_iter)) {			int j = 0;			GtkTreeIter iter;			while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(play_store),							     &iter, &list_iter, j++)) {				search_foreach(pattern, &iter);			}		} else {			search_foreach(pattern, &list_iter);		}	}	g_pattern_spec_free(pattern);        if (selectfc) {                                if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(search_store), &sfac_iter) == TRUE)                        gtk_tree_selection_select_iter(search_select, &sfac_iter);                close_button_clicked(NULL, NULL);        }        return TRUE;}static voidsearch_selection_changed(GtkTreeSelection * treeselection, gpointer user_data) {	GtkTreeIter iter;	GtkTreePath * path;	GtkTreePath * path_up;	gpointer gptr;	if (!gtk_tree_selection_get_selected(search_select, NULL, &iter)) {		return;	}	gtk_tree_model_get(GTK_TREE_MODEL(search_store), &iter,			   1, &gptr, -1);	path = (GtkTreePath *)gptr;	path_up = gtk_tree_path_copy(path);	if (gtk_tree_path_up(path_up)) {		gtk_tree_view_expand_row(GTK_TREE_VIEW(play_list), path_up, FALSE);	}	gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(play_list), path, NULL, TRUE, 0.5f, 0.5f);	gtk_tree_view_set_cursor(GTK_TREE_VIEW(play_list), path, NULL, FALSE);	gtk_tree_path_free(path_up);}static gintsearch_window_key_pressed(GtkWidget * widget, GdkEventKey * kevent) {	switch (kevent->keyval) {	case GDK_Escape:		close_button_clicked(NULL, NULL);		return TRUE;		break;	case GDK_Return:	case GDK_KP_Enter:		search_button_clicked(NULL, NULL);                return TRUE;		break;	}	return FALSE;}voidsearch_playlist_dialog(void) {	GtkWidget * vbox;	GtkWidget * hbox;	GtkWidget * label;	GtkWidget * button;	GtkWidget * table;	GtkWidget * hseparator;	GtkWidget * hbuttonbox;        GtkWidget * search_viewport;        GtkWidget * search_scrwin;        GtkWidget * search_list;        GtkCellRenderer * search_renderer;        GtkTreeViewColumn * search_column;        if (search_window != NULL) {		return;        }        search_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);        gtk_window_set_title(GTK_WINDOW(search_window), _("Search the Playlist"));        gtk_window_set_position(GTK_WINDOW(search_window), GTK_WIN_POS_CENTER_ON_PARENT);	if (options.playlist_is_embedded) {		gtk_window_set_transient_for(GTK_WINDOW(search_window), GTK_WINDOW(main_window));	} else {		gtk_window_set_transient_for(GTK_WINDOW(search_window), GTK_WINDOW(playlist_window));	}	gtk_window_set_modal(GTK_WINDOW(search_window), TRUE);        g_signal_connect(G_OBJECT(search_window), "delete_event",                         G_CALLBACK(search_window_close), NULL);        g_signal_connect(G_OBJECT(search_window), "key_press_event",			 G_CALLBACK(search_window_key_pressed), NULL);        gtk_container_set_border_width(GTK_CONTAINER(search_window), 5);        vbox = gtk_vbox_new(FALSE, 0);        gtk_widget_show(vbox);        gtk_container_add(GTK_CONTAINER(search_window), vbox);	hbox = gtk_hbox_new(FALSE, 0);        gtk_widget_show(hbox);        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 3);	label = gtk_label_new(_("Key: "));        gtk_widget_show(label);        gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);        searchkey_entry = gtk_entry_new();        gtk_widget_show(searchkey_entry);        gtk_box_pack_start(GTK_BOX(hbox), searchkey_entry, TRUE, TRUE, 5);	table = gtk_table_new(4, 2, FALSE);        gtk_widget_show(table);        gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, TRUE, 3);	check_case = gtk_check_button_new_with_label(_("Case sensitive"));        gtk_widget_show(check_case);	gtk_widget_set_name(check_case, "check_on_window");	gtk_table_attach(GTK_TABLE(table), check_case, 0, 1, 0, 1,			 GTK_EXPAND | GTK_FILL, GTK_FILL, 1, 4);	check_exact = gtk_check_button_new_with_label(_("Exact matches only"));        gtk_widget_show(check_exact);             gtk_widget_set_name(check_exact, "check_on_window");	gtk_table_attach(GTK_TABLE(table), check_exact, 1, 2, 0, 1,			 GTK_EXPAND | GTK_FILL, GTK_FILL, 1, 4);	check_sfac = gtk_check_button_new_with_label(_("Select first and close window"));        gtk_widget_show(check_sfac);     	gtk_widget_set_name(check_sfac, "check_on_window");        g_signal_connect(G_OBJECT(check_sfac), "clicked", G_CALLBACK(sfac_clicked), NULL);	gtk_table_attach(GTK_TABLE(table), check_sfac, 0, 1, 1, 2,			 GTK_EXPAND | GTK_FILL, GTK_FILL, 1, 4);	hbox = sres_list = gtk_hbox_new(FALSE, 0);        gtk_widget_show(hbox);     	gtk_container_set_border_width(GTK_CONTAINER(hbox), 3);        gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 3);	search_viewport = gtk_viewport_new(NULL, NULL);        gtk_widget_show(search_viewport);             gtk_box_pack_start(GTK_BOX(hbox), search_viewport, TRUE, TRUE, 0);        search_scrwin = gtk_scrolled_window_new(NULL, NULL);        gtk_widget_show(search_scrwin);             gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(search_scrwin),                                       GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);        gtk_container_add(GTK_CONTAINER(search_viewport), search_scrwin);        search_store = gtk_list_store_new(2,					  G_TYPE_STRING,   /* title */					  G_TYPE_POINTER); /* GtkTreePath */        gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(search_store), 0, GTK_SORT_ASCENDING);        search_list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(search_store));        gtk_widget_show(search_list);             gtk_widget_set_size_request(search_list, 400, 200);        gtk_container_add(GTK_CONTAINER(search_scrwin), search_list);        search_select = gtk_tree_view_get_selection(GTK_TREE_VIEW(search_list));        gtk_tree_selection_set_mode(search_select, GTK_SELECTION_SINGLE);        g_signal_connect(G_OBJECT(search_select), "changed",                         G_CALLBACK(search_selection_changed), NULL);        search_renderer = gtk_cell_renderer_text_new();        search_column = gtk_tree_view_column_new_with_attributes(_("Title"),                                                             search_renderer,                                                             "text", 0,                                                             NULL);        gtk_tree_view_column_set_sizing(GTK_TREE_VIEW_COLUMN(search_column),                                        GTK_TREE_VIEW_COLUMN_AUTOSIZE);        gtk_tree_view_column_set_resizable(GTK_TREE_VIEW_COLUMN(search_column), TRUE);        gtk_tree_view_column_set_sort_column_id(GTK_TREE_VIEW_COLUMN(search_column), 0);        gtk_tree_view_append_column(GTK_TREE_VIEW(search_list), search_column);        hseparator = gtk_hseparator_new ();        gtk_widget_show (hseparator);        gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, TRUE, 5);	hbuttonbox = gtk_hbutton_box_new();        gtk_widget_show (hbuttonbox);        gtk_box_set_spacing(GTK_BOX(hbuttonbox), 8);	gtk_box_pack_end(GTK_BOX(vbox), hbuttonbox, FALSE, TRUE, 0);	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbuttonbox), GTK_BUTTONBOX_END);        button = gui_stock_label_button(_("Search"), GTK_STOCK_FIND);        gtk_widget_show(button);       	gtk_container_add(GTK_CONTAINER(hbuttonbox), button);           g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(search_button_clicked), NULL);        button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);         gtk_widget_show(button);       	gtk_container_add(GTK_CONTAINER(hbuttonbox), button);   	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(close_button_clicked), NULL);        if (search_pl_flags & SEARCH_F_CS)                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_case), TRUE);        if (search_pl_flags & SEARCH_F_EM)                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_exact), TRUE);        if (search_pl_flags & SEARCH_F_SF)                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_sfac), TRUE);        gtk_widget_show(search_window);}// vim: shiftwidth=8:tabstop=8:softtabstop=8 :  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品三级麻豆| 亚洲国产精品尤物yw在线观看| 一本大道av伊人久久综合| 国内一区二区在线| 理论片日本一区| 日韩福利电影在线| 久草这里只有精品视频| 亚洲444eee在线观看| 伊人一区二区三区| 亚洲五码中文字幕| 午夜国产精品一区| 男女性色大片免费观看一区二区 | 亚洲成在线观看| 洋洋成人永久网站入口| 亚洲成人综合网站| 美国一区二区三区在线播放| 久久国产精品第一页| 国产福利91精品一区| av一区二区三区四区| 欧美在线色视频| 欧美日韩精品三区| 日韩欧美国产综合在线一区二区三区| 欧美成人乱码一区二区三区| 国产午夜精品一区二区三区嫩草| 久久精品日产第一区二区三区高清版 | 亚洲最大色网站| 亚洲伊人伊色伊影伊综合网| 日韩高清不卡在线| 久久久久久99精品| 欧美日韩在线观看一区二区| 91精品国产91久久久久久最新毛片| 欧美草草影院在线视频| 中文字幕亚洲不卡| 亚洲第一成人在线| 懂色av一区二区三区免费看| 欧美性受xxxx黑人xyx性爽| 欧美一级免费观看| 国产精品美女久久久久av爽李琼| 婷婷激情综合网| 国产精品一区二区果冻传媒| 色噜噜狠狠色综合中国| 日韩三级伦理片妻子的秘密按摩| 综合自拍亚洲综合图不卡区| 麻豆国产精品官网| 色综合久久久久网| 久久一区二区视频| 天堂成人国产精品一区| 成人美女视频在线观看| 91精品国产免费久久综合| 在线亚洲高清视频| 91亚洲午夜精品久久久久久| 日韩欧美激情四射| 亚洲成av人片一区二区| 国产69精品一区二区亚洲孕妇| 91精品国产全国免费观看| 国产精品灌醉下药二区| 国产精品一线二线三线精华| 欧美日韩大陆在线| 亚洲男人天堂一区| 精品一区二区免费视频| 在线不卡免费欧美| 玉米视频成人免费看| 成人少妇影院yyyy| 欧美激情在线看| 国产又黄又大久久| www日韩大片| 捆绑紧缚一区二区三区视频| 欧美午夜一区二区| 亚洲欧美激情一区二区| 成人av集中营| 中文字幕va一区二区三区| 国产一区二区福利视频| 欧美xxx久久| 久久国产精品第一页| 日韩女优毛片在线| 免费在线视频一区| 日韩精品在线一区| 韩国av一区二区| 激情综合五月婷婷| 91免费在线播放| 亚洲精品视频在线观看网站| 一本久久a久久精品亚洲| 国产精品看片你懂得| 成+人+亚洲+综合天堂| 亚洲欧美日韩在线| 欧洲激情一区二区| 日韩**一区毛片| 欧美成人一区二区三区片免费| 日韩影院在线观看| 日韩视频一区二区三区在线播放| 免费成人在线网站| 久久久久久久久久久黄色| 国产成人亚洲综合色影视| 国产精品久久久久久妇女6080 | 亚洲免费伊人电影| 欧美性极品少妇| 蜜臀av国产精品久久久久| 精品理论电影在线| 99综合影院在线| 天天色 色综合| 精品精品国产高清a毛片牛牛 | 色综合久久久久综合| 亚洲精品五月天| 日韩欧美一二区| 成人黄页在线观看| 五月综合激情网| 久久综合久久综合久久| 成人激情午夜影院| 日本aⅴ亚洲精品中文乱码| 国产视频一区不卡| 在线观看视频91| 国内精品伊人久久久久影院对白| 国产精品超碰97尤物18| 国产精品超碰97尤物18| 成人免费三级在线| 亚洲777理论| 国产精品久久久久久福利一牛影视| 一本色道久久加勒比精品| 久久成人久久爱| 亚洲午夜成aⅴ人片| 欧美国产日韩在线观看| 欧美片在线播放| av在线不卡电影| 久久99精品国产.久久久久久| 中文字幕一区二区三区四区| 日韩一区二区不卡| 在线看日韩精品电影| 国产精品综合av一区二区国产馆| 亚洲免费在线视频| 国产精品毛片大码女人| 欧美电影精品一区二区| 欧美日韩一区中文字幕| 成人动漫中文字幕| 精品一区二区三区在线播放视频| 一区二区三区四区激情| 国产精品嫩草久久久久| 欧美v亚洲v综合ⅴ国产v| 欧美三级韩国三级日本三斤| 不卡av在线网| 大陆成人av片| 国产麻豆精品一区二区| 日本成人在线视频网站| 午夜国产不卡在线观看视频| 亚洲人成人一区二区在线观看 | 国产一区二区在线观看免费| 日韩国产精品91| 亚洲成人黄色影院| 一区二区三区在线看| 亚洲欧美区自拍先锋| 国产精品久久久久久福利一牛影视 | 日韩视频在线一区二区| 欧美日韩国产大片| 欧美日韩国产乱码电影| 欧美中文字幕久久| 欧美色综合天天久久综合精品| 91色视频在线| 色就色 综合激情| 91精品国产91综合久久蜜臀| 9l国产精品久久久久麻豆| 色综合婷婷久久| 欧美伊人久久久久久久久影院 | 三级欧美韩日大片在线看| 亚洲午夜电影网| 日韩成人一区二区三区在线观看| 亚洲国产精品一区二区久久| 亚洲二区在线视频| 视频一区在线播放| 国产自产v一区二区三区c| 激情成人午夜视频| 国产一区二区在线视频| 成人国产电影网| 色欧美片视频在线观看| 欧美日本乱大交xxxxx| 欧美一区三区二区| 国产日韩精品一区二区三区 | 亚洲成年人影院| 图片区小说区区亚洲影院| 美女国产一区二区三区| 国内精品不卡在线| 色综合久久久久| 欧美一区二区三区啪啪| 日韩免费高清视频| 日韩一区在线播放| 丝袜美腿亚洲综合| 粉嫩在线一区二区三区视频| 日本精品视频一区二区三区| 91精品国产色综合久久久蜜香臀| 亚洲精品一区二区三区四区高清| 中文字幕一区二区三区不卡在线| 亚洲一区二区三区不卡国产欧美| 久久99久国产精品黄毛片色诱| 成人精品gif动图一区| 欧美日韩国产123区| 国产免费成人在线视频| 午夜影院在线观看欧美| 成人精品视频一区二区三区| 欧美一区二区三区影视| 国产精品美女一区二区三区 | 色综合中文字幕国产| 欧美少妇一区二区|