⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music_browser.c

📁 Aqualung is an advanced music player primarily targeted for the GNU/Linux operating system, but als
💻 C
📖 第 1 页 / 共 5 页
字号:
	viewport = gtk_viewport_new(NULL, NULL);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), viewport, TRUE, TRUE, 2);        scrolled_window = gtk_scrolled_window_new(NULL, NULL);        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),                                       GTK_POLICY_AUTOMATIC,                                       GTK_POLICY_AUTOMATIC);        gtk_container_add(GTK_CONTAINER(viewport), scrolled_window);        comment_view = gtk_text_view_new();	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(comment_view), 3);	gtk_text_view_set_right_margin(GTK_TEXT_VIEW(comment_view), 3);        gtk_text_view_set_editable(GTK_TEXT_VIEW(comment_view), TRUE);	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(comment_view));         gtk_text_buffer_set_text(GTK_TEXT_BUFFER(buffer), comment, -1);        gtk_text_view_set_buffer(GTK_TEXT_VIEW(comment_view), buffer);        gtk_container_add(GTK_CONTAINER(scrolled_window), comment_view);	gtk_widget_grab_focus(name_entry);	gtk_widget_show_all(dialog); display:	name[0] = '\0';	sort_name[0] = '\0';	comment[0] = '\0';        if (aqualung_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {                strcpy(name, gtk_entry_get_text(GTK_ENTRY(name_entry)));                strcpy(sort_name, gtk_entry_get_text(GTK_ENTRY(sort_name_entry)));		buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(comment_view));		gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(buffer), &iter_start, 0);		gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(buffer), &iter_end, -1);		strcpy(comment, gtk_text_buffer_get_text(GTK_TEXT_BUFFER(buffer),							 &iter_start, &iter_end, TRUE));		if (name[0] == '\0') {			goto display;		}		ret = 1;        } else {                name[0] = '\0';                sort_name[0] = '\0';                comment[0] = '\0';                ret = 0;        }        gtk_widget_destroy(dialog);        return ret;}intedit_artist_dialog(char * name, char * sort_name, char * comment) {	GtkWidget * dialog;	GtkWidget * table;	GtkWidget * hbox;	GtkWidget * name_label;	GtkWidget * sort_name_label;	GtkWidget * viewport;        GtkWidget * scrolled_window;	GtkWidget * comment_label;	GtkWidget * comment_view;        GtkTextBuffer * buffer;	GtkTextIter iter_start;	GtkTextIter iter_end;        int ret;        dialog = gtk_dialog_new_with_buttons(_("Edit Artist"),					     GTK_WINDOW(browser_window),					     GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,					     GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,					     GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,					     NULL);        gtk_widget_set_size_request(GTK_WIDGET(dialog), 350, 250);	gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);        gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_REJECT);	table = gtk_table_new(2, 2, FALSE);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, FALSE, TRUE, 2);	name_label = gtk_label_new(_("Visible name:"));        hbox = gtk_hbox_new(FALSE, 0);        gtk_box_pack_start(GTK_BOX(hbox), name_label, FALSE, FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5);        name_entry = gtk_entry_new();        g_signal_connect (G_OBJECT(name_entry), "key_press_event", G_CALLBACK(add_entry_key_press), NULL);        gtk_entry_set_max_length(GTK_ENTRY(name_entry), MAXLEN - 1);        gtk_entry_set_text(GTK_ENTRY(name_entry), name);	gtk_table_attach(GTK_TABLE(table), name_entry, 1, 2, 0, 1,			 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 5);	sort_name_label = gtk_label_new(_("Name to sort by:"));        hbox = gtk_hbox_new(FALSE, 0);        gtk_box_pack_start(GTK_BOX(hbox), sort_name_label, FALSE, FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 5);        sort_name_entry = gtk_entry_new();        gtk_entry_set_max_length(GTK_ENTRY(sort_name_entry), MAXLEN - 1);        gtk_entry_set_text(GTK_ENTRY(sort_name_entry), sort_name);	gtk_table_attach(GTK_TABLE(table), sort_name_entry, 1, 2, 1, 2,			 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 5);	comment_label = gtk_label_new(_("Comments:"));        hbox = gtk_hbox_new(FALSE, 0);        gtk_box_pack_start(GTK_BOX(hbox), comment_label, FALSE, FALSE, 5);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, TRUE, 2);	viewport = gtk_viewport_new(NULL, NULL);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), viewport, TRUE, TRUE, 2);        scrolled_window = gtk_scrolled_window_new(NULL, NULL);        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),                                       GTK_POLICY_AUTOMATIC,                                       GTK_POLICY_AUTOMATIC);        gtk_container_add(GTK_CONTAINER(viewport), scrolled_window);        comment_view = gtk_text_view_new();	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(comment_view), 3);	gtk_text_view_set_right_margin(GTK_TEXT_VIEW(comment_view), 3);        gtk_text_view_set_editable(GTK_TEXT_VIEW(comment_view), TRUE);	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(comment_view));        gtk_text_buffer_set_text(GTK_TEXT_BUFFER(buffer), comment, -1);        gtk_text_view_set_buffer(GTK_TEXT_VIEW(comment_view), buffer);        gtk_container_add(GTK_CONTAINER(scrolled_window), comment_view);	gtk_widget_grab_focus(name_entry);	gtk_widget_show_all(dialog); display:	name[0] = '\0';	sort_name[0] = '\0';	comment[0] = '\0';        if (aqualung_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {                strcpy(name, gtk_entry_get_text(GTK_ENTRY(name_entry)));                strcpy(sort_name, gtk_entry_get_text(GTK_ENTRY(sort_name_entry)));		buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(comment_view));		gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(buffer), &iter_start, 0);		gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(buffer), &iter_end, -1);		strcpy(comment, gtk_text_buffer_get_text(GTK_TEXT_BUFFER(buffer),							 &iter_start, &iter_end, TRUE));		if (name[0] == '\0') {			goto display;		}		ret = 1;        } else {                name[0] = '\0';                sort_name[0] = '\0';                comment[0] = '\0';                ret = 0;        }        gtk_widget_destroy(dialog);        return ret;}intbrowse_button_record_clicked(GtkWidget * widget, gpointer * data) {        GtkWidget * dialog;        const gchar * selected_filename;	GtkListStore * model = (GtkListStore *)data;	GtkTreeIter iter;        GSList *lfiles, *node;        dialog = gtk_file_chooser_dialog_new(_("Please select the audio files for this record."), 						    NULL,						    GTK_FILE_CHOOSER_ACTION_OPEN,						    GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,						    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,						    NULL);        deflicker();	if (options.show_hidden) {		gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(dialog), TRUE);	}        gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT);        gtk_window_set_default_size(GTK_WINDOW(dialog), 580, 390);        gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);        gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);        gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), options.currdir);        assign_audio_fc_filters(GTK_FILE_CHOOSER(dialog));        if (aqualung_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {                strncpy(options.currdir, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)),                                                                         MAXLEN-1);                lfiles = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));                node = lfiles;                while (node) {                        selected_filename = (char *) node->data;			if (selected_filename[strlen(selected_filename)-1] != '/') {				char * utf8 = g_locale_to_utf8(selected_filename, -1,							       NULL, NULL, NULL);				gtk_list_store_append(model, &iter);				gtk_list_store_set(model, &iter, 0, utf8, -1);				g_free(utf8);			}                        g_free(node->data);                        node = node->next;                }                g_slist_free(lfiles);        }                                                                 gtk_widget_destroy(dialog);	return 0;}voidclicked_tracklist_header(GtkWidget * widget, gpointer * data) {	GtkListStore * model = (GtkListStore *)data;	gtk_list_store_clear(model);}intadd_record_dialog(char * name, char * sort_name, char *** strings, char * comment) {	GtkWidget * dialog;	GtkWidget * table;	GtkWidget * hbox;	GtkWidget * name_label;	GtkWidget * sort_name_label;	GtkWidget * list_label;	GtkWidget * viewport1;	GtkWidget * scrolled_win;	GtkWidget * tracklist_tree;	GtkListStore * model;	GtkCellRenderer * cell;	GtkTreeViewColumn * column;	GtkTreeIter iter;	gchar * str;	GtkWidget * browse_button;	GtkWidget * viewport2;        GtkWidget * scrolled_window;	GtkWidget * comment_label;	GtkWidget * comment_view;        GtkTextBuffer * buffer;	GtkTextIter iter_start;	GtkTextIter iter_end;	int n, i;        int ret;        dialog = gtk_dialog_new_with_buttons(_("Add Record"),					     GTK_WINDOW(browser_window),					     GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,					     GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,					     GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,					     NULL);        gtk_widget_set_size_request(GTK_WIDGET(dialog), 400, 400);	gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);        gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_REJECT);	table = gtk_table_new(2, 2, FALSE);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, FALSE, TRUE, 2);	name_label = gtk_label_new(_("Visible name:"));        hbox = gtk_hbox_new(FALSE, 0);        gtk_box_pack_start(GTK_BOX(hbox), name_label, FALSE, FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5);        name_entry = gtk_entry_new();        g_signal_connect (G_OBJECT(name_entry), "key_press_event", G_CALLBACK(add_entry_key_press), NULL);        gtk_entry_set_max_length(GTK_ENTRY(name_entry), MAXLEN - 1);        gtk_entry_set_text(GTK_ENTRY(name_entry), name);	gtk_table_attach(GTK_TABLE(table), name_entry, 1, 2, 0, 1,			 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 5);	sort_name_label = gtk_label_new(_("Name to sort by:"));        hbox = gtk_hbox_new(FALSE, 0);        gtk_box_pack_start(GTK_BOX(hbox), sort_name_label, FALSE, FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 5);        sort_name_entry = gtk_entry_new();        gtk_entry_set_max_length(GTK_ENTRY(sort_name_entry), MAXLEN - 1);        gtk_entry_set_text(GTK_ENTRY(sort_name_entry), sort_name);	gtk_table_attach(GTK_TABLE(table), sort_name_entry, 1, 2, 1, 2,			 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 5);	list_label = gtk_label_new(_("Auto-create tracks from these files:"));        hbox = gtk_hbox_new(FALSE, 0);        gtk_box_pack_start(GTK_BOX(hbox), list_label, FALSE, FALSE, 5);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, TRUE, 2);	viewport1 = gtk_viewport_new(NULL, NULL);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), viewport1, TRUE, TRUE, 2);	scrolled_win = gtk_scrolled_window_new(NULL, NULL);	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_win),				       GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);        gtk_container_add(GTK_CONTAINER(viewport1), scrolled_win);	/* setup track list */	model = gtk_list_store_new(1, G_TYPE_STRING);	tracklist_tree = gtk_tree_view_new();	gtk_tree_view_set_model(GTK_TREE_VIEW(tracklist_tree), GTK_TREE_MODEL(model));        gtk_container_add(GTK_CONTAINER(scrolled_win), tracklist_tree);	gtk_widget_set_size_request(tracklist_tree, 250, 50);	cell = gtk_cell_renderer_text_new();	column = gtk_tree_view_column_new_with_attributes(_("Clear list"), cell, "text", 0, NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(tracklist_tree), GTK_TREE_VIEW_COLUMN(column));	gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(tracklist_tree), TRUE);        g_signal_connect(G_OBJECT(column->button), "clicked", G_CALLBACK(clicked_tracklist_header),			 (gpointer *)model);        gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), 0, GTK_SORT_ASCENDING);	browse_button = gui_stock_label_button(_("_Add files..."), GTK_STOCK_ADD);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), browse_button, FALSE, TRUE, 2);        g_signal_connect(G_OBJECT(browse_button), "clicked", G_CALLBACK(browse_button_record_clicked),			 (gpointer *)model);	comment_label = gtk_label_new(_("Comments:"));        hbox = gtk_hbox_new(FALSE, 0);        gtk_box_pack_start(GTK_BOX(hbox), comment_label, FALSE, FALSE, 5);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, TRUE, 2);	viewport2 = gtk_viewport_new(NULL, NULL);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), viewport2, TRUE, TRUE, 2);        scrolled_window = gtk_scrolled_window_new(NULL, NULL);        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),                                       GTK_POLICY_AUTOMATIC,                                       GTK_POLICY_AUTOMATIC);        gtk_container_add(GTK_CONTAINER(viewport2), scrolled_window);        comment_view = gtk_text_view_new();	gtk_text_view_set_left_margin(GTK_TEXT_VIEW(comment_view), 3);	gtk_text_view_set_right_margin(GTK_TEXT_VIEW(comment_view), 3);        gtk_text_view_set_editable(GTK_TEXT_VIEW(comment_view), TRUE);	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(comment_view));        gtk_text_buffer_set_text(GTK_TEXT_BUFFER(buffer), comment, -1);        gtk_text_view_set_buffer(GTK_TEXT_VIEW(comment_view), buffer);        gtk_container_add(GTK_CONTAINER(scrolled_window), comment_view);	gtk_widget_grab_focus(name_entry);	gtk_widget_show_all(dialog); display:	name[0] = '\0';	sort_name[0] = '\0';	comment[0] = '\0';        if (aqualung_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {                strcpy(name, gtk_entry_get_text(GTK_ENTRY(name_entry)));                strcpy(sort_name, gtk_entry_get_text(GTK_ENTRY(sort_name_entry)));		n = 0;		if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) {			/* count the number of list items */			n = 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -