[Goodies-commits] r3400 - in ristretto/trunk: . src

Stephan Arts stephan at xfce.org
Fri Oct 19 21:22:56 CEST 2007


Author: stephan
Date: 2007-10-19 19:22:56 +0000 (Fri, 19 Oct 2007)
New Revision: 3400

Modified:
   ristretto/trunk/configure.in.in
   ristretto/trunk/src/Makefile.am
   ristretto/trunk/src/main_window.c
Log:
Add file properties dialog


Modified: ristretto/trunk/configure.in.in
===================================================================
--- ristretto/trunk/configure.in.in	2007-10-18 22:30:16 UTC (rev 3399)
+++ ristretto/trunk/configure.in.in	2007-10-19 19:22:56 UTC (rev 3400)
@@ -112,6 +112,7 @@
 XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.12.0])
 XDT_CHECK_PACKAGE([GOBJECT], [gobject-2.0], [2.12.0])
 XDT_CHECK_PACKAGE([THUNAR_VFS], [thunar-vfs-1], [0.4.0])
+XDT_CHECK_PACKAGE([DBUS_GLIB], [dbus-glib-1], [0.34])
 XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.4.0])
 
 

Modified: ristretto/trunk/src/Makefile.am
===================================================================
--- ristretto/trunk/src/Makefile.am	2007-10-18 22:30:16 UTC (rev 3399)
+++ ristretto/trunk/src/Makefile.am	2007-10-19 19:22:56 UTC (rev 3400)
@@ -10,6 +10,7 @@
 ristretto_CFLAGS = \
 	$(GTK_CFLAGS) \
 	$(GLIB_CFLAGS) \
+	$(DBUS_GLIB_CFLAGS) \
 	$(LIBEXIF_CFLAGS) \
 	$(LIBXFCE4UTIL_CFLAGS) \
 	$(THUNAR_VFS_CFLAGS) \
@@ -20,6 +21,7 @@
 ristretto_LDADD = \
 	$(GTK_LIBS) \
 	$(GLIB_LIBS) \
+	$(DBUS_GLIB_LIBS) \
 	$(LIBEXIF_LIBS) \
 	$(LIBXFCE4UTIL_LIBS) \
 	$(THUNAR_VFS_LIBS)

Modified: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c	2007-10-18 22:30:16 UTC (rev 3399)
+++ ristretto/trunk/src/main_window.c	2007-10-19 19:22:56 UTC (rev 3400)
@@ -20,6 +20,7 @@
 #include <string.h>
 #include <thunar-vfs/thunar-vfs.h>
 #include <libexif/exif-data.h>
+#include <dbus/dbus-glib.h>
 
 #include "navigator.h"
 #include "thumbnail_viewer.h"
@@ -39,6 +40,9 @@
     GList *menu_apps_list;
     gdouble zoom_factor;
 
+    DBusGConnection *connection;
+    DBusGProxy *filemanager_proxy;
+
     struct {
         GtkWidget *main_vbox;
         GtkWidget *s_window;
@@ -65,6 +69,8 @@
                 GtkWidget *menu_item_clear;
             } recently;
             GtkWidget *menu_item_separator_1;
+            GtkWidget *menu_item_file_properties;
+            GtkWidget *menu_item_separator_2;
             GtkWidget *menu_item_close;
             GtkWidget *menu_item_quit;
         } file;
@@ -196,6 +202,8 @@
 static void
 cb_rstto_main_window_close(GtkWidget *widget, RsttoMainWindow *window);
 static void
+cb_rstto_main_window_file_properties(GtkWidget *widget, RsttoMainWindow *window);
+static void
 cb_rstto_main_window_quit(GtkWidget *widget, RsttoMainWindow *window);
 static void
 cb_rstto_main_window_about(GtkWidget *widget, RsttoMainWindow *window);
@@ -277,6 +285,8 @@
     window->priv->menus.file.menu_item_open_folder = gtk_menu_item_new_with_mnemonic(_("O_pen Folder"));
     window->priv->menus.file.menu_item_open_recently = gtk_menu_item_new_with_mnemonic(_("_Recently used"));
     window->priv->menus.file.menu_item_separator_1 = gtk_separator_menu_item_new();
+    window->priv->menus.file.menu_item_file_properties = gtk_image_menu_item_new_from_stock(GTK_STOCK_PROPERTIES, accel_group);
+    window->priv->menus.file.menu_item_separator_2 = gtk_separator_menu_item_new();
     window->priv->menus.file.menu_item_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, accel_group);
     window->priv->menus.file.menu_item_quit = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, accel_group);
 
