[Xfce4-commits] <ristretto:master> Add 'choose-desktop' option to the preferences dialog.

Stephan Arts noreply at xfce.org
Wed Nov 23 06:52:02 CET 2011


Updating branch refs/heads/master
         to 3334e9ceda2da092b471ec8b5e00d9b5be8fd0ca (commit)
       from bce58ca2e31bdb1274e1463290b1fcd751baf7d1 (commit)

commit 3334e9ceda2da092b471ec8b5e00d9b5be8fd0ca
Author: Stephan Arts <stephan at xfce.org>
Date:   Tue Nov 15 09:30:15 2011 +0100

    Add 'choose-desktop' option to the preferences dialog.
    
    This option is used for configuring the method for setting the wallpaper.

 src/preferences_dialog.c |  158 ++++++++++++++++++++++++++++++++++++++++++++--
 src/settings.c           |   13 ++++
 2 files changed, 166 insertions(+), 5 deletions(-)

diff --git a/src/preferences_dialog.c b/src/preferences_dialog.c
index 9c16242..5baa879 100644
--- a/src/preferences_dialog.c
+++ b/src/preferences_dialog.c
@@ -32,6 +32,13 @@
 #define RSTTO_DEFAULT_CACHE_SIZE 256
 #endif
 
+enum {
+    DESKTOP_TYPE_NONE = 0,
+    DESKTOP_TYPE_XFCE,
+    DESKTOP_TYPE_GNOME,
+    DESKTOP_TYPE_OPENBOX
+};
+
 static void
 rstto_preferences_dialog_init(RsttoPreferencesDialog *);
 static void
@@ -64,6 +71,10 @@ cb_maximize_on_startup_check_button_toggled (
         GtkToggleButton *button, 
         gpointer user_data);
 static void
+cb_choose_desktop_combo_box_changed (
+        GtkComboBox *combo_box,
+        gpointer user_data);
+static void
 cb_rstto_preferences_dialog_slideshow_timeout_value_changed (GtkRange *, gpointer);
 
 static GtkWidgetClass *parent_class = NULL;
@@ -103,9 +114,9 @@ struct _RsttoPreferencesDialogPriv
 
     struct
     {
-        GtkWidget *scaling_frame;
-        GtkWidget *scaling_vbox;
-        GtkWidget *resize_image_on_maximize;
+        GtkWidget *desktop_frame;
+        GtkWidget *desktop_vbox;
+        GtkWidget *choose_desktop_combo_box;
 
         GtkWidget *startup_frame;
         GtkWidget *startup_vbox;
@@ -152,6 +163,7 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
     gboolean bool_wrap_images;
     gboolean bool_maximize_on_startup;
     gboolean bool_merge_toolbars;
+    gchar   *str_desktop_type = NULL;
 
     GdkColor *bgcolor;
     GtkWidget *timeout_lbl, *timeout_hscale;
@@ -163,6 +175,7 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
     GtkWidget *control_main_lbl;
     GtkWidget *behaviour_main_vbox;
     GtkWidget *behaviour_main_lbl;
+    GtkWidget *behaviour_desktop_lbl;
     GtkWidget *notebook = gtk_notebook_new ();
 
 
@@ -178,6 +191,7 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
                   "maximize-on-startup", &bool_maximize_on_startup,
                   "wrap-images", &bool_wrap_images,
                   "merge-toolbars", &bool_merge_toolbars,
+                  "desktop-type", &str_desktop_type,
                   NULL);
 
 /*****************/
@@ -289,6 +303,7 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->control_tab.zoom_revert_check_button), bool_revert_zoom_direction);
 
     g_signal_connect (G_OBJECT (dialog->priv->control_tab.zoom_revert_check_button), "toggled", (GCallback)cb_rstto_preferences_dialog_zoom_revert_check_button_toggled, dialog);
+
 /*******************/
 /** Behaviour tab **/
 /*******************/
