[Xfce4-commits] <ristretto:master> Make toolbar-open button configurable

Stephan Arts stephan at xfce.org
Wed Aug 12 12:19:28 CEST 2009


Updating branch refs/heads/master
         to d846e6417fd049b2f2668127915fefdef477981e (commit)
       from 61bb958bff96be10e5a194831e73c58a18c5b079 (commit)

commit d846e6417fd049b2f2668127915fefdef477981e
Author: Stephan Arts <stephan at xfce.org>
Date:   Sat May 23 00:23:32 2009 +0200

    Make toolbar-open button configurable

 ChangeLog              |   10 ++++++++++
 src/main_window.c      |   31 ++++++++++++++++++++++++++++++-
 src/main_window_ui.xml |    2 +-
 src/settings.c         |   21 +++++++++++----------
 4 files changed, 52 insertions(+), 12 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 78718a7..3a49aa3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-05-23  Stephan Arts <stephan at xfce.org>
+
+	* src/main_window.c
+	  src/main_window_ui.xml
+	  src/settings.c: Add ability to configure the toolbar-open button, it can
+	  now do the following:
+	  	- Open image
+		- Open folder
+		- None (disappear)
+
 2009-05-22  Stephan Arts <stephan at xfce.org>
 
 	* src/main_window.c: Fix behaviour when switching to the last image
diff --git a/src/main_window.c b/src/main_window.c
index 3494c06..78268d7 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -76,6 +76,7 @@ struct _RsttoMainWindowPriv
     GtkWidget *p_viewer_s_window;
     GtkWidget *statusbar;
 
+    guint      t_open_merge_id;
     guint      recent_merge_id;
     guint      play_merge_id;
     guint      pause_merge_id;
@@ -216,6 +217,8 @@ static GtkActionEntry action_entries[] =
   { "file-menu", NULL, N_ ("_File"), NULL, },
   { "open", GTK_STOCK_OPEN, N_ ("_Open"), "<control>O", N_ ("Open an image"), G_CALLBACK (cb_rstto_main_window_open_image), },
   { "open-folder", NULL, N_ ("Open _Folder"), NULL, N_ ("Open a folder"), G_CALLBACK (cb_rstto_main_window_open_folder), },
+  { "t_open", GTK_STOCK_OPEN, N_ ("_Open"), "<control>O", N_ ("Open an image"), G_CALLBACK (cb_rstto_main_window_open_image), },
+  { "t_open-folder", GTK_STOCK_OPEN, N_ ("Open _Folder"), NULL, N_ ("Open a folder"), G_CALLBACK (cb_rstto_main_window_open_folder), },
   { "save-as", GTK_STOCK_SAVE_AS, N_ ("_Save as"), "<control>s", N_ ("Save the image"), G_CALLBACK (cb_rstto_main_window_save_as), },
   { "print", GTK_STOCK_PRINT, N_ ("_Print"), "<control>p", N_ ("Print the image"), G_CALLBACK (cb_rstto_main_window_print), },
   { "close", GTK_STOCK_CLOSE, N_ ("_Close"), "<control>W", N_ ("Close this image"), G_CALLBACK (cb_rstto_main_window_close), },
@@ -302,7 +305,7 @@ static void
 rstto_main_window_init (RsttoMainWindow *window)
 {
     GtkAccelGroup   *accel_group;
-    GValue          show_toolbar_val = {0,}, window_width = {0, }, window_height = {0, };
+    GValue          show_toolbar_val = {0,}, window_width = {0, }, window_height = {0, }, toolbar_open = {0, };
     GtkWidget       *separator, *back, *forward, *leave_fullscreen;
     GtkWidget       *main_vbox = gtk_vbox_new (FALSE, 0);
     GtkRecentFilter *recent_filter;
@@ -333,6 +336,7 @@ rstto_main_window_init (RsttoMainWindow *window)
     gtk_accel_map_change_entry ("<Window>/previous-image", GDK_Page_Up, 0, FALSE);
 
     /* Create mergeid's for adding ui-components */
+    window->priv->t_open_merge_id = gtk_ui_manager_new_merge_id (window->priv->ui_manager);
     window->priv->recent_merge_id = gtk_ui_manager_new_merge_id (window->priv->ui_manager);
     window->priv->play_merge_id = gtk_ui_manager_new_merge_id (window->priv->ui_manager);
     window->priv->pause_merge_id = gtk_ui_manager_new_merge_id (window->priv->ui_manager);
@@ -424,6 +428,9 @@ rstto_main_window_init (RsttoMainWindow *window)
     gtk_widget_set_no_show_all (window->priv->toolbar, TRUE);
     gtk_widget_set_no_show_all (window->priv->fs_toolbar, TRUE);
 
+    g_value_init (&toolbar_open, G_TYPE_STRING);
+    g_object_get_property (G_OBJECT(window->priv->settings_manager), "toolbar-open", &toolbar_open);
+
     /**
      * Add missing pieces to the UI
      */
@@ -449,6 +456,28 @@ rstto_main_window_init (RsttoMainWindow *window)
                            GTK_UI_MANAGER_MENUITEM,
                            FALSE);
 
