[Goodies-commits] r6838 - in xfmpc/trunk: . src

Vincent Legout vincent at xfce.org
Tue Mar 3 19:34:26 CET 2009


Author: vincent
Date: 2009-03-03 18:34:26 +0000 (Tue, 03 Mar 2009)
New Revision: 6838

Modified:
   xfmpc/trunk/ChangeLog
   xfmpc/trunk/src/extended-interface.c
   xfmpc/trunk/src/extended-interface.h
   xfmpc/trunk/src/playlist.c
Log:
New menu item Browse in the playlist


Modified: xfmpc/trunk/ChangeLog
===================================================================
--- xfmpc/trunk/ChangeLog	2009-03-03 17:48:48 UTC (rev 6837)
+++ xfmpc/trunk/ChangeLog	2009-03-03 18:34:26 UTC (rev 6838)
@@ -1,5 +1,18 @@
 2009-03-03	Vincent Legout <vincent at legout.info>
 
+New menu item Browse in the playlist
+	* src/playlist.c:
+	  - New menu item Browse to go to the database and open the directory of
+	  the song
+	  - New callback cb_browse_selection which update the database to the
+	  song directory and switch the notebook to the database
+	* src/extended-interface.c, src/extended-interface.h:
+	  - Associate the playlist with the extended interface and the database
+	  - New function xfmpc_extended_interface_update_notebook to switch from
+	  one page to another
+
+2009-03-03	Vincent Legout <vincent at legout.info>
+
 New options to choose the song format
 	* src/preferences.c, src/preferences.h:
 	  - Update copyright date

Modified: xfmpc/trunk/src/extended-interface.c
===================================================================
--- xfmpc/trunk/src/extended-interface.c	2009-03-03 17:48:48 UTC (rev 6837)
+++ xfmpc/trunk/src/extended-interface.c	2009-03-03 18:34:26 UTC (rev 6838)
@@ -211,11 +211,14 @@
   gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), FALSE);
 
   /* Extended interface widgets */
-  GtkWidget *child = xfmpc_playlist_new ();
-  xfmpc_extended_interface_append_child (extended_interface, child, _("Current Playlist"));
+  GtkWidget *playlist = xfmpc_playlist_new ();
+  xfmpc_extended_interface_append_child (extended_interface, playlist, _("Current Playlist"));
 
-  child = xfmpc_dbbrowser_new ();
-  xfmpc_extended_interface_append_child (extended_interface, child, _("Browse database"));
+  GtkWidget *dbbrowser = xfmpc_dbbrowser_new ();
+  xfmpc_extended_interface_append_child (extended_interface, dbbrowser, _("Browse database"));
+
+  g_object_set_data (G_OBJECT (playlist), "XfmpcDbbrowser", dbbrowser);
+  g_object_set_data (G_OBJECT (playlist), "XfmpcExtendedInterface", extended_interface);
 }
 
 static void
@@ -321,8 +324,25 @@
   gtk_widget_show (dialog);
 }
 
+void
+xfmpc_extended_interface_update_notebook (XfmpcExtendedInterface *extended_interface)
+{
+  XfmpcExtendedInterfacePrivate *priv = XFMPC_EXTENDED_INTERFACE (extended_interface)->priv;
 
+  if (gtk_combo_box_get_active (GTK_COMBO_BOX (priv->combobox)) == 1)
+    {
+      gtk_notebook_prev_page (GTK_NOTEBOOK (priv->notebook));
+      gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combobox), 0);
+    }
+  else if (gtk_combo_box_get_active (GTK_COMBO_BOX (priv->combobox)) == 0)
+    {
+      gtk_notebook_next_page (GTK_NOTEBOOK (priv->notebook));
+      gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combobox), 1);
+    }
+}
 
+
+
 static void
 cb_interface_changed (GtkComboBox *widget,
                       XfmpcExtendedInterface *extended_interface)

