[gnome-applets/wip/gnome-3.10+: 13/29] stickynotes: port to GSettings



commit 8a98f0fc8a37541f15479ee7a70adc4a75d87048
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Tue Jul 8 13:15:22 2014 +0300

    stickynotes: port to GSettings

 po/POTFILES.in                                     |    4 +-
 po/POTFILES.skip                                   |    1 +
 stickynotes/Makefile.am                            |   27 ++--
 stickynotes/gsettings.h                            |   21 +++
 ...ome.gnome-applets.stickynotes.gschema.xml.in.in |   73 +++++++++
 stickynotes/stickynotes.c                          |  101 ++++++-------
 stickynotes/stickynotes.schemas.in                 |  161 --------------------
 stickynotes/stickynotes_applet.c                   |  126 +++++----------
 stickynotes/stickynotes_applet.h                   |    7 +-
 stickynotes/stickynotes_applet_callbacks.c         |  111 +++++---------
 stickynotes/stickynotes_applet_callbacks.h         |    2 +-
 11 files changed, 244 insertions(+), 390 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d9fb687..74dc1c9 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -81,16 +81,14 @@ multiload/netspeed.c
 [type: gettext/ini]multiload/org.gnome.applets.MultiLoadApplet.panel-applet.in.in
 multiload/properties.c
 null_applet/null_applet.c
-# NB. these are actually separate files
-stickynotes/data/GNOME_StickyNotesApplet.server.in
 [type: gettext/ini]stickynotes/org.gnome.applets.StickyNotesApplet.panel-applet.in.in
 stickynotes/stickynotes.c
 [type: gettext/glade]stickynotes/stickynotes.ui
-stickynotes/stickynotes.schemas.in
 stickynotes/stickynotes_applet.c
 stickynotes/stickynotes_applet_callbacks.c
 stickynotes/stickynotes_callbacks.c
 [type: gettext/ini]trashapplet/org.gnome.applets.TrashApplet.panel-applet.in.in
+stickynotes/org.gnome.gnome-applets.stickynotes.gschema.xml.in.in
 trashapplet/src/trashapplet.c
 trashapplet/src/trash-empty.c
 [type: gettext/glade]trashapplet/trashapplet-empty-progress.ui
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 4b75a23..d0102ae 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -24,4 +24,5 @@ modemlights/org.gnome.applets.ModemApplet.panel-applet.in
 multiload/org.gnome.applets.MultiLoadApplet.panel-applet.in
 null_applet/GNOME_NullApplet_Factory.server.in
 stickynotes/org.gnome.applets.StickyNotesApplet.panel-applet.in
+stickynotes/org.gnome.gnome-applets.stickynotes.gschema.xml.in
 trashapplet/org.gnome.applets.TrashApplet.panel-applet.in
diff --git a/stickynotes/Makefile.am b/stickynotes/Makefile.am
index 5a60b04..3401dca 100644
--- a/stickynotes/Makefile.am
+++ b/stickynotes/Makefile.am
@@ -6,7 +6,7 @@ ui_files = stickynotes-applet-menu.xml
 builder_files = stickynotes.ui
 applet_in_files = org.gnome.applets.StickyNotesApplet.panel-applet.in
 service_in_files = org.gnome.panel.applet.StickyNotesAppletFactory.service.in
-schemas_in_files = stickynotes.schemas.in
+gsettings_schemas_in_in = org.gnome.gnome-applets.stickynotes.gschema.xml.in.in
 
 if BUILD_STICKYNOTES_APPLET
 AM_CPPFLAGS =                                  \
@@ -31,7 +31,8 @@ stickynotes_applet_SOURCES = \
        stickynotes.c \
        stickynotes_callbacks.c \
        stickynotes_applet.c \
-       stickynotes_applet_callbacks.c
+       stickynotes_applet_callbacks.c \
+       gsettings.h
 
 stickynotes_applet_LDADD =     \
        $(GNOME_APPLETS_LIBS)   \
@@ -44,10 +45,15 @@ builder_DATA = $(builder_files)
 uidir = $(pkgdatadir)/ui
 ui_DATA = $(ui_files)
 
-schemasdir = @GCONF_SCHEMA_FILE_DIR@
-schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
+ INTLTOOL_XML_NOMERGE_RULE@
 
- INTLTOOL_SCHEMAS_RULE@
+gsettings_schemas_in = $(gsettings_schemas_in_in:.xml.in.in=.xml.in)
+gsettings_SCHEMAS = $(gsettings_schemas_in:.xml.in=.xml)
+
+%.gschema.xml.in: %.gschema.xml.in.in Makefile
+       $(AM_V_GEN) $(SED) -e 's^\ GETTEXT_PACKAGE\@^$(GETTEXT_PACKAGE)^g' < $< > $@
+
+ GSETTINGS_RULES@
 
 appletdir   = $(LIBPANEL_APPLET_DIR)
 applet_DATA = $(applet_in_files:.panel-applet.in=.panel-applet)
@@ -68,16 +74,15 @@ org.gnome.panel.applet.StickyNotesAppletFactory.service: $(service_in_files)
             -e "s|\ LIBEXECDIR\@|$(libexecdir)|" \
             $< > $@
 
-CLEANFILES = $(applet_DATA) $(applet_DATA).in $(service_DATA) $(schemas_DATA)
+CLEANFILES = $(applet_DATA) $(applet_DATA).in $(service_DATA) \
+       $(gsettings_SCHEMAS_in) \
+       $(gsettings_SCHEMAS) \
+       *.gschema.valid
 
