[Goodies-commits] r4121 - xfmpc/trunk/src
Mike Massonnet
mmassonnet at xfce.org
Fri Mar 28 01:50:08 CET 2008
Author: mmassonnet
Date: 2008-03-28 00:50:08 +0000 (Fri, 28 Mar 2008)
New Revision: 4121
Modified:
xfmpc/trunk/src/dbbrowser.c
xfmpc/trunk/src/dbbrowser.h
Log:
Add multiple selection to the XfmpcDbbrowser tree view, and go to parent directory with backspace
* src/dbbrowser.c(xfmpc_dbbrowser_init):
- Enable rubber banding
* src/dbbrowser.c,
src/dbbrowser.h:
- Add new callback cb_key_pressed to add the selected rows on key Return
- New function xfmpc_dbbrowser_add_selected_rows
* src/dbbrowser.c(cb_key_pressed):
- Go to parent directory when key GDK_BackSpace is pressed
Modified: xfmpc/trunk/src/dbbrowser.c
===================================================================
--- xfmpc/trunk/src/dbbrowser.c 2008-03-28 00:50:03 UTC (rev 4120)
+++ xfmpc/trunk/src/dbbrowser.c 2008-03-28 00:50:08 UTC (rev 4121)
@@ -21,6 +21,7 @@
#endif
#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
#include <libxfce4util/libxfce4util.h>
#include "dbbrowser.h"
@@ -42,6 +43,8 @@
static void cb_row_activated (XfmpcDbbrowser *dbbrowser,
GtkTreePath *path,
GtkTreeViewColumn *column);
+static gboolean cb_key_pressed (XfmpcDbbrowser *dbbrowser,
+ GdkEventKey *event);
@@ -153,6 +156,7 @@
/* === Tree view === */
priv->treeview = gtk_tree_view_new ();
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview)), GTK_SELECTION_MULTIPLE);
+ gtk_tree_view_set_rubber_banding (GTK_TREE_VIEW (priv->treeview), TRUE);
gtk_tree_view_set_enable_search (GTK_TREE_VIEW (priv->treeview), TRUE);
gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->treeview), COLUMN_BASENAME);
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->treeview), FALSE);
@@ -196,6 +200,8 @@
/* Tree view */
g_signal_connect_swapped (priv->treeview, "row-activated",
G_CALLBACK (cb_row_activated), dbbrowser);
+ g_signal_connect_swapped (priv->treeview, "key-press-event",
+ G_CALLBACK (cb_key_pressed), dbbrowser);
}
static void
@@ -260,6 +266,36 @@
}
void
+xfmpc_dbbrowser_add_selected_rows (XfmpcDbbrowser *dbbrowser)
+{
+ XfmpcDbbrowserPrivate *priv = XFMPC_DBBROWSER_GET_PRIVATE (dbbrowser);
+ GtkTreeModel *store = GTK_TREE_MODEL (priv->store);
+ GtkTreeIter iter;
+ GList *list;
+ gchar *filename;
+
+ list = gtk_tree_selection_get_selected_rows (gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview)),
+ &store);
+ while (NULL != list)
+ {
+ if (gtk_tree_model_get_iter (store, &iter, list->data))
+ {
+ gtk_tree_model_get (store, &iter,
+ COLUMN_FILENAME, &filename,
+ -1);
+ xfmpc_mpdclient_queue_add (dbbrowser->mpdclient, filename);
+ g_free (filename);
+ }
+ list = g_list_next (list);
+ }
+
+ xfmpc_mpdclient_queue_commit (dbbrowser->mpdclient);
+
+ g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free (list);
+}
+
+void
xfmpc_dbbrowser_reload (XfmpcDbbrowser *dbbrowser)
{
XfmpcDbbrowserPrivate *priv = XFMPC_DBBROWSER_GET_PRIVATE (dbbrowser);
@@ -372,3 +408,38 @@
g_free (filename);
}
+static gboolean
+cb_key_pressed (XfmpcDbbrowser *dbbrowser,
+ GdkEventKey *event)
+{
+ XfmpcDbbrowserPrivate *priv = XFMPC_DBBROWSER_GET_PRIVATE (dbbrowser);
+ GtkTreeSelection *selection;
+ gchar *filename;
+
+ if (event->type != GDK_KEY_PRESS)
+ return FALSE;
+
+ switch (event->keyval)
+ {
+ case GDK_Return:
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
+ if (gtk_tree_selection_count_selected_rows (selection) > 1)
+ xfmpc_dbbrowser_add_selected_rows (dbbrowser);
+ else
+ return FALSE;
+ break;
+
+ case GDK_BackSpace:
+ filename = xfmpc_dbbrowser_get_parent_wdir (dbbrowser);
+ xfmpc_dbbrowser_set_wdir (dbbrowser, filename);
+ g_free (filename);
+ xfmpc_dbbrowser_reload (dbbrowser);
+ break;
+
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
Modified: xfmpc/trunk/src/dbbrowser.h
===================================================================
--- xfmpc/trunk/src/dbbrowser.h 2008-03-28 00:50:03 UTC (rev 4120)
+++ xfmpc/trunk/src/dbbrowser.h 2008-03-28 00:50:08 UTC (rev 4121)
@@ -45,6 +45,8 @@
gchar *filename,
gchar *basename,
gboolean is_dir);
+void xfmpc_dbbrowser_add_selected_rows (XfmpcDbbrowser *dbbrowser);
+
void xfmpc_dbbrowser_reload (XfmpcDbbrowser *dbbrowser);
void xfmpc_dbbrowser_set_wdir (XfmpcDbbrowser *dbbrowser,
More information about the Goodies-commits
mailing list