[Xfce4-commits] r27085 - in xfce4-settings/trunk: . xfce4-settings-manager

Brian Tarricone kelnos at xfce.org
Thu Jun 19 10:17:54 CEST 2008


Author: kelnos
Date: 2008-06-19 08:17:54 +0000 (Thu, 19 Jun 2008)
New Revision: 27085

Modified:
   xfce4-settings/trunk/configure.ac.in
   xfce4-settings/trunk/xfce4-settings-manager/Makefile.am
   xfce4-settings/trunk/xfce4-settings-manager/main.c
   xfce4-settings/trunk/xfce4-settings-manager/xfce-settings-manager-dialog.c
Log:
use ExoIconView instead (single-click activate) and pack it in a scrolled win


Modified: xfce4-settings/trunk/configure.ac.in
===================================================================
--- xfce4-settings/trunk/configure.ac.in	2008-06-19 08:17:41 UTC (rev 27084)
+++ xfce4-settings/trunk/configure.ac.in	2008-06-19 08:17:54 UTC (rev 27085)
@@ -58,6 +58,7 @@
 XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [0])
 XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.4.0])
 XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.4.0])
+XDT_CHECK_PACKAGE([EXO], [exo-0.3], [0.3.0])
 XDT_CHECK_OPTIONAL_PACKAGE([GLADE], [libglade-2.0], [2.0.0])
 
 XDT_CHECK_PACKAGE([LIBNOTIFY], [libnotify], [0.1.3])

Modified: xfce4-settings/trunk/xfce4-settings-manager/Makefile.am
===================================================================
--- xfce4-settings/trunk/xfce4-settings-manager/Makefile.am	2008-06-19 08:17:41 UTC (rev 27084)
+++ xfce4-settings/trunk/xfce4-settings-manager/Makefile.am	2008-06-19 08:17:54 UTC (rev 27085)
@@ -4,12 +4,14 @@
 	-DLOCALEDIR=\"$(localedir)\" \
 	$(GTK_CFLAGS) \
 	$(LIBXFCE4UTIL_CFLAGS) \
-	$(LIBXFCEGUI4_CFLAGS)
+	$(LIBXFCEGUI4_CFLAGS) \
+	$(EXO_CFLAGS)
 
 LIBS = \
 	$(GTK_LIBS) \
 	$(LIBXFCE4UTIL_LIBS) \
-	$(LIBXFCEGUI4_LIBS)
+	$(LIBXFCEGUI4_LIBS) \
+	$(EXO_LIBS)
 
 xfce4_settings_manager_SOURCES = \
 	main.c \

Modified: xfce4-settings/trunk/xfce4-settings-manager/main.c
===================================================================
--- xfce4-settings/trunk/xfce4-settings-manager/main.c	2008-06-19 08:17:41 UTC (rev 27084)
+++ xfce4-settings/trunk/xfce4-settings-manager/main.c	2008-06-19 08:17:54 UTC (rev 27085)
@@ -22,7 +22,6 @@
 #endif
 
 #include <gtk/gtk.h>
-
 #include <libxfce4util/libxfce4util.h>
 
 #include "xfce-settings-manager-dialog.h"

Modified: xfce4-settings/trunk/xfce4-settings-manager/xfce-settings-manager-dialog.c
===================================================================
--- xfce4-settings/trunk/xfce4-settings-manager/xfce-settings-manager-dialog.c	2008-06-19 08:17:41 UTC (rev 27084)
+++ xfce4-settings/trunk/xfce4-settings-manager/xfce-settings-manager-dialog.c	2008-06-19 08:17:54 UTC (rev 27085)
@@ -29,6 +29,7 @@
 
 #include <libxfce4util/libxfce4util.h>
 #include <libxfcegui4/libxfcegui4.h>
+#include <exo/exo.h>
 
 #include "xfce-settings-manager-dialog.h"
 
@@ -62,6 +63,14 @@
 static void xfce_settings_manager_dialog_item_activated(GtkIconView *iconview,
                                                         GtkTreePath *path,
                                                         gpointer user_data);
