commit afc2179643c98b67cea36701e39d026ff9c66061
Author: phantomjinx <p.g.richard...@phantomjinx.co.uk>
Date:   Fri Dec 24 22:20:25 2010 +0000

    Core Preferences fixes
    
    * plugin.c
     * Create proper destroy function for dialogs etc ...
    
    * core_prefs.c
     * Reformat source file in line with other source files
     * Instead of destroying the dialogs, hide them so that they can be reopened
    
    * core_prefs.xml
     * Destroy the dialog when the parent preference notebook is destroyed
     * Connect gtk_widget_hide_on_delete to delete event of each dialog so that
       clicking the cross on the dialog hides it rather than destroys it.

 plugins/core_preferences/core_prefs.c   |  797 ++++++++++++++-----------------
 plugins/core_preferences/core_prefs.h   |    1 +
 plugins/core_preferences/core_prefs.xml |   16 +
 plugins/core_preferences/plugin.c       |    2 +-
 4 files changed, 378 insertions(+), 438 deletions(-)
---
diff --git a/plugins/core_preferences/core_prefs.c 
b/plugins/core_preferences/core_prefs.c
index 0cc6bd9..b12febd 100644
--- a/plugins/core_preferences/core_prefs.c
+++ b/plugins/core_preferences/core_prefs.c
@@ -39,10 +39,9 @@
 static gchar *builder_path = NULL;
 static GtkWidget *notebook = NULL;
 /*
-    Begin types
-*/
-typedef struct _ind_string
-{
+ Begin types
+ */
+typedef struct _ind_string {
     gint index;
     const gchar *string;
 } ind_string;
@@ -51,85 +50,83 @@ typedef struct _ind_string
 #define COUNTOF(x) (sizeof(x) / sizeof((x)[0]))
 
 /*
-    Begin data
+ Begin data
 
-    0: checkbox glade ID
-    1: preference
-    2: dependency glade IDs, comma-separated
-*/
-const gchar *checkbox_map[][3] = {
+ 0: checkbox glade ID
+ 1: preference
+ 2: dependency glade IDs, comma-separated
+ */
+const gchar *checkbox_map[][3] =
+    {
     /* Music tab */
-    { "background_transfer", "file_convert_background_transfer", NULL },
-    { "add_subfolders", "add_recursively", NULL },
-    { "allow_duplicates", "!sha1", NULL },
-    { "delete_missing", "sync_delete_tracks", NULL },
-    { "update_existing_track", "update_existing", NULL },
-    { "include_neverplayed", "not_played_track", NULL },
+        { "background_transfer", "file_convert_background_transfer", NULL },
+        { "add_subfolders", "add_recursively", NULL },
+        { "allow_duplicates", "!sha1", NULL },
+        { "delete_missing", "sync_delete_tracks", NULL },
+        { "update_existing_track", "update_existing", NULL },
+        { "include_neverplayed", "not_played_track", NULL },
     /* Metadata tab */
-    { "read_tags", "readtags", NULL },
-    { "parse_filename_tags", "parsetags", "customize_tags" },
-    { "last_resort_tags", NULL, 
"tag_title,tag_artist,tag_album,tag_composer,tag_genre" },
-    { "write_tags", "id3_write", "tag_encoding,write_tags_legacy" },
-    { "write_tags_legacy", "!id3_write_id3v24", NULL },
-    { "mass_modify_tags", "multi_edit", NULL },
-    { "read_coverart", "coverart_apic", NULL },
-    { "template_coverart", "coverart_file", "customize_coverart" },
-    { "generate_video_thumbnails", "video_thumbnailer", 
"customize_video_thumbnailer" },
+        { "read_tags", "readtags", NULL },
+        { "parse_filename_tags", "parsetags", "customize_tags" },
+        { "last_resort_tags", NULL, 
"tag_title,tag_artist,tag_album,tag_composer,tag_genre" },
+        { "write_tags", "id3_write", "tag_encoding,write_tags_legacy" },
+        { "write_tags_legacy", "!id3_write_id3v24", NULL },
+        { "mass_modify_tags", "multi_edit", NULL },
+        { "read_coverart", "coverart_apic", NULL },
+        { "template_coverart", "coverart_file", "customize_coverart" },
+        { "generate_video_thumbnails", "video_thumbnailer", 
"customize_video_thumbnailer" },
     /* Feedback tab */
-    { "confirm_del_tracks", NULL, 
"confirm_from_ipod,confirm_from_hdd,confirm_from_db" },
-    { "confirm_from_ipod", "delete_ipod", NULL },
-    { "confirm_from_hdd", "delete_local_file", NULL },
-    { "confirm_from_db", "delete_database", NULL },
-    { "confirm_del_pl", "delete_file", NULL },
-    { "confirm_del_sync", "sync_confirm_delete", NULL },
-    { "msg_startup", "startup_messages", NULL },
-    { "msg_duplicates", "show_duplicates", NULL },
-    { "msg_results", "sync_show_summary", NULL },
-    { "msg_updated", "show_updated", NULL },
-    { "msg_unupdated", "show_non_updated", NULL },
-};
-
-const gchar *conv_checkbox_map[][3] = {
-    { "convert_ogg", "convert_ogg", NULL },
-    { "convert_flac", "convert_flac", NULL },
-    { "convert_mp3", "convert_mp3", NULL },
-    { "convert_aac", "convert_m4a", NULL },
-    { "convert_wav", "convert_wav", NULL },
-    { "convert_mp4", "convert_mp4", NULL },
-    { "display_conversion_log", "", NULL },
-};
-
-ind_string tag_checkbox_map[] = {
-    { 0, "tag_title" },
-    { 1, "tag_artist" },
-    { 2, "tag_album" },
-    { 3, "tag_genre" },
-    { 4, "tag_composer" },
-};
-
-const gchar *conv_scripts[] = {
-    "convert-2mp3.sh",
-    "convert-2m4a.sh",
-};
-
-ind_string conv_paths[] = {
-    { -1, "path_conv_ogg" },
-    { -1, "path_conv_flac" },
-    { TARGET_FORMAT_AAC, "path_conv_m4a" },
-    { TARGET_FORMAT_MP3, "path_conv_mp3" },
-    { -1, "path_conv_wav" },
-    { -1, "path_conv_mp4" }
-};
+        { "confirm_del_tracks", NULL, 
"confirm_from_ipod,confirm_from_hdd,confirm_from_db" },
+        { "confirm_from_ipod", "delete_ipod", NULL },
+        { "confirm_from_hdd", "delete_local_file", NULL },
+        { "confirm_from_db", "delete_database", NULL },
+        { "confirm_del_pl", "delete_file", NULL },
+        { "confirm_del_sync", "sync_confirm_delete", NULL },
+        { "msg_startup", "startup_messages", NULL },
+        { "msg_duplicates", "show_duplicates", NULL },
+        { "msg_results", "sync_show_summary", NULL },
+        { "msg_updated", "show_updated", NULL },
+        { "msg_unupdated", "show_non_updated", NULL }, };
+
+const gchar *conv_checkbox_map[][3] =
+    {
+        { "convert_ogg", "convert_ogg", NULL },
+        { "convert_flac", "convert_flac", NULL },
+        { "convert_mp3", "convert_mp3", NULL },
+        { "convert_aac", "convert_m4a", NULL },
+        { "convert_wav", "convert_wav", NULL },
+        { "convert_mp4", "convert_mp4", NULL },
+        { "display_conversion_log", "", NULL }, };
+
+ind_string tag_checkbox_map[] =
+    {
+        { 0, "tag_title" },
+        { 1, "tag_artist" },
+        { 2, "tag_album" },
+        { 3, "tag_genre" },
+        { 4, "tag_composer" }, };
+
+const gchar *conv_scripts[] =
+    { "convert-2mp3.sh", "convert-2m4a.sh", };
+
+ind_string conv_paths[] =
+    {
+        { -1, "path_conv_ogg" },
+        { -1, "path_conv_flac" },
+        { TARGET_FORMAT_AAC, "path_conv_m4a" },
+        { TARGET_FORMAT_MP3, "path_conv_mp3" },
+        { -1, "path_conv_wav" },
+        { -1, "path_conv_mp4" } };
 
 static TempPrefs *temp_prefs = NULL;
 static GtkBuilder* builder = NULL;
 
-static void update_checkbox_deps (GtkToggleButton *checkbox, const gchar 
*deps);
-static void init_checkbox (GtkToggleButton *checkbox, const gchar *pref, const 
gchar *deps);
-static gboolean tree_get_current_iter (GtkTreeView *view, GtkTreeIter *iter);
+static void update_checkbox_deps(GtkToggleButton *checkbox, const gchar *deps);
+static void init_checkbox(GtkToggleButton *checkbox, const gchar *pref, const 
gchar *deps);
+static gboolean tree_get_current_iter(GtkTreeView *view, GtkTreeIter *iter);
 
 static GtkWindow *notebook_get_parent_window() {
-    if (! notebook) {
+    if (!notebook) {
         return NULL;
     }
 
@@ -137,48 +134,43 @@ static GtkWindow *notebook_get_parent_window() {
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_agp_track_count_value_changed (GtkSpinButton *sender, 
gpointer e)
-{
-    gint num = gtk_spin_button_get_value_as_int (sender);
-    prefs_set_int ("misc_track_nr", num);
+ glade callback
+ */
+G_MODULE_EXPORT void on_agp_track_count_value_changed(GtkSpinButton *sender, 
gpointer e) {
+    gint num = gtk_spin_button_get_value_as_int(sender);
+    prefs_set_int("misc_track_nr", num);
 }
 
 /*
-    generic glade callback, used by many checkboxes
-*/
-G_MODULE_EXPORT void on_simple_checkbox_toggled (GtkToggleButton *sender, 
gpointer e)
-{
-    gboolean active = gtk_toggle_button_get_active (sender);
-    gchar *pref = (gchar *) g_object_get_data (G_OBJECT(sender), "pref");
-    gchar *deps = (gchar *) g_object_get_data (G_OBJECT(sender), "deps");
-
-    if(pref)
-    {
-        if(pref[0] == '!')      /* Checkbox is !preference */
+ generic glade callback, used by many checkboxes
+ */
+G_MODULE_EXPORT void on_simple_checkbox_toggled(GtkToggleButton *sender, 
gpointer e) {
+    gboolean active = gtk_toggle_button_get_active(sender);
+    gchar *pref = (gchar *) g_object_get_data(G_OBJECT(sender), "pref");
+    gchar *deps = (gchar *) g_object_get_data(G_OBJECT(sender), "deps");
+
+    if (pref) {
+        if (pref[0] == '!') /* Checkbox is !preference */
             prefs_set_int(pref + 1, !active);
         else
             prefs_set_int(pref, active);
     }
 
-    update_checkbox_deps (sender, deps);
+    update_checkbox_deps(sender, deps);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_tag_checkbox_toggled (GtkToggleButton *sender, 
gpointer e)
-{
-    gint index = *(gint *) g_object_get_data (G_OBJECT(sender), "index");
-    prefs_set_int_index ("tag_autoset", index, gtk_toggle_button_get_active 
(sender));
+ glade callback
+ */
+G_MODULE_EXPORT void on_tag_checkbox_toggled(GtkToggleButton *sender, gpointer 
e) {
+    gint index = *(gint *) g_object_get_data(G_OBJECT(sender), "index");
+    prefs_set_int_index("tag_autoset", index, 
gtk_toggle_button_get_active(sender));
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_browse_button_clicked (GtkButton *sender, gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_browse_button_clicked(GtkButton *sender, gpointer e) {
     GtkWidget *dialog;
     gchar *base, *args, *path;
     const gchar *space, *current;
@@ -186,287 +178,246 @@ G_MODULE_EXPORT void on_browse_button_clicked 
(GtkButton *sender, gpointer e)
 
     g_return_if_fail (entry);
 
-    dialog = gtk_file_chooser_dialog_new (_("Browse"),
-                                          GTK_WINDOW (gtk_widget_get_toplevel 
(GTK_WIDGET (sender))),
-                                          GTK_FILE_CHOOSER_ACTION_OPEN,
-                                          GTK_STOCK_CANCEL, 
GTK_RESPONSE_CANCEL,
-                                          GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
-                                          NULL);
-
+    dialog
+            = gtk_file_chooser_dialog_new(_("Browse"), GTK_WINDOW 
(gtk_widget_get_toplevel (GTK_WIDGET (sender))), GTK_FILE_CHOOSER_ACTION_OPEN, 
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, 
NULL);
 
-    current = gtk_entry_get_text (entry);
+    current = gtk_entry_get_text(entry);
     /* separate filename from command line arguments */
-    space = strchr (current, ' ');
-    if (space)
-    {
-        base = g_strndup (current, space-current);
-        args = g_strdup (space);
+    space = strchr(current, ' ');
+    if (space) {
+        base = g_strndup(current, space - current);
+        args = g_strdup(space);
     }
-    else
-    {
-        base = g_strdup (current);
+    else {
+        base = g_strdup(current);
         args = NULL;
     }
 
-    path = g_find_program_in_path (base);
+    path = g_find_program_in_path(base);
 
-    if (path)
-    {
-        gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), path);
+    if (path) {
+        gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), path);
     }
-    else
-    {
-        gchar *dir = g_path_get_dirname (base);
-        if (dir)
-        {
-        if (g_file_test (dir, G_FILE_TEST_IS_DIR) && g_path_is_absolute (dir))
-        {
-            gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog),
-                             dir);
-        }
+    else {
+        gchar *dir = g_path_get_dirname(base);
+        if (dir) {
+            if (g_file_test(dir, G_FILE_TEST_IS_DIR) && 
g_path_is_absolute(dir)) {
+                gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER (dialog), 
dir);
+            }
         }
-        g_free (dir);
+        g_free(dir);
     }
 
-    if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
-    {
-        gchar *filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER 
(dialog));
-        if (args)
-        {  /* add args to filename */
-        gchar *new = g_strdup_printf ("%s%s", filename, args);
-        gtk_entry_set_text (entry, new);
-        g_free (new);
+    if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+        gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER 
(dialog));
+        if (args) { /* add args to filename */
+            gchar *new = g_strdup_printf("%s%s", filename, args);
+            gtk_entry_set_text(entry, new);
+            g_free(new);
         }
-        else
-        {
-        gtk_entry_set_text (entry, filename);
+        else {
+            gtk_entry_set_text(entry, filename);
         }
-        g_free (filename);
+        g_free(filename);
     }
 
-    gtk_widget_destroy (GTK_WIDGET (dialog));
+    gtk_widget_destroy(GTK_WIDGET (dialog));
 
-    g_free (base);
-    g_free (path);
-    g_free (args);
+    g_free(base);
+    g_free(path);
+    g_free(args);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_unsetdeps_checkbox_toggled (GtkToggleButton *sender, 
gpointer e)
-{
-    if(builder && !gtk_toggle_button_get_active (sender))
-    {
+ glade callback
+ */
+G_MODULE_EXPORT void on_unsetdeps_checkbox_toggled(GtkToggleButton *sender, 
gpointer e) {
+    if (builder && !gtk_toggle_button_get_active(sender)) {
         int i;
-        const gchar *deps = (gchar *) g_object_get_data (G_OBJECT(sender), 
"deps");
-        gchar **deparray = g_strsplit (deps, ",", 0);
+        const gchar *deps = (gchar *) g_object_get_data(G_OBJECT(sender), 
"deps");
+        gchar **deparray = g_strsplit(deps, ",", 0);
 
-        for(i = 0; deparray[i]; i++)
-        {
+        for (i = 0; deparray[i]; i++) {
             GtkWidget *dep = GTK_WIDGET(gtk_builder_get_object(builder, 
deparray[i]));
-            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dep), FALSE);
+            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (dep), FALSE);
         }
-        g_strfreev (deparray);
+        g_strfreev(deparray);
     }
 
     /* and then call the default handler */
-    on_simple_checkbox_toggled (sender, e);
+    on_simple_checkbox_toggled(sender, e);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void open_encoding_dialog (GtkButton *sender, gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void open_encoding_dialog(GtkButton *sender, gpointer e) {
     GtkWidget *dlg = GTK_WIDGET(gtk_builder_get_object (builder, 
"prefs_encoding_dialog"));
     GtkWidget *combo = GTK_WIDGET(gtk_builder_get_object (builder, 
"encoding_combo"));
 
-    gtk_window_set_transient_for (GTK_WINDOW (dlg), 
notebook_get_parent_window());
+    gtk_window_set_transient_for(GTK_WINDOW (dlg), 
notebook_get_parent_window());
 
-    init_checkbox (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 
"use_encoding_for_update")),
-                   "update_charset", NULL);
+    init_checkbox(GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 
"use_encoding_for_update")), "update_charset", NULL);
 
-    init_checkbox (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 
"use_encoding_for_writing")),
-                   "write_charset", NULL);
+    init_checkbox(GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 
"use_encoding_for_writing")), "write_charset", NULL);
 
-    charset_init_combo_box (GTK_COMBO_BOX (combo));
+    charset_init_combo_box(GTK_COMBO_BOX (combo));
     gtk_builder_connect_signals(builder, NULL);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
+    gtk_dialog_run(GTK_DIALOG (dlg));
+    gtk_widget_hide(dlg);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_encoding_combo_changed (GtkComboBox *sender, gpointer 
e)
-{
-    gchar *description = gtk_combo_box_get_active_text (sender);
-    gchar *charset = charset_from_description (description);
+ glade callback
+ */
+G_MODULE_EXPORT void on_encoding_combo_changed(GtkComboBox *sender, gpointer 
e) {
+    gchar *description = gtk_combo_box_get_active_text(sender);
+    gchar *charset = charset_from_description(description);
 
-    prefs_set_string ("charset", charset);
-    g_free (charset);
+    prefs_set_string("charset", charset);
+    g_free(charset);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_customize_tags_clicked (GtkButton *sender, gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_customize_tags_clicked(GtkButton *sender, gpointer e) {
     GtkWidget *dlg = GTK_WIDGET(gtk_builder_get_object (builder, 
"prefs_tag_parse_dialog"));
     gchar *temp = prefs_get_string("parsetags_template");
 
-    gtk_window_set_transient_for (GTK_WINDOW (dlg), 
notebook_get_parent_window());
+    gtk_window_set_transient_for(GTK_WINDOW (dlg), 
notebook_get_parent_window());
 
-    if(temp)
-    {
-        gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (builder, 
"filename_pattern")),
-                            temp);
+    if (temp) {
+        gtk_entry_set_text(GTK_ENTRY (gtk_builder_get_object (builder, 
"filename_pattern")), temp);
 
-        g_free (temp);
+        g_free(temp);
     }
 
-    init_checkbox (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 
"overwrite_tags")),
-                   "parsetags_overwrite", NULL);
+    init_checkbox(GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 
"overwrite_tags")), "parsetags_overwrite", NULL);
 
     gtk_builder_connect_signals(builder, NULL);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
+    gtk_dialog_run(GTK_DIALOG (dlg));
+    gtk_widget_hide(dlg);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_filename_pattern_changed (GtkEditable *sender, 
gpointer e)
-{
-    prefs_set_string ("parsetags_template", gtk_entry_get_text (GTK_ENTRY 
(sender)));
+ glade callback
+ */
+G_MODULE_EXPORT void on_filename_pattern_changed(GtkEditable *sender, gpointer 
e) {
+    prefs_set_string("parsetags_template", gtk_entry_get_text(GTK_ENTRY 
(sender)));
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_customize_coverart_clicked (GtkButton *sender, 
gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_customize_coverart_clicked(GtkButton *sender, gpointer 
e) {
     GtkWidget *dlg = GTK_WIDGET(gtk_builder_get_object (builder, 
"prefs_coverart_dialog"));
     gchar *temp = prefs_get_string("coverart_template");
 
-    gtk_window_set_transient_for (GTK_WINDOW (dlg), 
notebook_get_parent_window());
+    gtk_window_set_transient_for(GTK_WINDOW (dlg), 
notebook_get_parent_window());
 
-    if(temp)
-    {
-        gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (builder, 
"coverart_pattern")),
-                            temp);
+    if (temp) {
+        gtk_entry_set_text(GTK_ENTRY (gtk_builder_get_object (builder, 
"coverart_pattern")), temp);
 
-        g_free (temp);
+        g_free(temp);
     }
 
     gtk_builder_connect_signals(builder, NULL);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
+    gtk_dialog_run(GTK_DIALOG (dlg));
+    gtk_widget_hide(dlg);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_customize_video_thumbnailer_clicked (GtkButton 
*sender, gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_customize_video_thumbnailer_clicked(GtkButton *sender, 
gpointer e) {
     GtkWidget *dlg = GTK_WIDGET(gtk_builder_get_object (builder, 
"prefs_video_thumbnailer_dialog"));
     gchar *temp = prefs_get_string("video_thumbnailer_prog");
 
-    gtk_window_set_transient_for (GTK_WINDOW (dlg), 
notebook_get_parent_window());
+    gtk_window_set_transient_for(GTK_WINDOW (dlg), 
notebook_get_parent_window());
 
-    if(temp)
-    {
-        gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (builder, 
"video_thumbnailer")),
-                            temp);
+    if (temp) {
+        gtk_entry_set_text(GTK_ENTRY (gtk_builder_get_object (builder, 
"video_thumbnailer")), temp);
 
-        g_free (temp);
+        g_free(temp);
     }
 
     gtk_builder_connect_signals(builder, NULL);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
+    gtk_dialog_run(GTK_DIALOG (dlg));
+    gtk_widget_hide(dlg);
 }
 
-
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_coverart_pattern_changed (GtkEditable *sender, 
gpointer e)
-{
-    prefs_set_string ("coverart_template", gtk_entry_get_text (GTK_ENTRY 
(sender)));
+ glade callback
+ */
+G_MODULE_EXPORT void on_coverart_pattern_changed(GtkEditable *sender, gpointer 
e) {
+    prefs_set_string("coverart_template", gtk_entry_get_text(GTK_ENTRY 
(sender)));
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_video_thumbnailer_changed (GtkEditable *sender, 
gpointer e)
-{
-    prefs_set_string ("video_thumbnailer_prog", gtk_entry_get_text (GTK_ENTRY 
(sender)));
+ glade callback
+ */
+G_MODULE_EXPORT void on_video_thumbnailer_changed(GtkEditable *sender, 
gpointer e) {
+    prefs_set_string("video_thumbnailer_prog", gtk_entry_get_text(GTK_ENTRY 
(sender)));
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_exclusions_clicked (GtkButton *sender, gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_exclusions_clicked(GtkButton *sender, gpointer e) {
     GtkWidget *dlg = GTK_WIDGET(gtk_builder_get_object (builder, 
"prefs_exclusions_dialog"));
     GtkWidget *tree = GTK_WIDGET(gtk_builder_get_object (builder, 
"exclusion_list"));
-    GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING);
-    GtkTreeViewColumn *column = gtk_tree_view_column_new ();
-    GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
+    GtkListStore *store = gtk_list_store_new(1, G_TYPE_STRING);
+    GtkTreeViewColumn *column = gtk_tree_view_column_new();
+    GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
     gchar *temp = prefs_get_string("exclude_file_mask");
 
-    gtk_window_set_transient_for (GTK_WINDOW (dlg), 
notebook_get_parent_window());
+    gtk_window_set_transient_for(GTK_WINDOW (dlg), 
notebook_get_parent_window());
 
-    if (temp)
-    {
+    if (temp) {
         gint i;
-        gchar **masks = g_strsplit (temp, ";", 0);
+        gchar **masks = g_strsplit(temp, ";", 0);
         GtkTreeIter iter;
 
-        g_free (temp);
+        g_free(temp);
 
-        for (i = 0; masks[i]; i++)
-        {
-            gtk_list_store_append (store, &iter);
+        for (i = 0; masks[i]; i++) {
+            gtk_list_store_append(store, &iter);
             gtk_list_store_set(store, &iter, 0, masks[i], -1);
         }
 
-        g_strfreev (masks);
+        g_strfreev(masks);
     }
 
-    gtk_tree_view_column_pack_start (column, renderer, TRUE);
-    gtk_tree_view_column_set_attributes (column, renderer, "text", 0, NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
-    gtk_tree_view_set_model (GTK_TREE_VIEW (tree), GTK_TREE_MODEL (store));
-    g_object_unref (store);
+    gtk_tree_view_column_pack_start(column, renderer, TRUE);
+    gtk_tree_view_column_set_attributes(column, renderer, "text", 0, NULL);
+    gtk_tree_view_append_column(GTK_TREE_VIEW (tree), column);
+    gtk_tree_view_set_model(GTK_TREE_VIEW (tree), GTK_TREE_MODEL (store));
+    g_object_unref(store);
 
     gtk_builder_connect_signals(builder, NULL);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
+    gtk_dialog_run(GTK_DIALOG (dlg));
+    gtk_widget_hide(dlg);
 }
 
-static gboolean tree_get_current_iter (GtkTreeView *view, GtkTreeIter *iter)
-{
-    GtkTreeModel *model = gtk_tree_view_get_model (view);
+static gboolean tree_get_current_iter(GtkTreeView *view, GtkTreeIter *iter) {
+    GtkTreeModel *model = gtk_tree_view_get_model(view);
     GtkTreePath *path;
 
-    gtk_tree_view_get_cursor (view, &path, NULL);
+    gtk_tree_view_get_cursor(view, &path, NULL);
 
     if (!path)
         return FALSE;
 
-    gtk_tree_model_get_iter (model, iter, path);
-    gtk_tree_path_free (path);
+    gtk_tree_model_get_iter(model, iter, path);
+    gtk_tree_path_free(path);
 
     return TRUE;
 }
 
-static void update_exclusions (GtkListStore *store)
-{
+static void update_exclusions(GtkListStore *store) {
     GtkTreeModel *model = GTK_TREE_MODEL (store);
-    gint rows = gtk_tree_model_iter_n_children (model, NULL);
+    gint rows = gtk_tree_model_iter_n_children(model, NULL);
     gchar **array = g_new (gchar *, rows + 1);
     gchar *temp;
     gint i;
@@ -474,312 +425,274 @@ static void update_exclusions (GtkListStore *store)
 
     array[rows] = NULL;
 
-    for (i = 0; i < rows; i++)
-    {
-        gtk_tree_model_iter_nth_child (model, &iter, NULL, i);
-        gtk_tree_model_get (model, &iter, 0, array + i, -1);
+    for (i = 0; i < rows; i++) {
+        gtk_tree_model_iter_nth_child(model, &iter, NULL, i);
+        gtk_tree_model_get(model, &iter, 0, array + i, -1);
     }
 
-    temp = g_strjoinv (";", array);
-    prefs_set_string ("exclude_file_mask", temp);
-    g_free (temp);
-    g_strfreev (array);
+    temp = g_strjoinv(";", array);
+    prefs_set_string("exclude_file_mask", temp);
+    g_free(temp);
+    g_strfreev(array);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_add_exclusion_clicked (GtkButton *sender, gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_add_exclusion_clicked(GtkButton *sender, gpointer e) {
     GtkWidget *tree = GTK_WIDGET(gtk_builder_get_object(builder, 
"exclusion_list"));
     GtkWidget *entry = GTK_WIDGET(gtk_builder_get_object(builder, 
"new_exclusion"));
-    const gchar *text = gtk_entry_get_text (GTK_ENTRY (entry));
+    const gchar *text = gtk_entry_get_text(GTK_ENTRY (entry));
 
-    if (text && text[0])
-    {
+    if (text && text[0]) {
         GtkListStore *store = GTK_LIST_STORE (gtk_tree_view_get_model 
(GTK_TREE_VIEW (tree)));
         GtkTreeIter iter;
 
-        gtk_list_store_append (store, &iter);
+        gtk_list_store_append(store, &iter);
         gtk_list_store_set(store, &iter, 0, text, -1);
-        gtk_entry_set_text (GTK_ENTRY (entry), "");
+        gtk_entry_set_text(GTK_ENTRY (entry), "");
 
-        update_exclusions (store);
+        update_exclusions(store);
     }
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_remove_exclusion_clicked (GtkButton *sender, gpointer 
e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_remove_exclusion_clicked(GtkButton *sender, gpointer 
e) {
     GtkWidget *tree = GTK_WIDGET(gtk_builder_get_object(builder, 
"exclusion_list"));
     GtkListStore *store = GTK_LIST_STORE (gtk_tree_view_get_model 
(GTK_TREE_VIEW (tree)));
-        GtkTreeIter iter;
+    GtkTreeIter iter;
 
-    if(!tree_get_current_iter (GTK_TREE_VIEW (tree), &iter) || 
gtk_list_store_iter_is_valid (store, &iter))
-    {
-        gtk_list_store_remove (store, &iter);
-        update_exclusions (store);
+    if (!tree_get_current_iter(GTK_TREE_VIEW (tree), &iter) || 
gtk_list_store_iter_is_valid(store, &iter)) {
+        gtk_list_store_remove(store, &iter);
+        update_exclusions(store);
     }
 }
 
-static void cmd_setup_widget (const gchar *entry_name, const gchar *envname, 
const gchar *browse_name)
-{
+static void cmd_setup_widget(const gchar *entry_name, const gchar *envname, 
const gchar *browse_name) {
     GtkWidget *entry = GTK_WIDGET(gtk_builder_get_object(builder, entry_name));
-    gchar *temp = prefs_get_string (envname);
-    if (!temp)
-    {
-    temp = g_strdup ("");
+    gchar *temp = prefs_get_string(envname);
+    if (!temp) {
+        temp = g_strdup("");
     }
-    gtk_entry_set_text (GTK_ENTRY (entry), temp);
-    g_free (temp);
+    gtk_entry_set_text(GTK_ENTRY (entry), temp);
+    g_free(temp);
 
-    g_object_set_data (G_OBJECT (entry), "envname", (gpointer)envname);
-    g_object_set_data (G_OBJECT (gtk_builder_get_object(builder, browse_name)),
-               "entry", entry);
+    g_object_set_data(G_OBJECT (entry), "envname", (gpointer) envname);
+    g_object_set_data(G_OBJECT (gtk_builder_get_object(builder, browse_name)), 
"entry", entry);
 }
 
-
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_normalization_clicked (GtkButton *sender, gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_normalization_clicked(GtkButton *sender, gpointer e) {
     GtkWidget *dlg = GTK_WIDGET(gtk_builder_get_object(builder, 
"prefs_normalization_dialog"));
 
-    gtk_window_set_transient_for (GTK_WINDOW (dlg), 
notebook_get_parent_window());
+    gtk_window_set_transient_for(GTK_WINDOW (dlg), 
notebook_get_parent_window());
 
-    cmd_setup_widget ("cmd_mp3gain", "path_mp3gain", "browse_mp3gain");
-    cmd_setup_widget ("cmd_aacgain", "path_aacgain", "browse_aacgain");
+    cmd_setup_widget("cmd_mp3gain", "path_mp3gain", "browse_mp3gain");
+    cmd_setup_widget("cmd_aacgain", "path_aacgain", "browse_aacgain");
 
     gtk_builder_connect_signals(builder, NULL);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
+    gtk_dialog_run(GTK_DIALOG (dlg));
+    gtk_widget_hide(dlg);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_cmd_entry_changed (GtkEditable *sender, gpointer e)
-{
-    const gchar *envname = g_object_get_data (G_OBJECT (sender), "envname");
+ glade callback
+ */
+G_MODULE_EXPORT void on_cmd_entry_changed(GtkEditable *sender, gpointer e) {
+    const gchar *envname = g_object_get_data(G_OBJECT (sender), "envname");
 
-    prefs_set_string (envname, gtk_entry_get_text (GTK_ENTRY (sender)));
+    prefs_set_string(envname, gtk_entry_get_text(GTK_ENTRY (sender)));
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_conversion_settings_clicked (GtkButton *sender, 
gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_conversion_settings_clicked(GtkButton *sender, 
gpointer e) {
     GtkWidget *dlg = GTK_WIDGET(gtk_builder_get_object(builder, 
"prefs_conversion_dialog"));
-    gchar *temp = prefs_get_string ("file_convert_cachedir");
+    gchar *temp = prefs_get_string("file_convert_cachedir");
     gint i;
 
-    gtk_window_set_transient_for (GTK_WINDOW (dlg), 
notebook_get_parent_window());
+    gtk_window_set_transient_for(GTK_WINDOW (dlg), 
notebook_get_parent_window());
 
-    if(temp)
-    {
-        gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER 
(gtk_builder_get_object(builder, "cache_folder")),
-                                             temp);
-
-        g_free (temp);
+    if (temp) {
+        gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER 
(gtk_builder_get_object(builder, "cache_folder")), temp);
+        g_free(temp);
     }
 
-    gtk_spin_button_set_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object(builder, "bg_threads")),
-                               prefs_get_int("file_convert_max_threads_num"));
-
-    gtk_spin_button_set_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object(builder, "cache_size")),
-                               prefs_get_int("file_convert_maxdirsize"));
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON (gtk_builder_get_object(builder, 
"bg_threads")), prefs_get_int("file_convert_max_threads_num"));
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON (gtk_builder_get_object(builder, 
"cache_size")), prefs_get_int("file_convert_maxdirsize"));
 
-    for (i = 0; i < COUNTOF(conv_checkbox_map); i++)
-    {
-        init_checkbox (GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, 
conv_checkbox_map[i][0])),
-                       conv_checkbox_map[i][1], conv_checkbox_map[i][2]);
+    for (i = 0; i < COUNTOF(conv_checkbox_map); i++) {
+        init_checkbox(GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, 
conv_checkbox_map[i][0])), conv_checkbox_map[i][1], conv_checkbox_map[i][2]);
     }
 
     gtk_builder_connect_signals(builder, NULL);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
-    file_convert_prefs_changed ();
+    gtk_dialog_run(GTK_DIALOG (dlg));
+    gtk_widget_hide(dlg);
+    file_convert_prefs_changed();
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_cache_folder_current_folder_changed (GtkFileChooser 
*sender, gpointer e)
-{
-    prefs_set_string ("file_convert_cachedir",
-                      gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER 
(sender)));
+ glade callback
+ */
+G_MODULE_EXPORT void on_cache_folder_current_folder_changed(GtkFileChooser 
*sender, gpointer e) {
+    prefs_set_string("file_convert_cachedir", 
gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER (sender)));
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_bg_threads_value_changed (GtkSpinButton *sender, 
gpointer e)
-{
-    prefs_set_int ("file_convert_max_threads_num", 
gtk_spin_button_get_value_as_int (sender));
+ glade callback
+ */
+G_MODULE_EXPORT void on_bg_threads_value_changed(GtkSpinButton *sender, 
gpointer e) {
+    prefs_set_int("file_convert_max_threads_num", 
gtk_spin_button_get_value_as_int(sender));
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_cache_size_value_changed (GtkSpinButton *sender, 
gpointer e)
-{
-    prefs_set_int ("file_convert_maxdirsize", gtk_spin_button_get_value_as_int 
(sender));
+ glade callback
+ */
+G_MODULE_EXPORT void on_cache_size_value_changed(GtkSpinButton *sender, 
gpointer e) {
+    prefs_set_int("file_convert_maxdirsize", 
gtk_spin_button_get_value_as_int(sender));
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_target_format_changed (GtkComboBox *sender, gpointer e)
-{
-    gint index = gtk_combo_box_get_active (sender);
-    gchar *script = g_build_filename (get_script_dir(), conv_scripts[index], 
NULL);
+ glade callback
+ */
+G_MODULE_EXPORT void on_target_format_changed(GtkComboBox *sender, gpointer e) 
{
+    gint index = gtk_combo_box_get_active(sender);
+    gchar *script = g_build_filename(get_script_dir(), conv_scripts[index], 
NULL);
     gint i;
 
-    for (i = 0; i < COUNTOF (conv_paths); i++)
-    {
-        if (conv_paths[i].index == index)
-        {
+    for (i = 0; i < COUNTOF (conv_paths); i++) {
+        if (conv_paths[i].index == index) {
             /*
-                The source format is the same as the target format -
-                we set "null conversion" without touching the boolean 
preference
-            */
-            prefs_set_string (conv_paths[i].string, "");
+             The source format is the same as the target format -
+             we set "null conversion" without touching the boolean preference
+             */
+            prefs_set_string(conv_paths[i].string, "");
         }
         else
-            prefs_set_string (conv_paths[i].string, script);
+            prefs_set_string(conv_paths[i].string, script);
     }
 
-    prefs_set_int ("conversion_target_format", index);
-    g_free (script);
-    file_convert_prefs_changed ();
+    prefs_set_int("conversion_target_format", index);
+    g_free(script);
+    file_convert_prefs_changed();
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_replaygain_clicked (GtkButton *sender, gpointer e)
-{
+ glade callback
+ */
+G_MODULE_EXPORT void on_replaygain_clicked(GtkButton *sender, gpointer e) {
     GtkWidget *dlg = GTK_WIDGET(gtk_builder_get_object(builder, 
"prefs_replaygain_dialog"));
     GtkWidget *mode_album_radio = GTK_WIDGET(gtk_builder_get_object(builder, 
"mode_album"));
     GtkWidget *mode_track_radio = GTK_WIDGET(gtk_builder_get_object(builder, 
"mode_track"));
 
-    gtk_window_set_transient_for (GTK_WINDOW (dlg), 
notebook_get_parent_window());
+    gtk_window_set_transient_for(GTK_WINDOW (dlg), 
notebook_get_parent_window());
 
-    gtk_spin_button_set_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object(builder, "replaygain_offset")), 
prefs_get_int("replaygain_offset"));
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON (gtk_builder_get_object(builder, 
"replaygain_offset")), prefs_get_int("replaygain_offset"));
 
-    if(prefs_get_int("replaygain_mode_album_priority"))
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mode_album_radio), 
TRUE);
+    if (prefs_get_int("replaygain_mode_album_priority"))
+        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (mode_album_radio), 
TRUE);
     else
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mode_track_radio), 
TRUE);
+        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (mode_track_radio), 
TRUE);
 
     gtk_builder_connect_signals(builder, NULL);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
+    gtk_dialog_run(GTK_DIALOG (dlg));
+    gtk_widget_hide(dlg);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_replaygain_mode_album_toggled (GtkToggleButton 
*sender, gpointer e)
-{
-    gboolean active = gtk_toggle_button_get_active (sender);
+ glade callback
+ */
+G_MODULE_EXPORT void on_replaygain_mode_album_toggled(GtkToggleButton *sender, 
gpointer e) {
+    gboolean active = gtk_toggle_button_get_active(sender);
 
-    prefs_set_int ("replaygain_mode_album_priority", active);
+    prefs_set_int("replaygain_mode_album_priority", active);
 }
 
 /*
-    glade callback
-*/
-G_MODULE_EXPORT void on_replaygain_offset_value_changed (GtkSpinButton 
*sender, gpointer e)
-{
-    prefs_set_int ("replaygain_offset", gtk_spin_button_get_value_as_int 
(sender));
+ glade callback
+ */
+G_MODULE_EXPORT void on_replaygain_offset_value_changed(GtkSpinButton *sender, 
gpointer e) {
+    prefs_set_int("replaygain_offset", 
gtk_spin_button_get_value_as_int(sender));
 }
 
-static void update_checkbox_deps (GtkToggleButton *checkbox, const gchar *deps)
-{
+static void update_checkbox_deps(GtkToggleButton *checkbox, const gchar *deps) 
{
     /* Enable or disable dependent checkboxes */
-    gboolean active = gtk_toggle_button_get_active (checkbox);
+    gboolean active = gtk_toggle_button_get_active(checkbox);
     gchar **deparray;
     int i;
 
-    if(!builder || !deps)
+    if (!builder || !deps)
         return;
 
-    deparray = g_strsplit (deps, ",", 0);
+    deparray = g_strsplit(deps, ",", 0);
 
-    for(i = 0; deparray[i]; i++)
-    {
-        GtkWidget *dep =  GTK_WIDGET(gtk_builder_get_object(builder, 
deparray[i]));
-        gtk_widget_set_sensitive (dep, active);
+    for (i = 0; deparray[i]; i++) {
+        GtkWidget *dep = GTK_WIDGET(gtk_builder_get_object(builder, 
deparray[i]));
+        gtk_widget_set_sensitive(dep, active);
     }
 
-    g_strfreev (deparray);
+    g_strfreev(deparray);
 }
 
-static void init_checkbox (GtkToggleButton *checkbox, const gchar *pref, const 
gchar *deps)
-{
+static void init_checkbox(GtkToggleButton *checkbox, const gchar *pref, const 
gchar *deps) {
     g_object_set_data(G_OBJECT(checkbox), "pref", (gchar *) pref);
     g_object_set_data(G_OBJECT(checkbox), "deps", (gchar *) deps);
 
-    if(pref)
-    {
-        if(pref[0] == '!')      /* Checkbox is !preference */
+    if (pref) {
+        if (pref[0] == '!') /* Checkbox is !preference */
             gtk_toggle_button_set_active(checkbox, !prefs_get_int(pref + 1));
         else
             gtk_toggle_button_set_active(checkbox, prefs_get_int(pref));
     }
 
-    update_checkbox_deps (checkbox, deps);
+    update_checkbox_deps(checkbox, deps);
 }
 
-static void setup_values ()
-{
+static void setup_values() {
     gint i;
 
     GtkWidget *skip_track_update_radio = GTK_WIDGET(gtk_builder_get_object 
(builder, "skip_track_update"));
 
-    gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(builder, "agp_track_count")),
-                               prefs_get_int("misc_track_nr"));
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON (gtk_builder_get_object 
(builder, "agp_track_count")), prefs_get_int("misc_track_nr"));
 
     /* Check boxes */
-    for (i = 0; i < COUNTOF(checkbox_map); i++)
-    {
-        init_checkbox (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 
checkbox_map[i][0])),
-                       checkbox_map[i][1], checkbox_map[i][2]);
+    for (i = 0; i < COUNTOF(checkbox_map); i++) {
+        init_checkbox(GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 
checkbox_map[i][0])), checkbox_map[i][1], checkbox_map[i][2]);
     }
 
-    for (i = 0; i < COUNTOF(tag_checkbox_map); i++)
-    {
+    for (i = 0; i < COUNTOF(tag_checkbox_map); i++) {
         GtkWidget *widget = GTK_WIDGET(gtk_builder_get_object (builder, 
tag_checkbox_map[i].string));
-        g_object_set_data (G_OBJECT (widget), "index", 
&tag_checkbox_map[i].index);
+        g_object_set_data(G_OBJECT (widget), "index", 
&tag_checkbox_map[i].index);
 
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
-                                      prefs_get_int_index ("tag_autoset", 
tag_checkbox_map[i].index));
+        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (widget), 
prefs_get_int_index("tag_autoset", tag_checkbox_map[i].index));
     }
 
-    if(!prefs_get_int("update_existing"))
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(skip_track_update_radio), TRUE);
+    if (!prefs_get_int("update_existing"))
+        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON 
(skip_track_update_radio), TRUE);
 
-    gtk_combo_box_set_active (GTK_COMBO_BOX (gtk_builder_get_object (builder, 
"target_format")),
-                              prefs_get_int ("conversion_target_format"));
+    gtk_combo_box_set_active(GTK_COMBO_BOX (gtk_builder_get_object (builder, 
"target_format")), prefs_get_int("conversion_target_format"));
 }
 
 static GtkWidget *create_preference_notebook() {
-    GError* error = NULL;
     GtkWidget *notebook;
+    GError* error = NULL;
+
+    g_return_val_if_fail(builder_path, NULL);
 
     builder = gtk_builder_new();
 
     gtk_builder_add_from_file(builder, builder_path, &error);
     if (error) {
-        g_warning("Could not load settings preferences: %s", error->message);
+        g_warning("Failed to load core preferences component because '%s'", 
error->message);
         g_error_free(error);
         return NULL;
     }
+
     notebook = GTK_WIDGET (gtk_builder_get_object (builder, 
"settings_notebook"));
     GtkWidget *parent = gtk_widget_get_parent(notebook);
     g_object_ref(notebook);
@@ -797,8 +710,18 @@ GtkWidget *init_settings_preferences(gchar 
*builder_file_path) {
 
     builder_path = builder_file_path;
     temp_prefs = temp_prefs_create();
-    temp_prefs_copy_prefs (temp_prefs);
+    temp_prefs_copy_prefs(temp_prefs);
 
     notebook = create_preference_notebook();
     return notebook;
 }
+
+void destroy_settings_preferences() {
+    if (notebook)
+        gtk_widget_destroy(notebook);
+
+    if (builder)
+        g_object_unref(builder);
+
+    builder_path = NULL;
+}
diff --git a/plugins/core_preferences/core_prefs.h 
b/plugins/core_preferences/core_prefs.h
index 3494ead..a9e7a2b 100644
--- a/plugins/core_preferences/core_prefs.h
+++ b/plugins/core_preferences/core_prefs.h
@@ -37,5 +37,6 @@
 #include <gtk/gtk.h>
 
 GtkWidget *init_settings_preferences();
+void destroy_settings_preferences();
 
 #endif
diff --git a/plugins/core_preferences/core_prefs.xml 
b/plugins/core_preferences/core_prefs.xml
index 9d378fa..ef341be 100644
--- a/plugins/core_preferences/core_prefs.xml
+++ b/plugins/core_preferences/core_prefs.xml
@@ -66,9 +66,11 @@
     <property name="resizable">False</property>
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="has_separator">False</property>
+    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox7">
         <property name="visible">True</property>
@@ -209,9 +211,11 @@
     <property name="resizable">False</property>
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="has_separator">False</property>
+    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox8">
         <property name="visible">True</property>
@@ -337,9 +341,11 @@ Example: &lt;i&gt;%a - %A/%T %t.mp3;%t.wav&lt;/i&gt;.
     <property name="resizable">False</property>
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="has_separator">False</property>
+    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox10">
         <property name="visible">True</property>
@@ -455,9 +461,11 @@ Examples:
     <property name="resizable">False</property>
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="has_separator">False</property>
+    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox17">
         <property name="visible">True</property>
@@ -558,9 +566,11 @@ Examples:
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
     <property name="default_height">350</property>
+    <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="has_separator">False</property>
+    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox11">
         <property name="visible">True</property>
@@ -710,9 +720,11 @@ Examples:
     <property name="border_width">5</property>
     <property name="resizable">False</property>
     <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="has_separator">False</property>
+    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox13">
         <property name="visible">True</property>
@@ -981,9 +993,11 @@ Examples:
     <property name="title" translatable="yes">Conversion Preferences</property>
     <property name="resizable">False</property>
     <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="has_separator">False</property>
+    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox14">
         <property name="visible">True</property>
@@ -1418,8 +1432,10 @@ Examples:
     <property name="title" translatable="yes">ReplayGain Preferences</property>
     <property name="resizable">False</property>
     <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <property name="has_separator">False</property>
+    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox19">
         <property name="visible">True</property>
diff --git a/plugins/core_preferences/plugin.c 
b/plugins/core_preferences/plugin.c
index daf0096..ea68aee 100644
--- a/plugins/core_preferences/plugin.c
+++ b/plugins/core_preferences/plugin.c
@@ -130,7 +130,7 @@ static void ipreferences_merge(IAnjutaPreferences* ipref, 
AnjutaPreferences* pre
 static void ipreferences_unmerge(IAnjutaPreferences* ipref, AnjutaPreferences* 
prefs, GError** e) {
     anjuta_preferences_remove_page(prefs, _("Settings"));
     CorePrefsPlugin* prefs_plugin = GTKPOD_CORE_PREFS_PLUGIN(ipref);
-    gtk_widget_destroy(prefs_plugin->prefs);
+    destroy_settings_preferences();
 }
 
 static void ipreferences_iface_init(IAnjutaPreferencesIface* iface) {

------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gtkpod-cvs2 mailing list
gtkpod-cvs2@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to