@@ -322,6 +337,103 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
             "toggled",
             (GCallback)cb_maximize_on_startup_check_button_toggled,
             dialog);
+    /********************************************/
+    dialog->priv->behaviour_tab.desktop_vbox = gtk_vbox_new(FALSE, 4);
+    dialog->priv->behaviour_tab.desktop_frame = xfce_gtk_frame_box_new_with_content(
+            _("Desktop"),
+            dialog->priv->behaviour_tab.desktop_vbox);
+    gtk_box_pack_start (
+            GTK_BOX (behaviour_main_vbox),
+            dialog->priv->behaviour_tab.desktop_frame,
+            FALSE,
+            FALSE,
+            0);
+    behaviour_desktop_lbl = gtk_label_new(NULL);
+    gtk_label_set_markup (
+            GTK_LABEL (behaviour_desktop_lbl),
+            _("Configure which system is currently managing your desktop.\n"
+              "This setting determines the method <i>Ristretto</i> will use\n"
+              "to configure the desktop wallpaper."));
+    gtk_misc_set_alignment(
+            GTK_MISC(behaviour_desktop_lbl),
+            0,
+            0.5);
+    gtk_box_pack_start (
+            GTK_BOX (dialog->priv->behaviour_tab.desktop_vbox),
+            behaviour_desktop_lbl,
+            FALSE,
+            FALSE,
+            0);
+    dialog->priv->behaviour_tab.choose_desktop_combo_box =
+            gtk_combo_box_text_new();
+    gtk_box_pack_start (
+            GTK_BOX (dialog->priv->behaviour_tab.desktop_vbox),
+            dialog->priv->behaviour_tab.choose_desktop_combo_box,
+            FALSE,
+            FALSE,
+            0);
+    gtk_combo_box_text_insert_text(
+            GTK_COMBO_BOX_TEXT (dialog->priv->behaviour_tab.choose_desktop_combo_box),
+            DESKTOP_TYPE_NONE,
+            _("None"));
+    gtk_combo_box_text_insert_text (
+            GTK_COMBO_BOX_TEXT (dialog->priv->behaviour_tab.choose_desktop_combo_box),
+            DESKTOP_TYPE_XFCE,
+            _("Xfce"));
+    /*
+    gtk_combo_box_text_insert_text (
+            GTK_COMBO_BOX_TEXT (dialog->priv->behaviour_tab.choose_desktop_combo_box),
+            DESKTOP_TYPE_GNOME,
+            _("GNOME"));
+    */
+
+    if (str_desktop_type != NULL)
+    {
+        if (0 == g_strcasecmp (str_desktop_type, "xfce"))
+        {
+            gtk_combo_box_set_active (
+                GTK_COMBO_BOX (dialog->priv->behaviour_tab.choose_desktop_combo_box),
+                DESKTOP_TYPE_XFCE);
+        }
+        else
+        {
+            if (0 == g_strcasecmp (str_desktop_type, "gnome"))
+            {
+                gtk_combo_box_set_active (
+                    GTK_COMBO_BOX (dialog->priv->behaviour_tab.choose_desktop_combo_box),
+                    DESKTOP_TYPE_GNOME);
+            }
+            else
+            {
+                if (0 == g_strcasecmp (str_desktop_type, "openbox"))
+                {
+                    gtk_combo_box_set_active (
+                        GTK_COMBO_BOX (dialog->priv->behaviour_tab.choose_desktop_combo_box),
+                        DESKTOP_TYPE_OPENBOX);
+                }
+                else
+                {
+                    gtk_combo_box_set_active (
+                        GTK_COMBO_BOX (dialog->priv->behaviour_tab.choose_desktop_combo_box),
+                        DESKTOP_TYPE_NONE);
+                }
+            }
+        }
+    }
+    else
+    {
+        /* Default, set it to xfce */
+        gtk_combo_box_set_active (
+            GTK_COMBO_BOX (dialog->priv->behaviour_tab.choose_desktop_combo_box),
+            DESKTOP_TYPE_XFCE);
+    }
+
+    g_signal_connect (
+            G_OBJECT(dialog->priv->behaviour_tab.choose_desktop_combo_box),
+            "changed",
+            (GCallback)cb_choose_desktop_combo_box_changed,
+            dialog);
+    
 
 
 
