[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