Revision: 1900
          http://gtkpod.svn.sourceforge.net/gtkpod/?rev=1900&view=rev
Author:   Sikon
Date:     2008-01-02 09:00:05 -0800 (Wed, 02 Jan 2008)

Log Message:
-----------
Fixes for some (not all) prefs regressions

Modified Paths:
--------------
    gtkpod/trunk/ChangeLog
    gtkpod/trunk/data/gtkpod.glade
    gtkpod/trunk/src/fileselection.c
    gtkpod/trunk/src/prefsdlg.c

Modified: gtkpod/trunk/ChangeLog
===================================================================
--- gtkpod/trunk/ChangeLog      2008-01-02 13:32:15 UTC (rev 1899)
+++ gtkpod/trunk/ChangeLog      2008-01-02 17:00:05 UTC (rev 1900)
@@ -10,6 +10,15 @@
   * data/gtkpod.glade:
   
     Added Revert button.
+       Fixed: 'subwindows can be hidden by main window' (except for the sort
+       window, this is intended behavior and not a bug)
+       Fixed: 'assertion failed when clicking "remove" buttons'
+       Fixed: 'assertion `g_path_is_absolute (filename)' failed'
+       Fixed: 'signal `file_set' is invalid for instance `0x85d1160''
+       
+  * src/fileselection.c:
+  
+    Use the stock GTK directory selection dialog. Code cleanup.
 
 2008-01-01 Matvey Kozhev <sikon at users.sourceforge.net>
 

Modified: gtkpod/trunk/data/gtkpod.glade
===================================================================
--- gtkpod/trunk/data/gtkpod.glade      2008-01-02 13:32:15 UTC (rev 1899)
+++ gtkpod/trunk/data/gtkpod.glade      2008-01-02 17:00:05 UTC (rev 1900)
@@ -16210,6 +16210,7 @@
                           <widget class="GtkFileChooserButton" 
id="cmd_aacgain">
                             <property name="visible">True</property>
                             <property name="title" translatable="yes">Select A 
File</property>
+                            <signal name="file_set" 
handler="on_cmd_aacgain_file_set"/>
                           </widget>
                           <packing>
                             <property name="left_attach">1</property>
@@ -16547,7 +16548,7 @@
                                 </child>
                               </widget>
                               <packing>
-                                <property name="x_options"></property>
+                                <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
                             </child>
@@ -16568,7 +16569,7 @@
                               <packing>
                                 <property name="top_attach">1</property>
                                 <property name="bottom_attach">2</property>
-                                <property name="x_options"></property>
+                                <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
                             </child>
@@ -16589,7 +16590,7 @@
                               <packing>
                                 <property name="top_attach">2</property>
                                 <property name="bottom_attach">3</property>
-                                <property name="x_options"></property>
+                                <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
                             </child>

Modified: gtkpod/trunk/src/fileselection.c
===================================================================
--- gtkpod/trunk/src/fileselection.c    2008-01-02 13:32:15 UTC (rev 1899)
+++ gtkpod/trunk/src/fileselection.c    2008-01-02 17:00:05 UTC (rev 1900)
@@ -59,8 +59,6 @@
  * Data global to this module only
  */
 
-static Playlist *db_active_pl = NULL;    /* playlist for dirbrowser */
-
 static void error_dialog (const gchar *str)
 {
     GtkWidget *dialog;
@@ -635,94 +633,8 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-
-/* XPM */
-static char *db_folder[] =
-{
-       "16 16 16 1",
-       "       c None",
-       ".      c #f4f7e4",
-       "X      c #dee4b5",
-       "o      c #e1e7b9",
-       "O      c #c6cba4",
-       "+      c #dce2b8",
-       "@      c #e9e9ec",
-       "#      c #d3d8ae",
-       "$      c #d8daca",
-       "%      c #b2b2b5",
-       "&      c #767862",
-       "*      c #e3e6c3",
-       "=      c #1b1b1a",
-       "-      c #939684",
-       ";      c #555555",
-       ":      c #000000",
-       "                ",
-       "                ",
-       "  ::::          ",
-       " :.@@O:         ",
-       ":-&&&&&:::::    ",
-       ":.@@@@@*$O#O=   ",
-       ":@*+XXXX+##O:   ",
-       ":.*#oooXXXXX:   ",
-       ":@+XoXXXXXX#:   ",
-       ":@*ooXXXXXX#:   ",
-       ":@**XXXXXXX#:   ",
-       ":@*XXXXXXXX%:   ",
-       ":$.*OOOOOO%-:   ",
-       " ;:::::::::::   ",
-       "                ",
-       "                "};
-
-/* Icon by Jakub Steiner <[EMAIL PROTECTED]> */
-
-/* XPM */
-static char *db_ofolder[] =
-{
-       "16 16 16 1",
-       "       c None",
-       ".      c #a9ad93",
-       "X      c #60634d",
-       "o      c #dee4b5",
-       "O      c #9ca085",
-       "+      c #0c0d04",
-       "@      c #2f2f31",
-       "#      c #3b3d2c",
-       "$      c #c8cda2",
-       "%      c #e6e6e9",
-       "&      c #b3b5a5",
-       "*      c #80826d",
-       "=      c #292a1c",
-       "-      c #fefef6",
-       ";      c #8f937b",
-       ":      c #000000",
-       "                ",
-       "                ",
-       "  ::::          ",
-       " :-%%&:         ",
-       ":-;;;OX:::::    ",
-       ":-;;;;O;O;&.:   ",
-       ":-*X##@@@@@=#:  ",
-       ":%*+-%%ooooooO: ",
-       ":%X;%ooooooo.*: ",
-       ":.+-%oooooooO:  ",
-       ":*O-oooooooo*:  ",
-       ":O-oooooooo.:   ",
-       ":*-%$$$$$$OX:   ",
-       " :::::::::::    ",
-       "                ",
-       "                "};
-
 #define NODE_SPACING 4
 
-static GdkPixmap *db_folder_pixmap = NULL, *db_ofolder_pixmap;
-static GdkBitmap *db_folder_mask, *db_ofolder_mask;
-static GtkWidget *dirbrowser = NULL;
-
-static GtkWidget *xmms_create_dir_browser(const gchar *title,
-                                         const gchar *current_path,
-                                         GtkSelectionMode mode,
-                                         void (*handler) (gchar *));
-
 struct dirnode
 {
     unsigned int scanned : 1;
@@ -736,8 +648,9 @@
  * ------------------------------------------------------------ */
 
 /* Callback after one directory has been added */
-static void add_dir_selected (gchar *dir)
+static void add_dir_selected (gchar *dir, Playlist *db_active_pl)
 {
+       g_return_if_fail (dir);
     g_return_if_fail (db_active_pl);
 
     if (dir)
@@ -765,398 +678,27 @@
    separate callback for gtkpod.glade */
 G_MODULE_EXPORT void dirbrowser_create_callback (void)
 {
-    Playlist *pl;
-
-    pl = pm_get_selected_playlist ();
-
-    dirbrowser_create (pl);
-}
-
-
-
-
-
-void dirbrowser_create (Playlist *pl)
-{
-    gchar *cur_dir, *str;
-    iTunesDB *itdb;
-    ExtraiTunesDBData *eitdb;
-    Playlist *mpl;
-
-    /* we only allow one modal dirbrowser */
-    g_return_if_fail (dirbrowser==NULL);
-
-
-    if (!pl)
-    {
-       error_dialog (_("Please select a playlist or repository before adding 
tracks."));
-       return;
-    }
-
-    itdb = pl->itdb;
-    g_return_if_fail (itdb);
-    eitdb = itdb->userdata;
-    g_return_if_fail (eitdb);
-
-    if (!eitdb->itdb_imported)
-    {
-       error_dialog (_("Please load the iPod before adding tracks."));
-       return;
-    }
-
-    /* FIXME: I don't like global variables */
-    db_active_pl = pl;
-
-    mpl = itdb_playlist_mpl (itdb);
-    g_return_if_fail (mpl);
-
-    /* Create window title */
-    if (mpl == pl)
-    {
-       str = g_strdup_printf (_("Add directories to '%s'"), mpl->name);
-    }
-    else
-    {
-       str = g_strdup_printf (_("Add directories to '%s/%s'"), mpl->name, 
pl->name);
-    }
-
-    cur_dir = prefs_get_string ("last_dir_browsed");
-    dirbrowser = xmms_create_dir_browser (str,
-                                         cur_dir,
-                                         GTK_SELECTION_MULTIPLE,
-                                         add_dir_selected);
-    g_free (cur_dir);
-    g_free (str);
-    gtk_window_set_modal (GTK_WINDOW (dirbrowser), TRUE);
-    gtk_widget_show (dirbrowser);
-}
-
-/* called when dirbrowser gets destroyed with the window-close button */
-static void dirbrowser_destroyed (GtkWidget *w, gpointer userdata)
-{
-    g_return_if_fail (dirbrowser);
-
-    dirbrowser = NULL;
-}
-
-
-/* called when the file selector is closed */
-static void add_dir_close (GtkWidget *w1, GtkWidget *w2)
-{
-    gint x,y;
-
-    g_return_if_fail (dirbrowser);
-
-    gtk_window_get_size (GTK_WINDOW (dirbrowser), &x, &y);
-    /* store size for next time */
-    prefs_set_int("size_dirbr.x", x);
-    prefs_set_int("size_dirbr.y", y);
-    gtk_widget_destroy(dirbrowser);
-    /* dirbrowser = NULL; -- will be done by the dirbrowser_destroy()
-       as part of the callback */
-}
-
-
-/* ------------------------------------------------------------ *
- * end of added functions                                       *
- * ------------------------------------------------------------ */
-
-static gboolean check_for_subdir(char *path)
-{
-       DIR *dir;
-       struct dirent *dirent;
-       struct stat statbuf;
-       char *npath;
-
-       if ((dir = opendir(path)) != NULL)
-       {
-               while ((dirent = readdir(dir)) != NULL)
-               {
-                       if (dirent->d_name[0] == '.')
-                               continue;
-
-                       npath = g_strconcat(path, dirent->d_name, NULL);
-                       if (stat(npath, &statbuf) != -1 &&
-                           S_ISDIR(statbuf.st_mode))
-                       {
-                               g_free(npath);
-                               closedir(dir);
-                               return TRUE;
-                       }
-                       g_free(npath);
-               }
-               closedir(dir);
-       }
-       return FALSE;
-}
-
-static void destroy_cb(gpointer data)
-{
-       struct dirnode *node = data;
-
-       g_free(node->path);
-       g_free(node->dir);
-       g_free(node);
-}
-
-static void add_dir(GtkCTree *tree, GtkCTreeNode *pnode, char* parent, char 
*dir)
-{
-       struct stat statbuf;
-       char *path;
-       gchar *dir_utf8;
-
-       /* Don't show hidden dirs, nor . and .. */
-       if (dir[0] == '.')
+    Playlist *pl = pm_get_selected_playlist ();
+       gchar *dir = NULL;
+       
+       if(!pl)
                return;
 
-       path = g_strconcat(parent, dir, NULL);
-       if (stat(path, &statbuf) != -1 && S_ISDIR(statbuf.st_mode))
-       {
-               gboolean has_subdir;
-               char *text = "";
-               GtkCTreeNode *node;
-               struct dirnode *dirnode = g_malloc0(sizeof (struct dirnode));
-               dirnode->path = g_strconcat(path, "/", NULL);
-               dirnode->dir = g_strdup (dir);
-               has_subdir = check_for_subdir(dirnode->path);
-               dir_utf8 = charset_to_utf8 (dir);
-               node = gtk_ctree_insert_node(tree, pnode, NULL, &dir_utf8,
-                                            NODE_SPACING, db_folder_pixmap,
-                                            db_folder_mask, db_ofolder_pixmap,
-                                            db_ofolder_mask, !has_subdir, 
FALSE);
-               g_free (dir_utf8);
-               gtk_ctree_node_set_row_data_full(tree, node, dirnode,
-                                                destroy_cb);
-               if (has_subdir)
-                       gtk_ctree_insert_node(tree, node, NULL, &text,
-                                             NODE_SPACING, NULL, NULL,
-                                             NULL, NULL, FALSE, FALSE);
-       }
-       g_free(path);
-}
+    GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Add Folder"),
+                                                                               
                         GTK_WINDOW (gtkpod_window),
+                                                                               
                         GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+                                                                               
                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                                                               
                         GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT,
+                                                                               
                         NULL);
 
-static void expand_cb(GtkWidget *widget, GtkCTreeNode *parent_node)
-{
-       struct dirent *dirent;
-       GtkCTree *tree = GTK_CTREE(widget);
-       struct dirnode *parent_dirnode;
+       if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+               dir = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER 
(dialog));
 
-       parent_dirnode = gtk_ctree_node_get_row_data(tree, parent_node);
-       if (!parent_dirnode->scanned)
+       gtk_widget_destroy (dialog);
+       
+       if (dir)
        {
-               DIR *dir;
-
-               gtk_clist_freeze(GTK_CLIST(widget));
-               gtk_ctree_remove_node(tree,
-                                     GTK_CTREE_ROW(parent_node)->children);
-               if ((dir = opendir(parent_dirnode->path)) != NULL)
-               {
-                       while ((dirent = readdir(dir)) != NULL)
-                       {
-                               add_dir(tree, parent_node,
-                                       parent_dirnode->path, dirent->d_name);
-                       }
-                       closedir(dir);
-                       gtk_ctree_sort_node(tree, parent_node);
-               }
-               gtk_clist_thaw(GTK_CLIST(widget));
-               parent_dirnode->scanned = TRUE;
+               add_dir_selected (dir, pl);
+               g_free (dir);
        }
 }
-
-static void select_row_cb(GtkWidget *widget, int row, int column, 
GdkEventButton *bevent, gpointer data)
-{
-       struct dirnode *dirnode;
-       GtkCTreeNode *node;
-       void (*handler) (char *);
-
-       if (bevent && (bevent->type == GDK_2BUTTON_PRESS))
-       {
-               node = gtk_ctree_node_nth(GTK_CTREE(widget), row);
-               dirnode = gtk_ctree_node_get_row_data(GTK_CTREE(widget), node);
-               handler = gtk_object_get_user_data(GTK_OBJECT(widget));
-               if (handler)
-                       handler(dirnode->path);
-               if (handler) handler(NULL); /* call once with "NULL" to
-                                              indicate "end" */
-       }
-}
-
-static void show_cb(GtkWidget *widget, gpointer data)
-{
-       GtkCTree *tree = GTK_CTREE(data);
-       GtkCTreeNode *node = gtk_object_get_data(GTK_OBJECT(tree),
-                                                "selected_node");
-
-       if (node)
-               gtk_ctree_node_moveto(tree, node, -1, 0.6, 0);
-}
-
-static void ok_clicked(GtkWidget *widget, GtkWidget *tree)
-{
-       GtkCTreeNode *node;
-       struct dirnode *dirnode;
-       GList *list_node;
-       GtkWidget *window;
-       void (*handler) (char *) = NULL;
-
-       window = gtk_object_get_user_data(GTK_OBJECT(widget));
-       list_node = GTK_CLIST(tree)->selection;
-       while (list_node)
-       {
-               node = list_node->data;
-               dirnode = gtk_ctree_node_get_row_data(GTK_CTREE(tree), node);
-               handler = gtk_object_get_user_data(GTK_OBJECT(tree));
-               if (handler)
-                       handler(dirnode->path);
-               list_node = g_list_next(list_node);
-       }
-       if (handler) handler(NULL); /* call once with "NULL" to
-                                      indicate "end" */
-       gtk_widget_hide(window);
-       add_dir_close (widget, tree);
-}
-
-static GtkWidget *xmms_create_dir_browser (const char *title,
-                                          const char *current_path,
-                                          GtkSelectionMode mode,
-                                          void (*handler) (char *))
-{
-    GtkWidget *window, *scroll_win, *tree, *vbox, *bbox, *ok, *cancel, *sep;
-    char *root_text = "/", *text = "";
-    GtkCTreeNode *root_node, *node, *selected_node = NULL;
-    GtkCTree *ctree;
-    struct dirnode *dirnode;
-    gint x,y;
-
-    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    x = prefs_get_int("size_dirbr.x");
-    y = prefs_get_int("size_dirbr.y");
-    gtk_window_set_default_size(GTK_WINDOW(window), x, y);
-    gtk_window_set_title(GTK_WINDOW(window), title);
-    gtk_container_border_width(GTK_CONTAINER(window), 10);
-
-    vbox = gtk_vbox_new(FALSE, 10);
-    gtk_container_add(GTK_CONTAINER(window), vbox);
-
-    scroll_win = gtk_scrolled_window_new(NULL, NULL);
-    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_win),
-                                  GTK_POLICY_AUTOMATIC,
-                                  GTK_POLICY_AUTOMATIC);
-    gtk_box_pack_start(GTK_BOX(vbox), scroll_win, TRUE, TRUE, 0);
-    gtk_widget_show(scroll_win);
-
-    gtk_widget_realize(window);
-    if (!db_folder_pixmap)
-    {
-       db_folder_pixmap = gdk_pixmap_create_from_xpm_d(window->window,
-                                                       &db_folder_mask,
-                                                       NULL, db_folder);
-       db_ofolder_pixmap = gdk_pixmap_create_from_xpm_d(window->window,
-                                                        &db_ofolder_mask,
-                                                        NULL, db_ofolder);
-    }
-
-    tree = gtk_ctree_new(1, 0);
-    ctree = GTK_CTREE(tree);
-    gtk_clist_set_column_auto_resize(GTK_CLIST(tree), 0, TRUE);
-    gtk_clist_set_selection_mode(GTK_CLIST(tree), mode);
-    gtk_ctree_set_line_style(ctree, GTK_CTREE_LINES_DOTTED);
-    gtk_signal_connect(GTK_OBJECT(tree), "tree_expand",
-                      GTK_SIGNAL_FUNC(expand_cb), NULL);
-    gtk_signal_connect(GTK_OBJECT(tree), "select_row",
-                      GTK_SIGNAL_FUNC(select_row_cb), NULL);
-    gtk_signal_connect(GTK_OBJECT(window), "show",
-                      GTK_SIGNAL_FUNC(show_cb), tree);
-    gtk_container_add(GTK_CONTAINER(scroll_win), tree);
-    gtk_object_set_user_data(GTK_OBJECT(tree), handler);
-
-    root_node = gtk_ctree_insert_node(ctree, NULL, NULL,
-                                     &root_text, NODE_SPACING,
-                                     db_folder_pixmap, db_folder_mask,
-                                     db_ofolder_pixmap, db_ofolder_mask,
-                                     FALSE, FALSE);
-    dirnode = g_malloc0(sizeof (struct dirnode));
-    dirnode->path = g_strdup("/");
-    gtk_ctree_node_set_row_data_full(ctree, root_node,
-                                    dirnode, destroy_cb);
-    node = gtk_ctree_insert_node(ctree, root_node, NULL,
-                                &text, 4, NULL, NULL, NULL,
-                                NULL, TRUE, TRUE);
-    gtk_ctree_expand(ctree, root_node);
-    gtk_widget_show(tree);
-
-    sep = gtk_hseparator_new();
-    gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
-    gtk_widget_show(sep);
-
-    bbox = gtk_hbutton_box_new();
-    gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
-    gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
-
-    ok = gtk_button_new_with_label(_("Ok"));
-    gtk_object_set_user_data(GTK_OBJECT(ok), window);
-    GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT);
-    gtk_window_set_default(GTK_WINDOW(window), ok);
-    gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0);
-    gtk_signal_connect(GTK_OBJECT(ok), "clicked",
-                      GTK_SIGNAL_FUNC(ok_clicked), tree);
-    gtk_widget_show(ok);
-
-    cancel = gtk_button_new_with_label(_("Cancel"));
-    GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
-    gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);
-    gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked",
-                             GTK_SIGNAL_FUNC(add_dir_close),
-                             GTK_OBJECT(window));
-    gtk_widget_show(cancel);
-
-    gtk_signal_connect(GTK_OBJECT(window), "destroy",
-                      GTK_SIGNAL_FUNC(dirbrowser_destroyed),
-                      NULL);
-
-    gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
-    gtk_widget_show(bbox);
-    gtk_widget_show(vbox);
-
-    if (current_path && *current_path)
-    {
-       char **dir;
-       int i;
-
-       dir = g_strsplit(current_path, "/", 0);
-       node = root_node;
-       for (i = 0; dir[i] != NULL; i++)
-       {
-           if (dir[i][0] == '\0')
-               continue;
-
-           for (node = GTK_CTREE_ROW(node)->children; node != NULL;
-                node = GTK_CTREE_ROW(node)->sibling)
-           {
-               struct dirnode *dn;
-               dn = gtk_ctree_node_get_row_data(GTK_CTREE(tree), node);
-               if (!strcmp(dir[i], dn->dir))
-                   break;
-           }
-           if (!node)
-               break;
-           if (!GTK_CTREE_ROW(node)->is_leaf && dir[i+1] && *dir[i+1])
-               gtk_ctree_expand(ctree, node);
-           else
-           {
-               selected_node = node;
-               break;
-           }
-       }
-       g_strfreev(dir);
-    }
-
-    if (!selected_node)
-       selected_node = root_node;
-
-    gtk_ctree_select(ctree, selected_node);
-    gtk_object_set_data(GTK_OBJECT(tree), "selected_node", selected_node);
-
-    return window;
-}

Modified: gtkpod/trunk/src/prefsdlg.c
===================================================================
--- gtkpod/trunk/src/prefsdlg.c 2008-01-02 13:32:15 UTC (rev 1899)
+++ gtkpod/trunk/src/prefsdlg.c 2008-01-02 17:00:05 UTC (rev 1900)
@@ -284,17 +284,20 @@
        }
 }
 
-static GtkTreeIter tree_get_current_iter (GtkTreeView *view)
+static gboolean tree_get_current_iter (GtkTreeView *view, GtkTreeIter *iter)
 {
        GtkTreeModel *model = gtk_tree_view_get_model (view);
        GtkTreePath *path;
-       GtkTreeIter iter;
 
        gtk_tree_view_get_cursor (view, &path, NULL);
-       gtk_tree_model_get_iter (model, &iter, path);
+       
+       if (!path)
+               return FALSE;
+       
+       gtk_tree_model_get_iter (model, iter, path);
        gtk_tree_path_free (path);
        
-       return iter;
+       return TRUE;
 }
 
 /*
@@ -616,6 +619,7 @@
        GtkTreeModel *model;
        GtkTreeIter iter;
        
+       gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW 
(prefs_dialog));
        setup_column_tree (view, FALSE);
        
        /* User pressed Cancel */
@@ -628,7 +632,7 @@
        
        /* User pressed Add */
        model = gtk_tree_view_get_model (view);
-       iter = tree_get_current_iter (view);
+       tree_get_current_iter (view, &iter);
        gtk_tree_model_get (model, &iter, 1, &i, -1);
        
        gtk_widget_destroy (dlg);
@@ -655,9 +659,9 @@
        gint i;
        GtkTreeView *view = GTK_TREE_VIEW (gtkpod_xml_get_widget (prefs_xml, 
"displayed_columns"));
        GtkTreeModel *model = gtk_tree_view_get_model (view);
-       GtkTreeIter iter = tree_get_current_iter (view);
+       GtkTreeIter iter;
        
-       if(!gtk_list_store_iter_is_valid (GTK_LIST_STORE (model), &iter))
+       if(!tree_get_current_iter (view, &iter) || 
!gtk_list_store_iter_is_valid (GTK_LIST_STORE (model), &iter))
                return;
 
        gtk_tree_model_get (model, &iter, 1, &i, -1);
@@ -734,6 +738,8 @@
        GladeXML *xml = gtkpod_xml_new (xml_file, "prefs_encoding_dialog");
        GtkWidget *dlg = gtkpod_xml_get_widget (xml, "prefs_encoding_dialog");
        GtkWidget *combo = gtkpod_xml_get_widget (xml, "encoding_combo");
+
+       gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW 
(prefs_dialog));
        
        init_checkbox (GTK_TOGGLE_BUTTON (gtkpod_xml_get_widget (xml, 
"use_encoding_for_update")),
                                   xml, "update_charset", NULL);
@@ -769,6 +775,8 @@
        GtkWidget *dlg = gtkpod_xml_get_widget (xml, "prefs_tag_parse_dialog");
        gchar *temp = prefs_get_string("parsetags_template");
        
+       gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW 
(prefs_dialog));
+
        if(temp)
        {
                gtk_entry_set_text (GTK_ENTRY (gtkpod_xml_get_widget (xml, 
"filename_pattern")),
@@ -803,6 +811,8 @@
        GtkWidget *dlg = gtkpod_xml_get_widget (xml, "prefs_coverart_dialog");
        gchar *temp = prefs_get_string("coverart_template");
        
+       gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW 
(prefs_dialog));
+
        if(temp)
        {
                gtk_entry_set_text (GTK_ENTRY (gtkpod_xml_get_widget (xml, 
"coverart_pattern")),
@@ -838,6 +848,8 @@
     GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
        gchar *temp = prefs_get_string("exclude_file_mask");
        
+       gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW 
(prefs_dialog));
+
        if (temp)
        {
                gint i;
@@ -927,9 +939,9 @@
        GladeXML *xml = GLADE_XML (g_object_get_data (G_OBJECT (sender), 
"xml"));
        GtkWidget *tree = gtkpod_xml_get_widget (xml, "exclusion_list");
        GtkListStore *store = GTK_LIST_STORE (gtk_tree_view_get_model 
(GTK_TREE_VIEW (tree)));
-       GtkTreeIter iter = tree_get_current_iter (GTK_TREE_VIEW (tree));
+               GtkTreeIter iter;
        
-       if(gtk_list_store_iter_is_valid (store, &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);
@@ -945,6 +957,8 @@
        GtkWidget *dlg = gtkpod_xml_get_widget (xml, "prefs_mserv_dialog");
        gchar *temp = prefs_get_string ("mserv_username");
        
+       gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW 
(prefs_dialog));
+
        if(temp)
        {
                gtk_entry_set_text (GTK_ENTRY (gtkpod_xml_get_widget (xml, 
"mserv_username")),
@@ -1019,7 +1033,10 @@
        GladeXML *xml = gtkpod_xml_new (xml_file, "prefs_commands_dialog");
        GtkWidget *dlg = gtkpod_xml_get_widget (xml, "prefs_commands_dialog");
        gchar *temp = prefs_get_string ("path_play_now");
+       gchar *path;
        
+       gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW 
(prefs_dialog));
+
        if(temp)
        {
                gtk_entry_set_text (GTK_ENTRY (gtkpod_xml_get_widget (xml, 
"cmd_playnow")),
@@ -1042,20 +1059,26 @@
        
        if(temp)
        {
+               path = g_find_program_in_path (temp);
+               
                gtk_file_chooser_set_filename (GTK_FILE_CHOOSER 
(gtkpod_xml_get_widget (xml, "cmd_mp3gain")),
-                                                                          
temp);
+                                                                          
path);
                
                g_free (temp);
+               g_free (path);
        }
 
        temp = prefs_get_string ("aacgain_path");
        
        if(temp)
        {
+               path = g_find_program_in_path (temp);
+
                gtk_file_chooser_set_filename (GTK_FILE_CHOOSER 
(gtkpod_xml_get_widget (xml, "cmd_aacgain")),
                                                                           
temp);
                
                g_free (temp);
+               g_free (path);
        }
        
        g_object_set_data (G_OBJECT (gtkpod_xml_get_widget (xml, 
"browse_playnow")),
@@ -1114,6 +1137,8 @@
        gchar *temp = prefs_get_string ("file_convert_cachedir");
        gint i;
        
+       gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW 
(prefs_dialog));
+
        if(temp)
        {
                gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER 
(gtkpod_xml_get_widget (xml, "cache_folder")),


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to