[gnome-control-center] background: Add "swap" button for gradients



commit dd1b9d8336badb9dca10c40133cff580c88c7185
Author: Bastien Nocera <hadess hadess net>
Date:   Thu Jul 14 16:38:22 2011 +0100

    background: Add "swap" button for gradients
    
    https://bugzilla.gnome.org/show_bug.cgi?id=34498

 panels/background/background.ui         |   25 +++++++++++++++++-
 panels/background/cc-background-panel.c |   41 +++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 2 deletions(-)
---
diff --git a/panels/background/background.ui b/panels/background/background.ui
index 43afc41..e695c52 100644
--- a/panels/background/background.ui
+++ b/panels/background/background.ui
@@ -241,11 +241,18 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkColorButton" id="style-scolor">
+                  <object class="GtkButton" id="swap-color-button">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
-                    <property name="color">#000000000000</property>
+                    <property name="use_action_appearance">False</property>
+                    <child>
+                      <object class="GtkImage" id="image1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="icon_name">object-flip-horizontal-symbolic</property>
+                      </object>
+                    </child>
                   </object>
                   <packing>
                     <property name="expand">False</property>
@@ -269,6 +276,20 @@
                     <property name="expand">False</property>
                     <property name="fill">False</property>
                     <property name="pack_type">end</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkColorButton" id="style-scolor">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="color">#000000000000</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
                     <property name="position">2</property>
                   </packing>
                 </child>
diff --git a/panels/background/cc-background-panel.c b/panels/background/cc-background-panel.c
index 2ba9c56..f7f71ed 100644
--- a/panels/background/cc-background-panel.c
+++ b/panels/background/cc-background-panel.c
@@ -250,6 +250,12 @@ source_update_edit_box (CcBackgroundPanelPrivate *priv,
   else
     gtk_widget_show (WID ("style-pcolor"));
 
+  if (gtk_widget_get_visible (WID ("style-pcolor")) &&
+      gtk_widget_get_visible (WID ("style-scolor")))
+    gtk_widget_show (WID ("swap-color-button"));
+  else
+    gtk_widget_hide (WID ("swap-color-button"));
+
   if (flags & CC_BACKGROUND_ITEM_HAS_PLACEMENT ||
       cc_background_item_get_uri (priv->current_background) == NULL)
     gtk_widget_hide (WID ("style-combobox"));
@@ -814,6 +820,39 @@ color_changed_cb (GtkColorButton    *button,
 }
 
 static void
+swap_colors_clicked (GtkButton         *button,
+                     CcBackgroundPanel *panel)
+{
+  CcBackgroundPanelPrivate *priv = panel->priv;
+  GdkColor pcolor, scolor;
+  char *new_pcolor, *new_scolor;
+
+  gtk_color_button_get_color (GTK_COLOR_BUTTON (WID ("style-pcolor")), &pcolor);
+  gtk_color_button_get_color (GTK_COLOR_BUTTON (WID ("style-scolor")), &scolor);
+
+  gtk_color_button_set_color (GTK_COLOR_BUTTON (WID ("style-scolor")), &pcolor);
+  gtk_color_button_set_color (GTK_COLOR_BUTTON (WID ("style-pcolor")), &scolor);
+
+  new_pcolor = gdk_color_to_string (&scolor);
+  new_scolor = gdk_color_to_string (&pcolor);
+
+  g_object_set (priv->current_background,
+                "primary-color", new_pcolor,
+                "secondary-color", new_scolor,
+                NULL);
+
+  g_settings_set_string (priv->settings, WP_PCOLOR_KEY, new_pcolor);
+  g_settings_set_string (priv->settings, WP_SCOLOR_KEY, new_scolor);
+
+  g_free (new_pcolor);
+  g_free (new_scolor);
+
+  g_settings_apply (priv->settings);
+
+  update_preview (priv, NULL);
+}
+
+static void
 row_inserted (GtkTreeModel      *tree_model,
 	      GtkTreePath       *path,
 	      GtkTreeIter       *iter,
@@ -1216,6 +1255,8 @@ cc_background_panel_init (CcBackgroundPanel *self)
                     G_CALLBACK (color_changed_cb), self);
   g_signal_connect (WID ("style-scolor"), "color-set",
                     G_CALLBACK (color_changed_cb), self);
+  g_signal_connect (WID ("swap-color-button"), "clicked",
+                    G_CALLBACK (swap_colors_clicked), self);
 
   priv->copy_cancellable = g_cancellable_new ();
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]