[Xfce4-commits] <xfce4-notes-plugin:master> gtk3: Added theming support through GtkCssProvider
Mike Massonnet
noreply at xfce.org
Mon May 13 20:14:18 CEST 2013
Updating branch refs/heads/master
to 5e59d5eafb9e91135160fd5ecb47c5a33a136556 (commit)
from 3b5e6b2d49e34c4889a3869e4960ce76da6e8477 (commit)
commit 5e59d5eafb9e91135160fd5ecb47c5a33a136556
Author: Mike Massonnet <mmassonnet at gmail.com>
Date: Tue Mar 12 16:35:40 2013 +0100
gtk3: Added theming support through GtkCssProvider
Added a custom CSS file that is installed system-wide and contains
modifications on top of the Adwaita theme to look monochrome with a
customizable background color set within xfconf.
Reading the default background color from GTK+ is not supported yet.
Splitted color.c,h,vapi in two sections inside ext-gdk.c,h,vapi and
theme-gtkrc.c,h,vapi. The source theme-gtkrc is used for GTK+2 and
theme-gtkcss for GTK+3.
data/gtk-3.0/gtk-main.css | 37 +++++++++
lib/Makefile.am | 20 ++++-
lib/application.vala | 9 +-
lib/color.c | 174 ----------------------------------------
lib/color.vapi | 7 --
lib/ext-gdk.c | 80 ++++++++++++++++++
lib/{color.h => ext-gdk.h} | 15 +---
lib/ext-gdk.vapi | 5 +
lib/theme-gtkcss.vala | 50 ++++++++++++
lib/theme-gtkrc.c | 102 +++++++++++++++++++++++
lib/{popup.h => theme-gtkrc.h} | 19 ++---
lib/theme-gtkrc.vapi | 7 ++
lib/{popup.h => theme.vala} | 30 +++++---
src/Makefile.am | 5 +-
src/main-settings-dialog.c | 2 +-
15 files changed, 334 insertions(+), 228 deletions(-)
diff --git a/data/gtk-3.0/gtk-main.css b/data/gtk-3.0/gtk-main.css
new file mode 100644
index 0000000..f0be8b7
--- /dev/null
+++ b/data/gtk-3.0/gtk-main.css
@@ -0,0 +1,37 @@
+ at define-color theme_base_color @notes_bg_color;
+ at define-color theme_text_color shade (@theme_base_color, 0.4);
+ at define-color theme_bg_color @theme_base_color;
+ at define-color theme_fg_color shade (@theme_base_color, 0.3);
+ at define-color theme_selected_bg_color shade (@theme_base_color, 0.8);
+ at define-color theme_selected_fg_color shade (@theme_base_color, 1.4);
+ at define-color insensitive_fg_color shade (@theme_fg_color, 1.8);
+ at define-color insensitive_bg_color shade (@theme_bg_color, 1.1);
+
+ at define-color borders shade (@theme_base_color, 0.8);
+ at define-color frame_color shade (@theme_base_color, 0.8);
+ at define-color notebook_active_tab_border shade (@theme_base_color, 1.1);
+ at define-color notebook_selected_tab_color shade (@theme_base_color, 0.9);
+
+GtkWindow {
+ background-image: linear-gradient(to bottom,
+ shade (@theme_base_color, 0.8),
+ shade (@theme_base_color, 0.95) 87px);
+}
+
+.button {
+ background-color: transparent;
+}
+
+.button *:active {
+ color: darker (@theme_fg_color);
+ text-shadow: 1 1 lighter (@theme_bg_color);
+}
+
+.tooltip {
+ border-style: solid;
+ border-width: 1px;
+ border-color: lighter (@theme_fg_color);
+ color: darker (@theme_fg_color);
+ text-shadow: 1 1 lighter (@theme_bg_color);
+}
+
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 498ee59..118582a 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -5,7 +5,6 @@ libnotes_la_VALAFLAGS = \
--header=libnotes.h \
--vapidir=$(srcdir) \
--pkg=config \
- --pkg=color \
--pkg=libxfconf-0 \
--pkg=libxfce4util-1.0
@@ -15,6 +14,8 @@ libnotes_la_VALAFLAGS += \
--pkg=gtk+-3.0
else
libnotes_la_VALAFLAGS += \
+ --pkg=ext-gdk \
+ --pkg=theme-gtkrc \
--pkg=gtk+-2.0
endif
@@ -25,11 +26,16 @@ libnotes_la_SOURCES = \
hypertextview.vala \
note.vala \
window.vala \
- color.c
+ theme.vala
-if !ENABLE_GTK3
+if ENABLE_GTK3
libnotes_la_SOURCES += \
- popup.c
+ theme-gtkcss.vala
+else
+libnotes_la_SOURCES += \
+ popup.c \
+ ext-gdk.c \
+ theme-gtkrc.c
endif
libnotes_la_CFLAGS = \
@@ -50,13 +56,17 @@ libnotes_la_LIBADD = \
@XFCONF_LIBS@
EXTRA_DIST = \
- color.h \
+ ext-gdk.h \
+ theme-gtkrc.h \
popup.h \
libnotes.vapi \
libnotes.h
if ENABLE_GTK3
EXTRA_DIST += \
+ ext-gdk.c \
+ theme-gtkrc.c \
popup.c
+else
endif
diff --git a/lib/application.vala b/lib/application.vala
index caeccba..243f80e 100644
--- a/lib/application.vala
+++ b/lib/application.vala
@@ -31,9 +31,7 @@ namespace Xnp {
private Xfconf.Channel xfconf_channel;
construct {
-#if ENABLE_GTK3
- // TODO use GtkCssProvider
-#else
+#if !ENABLE_GTK3
var notesgtkrc = "%s/xfce4/xfce4-notes.gtkrc".printf (GLib.Environment.get_user_config_dir ());
Gtk.rc_parse (notesgtkrc);
#endif
@@ -148,13 +146,14 @@ namespace Xnp {
string color = xfconf_channel.get_string ("/global/background-color", "#F7EB96");
if (color == "GTK+") {
#if ENABLE_GTK3
- // TODO use GtkStyleContext
+ // TODO: Read from StyleContext with default CssProvider
+ return;
#else
var style_widget = new Gtk.Invisible ();
color = style_widget.get_style ().bg[Gtk.StateType.NORMAL].to_string ();
#endif
}
- Xnp.Color.set_background (color);
+ Xnp.Theme.set_background_color (color);
}
private void quit () {
diff --git a/lib/color.c b/lib/color.c
deleted file mode 100644
index f8306b7..0000000
--- a/lib/color.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Notes - panel plugin for Xfce Desktop Environment
- * Copyright (C) 2009-2010 Mike Massonnet <mmassonnet at xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_MATH_H
-#include <math.h>
-#endif
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include <glib.h>
-#include <gdk/gdk.h>
-#include <gtk/gtk.h>
-
-#include "color.h"
-
-#define RC_STYLE \
- "gtk_color_scheme = \"notes_fg_color:#xxxxxxxxxxxx\\nnotes_bg_color:#xxxxxxxxxxxx\\nnotes_base_color:#xxxxxxxxxxxx\\nnotes_text_color:#xxxxxxxxxxxx\\nnotes_selected_bg_color:#xxxxxxxxxxxx\\nnotes_selected_fg_color:#xxxxxxxxxxxx\"\n" \
- "include \"" PKGDATADIR "/gtk-2.0/notes.gtkrc\""
-
-void
-color_set_background (const gchar *background)
-{
- GdkColor color, *color2;
- gchar *notesrc_file;
- gchar *bg;
- gchar *text;
- gchar *selected;
- gchar rc_style[] = RC_STYLE;
- gchar *offset;
-
- if (!gdk_color_parse (background, &color))
- return;
-
- /* bg */
- bg = gdk_color_to_string (&color);
-
- /* text */
- color2 = gdk_color_copy (&color);
- __gdk_color_contrast (color2, 5.);
- text = gdk_color_to_string (color2);
- gdk_color_free (color2);
-
- /* selected */
- color2 = gdk_color_copy (&color);
- __gdk_color_contrast (color2, 3.2);
- selected = gdk_color_to_string (color2);
- gdk_color_free (color2);
-
- /* notes_fg_color */
- offset = rc_style + 35;
- memcpy (offset, bg, 13);
-
- /* notes_bg_color */
- offset += 30;
- memcpy (offset, text, 13);
-
- /* notes_base_color */
- offset += 32;
- memcpy (offset, bg, 13);
-
- /* notes_text_color */
- offset += 32;
- memcpy (offset, text, 13);
-
- /* notes_selected_bg_color */
- offset += 39;
- memcpy (offset, selected, 13);
-
- /* notes_selected_fg_color */
- offset += 39;
- memcpy (offset, bg, 13);
-
- /* set the rc style */
- notesrc_file = g_strdup_printf ("%s/xfce4/xfce4-notes.gtkrc", g_get_user_config_dir ());
- g_file_set_contents (notesrc_file, rc_style, -1, NULL);
-
- gtk_rc_reparse_all ();
-
- g_free (notesrc_file);
- g_free (bg);
- g_free (text);
- g_free (selected);
-}
-
-void
-__gdk_color_contrast (GdkColor *color,
- gdouble contrast)
-{
- /* cf. http://accessibility.kde.org/hsl-adjusted.php */
- gdouble N_r, N_g, N_b;
- gdouble f_r = 0.2125, f_g = 0.7154, f_b = 0.0721;
- gdouble L, L_, m, D, D_;
- gdouble N__1, N_0, N_1;
- gdouble N_r_, N_g_, N_b_;
-
- g_return_if_fail (G_LIKELY (contrast >= 1 && contrast <= 21));
-
- /* Calculate luminosity */
- N_r = pow ((gdouble)color->red / G_MAXUINT16, 2.2);
- N_g = pow ((gdouble)color->green / G_MAXUINT16, 2.2);
- N_b = pow ((gdouble)color->blue / G_MAXUINT16, 2.2);
-
- L = f_r * N_r + f_g * N_g + f_b * N_b;
-
- /* Change luminosity */
- L_ = (L + 0.05) / contrast - 0.05;
-
- N__1 = MIN (N_r, MIN (N_g, N_b));
- N_1 = MAX (N_r, MAX (N_g, N_b));
- if (N_r > N__1 && N_r < N_1)
- N_0 = N_r;
- else if (N_g > N__1 && N_g < N_1)
- N_0 = N_g;
- else if (N_b > N__1 && N_b < N_1)
- N_0 = N_b;
- else
- N_0 = N_1;
-
- m = f_g + f_r * (N_0 - N__1) / (N_1 - N__1);
- D = MIN (L / m, (1 - L) / (1 - m));
- D_ = MIN (L_ / m, (1 - L_) / (1 - m));
-
- N_r_ = L_ + (N_r - L) * D_ / D;
- N_g_ = L_ + (N_g - L) * D_ / D;
- N_b_ = L_ + (N_b - L) * D_ / D;
-
- /* Conversion to RGB */
- color->red = G_MAXUINT16 * pow (N_r_, 1 / 2.2);
- color->green = G_MAXUINT16 * pow (N_g_, 1 / 2.2);
- color->blue = G_MAXUINT16 * pow (N_b_, 1 / 2.2);
-}
-
-#if !GTK_CHECK_VERSION (2,12,0)
-gchar *
-gdk_color_to_string (const GdkColor *color)
-{
- g_return_val_if_fail (color != NULL, NULL);
-
- return g_strdup_printf ("#%04x%04x%04x", color->red, color->green, color->blue);
-}
-#endif
-
-#if !GTK_CHECK_VERSION (2,14,0)
-GtkWidget*
-gtk_color_selection_dialog_get_color_selection (GtkColorSelectionDialog *colorsel)
-{
- g_return_val_if_fail (GTK_IS_COLOR_SELECTION_DIALOG (colorsel), NULL);
-
- return colorsel->colorsel;
-}
-#endif
-
diff --git a/lib/color.vapi b/lib/color.vapi
deleted file mode 100644
index 57ed23f..0000000
--- a/lib/color.vapi
+++ /dev/null
@@ -1,7 +0,0 @@
-[CCode (cprefix = "", lower_case_prefix = "", cheader_filename = "color.h")]
-namespace Xnp.Color {
- [CCode (cname = "color_set_background")]
- public static void set_background (string color);
- [CCode (cname = "__gdk_color_constrast")]
- public static void contrast (Gdk.Color color, double contrast);
-}
diff --git a/lib/ext-gdk.c b/lib/ext-gdk.c
new file mode 100644
index 0000000..c1deec4
--- /dev/null
+++ b/lib/ext-gdk.c
@@ -0,0 +1,80 @@
+/*
+ * Notes - panel plugin for Xfce Desktop Environment
+ * Copyright (C) 2006-2013 Mike Massonnet <mmassonnet at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MATH_H
+#include <math.h>
+#endif
+
+#include <glib.h>
+#include <gdk/gdk.h>
+
+#include "ext-gdk.h"
+
+void
+__gdk_color_contrast (GdkColor *color,
+ gdouble contrast)
+{
+ /* cf. http://accessibility.kde.org/hsl-adjusted.php */
+ gdouble N_r, N_g, N_b;
+ gdouble f_r = 0.2125, f_g = 0.7154, f_b = 0.0721;
+ gdouble L, L_, m, D, D_;
+ gdouble N__1, N_0, N_1;
+ gdouble N_r_, N_g_, N_b_;
+
+ g_return_if_fail (G_LIKELY (contrast >= 1 && contrast <= 21));
+
+ /* Calculate luminosity */
+ N_r = pow ((gdouble)color->red / G_MAXUINT16, 2.2);
+ N_g = pow ((gdouble)color->green / G_MAXUINT16, 2.2);
+ N_b = pow ((gdouble)color->blue / G_MAXUINT16, 2.2);
+
+ L = f_r * N_r + f_g * N_g + f_b * N_b;
+
+ /* Change luminosity */
+ L_ = (L + 0.05) / contrast - 0.05;
+
+ N__1 = MIN (N_r, MIN (N_g, N_b));
+ N_1 = MAX (N_r, MAX (N_g, N_b));
+ if (N_r > N__1 && N_r < N_1)
+ N_0 = N_r;
+ else if (N_g > N__1 && N_g < N_1)
+ N_0 = N_g;
+ else if (N_b > N__1 && N_b < N_1)
+ N_0 = N_b;
+ else
+ N_0 = N_1;
+
+ m = f_g + f_r * (N_0 - N__1) / (N_1 - N__1);
+ D = MIN (L / m, (1 - L) / (1 - m));
+ D_ = MIN (L_ / m, (1 - L_) / (1 - m));
+
+ N_r_ = L_ + (N_r - L) * D_ / D;
+ N_g_ = L_ + (N_g - L) * D_ / D;
+ N_b_ = L_ + (N_b - L) * D_ / D;
+
+ /* Conversion to RGB */
+ color->red = G_MAXUINT16 * pow (N_r_, 1 / 2.2);
+ color->green = G_MAXUINT16 * pow (N_g_, 1 / 2.2);
+ color->blue = G_MAXUINT16 * pow (N_b_, 1 / 2.2);
+}
+
diff --git a/lib/color.h b/lib/ext-gdk.h
similarity index 67%
rename from lib/color.h
rename to lib/ext-gdk.h
index 031b5ba..f6aaedd 100644
--- a/lib/color.h
+++ b/lib/ext-gdk.h
@@ -1,6 +1,6 @@
/*
* Notes - panel plugin for Xfce Desktop Environment
- * Copyright (C) 2009-2010 Mike Massonnet <mmassonnet at xfce.org>
+ * Copyright (C) 2006-2013 Mike Massonnet <mmassonnet at xfce.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,22 +17,13 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#ifndef COLOR_H
-#define COLOR_H
+#ifndef EXT_GDK_H
+#define EXT_GDK_H
#include <glib.h>
#include <gdk/gdk.h>
-#include <gtk/gtk.h>
-void color_set_background (const gchar *background);
void __gdk_color_contrast (GdkColor *color,
gdouble contrast);
-#if !GTK_CHECK_VERSION (2,12,0)
-gchar * gdk_color_to_string (const GdkColor *color);
-#endif
-#if !GTK_CHECK_VERSION (2,14,0)
-GtkWidget* gtk_color_selection_dialog_get_color_selection (GtkColorSelectionDialog *colorsel);
-#endif
-
#endif
diff --git a/lib/ext-gdk.vapi b/lib/ext-gdk.vapi
new file mode 100644
index 0000000..3afac96
--- /dev/null
+++ b/lib/ext-gdk.vapi
@@ -0,0 +1,5 @@
+[CCode (cprefix = "", lower_case_prefix = "", cheader_filename = "ext-gdk.h")]
+namespace ExtGdk {
+ [CCode (cname = "__gdk_color_constrast")]
+ public static void color_contrast (Gdk.Color color, double contrast);
+}
diff --git a/lib/theme-gtkcss.vala b/lib/theme-gtkcss.vala
new file mode 100644
index 0000000..dc72317
--- /dev/null
+++ b/lib/theme-gtkcss.vala
@@ -0,0 +1,50 @@
+/*
+ * Notes - panel plugin for Xfce Desktop Environment
+ * Copyright (c) 2006-2013 Mike Massonnet <mmassonnet at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+namespace Xnp {
+
+ public class ThemeGtkcss : GLib.Object {
+
+ public static string get_css_path () {
+ return "%s/xfce4/xfce4-notes.css".printf (GLib.Environment.get_user_config_dir ());
+ }
+
+ public static void update_css (Gdk.Color color) {
+ string css = "@define-color notes_bg_color #%x%x%x;\n at import url(\"%s%c%s%cgtk-main.css\");"
+ .printf (color.red >> 8, color.green >> 8, color.blue >> 8, Config.PKGDATADIR, GLib.Path.DIR_SEPARATOR, "gtk-3.0", GLib.Path.DIR_SEPARATOR);
+ try {
+ GLib.FileUtils.set_contents (get_css_path (), css, -1);
+ } catch (FileError e) {
+ warning ("Unable to update CSS file: %s", e.message);
+ }
+ }
+
+ public static void update_style_context () {
+ try {
+ var cssprovider = new Gtk.CssProvider ();
+ cssprovider.load_from_path (get_css_path ());
+ Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), cssprovider, 255);
+ } catch (GLib.Error e) {
+ warning ("%s", e.message);
+ }
+ }
+
+ }
+
+}
diff --git a/lib/theme-gtkrc.c b/lib/theme-gtkrc.c
new file mode 100644
index 0000000..5a45237
--- /dev/null
+++ b/lib/theme-gtkrc.c
@@ -0,0 +1,102 @@
+/*
+ * Notes - panel plugin for Xfce Desktop Environment
+ * Copyright (c) 2006-2013 Mike Massonnet <mmassonnet at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <glib.h>
+#include <gdk/gdk.h>
+
+#include "ext-gdk.h"
+
+
+
+#define RC_STYLE \
+ "gtk_color_scheme = \"notes_fg_color:#xxxxxxxxxxxx\\nnotes_bg_color:#xxxxxxxxxxxx\\n" \
+ "notes_base_color:#xxxxxxxxxxxx\\nnotes_text_color:#xxxxxxxxxxxx\\n" \
+ "notes_selected_bg_color:#xxxxxxxxxxxx\\nnotes_selected_fg_color:#xxxxxxxxxxxx\"\n" \
+ "include \"" PKGDATADIR "/gtk-2.0/notes.gtkrc\""
+
+
+
+void
+update_gtkrc (const GdkColor color)
+{
+ GdkColor *color2;
+ gchar *notesrc_file;
+ gchar *bg;
+ gchar *text;
+ gchar *selected;
+ gchar rc_style[] = RC_STYLE;
+ gchar *offset;
+
+ /* bg */
+ bg = gdk_color_to_string (&color);
+
+ /* text */
+ color2 = gdk_color_copy (&color);
+ __gdk_color_contrast (color2, 5.);
+ text = gdk_color_to_string (color2);
+ gdk_color_free (color2);
+
+ /* selected */
+ color2 = gdk_color_copy (&color);
+ __gdk_color_contrast (color2, 3.2);
+ selected = gdk_color_to_string (color2);
+ gdk_color_free (color2);
+
+ /* notes_fg_color */
+ offset = rc_style + 35;
+ memcpy (offset, bg, 13);
+
+ /* notes_bg_color */
+ offset += 30;
+ memcpy (offset, text, 13);
+
+ /* notes_base_color */
+ offset += 32;
+ memcpy (offset, bg, 13);
+
+ /* notes_text_color */
+ offset += 32;
+ memcpy (offset, text, 13);
+
+ /* notes_selected_bg_color */
+ offset += 39;
+ memcpy (offset, selected, 13);
+
+ /* notes_selected_fg_color */
+ offset += 39;
+ memcpy (offset, bg, 13);
+
+ /* set the rc style */
+ notesrc_file = g_strdup_printf ("%s/xfce4/xfce4-notes.gtkrc", g_get_user_config_dir ());
+ g_file_set_contents (notesrc_file, rc_style, -1, NULL);
+
+ g_free (notesrc_file);
+ g_free (bg);
+ g_free (text);
+ g_free (selected);
+}
+
diff --git a/lib/popup.h b/lib/theme-gtkrc.h
similarity index 62%
copy from lib/popup.h
copy to lib/theme-gtkrc.h
index e984505..bd82cf6 100644
--- a/lib/popup.h
+++ b/lib/theme-gtkrc.h
@@ -1,7 +1,6 @@
/*
* Notes - panel plugin for Xfce Desktop Environment
- * Copyright (C) 2002-2006 Olivier Fourdan
- * Copyright (C) 2009-2010 Mike Massonnet <mmassonnet at xfce.org>
+ * Copyright (c) 2006-2013 Mike Massonnet <mmassonnet at xfce.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -11,22 +10,20 @@
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * GNU Library General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#ifndef __POPUP_H__
-#define __POPUP_H__
+#ifndef THEME_GTKRC_H
+#define THEME_GTKRC_H
-#include <gtk/gtk.h>
+#include <glib.h>
+#include <gdk/gdk.h>
-#define XFCE_NOTES_SELECTION "XFCE_NOTES_SELECTION"
-#define NOTES_MSG_SHOW_HIDE "SHOW_HIDE"
-
-gboolean popup_set_x_selection (GtkWidget *widget);
-const gchar* popup_get_message_from_event (GdkEventClient *event);
+void xnp_theme_update_gtkrc (const GdkColor color);
#endif
+
diff --git a/lib/theme-gtkrc.vapi b/lib/theme-gtkrc.vapi
new file mode 100644
index 0000000..606ab96
--- /dev/null
+++ b/lib/theme-gtkrc.vapi
@@ -0,0 +1,7 @@
+[CCode (cprefix = "", lower_case_prefix = "", cheader_filename = "theme-gtkrc.h")]
+namespace Xnp {
+ public class ThemeGtkrc {
+ public static void update_gtkrc (Gdk.Color color);
+ }
+}
+
diff --git a/lib/popup.h b/lib/theme.vala
similarity index 61%
copy from lib/popup.h
copy to lib/theme.vala
index e984505..d6b50ef 100644
--- a/lib/popup.h
+++ b/lib/theme.vala
@@ -1,7 +1,6 @@
/*
* Notes - panel plugin for Xfce Desktop Environment
- * Copyright (C) 2002-2006 Olivier Fourdan
- * Copyright (C) 2009-2010 Mike Massonnet <mmassonnet at xfce.org>
+ * Copyright (c) 2006-2013 Mike Massonnet <mmassonnet at xfce.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,15 +17,26 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#ifndef __POPUP_H__
-#define __POPUP_H__
+namespace Xnp {
-#include <gtk/gtk.h>
+ public class Theme : GLib.Object {
-#define XFCE_NOTES_SELECTION "XFCE_NOTES_SELECTION"
-#define NOTES_MSG_SHOW_HIDE "SHOW_HIDE"
-
-gboolean popup_set_x_selection (GtkWidget *widget);
-const gchar* popup_get_message_from_event (GdkEventClient *event);
+ public static void set_background_color (string color) {
+ Gdk.Color gdkcolor;
+ if (!Gdk.Color.parse (color, out gdkcolor)) {
+ warning ("Cannot parse background color %s", color);
+ return;
+ }
+#if ENABLE_GTK3
+ Xnp.ThemeGtkcss.update_css (gdkcolor);
+ Xnp.ThemeGtkcss.update_style_context ();
+#else
+ Xnp.ThemeGtkrc.update_gtkrc (gdkcolor);
+ Gtk.rc_reparse_all ();
#endif
+ }
+
+ }
+
+}
diff --git a/src/Makefile.am b/src/Makefile.am
index 032eba4..4844e5a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,5 @@
BUILT_SOURCES =
+
INCLUDES = \
-I$(top_srcdir) \
-I$(top_srcdir)/lib \
@@ -10,9 +11,9 @@ INCLUDES = \
# Popup program
#
-if ENABLE_GTK3
bin_PROGRAMS = xfce4-popup-notes
+if ENABLE_GTK3
if MAINTAINER_MODE
xfce4_popup_notes_VALAFLAGS = \
--pkg=gtk+-3.0
@@ -31,8 +32,6 @@ xfce4_popup_notes_CFLAGS = \
xfce4_popup_notes_LDADD = \
@GTK_LIBS@
else
-bin_PROGRAMS = xfce4-popup-notes
-
xfce4_popup_notes_SOURCES = \
$(top_srcdir)/lib/popup.h \
xfce4-popup-notes.c
diff --git a/src/main-settings-dialog.c b/src/main-settings-dialog.c
index 6afb515..ae8ed44 100644
--- a/src/main-settings-dialog.c
+++ b/src/main-settings-dialog.c
@@ -30,7 +30,7 @@
#include <libxfce4ui/libxfce4ui.h>
#include "defines.h"
-#include "color.h"
+#include "ext-gdk.h"
#if 0
static GtkWidget *notes_path_button_new ();
More information about the Xfce4-commits
mailing list