+    /* Attach the riight 'open' toolbar item */
+    if (g_strcasecmp (g_value_get_string (&toolbar_open), "file") == 0)
+    {
+        gtk_ui_manager_add_ui (window->priv->ui_manager,
+                           window->priv->recent_merge_id,
+                           "/main-toolbar/placeholder-t_open",
+                           "t_open",
+                           "t_open",
+                           GTK_UI_MANAGER_TOOLITEM,
+                           FALSE);
+    }
+    if (g_strcasecmp (g_value_get_string (&toolbar_open), "folder") == 0)
+    {
+        gtk_ui_manager_add_ui (window->priv->ui_manager,
+                           window->priv->recent_merge_id,
+                           "/main-toolbar/placeholder-t_open",
+                           "t_open-folder",
+                           "t_open-folder",
+                           GTK_UI_MANAGER_TOOLITEM,
+                           FALSE);
+    }
+
     /**
      * Retrieve the last window-size from the settings-manager
      * and make it the default for this window
diff --git a/src/main_window_ui.xml b/src/main_window_ui.xml
index e17a68f..9169ff3 100644
--- a/src/main_window_ui.xml
+++ b/src/main_window_ui.xml
@@ -63,7 +63,7 @@
 
     -->
     <toolbar name="main-toolbar">
-        <toolitem action="open"/>
+        <placeholder name="placeholder-t_open"/>
         <separator />
         <toolitem action="back"/>
         <toolitem action="forward"/>
diff --git a/src/settings.c b/src/settings.c
index ceb1886..e1efa65 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -54,7 +54,7 @@ enum
 {
     PROP_0,
     PROP_SHOW_TOOLBAR,
-    PROP_TOOLBAR_OPEN_FOLDER,
+    PROP_TOOLBAR_OPEN,
     PROP_ENABLE_CACHE,
     PROP_PRELOAD_IMAGES,
     PROP_CACHE_SIZE,
@@ -100,7 +100,7 @@ struct _RsttoSettingsPriv
     XfconfChannel *channel;
 
     gboolean  show_toolbar;
-    gboolean  toolbar_open_folder;
+    gchar    *toolbar_open;
     gboolean  preload_images;
     gboolean  enable_cache;
     guint     cache_size;
@@ -138,6 +138,7 @@ rstto_settings_init (GObject *object)
     settings->priv->bgcolor = g_new0 (GdkColor, 1);
     settings->priv->bgcolor_fullscreen = g_new0 (GdkColor, 1);
     settings->priv->image_quality = 2;
+    settings->priv->toolbar_open = "file";
 
     xfconf_g_property_bind (settings->priv->channel, "/window/width", G_TYPE_UINT, settings, "window-width");
     xfconf_g_property_bind (settings->priv->channel, "/window/height", G_TYPE_UINT, settings, "window-height");
@@ -146,7 +147,7 @@ rstto_settings_init (GObject *object)
 
     xfconf_g_property_bind (settings->priv->channel, "/window/show-toolbar", G_TYPE_BOOLEAN, settings, "show-toolbar");
     xfconf_g_property_bind (settings->priv->channel, "/window/scrollwheel-action", G_TYPE_STRING, settings, "scrollwheel-action");
-    xfconf_g_property_bind (settings->priv->channel, "/window/toolbar-open-folder", G_TYPE_BOOLEAN, settings, "toolbar-open-folder");
+    xfconf_g_property_bind (settings->priv->channel, "/window/toolbar-open", G_TYPE_STRING, settings, "toolbar-open");
 
     xfconf_g_property_bind (settings->priv->channel, "/slideshow/timeout", G_TYPE_UINT, settings, "slideshow-timeout");
 
@@ -207,13 +208,13 @@ rstto_settings_class_init (GObjectClass *object_class)
                                      PROP_SHOW_TOOLBAR,
                                      pspec);
 
-    pspec = g_param_spec_boolean ("toolbar-open-folder",
+    pspec = g_param_spec_string ("toolbar-open",
                                   "",
                                   "",
-                                  TRUE,
+                                  "file",
                                   G_PARAM_READWRITE);
     g_object_class_install_property (object_class,
-                                     PROP_TOOLBAR_OPEN_FOLDER,
+                                     PROP_TOOLBAR_OPEN,
                                      pspec);
 
 
@@ -390,8 +391,8 @@ rstto_settings_set_property    (GObject      *object,
         case PROP_SHOW_TOOLBAR:
             settings->priv->show_toolbar = g_value_get_boolean (value);
             break;
-        case PROP_TOOLBAR_OPEN_FOLDER:
-            settings->priv->toolbar_open_folder = g_value_get_boolean (value);
+        case PROP_TOOLBAR_OPEN:
+            settings->priv->toolbar_open = g_value_dup_string (value);
             break;
         case PROP_PRELOAD_IMAGES:
             settings->priv->preload_images = g_value_get_boolean (value);
@@ -458,8 +459,8 @@ rstto_settings_get_property    (GObject    *object,
         case PROP_SHOW_TOOLBAR:
             g_value_set_boolean (value, settings->priv->show_toolbar);
             break;
-        case PROP_TOOLBAR_OPEN_FOLDER:
-            g_value_set_boolean (value, settings->priv->toolbar_open_folder);
+        case PROP_TOOLBAR_OPEN:
+            g_value_set_string (value, settings->priv->toolbar_open);
             break;
         case PROP_PRELOAD_IMAGES:
             g_value_set_boolean (value, settings->priv->preload_images);



More information about the Xfce4-commits mailing list