-if GCONF_SCHEMAS_INSTALL
-install-data-local:
-       GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
-       $(GCONFTOOL) --makefile-install-rule $(schemas_DATA)
-endif
 endif
 
 EXTRA_DIST = \
+       $(gsettings_schemas_in_in) \
             $(builder_files) \
             $(ui_files) \
             $(schemas_in_files) \
diff --git a/stickynotes/gsettings.h b/stickynotes/gsettings.h
new file mode 100644
index 0000000..fb5052a
--- /dev/null
+++ b/stickynotes/gsettings.h
@@ -0,0 +1,21 @@
+#ifndef STICKYNOTES_GSETTINGS_H
+#define STICKYNOTES_GSETTINGS_H
+
+#define STICKYNOTES_SCHEMA "org.gnome.gnome-applets.stickynotes"
+
+#define KEY_DEFAULT_WIDTH      "default-width"
+#define KEY_DEFAULT_HEIGHT     "default-height"
+#define KEY_DEFAULT_COLOR      "default-color"
+#define KEY_DEFAULT_FONT_COLOR "default-font-color"
+#define KEY_DEFAULT_FONT       "default-font"
+
+#define KEY_STICKY           "sticky"
+#define KEY_LOCKED           "locked"
+#define KEY_DATE_FORMAT      "date-format"
+#define KEY_USE_SYSTEM_COLOR "use-system-color"
+#define KEY_USE_SYSTEM_FONT  "use-system-font"
+#define KEY_FORCE_DEFAULT    "force-default"
+#define KEY_DESKTOP_HIDE     "desktop-hide"
+#define KEY_CONFIRM_DELETION "confirm-deletion"
+
+#endif
diff --git a/stickynotes/org.gnome.gnome-applets.stickynotes.gschema.xml.in.in 
b/stickynotes/org.gnome.gnome-applets.stickynotes.gschema.xml.in.in
new file mode 100644
index 0000000..ae75585
--- /dev/null
+++ b/stickynotes/org.gnome.gnome-applets.stickynotes.gschema.xml.in.in
@@ -0,0 +1,73 @@
+<schemalist gettext-domain="@GETTEXT_PACKAGE@">
+    <!--
+       <schema id="org.gnome.gnome-applets.stickynotes.default" path="/org/gnome/gnome-applets/stickynotes/">
+       </schema>
+       -->
+       <schema id="org.gnome.gnome-applets.stickynotes">
+               <key name="default-width" type="i">
+                       <default>100</default>
+                       <_summary>Default width for new notes</_summary>
+                       <_description>Default width for new sticky notes in pixels.</_description>
+               </key>
+               <key name="default-height" type="i">
+                       <default>100</default>
+                       <_summary>Default height for new notes</_summary>
+                       <_description>Default height for new notes</_description>
+               </key>
+               <key name="default-color" type="s">
+                       <default>'rgb(236,248,51)'</default>
+                       <_summary>Default color for new notes</_summary>
+                       <_description>Default color for new sticky notes. This can be standard name, 
hexadecimal value, RGB color or RGBA color.</_description>
+               </key>
+               <key name="default-font-color" type="s">
+                       <default>'rgb(0,0,0)'</default>
+                       <_summary>Default color for font</_summary>
+                       <_description>Default font color for new sticky notes.This can be standard name, 
hexadecimal value, RGB color or RGBA color.</_description>
+               </key>
+               <key name="default-font" type="s">
+                       <default>'Sans 10'</default>
+                       <_summary>Default font for new notes</_summary>
+                       <_description>Default font for new sticky notes. This should be a Pango Font Name, 
for example "Sans Italic 10".</_description>
+               </key>
+               <key name="sticky" type="b">
+                       <default>true</default>
+                       <_summary>Sticky notes' workspace stickyness</_summary>
+                       <_description>Specifies whether the sticky notes are visible on ALL workspaces on the 
desktop, or not.</_description>
+               </key>
+               <key name="locked" type="b">
+                       <default>false</default>
+                       <_summary>Sticky notes' locked state</_summary>
+                       <_description>Specifies whether the sticky notes are locked (non-editable) or 
not.</_description>
+               </key>
+               <key name="date-format" type="s">
+                       <default>'%x'</default>
+                       <_summary>Date format of note's title</_summary>
+                       <_description>By default, sticky notes are given the current date as the title when 
they are created. This format is used; anything that can be parsed by strftime() is valid.</_description>
+               </key>
+               <key name="use-system-color" type="b">
+                       <default>true</default>
+                       <_summary>Whether to use the default system color</_summary>
+                       <_description>If this option is disabled, a custom color can be used as the default 
color for all sticky notes.</_description>
+               </key>
+               <key name="use-system-font" type="b">
+                       <default>true</default>
+                       <_summary>Whether to use the default system font</_summary>
+                       <_description>If this option is disabled, a custom font can be used as the default 
font for all sticky notes.</_description>
+               </key>
+               <key name="force-default" type="b">
+                       <default>false</default>
+                       <_summary>Whether to force the default color and font on all notes</_summary>
+                       <_description>If this option is enabled, the custom colors and fonts that have been 
assigned to individual notes will be ignored.</_description>
+               </key>
+               <key name="desktop-hide" type="b">
+                       <default>true</default>
+                       <_summary>Whether to hide all notes when the desktop is selected</_summary>
+                       <_description>If this option is enabled, selecting the desktop in any way will 
automatically hide all the open notes.</_description>
+               </key>
+               <key name="confirm-deletion" type="b">
+                       <default>true</default>
+                       <_summary>Whether to ask for confirmation when deleting a note</_summary>
+                       <_description>Empty notes are always deleted without confirmation.</_description>
+               </key>
+       </schema>
+</schemalist>
diff --git a/stickynotes/stickynotes.c b/stickynotes/stickynotes.c
index c1b10f4..2436acf 100644
--- a/stickynotes/stickynotes.c
+++ b/stickynotes/stickynotes.c
@@ -29,6 +29,7 @@
 #include "stickynotes_callbacks.h"
 #include "util.h"
 #include "stickynotes_applet.h"
