From 4214bd18fd69aa97df83eaef94dc286f621847da Mon Sep 17 00:00:00 2001 From: Qball Cow Date: Mon, 11 May 2009 13:33:36 +0200 Subject: [PATCH] Fix layout to fit in, fix several minor bugs. --- src/plugin.c | 70 ++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/src/plugin.c b/src/plugin.c index d0274e5..bf145ca 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -134,7 +134,7 @@ static void save_song_to_file(const char *root, const mpd_Song *song) guint year = (guint) g_ascii_strtoll(song->date, NULL, 10); taglib_tag_set_year(tag, year); } - if(taglib_file_save(file)){ + if(!taglib_file_save(file)){ gchar *errorstr = g_strdup_printf("%s: %s '%s'", _("Tag Edit"), _("Failed to save song"), url); playlist3_show_error_message(errorstr, DEBUG_ERROR); g_free(errorstr); @@ -172,8 +172,10 @@ static void queue_selected_songs_for_edit(GtkMenuItem *item, GmpcMpdDataTreeview GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); if(!browser_model) browser_model = (GtkTreeModel *)gmpc_mpddata_model_tagedit_new(); - data = gmpc_mpddata_model_steal_mpd_data(GMPC_MPDDATA_MODEL(browser_model)); + selected = gtk_tree_selection_get_selected_rows(selection, &model); + data = gmpc_mpddata_model_steal_mpd_data(GMPC_MPDDATA_MODEL(browser_model)); + while(data && !mpd_data_is_last(data))data = mpd_data_get_next_real(data, FALSE); if(selected && root ) { GList *iter = g_list_first(selected); @@ -222,7 +224,7 @@ static void queue_selected_songs_for_edit(GtkMenuItem *item, GmpcMpdDataTreeview g_list_foreach (selected, (GFunc)gtk_tree_path_free, NULL); g_list_free (selected); } - gmpc_mpddata_model_set_mpd_data(GMPC_MPDDATA_MODEL(browser_model),data); + gmpc_mpddata_model_set_mpd_data(GMPC_MPDDATA_MODEL(browser_model),mpd_data_get_first(data)); } static int __song_list_option_menu ( GmpcMpdDataTreeview *tree, GtkMenu *menu) @@ -480,9 +482,13 @@ static void save_all(GtkWidget *button, gpointer data) /* check if song changed */ if(ud->changed > 0) { + GtkTreePath *path = gtk_tree_model_get_path(browser_model, &iter); printf("saving: %s\n", song->file); save_song_to_file(root, song); ud->changed = 0; + + gtk_tree_model_row_changed(browser_model, path, &iter); + gtk_tree_path_free(path); } } }while(gtk_tree_model_iter_next(browser_model, &iter)); @@ -564,7 +570,8 @@ static void __browser_init ( ) GtkWidget *hbox = NULL; GtkWidget *sw = NULL, *label; GtkWidget *table = NULL; - browser_box = gtk_vbox_new(FALSE, 6); + gchar *temp; + browser_box = gtk_hpaned_new();//(FALSE, 6); if(!browser_model) browser_model = (GtkTreeModel *)gmpc_mpddata_model_tagedit_new(); sw = gtk_scrolled_window_new(NULL, NULL); @@ -573,54 +580,66 @@ static void __browser_init ( ) browser_tree = gmpc_mpddata_treeview_new(CONFIG_NAME, TRUE, browser_model); gmpc_mpddata_treeview_enable_click_fix(GMPC_MPDDATA_TREEVIEW(browser_tree)); gtk_container_add(GTK_CONTAINER(sw), browser_tree); - gtk_box_pack_start(GTK_BOX(browser_box), sw, TRUE, TRUE,0); +// gtk_box_pack_start(GTK_BOX(browser_box), sw, TRUE, TRUE,0); + gtk_paned_add1(GTK_PANED(browser_box), sw); g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(browser_tree))), "changed", G_CALLBACK(browser_selection_changed), NULL); + + gtk_paned_set_position(GTK_PANED(browser_box), + cfg_get_single_value_as_int_with_default(config, CONFIG_NAME, "pane-pos", 150)); /** Add all the fill in fields */ - table = gtk_table_new(4,6,FALSE); + table = gtk_table_new(8,2,FALSE); + gtk_table_set_row_spacings(GTK_TABLE(table), 6); + gtk_table_set_col_spacings(GTK_TABLE(table), 6); + label = gtk_label_new(_("Tags")); + temp = g_markup_printf_escaped("%s", _("Tags")); + gtk_label_set_markup(GTK_LABEL(label), temp); + g_free(temp); + gtk_misc_set_alignment(GTK_MISC(label), 0.0,0.5); + gtk_table_attach(GTK_TABLE(table),label, 0,2,0,1,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); /* title */ label = gtk_label_new(_("Title")); gtk_misc_set_alignment(GTK_MISC(label), 1.0,0.5); - gtk_table_attach(GTK_TABLE(table),label, 0,1,0,1,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),label, 0,1,1,2,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); entries[0] = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table),entries[0], 1,2,0,1,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),entries[0], 1,2,1,2,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); signal_entries[0] = g_signal_connect(G_OBJECT(entries[0]), "changed", G_CALLBACK(__field_changed), GINT_TO_POINTER(0)); /* artist */ label = gtk_label_new(_("Artist")); gtk_misc_set_alignment(GTK_MISC(label), 1.0,0.5); - gtk_table_attach(GTK_TABLE(table),label, 0,1,1,2,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),label, 0,1,2,3,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); entries[1] = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table),entries[1], 1,2,1,2,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),entries[1], 1,2,2,3,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); signal_entries[1] = g_signal_connect(G_OBJECT(entries[1]), "changed", G_CALLBACK(__field_changed), GINT_TO_POINTER(1)); /* album */ label = gtk_label_new(_("Album")); gtk_misc_set_alignment(GTK_MISC(label), 1.0,0.5); - gtk_table_attach(GTK_TABLE(table),label, 0,1,2,3,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),label, 0,1,3,4,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); entries[2] = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table),entries[2], 1,2,2,3,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),entries[2], 1,2,3,4,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); signal_entries[2] = g_signal_connect(G_OBJECT(entries[2]), "changed", G_CALLBACK(__field_changed), GINT_TO_POINTER(2)); /* album */ label = gtk_label_new(_("Genre")); gtk_misc_set_alignment(GTK_MISC(label), 1.0,0.5); - gtk_table_attach(GTK_TABLE(table),label, 0,1,3,4,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),label, 0,1,4,5,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); entries[3] = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table),entries[3], 1,2,3,4,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),entries[3], 1,2,4,5,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); signal_entries[3] = g_signal_connect(G_OBJECT(entries[3]), "changed", G_CALLBACK(__field_changed), GINT_TO_POINTER(3)); /* album */ label = gtk_label_new(_("Year")); gtk_misc_set_alignment(GTK_MISC(label), 1.0,0.5); - gtk_table_attach(GTK_TABLE(table),label, 3,4,0,1,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),label, 0,1,5,6,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); entries[4] = gtk_spin_button_new_with_range(0, 3000,1); - gtk_table_attach(GTK_TABLE(table),entries[4], 4,5,0,1,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),entries[4], 1,2,5,6,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); signal_entries[4] = g_signal_connect(G_OBJECT(entries[4]), "value-changed", G_CALLBACK(__field_changed), GINT_TO_POINTER(4)); g_signal_connect(G_OBJECT(entries[4]), "key-press-event", G_CALLBACK(__key_release_event), NULL); /* album */ label = gtk_label_new(_("Track")); gtk_misc_set_alignment(GTK_MISC(label), 1.0,0.5); - gtk_table_attach(GTK_TABLE(table),label, 3,4,1,2,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); - entries[5] = gtk_spin_button_new_with_range(0, 3000,1); - gtk_table_attach(GTK_TABLE(table),entries[5], 4,5,1,2,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),label, 0,1,6,7,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + entries[5] = gtk_spin_button_new_with_range(0, 3600,1); + gtk_table_attach(GTK_TABLE(table),entries[5], 1,2,6,7,GTK_EXPAND|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); signal_entries[5] = g_signal_connect(G_OBJECT(entries[5]), "value-changed", G_CALLBACK(__field_changed), GINT_TO_POINTER(5)); g_signal_connect(G_OBJECT(entries[5]), "key-press-event", G_CALLBACK(__key_release_event), NULL); @@ -635,9 +654,11 @@ static void __browser_init ( ) g_signal_connect(G_OBJECT(label), "clicked", G_CALLBACK(clear_all), NULL); gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, TRUE,0); - gtk_table_attach(GTK_TABLE(table),hbox, 4,5,3,4,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); + gtk_table_attach(GTK_TABLE(table),hbox, 0,2,7,8,GTK_SHRINK|GTK_FILL, GTK_SHRINK|GTK_FILL, 0,0); - gtk_box_pack_start(GTK_BOX(browser_box), table, FALSE, TRUE,0); + //gtk_box_pack_start(GTK_BOX(browser_box), table, FALSE, TRUE,0); + + gtk_paned_add2(GTK_PANED(browser_box), table); g_signal_connect(G_OBJECT(browser_tree), "button-release-event", G_CALLBACK(__button_release_event), NULL); @@ -646,10 +667,9 @@ static void __browser_init ( ) g_object_ref(browser_box); { - gchar *root = cfg_get_single_value_as_string(config, CONFIG_NAME, "music_root"); + const gchar *root = connection_get_music_directory(); if((root == NULL || strlen(root) ==0) && browser_box) gtk_widget_set_sensitive(browser_box, FALSE); - if(root) g_free(root); } } static void __browser_add ( GtkWidget *cat_tree) @@ -762,6 +782,10 @@ static void __save_myself(void) gtk_tree_path_free(path); } } + if(browser_box) + { + cfg_set_single_value_as_int(config, CONFIG_NAME, "pane-pos", gtk_paned_get_position(GTK_PANED(browser_box))); + } } static void __init(void) { -- 2.11.4.GIT