@@ -285,10 +295,13 @@
     gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_open_folder);
     gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_open_recently);
     gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_separator_1);
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_file_properties);
+    gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_separator_2);
     gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_close);
     gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_quit);
 
     gtk_widget_set_sensitive(window->priv->menus.file.menu_item_close, FALSE);
+    gtk_widget_set_sensitive(window->priv->menus.file.menu_item_file_properties, FALSE);
 
     window->priv->menus.file.recently.menu = gtk_recent_chooser_menu_new_for_manager(GTK_RECENT_MANAGER(window->priv->manager));
     window->priv->menus.file.recently.menu_item_clear = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLEAR, accel_group);
@@ -514,7 +527,14 @@
 
     rstto_picture_viewer_set_menu(RSTTO_PICTURE_VIEWER(window->priv->picture_viewer),
                                   GTK_MENU(window->priv->menus._picture_viewer.menu));
+/* D-Bus stuff */
 
+    window->priv->connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
+    window->priv->filemanager_proxy = dbus_g_proxy_new_for_name(window->priv->connection,
+                                                                "org.xfce.FileManager",
+                                                                "/org/xfce/FileManager",
+                                                                "org.xfce.FileManager");
+
 /* Connect signals */
     
     /* Thumbnail-viewer */
@@ -567,6 +587,9 @@
     g_signal_connect(G_OBJECT(window->priv->menus.file.recently.menu),
             "item-activated",
             G_CALLBACK(cb_rstto_main_window_open_recent), window);
+    g_signal_connect(window->priv->menus.file.menu_item_file_properties, 
+            "activate",
+            G_CALLBACK(cb_rstto_main_window_file_properties), window);
     g_signal_connect(window->priv->menus.file.menu_item_quit, 
             "activate",
             G_CALLBACK(cb_rstto_main_window_quit), window);
@@ -1171,6 +1194,25 @@
 }
 
 static void
+cb_rstto_main_window_file_properties(GtkWidget *widget, RsttoMainWindow *window)
+{
+    RsttoNavigatorEntry *entry = rstto_navigator_get_file(window->priv->navigator);
+    if (entry)
+    {
+        ThunarVfsInfo *info = rstto_navigator_entry_get_info(entry);
+        if(info)
+        {
+            gchar *uri = thunar_vfs_path_dup_uri(info->path);
+            if(dbus_g_proxy_call(window->priv->filemanager_proxy, "DisplayFileProperties", NULL, G_TYPE_STRING, uri, G_TYPE_STRING, "", NULL) == FALSE)
+            {
+                g_warning("Could not contact dbus-service");
+            }
+            g_free(uri);
+        }
+    }
+}
+
+static void
 cb_rstto_main_window_nav_iter_changed(RsttoNavigator *navigator, gint nr, RsttoNavigatorEntry *entry, RsttoMainWindow *window)
 {
     ThunarVfsInfo *info = NULL;
@@ -1182,6 +1224,7 @@
         info = rstto_navigator_entry_get_info(entry);
         filename = info->display_name;
         gtk_widget_set_sensitive(window->priv->menus.file.menu_item_close, TRUE);
+        gtk_widget_set_sensitive(window->priv->menus.file.menu_item_file_properties, TRUE);
         gtk_widget_set_sensitive(window->priv->menus.go.menu_item_first, TRUE);
         gtk_widget_set_sensitive(window->priv->menus.go.menu_item_last, TRUE);
         gtk_widget_set_sensitive(window->priv->menus.go.menu_item_previous, TRUE);
@@ -1286,6 +1329,8 @@
             gtk_widget_set_sensitive(window->priv->menus.go.menu_item_next, FALSE);
             gtk_widget_set_sensitive(window->priv->menus.go.menu_item_play, FALSE);
             gtk_widget_set_sensitive(window->priv->menus.go.menu_item_pause, FALSE);
+            gtk_widget_set_sensitive(window->priv->menus.file.menu_item_file_properties, FALSE);
+
             gtk_widget_set_sensitive(GTK_WIDGET(window->priv->toolbar.tool_item_next), FALSE);
             gtk_widget_set_sensitive(GTK_WIDGET(window->priv->toolbar.tool_item_previous), FALSE);
             gtk_widget_set_sensitive(GTK_WIDGET(window->priv->toolbar.tool_item_zoom_in), FALSE);




More information about the Goodies-commits mailing list