+#include "gsettings.h"
 
 /* Stop gcc complaining about xmlChar's signedness */
 #define XML_CHAR(str) ((xmlChar *) (str))
@@ -169,16 +170,13 @@ stickynote_new_aux (GdkScreen *screen, gint x, gint y, gint w, gint h)
        note->h = h;
 
        /* Customize the window */
-       if (gconf_client_get_bool(stickynotes->gconf,
-                               GCONF_PATH "/settings/sticky", NULL))
+       if (g_settings_get_boolean (stickynotes->settings, KEY_STICKY))
                gtk_window_stick(GTK_WINDOW(note->w_window));
 
        if (w == 0 || h == 0)
                gtk_window_resize (GTK_WINDOW(note->w_window),
-                               gconf_client_get_int(stickynotes->gconf,
-                                       GCONF_PATH "/defaults/width", NULL),
-                               gconf_client_get_int(stickynotes->gconf,
-                                       GCONF_PATH "/defaults/height", NULL));
+                               g_settings_get_int (stickynotes->settings, KEY_DEFAULT_WIDTH),
+                               g_settings_get_int (stickynotes->settings, KEY_DEFAULT_HEIGHT));
        else
                gtk_window_resize (GTK_WINDOW(note->w_window),
                                note->w,
@@ -319,8 +317,7 @@ void stickynote_free(StickyNote *note)
 /* Change the sticky note title and color */
 void stickynote_change_properties (StickyNote *note)
 {
-       GdkColor color;
-       GdkColor font_color;
+       GdkRGBA color, font_color;
        char *color_str = NULL;
 
        gtk_entry_set_text(GTK_ENTRY(note->w_entry),
@@ -333,34 +330,28 @@ void stickynote_change_properties (StickyNote *note)
                color_str = g_strdup (note->color);
        else
        {
-               color_str = gconf_client_get_string (
-                                   stickynotes->gconf,
-                                   GCONF_PATH "/defaults/color", NULL);
+               color_str = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_COLOR);
        }
 
-       if (color_str)
+       if (!IS_STRING_EMPTY (color_str))
        {
-               gdk_color_parse (color_str, &color);
+               gdk_rgba_parse (&color, color_str);
                g_free (color_str);
-               gtk_color_button_set_color (GTK_COLOR_BUTTON (note->w_color),
-                                   &color);
+               gtk_color_button_set_rgba (GTK_COLOR_BUTTON (note->w_color), &color);
        }
 
        if (note->font_color)
                color_str = g_strdup (note->font_color);
        else
        {
-               color_str = gconf_client_get_string (
-                                   stickynotes->gconf,
-                                   GCONF_PATH "/defaults/font_color", NULL);
+               color_str = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_FONT_COLOR);
        }
 
-       if (color_str)
+       if (!IS_STRING_EMPTY (color_str))
        {
-               gdk_color_parse (color_str, &font_color);
+               gdk_rgba_parse (&font_color, color_str);
                g_free (color_str);
-               gtk_color_button_set_color (GTK_COLOR_BUTTON (note->w_font_color),
-                                   &font_color);
+               gtk_color_button_set_rgba (GTK_COLOR_BUTTON (note->w_font_color), &font_color);
        }
 
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(note->w_def_font),
@@ -398,9 +389,11 @@ void stickynote_set_title(StickyNote *note, const gchar *title)
        /* If title is NULL, use the current date as the title. */
        if (!title) {
                gchar *date_title, *tmp;
-               gchar *date_format = gconf_client_get_string(stickynotes->gconf, GCONF_PATH 
"/settings/date_format", NULL);
-               if (!date_format)
+               gchar *date_format = g_settings_get_string (stickynotes->settings, KEY_DATE_FORMAT);
+               if (IS_STRING_EMPTY (date_format)) {
+                       g_free (date_format);
                        date_format = g_strdup ("%x");
+               }
                tmp = get_current_date (date_format);
                date_title = g_locale_to_utf8 (tmp, -1, NULL, NULL, NULL);
 
@@ -425,6 +418,7 @@ stickynote_set_color (StickyNote  *note,
                      gboolean     save)
 {
        char *color_str_actual, *font_color_str_actual;
+       gboolean force_default, use_system_color;
        GtkRcStyle *rc_style;
 
        if (save) {
@@ -448,33 +442,27 @@ stickynote_set_color (StickyNote  *note,
                                note->color != NULL);
        }
 
+       force_default = g_settings_get_boolean (stickynotes->settings, KEY_FORCE_DEFAULT);
+       use_system_color = g_settings_get_boolean (stickynotes->settings, KEY_USE_SYSTEM_COLOR);
+
        /* If "force_default" is enabled or color_str is NULL,
         * then we use the default color instead of color_str. */
-       if (!color_str || gconf_client_get_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/force_default", NULL))
+       if (!color_str || force_default)
        {
-               if (gconf_client_get_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/use_system_color", NULL))
+               if (use_system_color)
                        color_str_actual = NULL;
                else
-                       color_str_actual = gconf_client_get_string (
-                                       stickynotes->gconf,
-                                       GCONF_PATH "/defaults/color", NULL);
+                       color_str_actual = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_COLOR);
        }
        else
                color_str_actual = g_strdup (color_str);
 
-       if (!font_color_str || gconf_client_get_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/force_default", NULL))
+       if (!font_color_str || force_default)
        {
-               if (gconf_client_get_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/use_system_color", NULL))
+               if (use_system_color)
                        font_color_str_actual = NULL;
                else
-                       font_color_str_actual = gconf_client_get_string (
-                                       stickynotes->gconf,
-                                       GCONF_PATH "/defaults/font_color",
-                                       NULL);
+                       font_color_str_actual = g_settings_get_string (stickynotes->settings, 
KEY_DEFAULT_FONT_COLOR);
        }
        else
                font_color_str_actual = g_strdup (font_color_str);
@@ -484,19 +472,22 @@ stickynote_set_color (StickyNote  *note,
        /* Do not use custom colors if "use_system_color" is enabled */
        if (color_str_actual) {
                /* Custom colors */
+               GdkRGBA color;
                GdkColor colors[6];
 
                /* Make 4 shades of the color, getting darker from the
                 * original, plus black and white */
                gint i;
 
+               gdk_rgba_parse (&color, color_str_actual);
+
                for (i = 0; i <= 3; i++)
                {
                        gdk_color_parse (color_str_actual, &colors[i]);
 
-                       colors[i].red = (colors[i].red * (10 - i)) / 10;
-                       colors[i].green = (colors[i].green * (10 - i)) / 10;
-                       colors[i].blue = (colors[i].blue * (10 - i)) / 10;
+                       colors[i].red = (color.red * (10 - i)) / 10;
+                       colors[i].green = (color.green * (10 - i)) / 10;
+                       colors[i].blue = (color.blue * (10 - i)) / 10;
                }
                gdk_color_parse ("black", &colors[4]);
                gdk_color_parse ("white", &colors[5]);
@@ -535,9 +526,14 @@ stickynote_set_color (StickyNote  *note,
 
        if (font_color_str_actual)
        {
+               GdkRGBA color;
                GdkColor font_color;
 
-               gdk_color_parse (font_color_str_actual, &font_color);
+               gdk_rgba_parse (&color, font_color_str_actual);
+
+               font_color.red = color.red;
+               font_color.green = color.green;
+               font_color.blue = color.blue;
 
                gtk_widget_modify_text (note->w_window,
                                GTK_STATE_NORMAL, &font_color);
@@ -583,17 +579,12 @@ stickynote_set_font (StickyNote *note, const gchar *font_str, gboolean save)
 
        /* If "force_default" is enabled or font_str is NULL,
         * then we use the default font instead of font_str. */
-       if (!font_str || gconf_client_get_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/force_default", NULL))
+       if (!font_str || g_settings_get_boolean (stickynotes->settings, KEY_FORCE_DEFAULT))
        {
-               if (gconf_client_get_bool (stickynotes->gconf,
-                                       GCONF_PATH "/settings/use_system_font",
-                                       NULL))
+               if (g_settings_get_boolean (stickynotes->settings, KEY_USE_SYSTEM_FONT))
                        font_str_actual = NULL;
                else
-                       font_str_actual = gconf_client_get_string (
-                                       stickynotes->gconf,
-                                       GCONF_PATH "/defaults/font", NULL);
+                       font_str_actual = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_FONT);
        }
        else
                font_str_actual = g_strdup (font_str);
@@ -651,8 +642,7 @@ stickynote_set_visible (StickyNote *note, gboolean visible)
                        gtk_window_move (GTK_WINDOW (note->w_window),
                                        note->x, note->y);
                /* Put the note on all workspaces if necessary. */
-               if (gconf_client_get_bool(stickynotes->gconf,
-                                       GCONF_PATH "/settings/sticky", NULL))
+               if (g_settings_get_boolean (stickynotes->settings, KEY_STICKY))
                        gtk_window_stick(GTK_WINDOW(note->w_window));
                else if (note->workspace > 0)
                {
@@ -718,7 +708,7 @@ void stickynotes_remove(StickyNote *note)
        gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(note->w_window));
 
        if (stickynote_get_empty(note)
-           || !gconf_client_get_bool(stickynotes->gconf, GCONF_PATH "/settings/confirm_deletion", NULL)
+           || !g_settings_get_boolean (stickynotes->settings, KEY_CONFIRM_DELETION)
            || gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
                stickynote_free(note);
 
@@ -777,8 +767,7 @@ stickynotes_save_now (void)
                xid = GDK_WINDOW_XID (gtk_widget_get_window (note->w_window));
                wnck_win = wnck_window_get (xid);
 
-               if (!gconf_client_get_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/sticky", NULL) &&
+               if (!g_settings_get_boolean (stickynotes->settings, KEY_STICKY) &&
                        wnck_win)
                        note->workspace = 1 +
                                wnck_workspace_get_number (
diff --git a/stickynotes/stickynotes_applet.c b/stickynotes/stickynotes_applet.c
index eae6d1d..333d604 100644
--- a/stickynotes/stickynotes_applet.c
+++ b/stickynotes/stickynotes_applet.c
@@ -22,6 +22,7 @@
 #include "stickynotes_applet.h"
 #include "stickynotes_applet_callbacks.h"
 #include "stickynotes.h"
+#include "gsettings.h"
 
 #include <gtk/gtk.h>
 
@@ -122,6 +123,7 @@ stickynotes_applet_init (PanelApplet *panel_applet)
 
        stickynotes->notes = NULL;
        stickynotes->applets = NULL;
+       stickynotes->settings = panel_applet_settings_new (panel_applet, STICKYNOTES_SCHEMA);
        stickynotes->last_timeout_data = 0;
 
        g_set_application_name (_("Sticky Notes"));
@@ -145,21 +147,13 @@ stickynotes_applet_init (PanelApplet *panel_applet)
                        gdk_pixbuf_get_height (stickynotes->icon_normal));
        stickynotes_make_prelight_icon (stickynotes->icon_prelight,
                        stickynotes->icon_normal, 30);
-       stickynotes->gconf = gconf_client_get_default();
        stickynotes->visible = TRUE;
 
        stickynotes_applet_init_icons();
        stickynotes_applet_init_prefs();
 
-       /* Watch GConf values */
-       gconf_client_add_dir (stickynotes->gconf, GCONF_PATH,
-                       GCONF_CLIENT_PRELOAD_NONE, NULL);
-       gconf_client_notify_add (stickynotes->gconf, GCONF_PATH "/defaults",
-                       (GConfClientNotifyFunc) preferences_apply_cb,
-                       NULL, NULL, NULL);
-       gconf_client_notify_add (stickynotes->gconf, GCONF_PATH "/settings",
-                       (GConfClientNotifyFunc) preferences_apply_cb,
-                       NULL, NULL, NULL);
+       g_signal_connect (stickynotes->settings, "changed",
+                         G_CALLBACK (preferences_apply_cb), NULL);
 
        /* Max height for large notes*/
        stickynotes->max_height = 0.8*gdk_screen_get_height( gdk_screen_get_default() );
@@ -270,8 +264,7 @@ void stickynotes_applet_init_prefs(void)
                g_object_unref(group);
        }
 
-       if (!gconf_client_key_is_writable(stickynotes->gconf,
-                               GCONF_PATH "/defaults/width", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_WIDTH))
        {
                gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (
                                        stickynotes->builder, "width_label")),
@@ -280,8 +273,7 @@ void stickynotes_applet_init_prefs(void)
                                        stickynotes->builder, "width_spin")),
                                FALSE);
        }
-       if (!gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/height", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_HEIGHT))
        {
                gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (
                                        stickynotes->builder, "height_label")),
@@ -290,16 +282,14 @@ void stickynotes_applet_init_prefs(void)
                                        stickynotes->builder, "height_spin")),
                                FALSE);
        }
-       if (!gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/color", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_COLOR))
        {
                gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (
                                        stickynotes->builder, "prefs_color_label")),
                                FALSE);
                gtk_widget_set_sensitive (stickynotes->w_prefs_color, FALSE);
        }
-       if (!gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/font_color", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_FONT_COLOR))
        {
                gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (
                                        stickynotes->builder, "prefs_font_color_label")),
@@ -307,27 +297,22 @@ void stickynotes_applet_init_prefs(void)
                gtk_widget_set_sensitive (stickynotes->w_prefs_font_color,
                                FALSE);
        }
-       if (!gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/use_system_color", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_USE_SYSTEM_COLOR))
                gtk_widget_set_sensitive (stickynotes->w_prefs_sys_color,
                                FALSE);
-       if (!gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/font", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_FONT))
        {
                gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (
                                        stickynotes->builder, "prefs_font_label")),
                                FALSE);
                gtk_widget_set_sensitive (stickynotes->w_prefs_font, FALSE);
        }
-       if (!gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/use_system_font", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_USE_SYSTEM_FONT))
                gtk_widget_set_sensitive (stickynotes->w_prefs_sys_font,
                                FALSE);
-       if (!gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/sticky", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_STICKY))
                gtk_widget_set_sensitive (stickynotes->w_prefs_sticky, FALSE);
-       if (!gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/force_default", NULL))
+       if (!g_settings_is_writable (stickynotes->settings, KEY_FORCE_DEFAULT))
                gtk_widget_set_sensitive (stickynotes->w_prefs_force, FALSE);
 
        stickynotes_applet_update_prefs();
@@ -440,55 +425,46 @@ void stickynotes_applet_update_icon(StickyNotesApplet *applet)
 void
 stickynotes_applet_update_prefs (void)
 {
-       int height;
+       gint width, height;
        gboolean sys_color, sys_font, sticky, force_default, desktop_hide;
        char *font_str;
        char *color_str, *font_color_str;
-       GdkColor color, font_color;
-
-       gint width = gconf_client_get_int(stickynotes->gconf,
-                       GCONF_PATH "/defaults/width", NULL);
+       GdkRGBA color, font_color;
 
+       width = g_settings_get_int (stickynotes->settings, KEY_DEFAULT_WIDTH);
        width = MAX (width, 1);
-       height = gconf_client_get_int (stickynotes->gconf,
-                       GCONF_PATH "/defaults/height", NULL);
+
+       height = g_settings_get_int (stickynotes->settings, KEY_DEFAULT_HEIGHT);
        height = MAX (height, 1);
 
-       sys_color = gconf_client_get_bool (stickynotes->gconf,
-                       GCONF_PATH "/settings/use_system_color", NULL);
-       sys_font = gconf_client_get_bool (stickynotes->gconf,
-                       GCONF_PATH "/settings/use_system_font", NULL);
-       sticky = gconf_client_get_bool (stickynotes->gconf,
-                       GCONF_PATH "/settings/sticky", NULL);
-       force_default = gconf_client_get_bool (stickynotes->gconf,
-                       GCONF_PATH "/settings/force_default", NULL);
-       font_str = gconf_client_get_string (stickynotes->gconf,
-                       GCONF_PATH "/defaults/font", NULL);
-       desktop_hide = gconf_client_get_bool (stickynotes->gconf,
-                       GCONF_PATH "/settings/desktop_hide", NULL);
-
-       if (!font_str)
-       {
+       sys_color = g_settings_get_boolean (stickynotes->settings, KEY_USE_SYSTEM_COLOR);
+       sys_font = g_settings_get_boolean (stickynotes->settings, KEY_USE_SYSTEM_FONT);
+       sticky = g_settings_get_boolean (stickynotes->settings, KEY_STICKY);
+       force_default = g_settings_get_boolean (stickynotes->settings, KEY_FORCE_DEFAULT);
+       desktop_hide = g_settings_get_boolean (stickynotes->settings, KEY_DESKTOP_HIDE);
+
+       font_str = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_FONT);
+       if (IS_STRING_EMPTY (font_str)) {
+               g_free (font_str);
                font_str = g_strdup ("Sans 10");
        }
 
-       color_str = gconf_client_get_string (stickynotes->gconf,
-                       GCONF_PATH "/defaults/color", NULL);
-       if (!color_str)
-       {
+       color_str = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_COLOR);
+       if (IS_STRING_EMPTY (color_str)) {
+               g_free (color_str);
                color_str = g_strdup ("#ECF833");
        }
-       font_color_str = gconf_client_get_string (stickynotes->gconf,
-                       GCONF_PATH "/defaults/font_color", NULL);
-       if (!font_color_str)
-       {
+
+       font_color_str = g_settings_get_string (stickynotes->settings, KEY_DEFAULT_FONT_COLOR);
+       if (IS_STRING_EMPTY (font_color_str)) {
+               g_free (font_color_str);
                font_color_str = g_strdup ("#000000");
        }
 
-       gdk_color_parse (color_str, &color);
+       gdk_rgba_parse (&color, color_str);
        g_free (color_str);
 
-       gdk_color_parse (font_color_str, &font_color);
+       gdk_rgba_parse (&font_color, font_color_str);
        g_free (font_color_str);
 
        gtk_adjustment_set_value (stickynotes->w_prefs_width, width);
@@ -509,17 +485,13 @@ stickynotes_applet_update_prefs (void)
                        GTK_TOGGLE_BUTTON (stickynotes->w_prefs_desktop),
                        desktop_hide);
 
-       gtk_color_button_set_color (
-                       GTK_COLOR_BUTTON (stickynotes->w_prefs_color), &color);
-       gtk_color_button_set_color (
-                       GTK_COLOR_BUTTON (stickynotes->w_prefs_font_color),
-                       &font_color);
+       gtk_color_button_set_rgba (GTK_COLOR_BUTTON (stickynotes->w_prefs_color), &color);
+       gtk_color_button_set_rgba (GTK_COLOR_BUTTON (stickynotes->w_prefs_font_color), &font_color);
        gtk_font_button_set_font_name (
                        GTK_FONT_BUTTON (stickynotes->w_prefs_font), font_str);
        g_free (font_str);
 
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/color", NULL))
+       if (g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_COLOR))
        {
                gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (
                                stickynotes->builder, "prefs_color_label")),
@@ -527,8 +499,7 @@ stickynotes_applet_update_prefs (void)
                gtk_widget_set_sensitive (stickynotes->w_prefs_color,
                                !sys_color);
        }
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/prefs_font_color", NULL))
+       if (g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_FONT_COLOR))
        {
                gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (
                                stickynotes->builder, "prefs_font_color_label")),
@@ -536,8 +507,7 @@ stickynotes_applet_update_prefs (void)
                gtk_widget_set_sensitive (stickynotes->w_prefs_font_color,
                                !sys_color);
        }
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/font", NULL))
+       if (g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_FONT))
        {
                gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (
                                stickynotes->builder, "prefs_font_label")),
@@ -550,19 +520,9 @@ stickynotes_applet_update_prefs (void)
 void stickynotes_applet_update_menus(void)
 {
        GList *l;
-       gboolean inconsistent = FALSE;
-
-       gboolean locked = gconf_client_get_bool(stickynotes->gconf, GCONF_PATH "/settings/locked", NULL);
-       gboolean locked_writable = gconf_client_key_is_writable(stickynotes->gconf, GCONF_PATH 
"/settings/locked", NULL);
-
-       for (l = stickynotes->notes; l != NULL; l = l->next) {
-               StickyNote *note = l->data;
 
-               if (note->locked != locked) {
-                       inconsistent = TRUE;
-                       break;
-               }
-       }
+       gboolean locked = g_settings_get_boolean (stickynotes->settings, KEY_LOCKED);
+       gboolean locked_writable = g_settings_is_writable (stickynotes->settings, KEY_LOCKED);
 
        for (l = stickynotes->applets; l != NULL; l = l->next) {
                StickyNotesApplet *applet = l->data;
diff --git a/stickynotes/stickynotes_applet.h b/stickynotes/stickynotes_applet.h
index e22f919..ee1bece 100644
--- a/stickynotes/stickynotes_applet.h
+++ b/stickynotes/stickynotes_applet.h
@@ -25,12 +25,11 @@
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gtk/gtk.h>
 #include <panel-applet.h>
-#include <gconf/gconf-client.h>
 
+#define IS_STRING_EMPTY(x) ((x) == NULL || (x)[0] == '\0')
 
-#define GCONF_PATH     "/apps/stickynotes_applet"
 #define BUILDER_PATH   GTK_BUILDERDIR "/stickynotes.ui"
-#define XML_PATH       "/.gnome2/stickynotes_applet"
+#define XML_PATH       "/.config/gnome-applets/stickynotes"
 #define ICON_PATH      STICKYNOTES_ICONDIR
 
 #define STICKYNOTES_STOCK_LOCKED       "stickynotes-stock-locked"
@@ -62,7 +61,7 @@ typedef struct
        GdkPixbuf *icon_normal;         /* Normal applet icon */
        GdkPixbuf *icon_prelight;       /* Prelighted applet icon */
 
-       GConfClient *gconf;             /* GConf Client */
+       GSettings *settings;
 
        gint max_height;
        guint last_timeout_data;
diff --git a/stickynotes/stickynotes_applet_callbacks.c b/stickynotes/stickynotes_applet_callbacks.c
index aa5bcd7..d426e1d 100644
--- a/stickynotes/stickynotes_applet_callbacks.c
+++ b/stickynotes/stickynotes_applet_callbacks.c
@@ -21,6 +21,7 @@
 #include <string.h>
 #include "stickynotes_applet_callbacks.h"
 #include "stickynotes.h"
+#include "gsettings.h"
 #include <gdk/gdkkeysyms.h>
 #include <X11/Xatom.h>
 #include <gdk/gdkx.h>
@@ -142,8 +143,7 @@ static GdkFilterReturn desktop_window_event_filter (GdkXEvent *xevent,
                                                    GdkEvent  *event,
                                                    gpointer   data)
 {
-       gboolean desktop_hide = gconf_client_get_bool (stickynotes->gconf,
-                       GCONF_PATH "/settings/desktop_hide", NULL);
+       gboolean desktop_hide = g_settings_get_boolean (stickynotes->settings, KEY_DESKTOP_HIDE);
        if (desktop_hide  &&
            (((XEvent*)xevent)->xany.type == PropertyNotify) &&
            (((XEvent*)xevent)->xproperty.atom == gdk_x11_get_xatom_by_name ("_NET_WM_USER_TIME"))) {
@@ -333,8 +333,8 @@ void menu_toggle_lock_state(GSimpleAction *action, GVariant *value, gpointer use
 {
        gboolean locked = g_variant_get_boolean (value);
 
-       if (gconf_client_key_is_writable(stickynotes->gconf, GCONF_PATH "/settings/locked", NULL))
-               gconf_client_set_bool(stickynotes->gconf, GCONF_PATH "/settings/locked", locked, NULL);
+       if (g_settings_is_writable (stickynotes->settings, KEY_LOCKED))
+               g_settings_set_boolean (stickynotes->settings, KEY_LOCKED, locked);
 }
 
 /* Menu Callback : Configure preferences */
@@ -412,67 +412,37 @@ preferences_save_cb (gpointer data)
        gboolean desktop_hide = gtk_toggle_button_get_active (
                        GTK_TOGGLE_BUTTON (stickynotes->w_prefs_desktop));
 
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/width", NULL))
-               gconf_client_set_int (stickynotes->gconf,
-                               GCONF_PATH "/defaults/width", width, NULL);
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/defaults/height", NULL))
-               gconf_client_set_int (stickynotes->gconf,
-                               GCONF_PATH "/defaults/height", height, NULL);
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/use_system_color", NULL))
-               gconf_client_set_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/use_system_color",
-                               sys_color, NULL);
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/use_system_font", NULL))
-               gconf_client_set_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/use_system_font",
-                               sys_font, NULL);
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/sticky", NULL))
-               gconf_client_set_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/sticky", sticky, NULL);
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/force_default", NULL))
-               gconf_client_set_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/force_default",
-                               force_default, NULL);
-       if (gconf_client_key_is_writable (stickynotes->gconf,
-                               GCONF_PATH "/settings/desktop_hide", NULL))
-               gconf_client_set_bool (stickynotes->gconf,
-                               GCONF_PATH "/settings/desktop_hide",
-                               desktop_hide, NULL);
+       if (g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_WIDTH))
+               g_settings_set_int (stickynotes->settings, KEY_DEFAULT_WIDTH, width);
+       if (g_settings_is_writable (stickynotes->settings, KEY_DEFAULT_HEIGHT))
+               g_settings_set_int (stickynotes->settings, KEY_DEFAULT_HEIGHT, height);
+       if (g_settings_is_writable (stickynotes->settings, KEY_USE_SYSTEM_COLOR))
+               g_settings_set_boolean (stickynotes->settings, KEY_USE_SYSTEM_COLOR, sys_color);
+       if (g_settings_is_writable (stickynotes->settings, KEY_USE_SYSTEM_FONT))
+               g_settings_set_boolean (stickynotes->settings, KEY_USE_SYSTEM_FONT, sys_font);
+       if (g_settings_is_writable (stickynotes->settings, KEY_STICKY))
+               g_settings_set_boolean (stickynotes->settings, KEY_STICKY, sticky);
+       if (g_settings_is_writable (stickynotes->settings, KEY_FORCE_DEFAULT))
+               g_settings_set_boolean (stickynotes->settings, KEY_FORCE_DEFAULT, force_default);
+       if (g_settings_is_writable (stickynotes->settings, KEY_DESKTOP_HIDE))
+               g_settings_set_boolean (stickynotes->settings, KEY_DESKTOP_HIDE, desktop_hide);
 }
 
 /* Preferences Callback : Change color. */
 void
 preferences_color_cb (GtkWidget *button, gpointer data)
 {
-       GdkColor color, font_color;
+       GdkRGBA color, font_color;
        char *color_str, *font_color_str;
 
-       gtk_color_button_get_color (
-                       GTK_COLOR_BUTTON (stickynotes->w_prefs_color), &color);
-       gtk_color_button_get_color (
-                       GTK_COLOR_BUTTON (stickynotes->w_prefs_font_color),
-                       &font_color);
-
-       color_str = g_strdup_printf ("#%.2x%.2x%.2x",
-                       color.red / 256,
-                       color.green / 256,
-                       color.blue / 256);
-       font_color_str = g_strdup_printf ("#%.2x%.2x%.2x",
-                       font_color.red / 256,
-                       font_color.green / 256,
-                       font_color.blue / 256);
-
-       gconf_client_set_string (stickynotes->gconf,
-                       GCONF_PATH "/defaults/color", color_str, NULL);
-       gconf_client_set_string (stickynotes->gconf,
-                       GCONF_PATH "/defaults/font_color", font_color_str,
-                       NULL);
+       gtk_color_button_get_rgba (GTK_COLOR_BUTTON (stickynotes->w_prefs_color), &color);
+       gtk_color_button_get_rgba (GTK_COLOR_BUTTON (stickynotes->w_prefs_font_color), &font_color);
+
+       color_str = gdk_rgba_to_string (&color);
+       font_color_str = gdk_rgba_to_string (&font_color);
+
+       g_settings_set_string (stickynotes->settings, KEY_DEFAULT_COLOR, color_str);
+       g_settings_set_string (stickynotes->settings, KEY_DEFAULT_FONT_COLOR, font_color_str);
 
        g_free (color_str);
        g_free (font_color_str);
@@ -484,19 +454,20 @@ void preferences_font_cb (GtkWidget *button, gpointer data)
        const char *font_str;
 
        font_str = gtk_font_button_get_font_name (GTK_FONT_BUTTON (button));
-       gconf_client_set_string(stickynotes->gconf,
-                       GCONF_PATH "/defaults/font", font_str, NULL);
+       g_settings_set_string (stickynotes->settings, KEY_DEFAULT_FONT, font_str);
 }
 
 /* Preferences Callback : Apply to existing notes. */
-void preferences_apply_cb(GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer data)
+void preferences_apply_cb (GSettings   *settings,
+                           const gchar *key,
+                           gpointer     user_data)
 {
        GList *l;
        StickyNote *note;
 
-       if (!strcmp (entry->key, GCONF_PATH "/settings/sticky"))
+       if (!strcmp (key, KEY_STICKY))
        {
-               if (gconf_value_get_bool(entry->value))
+               if (g_settings_get_boolean (settings, key))
                        for (l = stickynotes->notes; l; l = l->next)
                        {
                                note = l->data;
@@ -511,20 +482,18 @@ void preferences_apply_cb(GConfClient *client, guint cnxn_id, GConfEntry *entry,
                        }
        }
 
-       else if (!strcmp (entry->key, GCONF_PATH "/settings/locked"))
+       else if (!strcmp (key, KEY_LOCKED))
        {
                for (l = stickynotes->notes; l; l = l->next)
                {
                        note = l->data;
-                       stickynote_set_locked (note,
-                                       gconf_value_get_bool (entry->value));
+                       stickynote_set_locked (note, g_settings_get_boolean (settings, key));
                }
                stickynotes_save();
        }
 
-       else if (!strcmp (entry->key,
-                               GCONF_PATH "/settings/use_system_color") ||
-                !strcmp (entry->key, GCONF_PATH "/defaults/color"))
+       else if (!strcmp (key, KEY_USE_SYSTEM_COLOR) ||
+                !strcmp (key, KEY_DEFAULT_COLOR))
        {
                for (l = stickynotes->notes; l; l = l->next)
                {
@@ -535,8 +504,8 @@ void preferences_apply_cb(GConfClient *client, guint cnxn_id, GConfEntry *entry,
                }
        }
 
-       else if (!strcmp (entry->key, GCONF_PATH "/settings/use_system_font") ||
-                !strcmp (entry->key, GCONF_PATH "/defaults/font"))
+       else if (!strcmp (key, KEY_USE_SYSTEM_FONT) ||
+                !strcmp (key, KEY_DEFAULT_FONT))
        {
                for (l = stickynotes->notes; l; l = l->next)
                {
@@ -545,7 +514,7 @@ void preferences_apply_cb(GConfClient *client, guint cnxn_id, GConfEntry *entry,
                }
        }
 
-       else if (!strcmp (entry->key, GCONF_PATH "/settings/force_default"))
+       else if (!strcmp (key, KEY_FORCE_DEFAULT))
        {
                for (l = stickynotes->notes; l; l = l->next)
                {
diff --git a/stickynotes/stickynotes_applet_callbacks.h b/stickynotes/stickynotes_applet_callbacks.h
index de43854..034cdf5 100644
--- a/stickynotes/stickynotes_applet_callbacks.h
+++ b/stickynotes/stickynotes_applet_callbacks.h
@@ -46,7 +46,7 @@ void menu_about_cb(GSimpleAction *action, GVariant *parameter, gpointer user_dat
 void preferences_save_cb(gpointer data);
 void preferences_color_cb (GtkWidget *button, gpointer data);
 void preferences_font_cb (GtkWidget *button, gpointer data);
-void preferences_apply_cb(GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer data);
+void preferences_apply_cb(GSettings *settings, const gchar *key, gpointer user_data);
 void preferences_response_cb(GtkWidget *dialog, gint response, gpointer data);
 gboolean preferences_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data);
 



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