Modified: xfmpc/trunk/src/extended-interface.h
===================================================================
--- xfmpc/trunk/src/extended-interface.h	2009-03-03 17:48:48 UTC (rev 6837)
+++ xfmpc/trunk/src/extended-interface.h	2009-03-03 18:34:26 UTC (rev 6838)
@@ -35,13 +35,16 @@
 typedef struct _XfmpcExtendedInterface              XfmpcExtendedInterface;
 typedef struct _XfmpcExtendedInterfacePrivate       XfmpcExtendedInterfacePrivate;
 
-GType                   xfmpc_extended_interface_get_type       () G_GNUC_CONST;
+GType                   xfmpc_extended_interface_get_type        () G_GNUC_CONST;
 
-GtkWidget *             xfmpc_extended_interface_new            ();
+GtkWidget *             xfmpc_extended_interface_new             ();
 
-void                    xfmpc_extended_interface_append_child   (XfmpcExtendedInterface *extended_interface,
-                                                                 GtkWidget *child,
-                                                                 const gchar *title);
+void                    xfmpc_extended_interface_append_child    (XfmpcExtendedInterface *extended_interface,
+                                                                  GtkWidget *child,
+                                                                  const gchar *title);
+
+void                    xfmpc_extended_interface_update_notebook (XfmpcExtendedInterface *extended_interface);
+
 G_END_DECLS
 
 #endif

Modified: xfmpc/trunk/src/playlist.c
===================================================================
--- xfmpc/trunk/src/playlist.c	2009-03-03 17:48:48 UTC (rev 6837)
+++ xfmpc/trunk/src/playlist.c	2009-03-03 18:34:26 UTC (rev 6838)
@@ -27,6 +27,8 @@
 #include "playlist.h"
 #include "preferences.h"
 #include "mpdclient.h"
+#include "dbbrowser.h"
+#include "extended-interface.h"
 
 #define BORDER 4
 
@@ -60,8 +62,10 @@
                                                                  GtkTreeIter *iter,
                                                                  XfmpcPlaylist *playlist);
 
+void                    cb_browse_selection                     (XfmpcPlaylist *playlist);
 
 
+
 /* List store identifiers */
 enum
 {
@@ -227,6 +231,13 @@
   g_signal_connect_swapped (mi, "activate",
                             G_CALLBACK (xfmpc_playlist_delete_selection), playlist);
 
+  mi = gtk_image_menu_item_new_with_mnemonic (_("_Browse"));
+  gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), mi);
+  g_signal_connect_swapped (mi, "activate",
+                            G_CALLBACK (cb_browse_selection), playlist);
+  GtkWidget *image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), image);
+
   gtk_widget_show_all (priv->menu);
 
   /* === Filter entry === */
@@ -594,3 +605,43 @@
   return result;
 }
 
+void
+cb_browse_selection (XfmpcPlaylist *playlist)
+{
+  XfmpcPlaylistPrivate   *priv = XFMPC_PLAYLIST (playlist)->priv;
+  XfmpcDbbrowser         *dbbrowser;
+  XfmpcExtendedInterface *extended_interface;
+  GtkTreeModel           *store = GTK_TREE_MODEL (priv->store);
+  GtkTreeSelection       *selection;
+  GtkTreeIter             iter;
+  GList                  *list;
+  gchar                  *filename, *dir;
+
+  dbbrowser = g_object_get_data (G_OBJECT (playlist), "XfmpcDbbrowser");
+  extended_interface = g_object_get_data (G_OBJECT (playlist), "XfmpcExtendedInterface");
+
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
+  if (gtk_tree_selection_count_selected_rows (selection) > 1)
+    return;
+
+  list = gtk_tree_selection_get_selected_rows (selection, &store);
+  if (gtk_tree_model_get_iter (store, &iter, list->data))
+    {
+      gtk_tree_model_get (store, &iter,
+                          COLUMN_FILENAME, &filename,
+                          -1);
+
+      dir = g_path_get_dirname (filename);
+      xfmpc_dbbrowser_set_wdir (dbbrowser, dir);
+      xfmpc_dbbrowser_reload (dbbrowser);
+
+      xfmpc_extended_interface_update_notebook (extended_interface);
+
+      g_free (filename);
+      g_free (dir);
+    }
+
+  g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
+  g_list_free (list);
+}
+




More information about the Goodies-commits mailing list