+#if GTK_CHECK_VERSION(2, 12, 0)
+static gboolean xfce_settings_manager_dialog_query_tooltip(GtkWidget *widget,
+                                                           gint x,
+                                                           gint y,
+                                                           gboolean keyboard_tip,
+                                                           GtkTooltip *tooltip,
+                                                           gpointer data);
+#endif
 
 static const char *categories[] = {
     "Name", "GenericName", "X-XfceSettingsName", "Icon", "Comment", "Exec",
@@ -84,29 +93,43 @@
 static void
 xfce_settings_manager_dialog_init(XfceSettingsManagerDialog *dialog)
 {
-    GtkWidget *iconview;
+    GtkWidget *sw, *iconview;
 
     xfce_titled_dialog_set_subtitle(XFCE_TITLED_DIALOG(dialog),
                                     _("Customize your Xfce desktop"));
     gtk_window_set_title(GTK_WINDOW(dialog), _("Xfce Settings Manager"));
     gtk_window_set_icon_name(GTK_WINDOW(dialog), "xfce4-settings");
 
-    iconview = gtk_icon_view_new();
-    gtk_icon_view_set_text_column(GTK_ICON_VIEW(iconview), COL_NAME);
-    gtk_icon_view_set_pixbuf_column(GTK_ICON_VIEW(iconview), COL_PIXBUF);
+    sw = gtk_scrolled_window_new(NULL, NULL);
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+                                   GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+    gtk_widget_show(sw);
+    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), sw, TRUE, TRUE, 0);
+
+    xfce_settings_manager_dialog_create_liststore(dialog);
+    iconview = exo_icon_view_new_with_model(GTK_TREE_MODEL(dialog->ls));
+    /* FIXME: use the cell layout stuff and not these deprecated functions.
+     * for now i'm just lazy cuz this is so much easier. */
+    exo_icon_view_set_text_column(EXO_ICON_VIEW(iconview), COL_NAME);
+    exo_icon_view_set_pixbuf_column(EXO_ICON_VIEW(iconview), COL_PIXBUF);
 #if GTK_CHECK_VERSION(2, 12, 0)
-    gtk_icon_view_set_tooltip_column(GTK_ICON_VIEW(iconview), COL_COMMENT);
+    g_object_set(G_OBJECT(iconview), "has-tooltip", TRUE, NULL);
+    g_signal_connect(G_OBJECT(iconview), "query-tooltip",
+                     G_CALLBACK(xfce_settings_manager_dialog_query_tooltip),
+                     NULL);
 #endif
+    exo_icon_view_set_orientation(EXO_ICON_VIEW(iconview),
+                                  GTK_ORIENTATION_HORIZONTAL);
+    exo_icon_view_set_layout_mode(EXO_ICON_VIEW(iconview),
+                                  EXO_ICON_VIEW_LAYOUT_ROWS);
+    exo_icon_view_set_single_click(EXO_ICON_VIEW(iconview), TRUE);
+    exo_icon_view_set_reorderable(EXO_ICON_VIEW(iconview), FALSE);
     gtk_widget_show(iconview);
-    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), iconview, TRUE, TRUE, 0);
+    gtk_container_add(GTK_CONTAINER(sw), iconview);
     g_signal_connect(G_OBJECT(iconview), "item-activated",
                      G_CALLBACK(xfce_settings_manager_dialog_item_activated),
                      dialog);
     
-    xfce_settings_manager_dialog_create_liststore(dialog);
-    gtk_icon_view_set_model(GTK_ICON_VIEW(iconview),
-                            GTK_TREE_MODEL(dialog->ls));
-
     gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE,
                           GTK_RESPONSE_ACCEPT);
 }
@@ -253,8 +276,45 @@
     g_free(exec);
 }
 
+#if GTK_CHECK_VERSION(2, 12, 0)
+static gboolean
+xfce_settings_manager_dialog_query_tooltip(GtkWidget *widget,
+                                           gint x,
+                                           gint y,
+                                           gboolean keyboard_tip,
+                                           GtkTooltip *tooltip,
+                                           gpointer data)
+{
+    GtkTreePath *path = NULL;
+    GtkTreeModel *model;
+    GtkTreeIter iter;
+    gchar *comment = NULL;
 
+    path = exo_icon_view_get_path_at_pos(EXO_ICON_VIEW(widget), x, y);
+    if(!path)
+        return FALSE;
 
+    model = exo_icon_view_get_model(EXO_ICON_VIEW(widget));
+    if(!gtk_tree_model_get_iter(model, &iter, path)) {
+        gtk_tree_path_free(path);
+        return FALSE;
+    }
+    gtk_tree_path_free(path);
+
+    gtk_tree_model_get(model, &iter, COL_COMMENT, &comment, -1);
+    if(!comment || !*comment) {
+        g_free(comment);
+        return FALSE;
+    }
+
+    gtk_tooltip_set_text(tooltip, comment);
+    g_free(comment);
+
+    return TRUE;
+}
+#endif
+
+
 GtkWidget *
 xfce_settings_manager_dialog_new()
 {



More information about the Xfce4-commits mailing list