[Xfce4-commits] <xfce4-notes-plugin:master> Add two background colors GTK+ and Android

Mike Massonnet noreply at xfce.org
Sat Nov 6 21:52:07 CET 2010


Updating branch refs/heads/master
         to aec9c7a8e973f7092af41cfbff0428c4ea21614b (commit)
       from 937222d64bff40649ce26e033056b714865788e3 (commit)

commit aec9c7a8e973f7092af41cfbff0428c4ea21614b
Author: Mike Massonnet <mmassonnet at xfce.org>
Date:   Sat Nov 6 21:41:40 2010 +0100

    Add two background colors GTK+ and Android
    
    The Android is a dummy color while GTK+ looks at the theme normal
    background and listen to theme changes.

 lib/application.vala       |   22 ++++++++++++++++------
 src/defines.h              |    2 ++
 src/xfce4-notes-settings.c |   26 ++++++++++++++++++++++++++
 3 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/lib/application.vala b/lib/application.vala
index 83568a7..cd6c300 100644
--- a/lib/application.vala
+++ b/lib/application.vala
@@ -56,13 +56,14 @@ namespace Xnp {
 			}
 
 			xfconf_channel = new Xfconf.Channel.with_property_base ("xfce4-panel", "/plugins/notes");
-			string color = xfconf_channel.get_string ("/global/background-color", "#F7EB96");
-			Xnp.Color.set_background (color);
+			update_color ();
 
-			xfconf_channel.property_changed.connect ((channel, prop, val) => {
-				if (prop == "/global/background-color") {
-					Xnp.Color.set_background (val.get_string ());
-				}
+			xfconf_channel.property_changed["/global/background-color"].connect (() => {
+				update_color ();
+			});
+
+			Gtk.Settings.get_default ().notify["gtk-theme-name"].connect (() => {
+				update_color ();
 			});
 
 			string name;
@@ -92,6 +93,15 @@ namespace Xnp {
 			}
 		}
 
+		private void update_color () {
+			string color = xfconf_channel.get_string ("/global/background-color", "#F7EB96");
+			if (color == "GTK+") {
+				var style_widget = new Gtk.Invisible ();
+				color = style_widget.get_style ().bg[Gtk.StateType.NORMAL].to_string ();
+			}
+			Xnp.Color.set_background (color);
+		}
+
 		private void quit () {
 			// Save notes before leaving the main loop since it works with GObject signals
 			save_notes ();
diff --git a/src/defines.h b/src/defines.h
index 30c49c1..0dbf312 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -56,5 +56,7 @@
 #define BACKGROUND_CARMIN               "#FF96AC"
 #define BACKGROUND_MIMOSA               "#FCF66F"
 #define BACKGROUND_WHITE                "#F2F1EF"
+#define BACKGROUND_ANDROID              "#C1D756"
+#define BACKGROUND_GTK                  "GTK+"
 
 #endif
diff --git a/src/xfce4-notes-settings.c b/src/xfce4-notes-settings.c
index 557ac9d..f66bb13 100644
--- a/src/xfce4-notes-settings.c
+++ b/src/xfce4-notes-settings.c
@@ -61,6 +61,8 @@ enum
   COMBOBOX_BACKGROUND_CARMIN,
   COMBOBOX_BACKGROUND_MIMOSA,
   COMBOBOX_BACKGROUND_WHITE,
+  COMBOBOX_BACKGROUND_ANDROID,
+  COMBOBOX_BACKGROUND_GTK,
   COMBOBOX_BACKGROUND_CUSTOM,
 };
 
@@ -289,6 +291,8 @@ background_combo_box_new (void)
   gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Carmine"));
   gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Mimosa"));
   gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("White"));
+  gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Android"));
+  gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("GTK+"));
   gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Custom..."));
 
   color = xfconf_channel_get_string (xfconf_channel, "/global/background-color", GENERAL_BACKGROUND_COLOR);
@@ -308,6 +312,10 @@ background_combo_box_new (void)
     id = COMBOBOX_BACKGROUND_MIMOSA;
   else if (!g_ascii_strcasecmp (color, BACKGROUND_WHITE))
     id = COMBOBOX_BACKGROUND_WHITE;
+  else if (!g_ascii_strcasecmp (color, BACKGROUND_ANDROID))
+    id = COMBOBOX_BACKGROUND_ANDROID;
+  else if (!g_ascii_strcasecmp (color, BACKGROUND_GTK))
+    id = COMBOBOX_BACKGROUND_GTK;
   else
     id = COMBOBOX_BACKGROUND_CUSTOM;
   gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), id);
@@ -318,6 +326,14 @@ background_combo_box_new (void)
   return combobox;
 }
 
+static gchar *
+__gtk_widget_bg (void)
+{
+  GtkWidget *style_widget = gtk_invisible_new ();
+  GtkStyle *style = gtk_widget_get_style (style_widget);
+  return gdk_color_to_string (&style->bg[GTK_STATE_NORMAL]);
+}
+
 static void
 cb_background_changed (GtkComboBox *combobox,
                        gpointer data)
@@ -352,6 +368,10 @@ cb_background_changed (GtkComboBox *combobox,
     color = BACKGROUND_MIMOSA;
   else if (id == COMBOBOX_BACKGROUND_WHITE)
     color = BACKGROUND_WHITE;
+  else if (id == COMBOBOX_BACKGROUND_ANDROID)
+    color = BACKGROUND_ANDROID;
+  else if (id == COMBOBOX_BACKGROUND_GTK)
+    color = BACKGROUND_GTK;
   else if (id == COMBOBOX_BACKGROUND_CUSTOM)
     {
       dialog = background_dialog_new ();
@@ -388,6 +408,8 @@ timeout_cb_background_changed (gchar *color)
 {
   GdkColor gdkcolor;
   xfconf_channel_set_string (xfconf_channel, "/global/background-color", color);
+  if (!g_strcmp0 (color, "GTK+"))
+      color = __gtk_widget_bg ();
   gdk_color_parse (color, &gdkcolor);
   gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &gdkcolor);
   return FALSE;
@@ -408,6 +430,8 @@ background_dialog_new (void)
   g_signal_connect (selection, "color-changed", G_CALLBACK (cb_selection_changed), NULL);
 
   color = xfconf_channel_get_string (xfconf_channel, "/global/background-color", GENERAL_BACKGROUND_COLOR);
+  if (!g_strcmp0 (color, "GTK+"))
+      color = __gtk_widget_bg ();
   gdk_color_parse (color, &gdkcolor);
   gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (selection), &gdkcolor);
   g_free (color);
@@ -451,6 +475,8 @@ color_button_new (void)
   gchar *color;
 
   color = xfconf_channel_get_string (xfconf_channel, "/global/background-color", GENERAL_BACKGROUND_COLOR);
+  if (!g_strcmp0 (color, "GTK+"))
+      color = __gtk_widget_bg ();
   gdk_color_parse (color, &gdkcolor);
   g_free (color);
 



More information about the Xfce4-commits mailing list