@@ -461,8 +573,9 @@ cb_wrap_images_check_button_toggled (GtkToggleButton *button,
 }
 
 static void
-cb_maximize_on_startup_check_button_toggled (GtkToggleButton *button, 
-                                                      gpointer user_data)
+cb_maximize_on_startup_check_button_toggled (
+        GtkToggleButton *button, 
+        gpointer user_data)
 {
     RsttoPreferencesDialog *dialog = RSTTO_PREFERENCES_DIALOG (user_data);
 
@@ -471,3 +584,38 @@ cb_maximize_on_startup_check_button_toggled (GtkToggleButton *button,
             "maximize-on-startup",
             gtk_toggle_button_get_active(button));
 }
+
+static void
+cb_choose_desktop_combo_box_changed (
+        GtkComboBox *combo_box,
+        gpointer user_data)
+{
+    RsttoPreferencesDialog *dialog = RSTTO_PREFERENCES_DIALOG (user_data);
+    switch (gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box)))
+    {
+        case DESKTOP_TYPE_NONE:
+            rstto_settings_set_string_property (
+                    dialog->priv->settings,
+                    "desktop-type",
+                    "none");
+            break;
+        case DESKTOP_TYPE_XFCE:
+            rstto_settings_set_string_property (
+                    dialog->priv->settings,
+                    "desktop-type",
+                    "xfce");
+            break;
+        case DESKTOP_TYPE_GNOME:
+            rstto_settings_set_string_property (
+                    dialog->priv->settings,
+                    "desktop-type",
+                    "gnome");
+            break;
+        case DESKTOP_TYPE_OPENBOX:
+            rstto_settings_set_string_property (
+                    dialog->priv->settings,
+                    "desktop-type",
+                    "openbox");
+            break;
+    }
+}
diff --git a/src/settings.c b/src/settings.c
index d715252..f467061 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -195,6 +195,7 @@ rstto_settings_init (GObject *object)
             G_TYPE_BOOLEAN,
             settings,
             "show-nav-toolbar");
+
     xfconf_g_property_bind (
             settings->priv->channel,
             "/window/navigationbar/position",
@@ -208,6 +209,7 @@ rstto_settings_init (GObject *object)
             G_TYPE_BOOLEAN,
             settings,
             "show-thumbnailbar");
+
     xfconf_g_property_bind (
             settings->priv->channel,
             "/window/thumbnails/hide-fullscreen",
@@ -246,18 +248,21 @@ rstto_settings_init (GObject *object)
             G_TYPE_BOOLEAN,
             settings,
             "revert-zoom-direction");
+
     xfconf_g_property_bind (
             settings->priv->channel,
             "/image/wrap",
             G_TYPE_BOOLEAN,
             settings,
             "wrap-images");
+
     xfconf_g_property_bind (
             settings->priv->channel,
             "/window/use-thunar-properties",
             G_TYPE_BOOLEAN,
             settings,
             "use-thunar-properties");
+
     xfconf_g_property_bind (
             settings->priv->channel,
             "/window/maximize-on-startup",
@@ -278,6 +283,14 @@ rstto_settings_init (GObject *object)
             G_TYPE_BOOLEAN,
             settings,
             "show-error-missing-thumbnailer");
+
+    xfconf_g_property_bind (
+            settings->priv->channel,
+            "/desktop/type",
+            G_TYPE_STRING,
+            settings,
+            "desktop-type");
+
 }
 
 


More information about the Xfce4-commits mailing list