[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