[Xfce4-commits] <mousepad:master> * Drop libxfce4util as dependency * Switch to accessories-text-editor as icon name

Nick Schermer noreply at xfce.org
Sat May 5 21:31:11 CEST 2012


Updating branch refs/heads/master
         to 2709fd15751d4197f8c260989b7069473dfae65f (commit)
       from a8924e11dad4f268f699ce42abd348ba4dcb2492 (commit)

commit 2709fd15751d4197f8c260989b7069473dfae65f
Author: Nick Schermer <nick at xfce.org>
Date:   Mon Jan 14 16:49:57 2008 +0000

    * Drop libxfce4util as dependency
    * Switch to accessories-text-editor as icon name
    
    
    (Old svn revision: 26571)

 Mousepad.desktop.in.in          |    2 +-
 Mousepad.spec.in                |    2 -
 configure.in.in                 |    5 +-
 icons/16x16/Makefile.am         |   11 ++-
 icons/24x24/Makefile.am         |    5 +
 icons/scalable/Makefile.am      |    5 +
 mousepad/Makefile.am            |    2 -
 mousepad/main.c                 |   12 ++-
 mousepad/mousepad-application.c |   20 ++--
 mousepad/mousepad-dialogs.c     |    3 +-
 mousepad/mousepad-preferences.c |  212 +++++++++++++++++++++------------------
 mousepad/mousepad-preferences.h |    2 -
 mousepad/mousepad-print.c       |   64 ++++++++-----
 mousepad/mousepad-private.h     |    6 +-
 mousepad/mousepad-util.c        |   81 +++++++++++++++
 mousepad/mousepad-util.h        |    6 +
 mousepad/mousepad-window.c      |   11 ++-
 17 files changed, 295 insertions(+), 154 deletions(-)

diff --git a/Mousepad.desktop.in.in b/Mousepad.desktop.in.in
index 38a39eb..21fda29 100644
--- a/Mousepad.desktop.in.in
+++ b/Mousepad.desktop.in.in
@@ -5,7 +5,7 @@ _Name=Mousepad
 _Comment=Simple Text Editor
 _GenericName=Text Editor
 Exec=mousepad %F
-Icon=mousepad
+Icon=accessories-text-editor
 Terminal=false
 StartupNotify=true
 Type=Application
diff --git a/Mousepad.spec.in b/Mousepad.spec.in
index eaf1459..6261c2c 100644
--- a/Mousepad.spec.in
+++ b/Mousepad.spec.in
@@ -8,9 +8,7 @@ Source0:	%{name}-%{version}.tar.gz
 Group:		Applications/X11
 BuildRoot:	%{_tmppath}/%{name}-root
 Requires:	gtk2 >= @GTK_REQUIRED_VERSION@
-Requires:	libxfce4util >= @LIBXFCE4UTIL_REQUIRED_VERSION@
 BuildRequires:	gtk2-devel >= @GTK_REQUIRED_VERSION@
-BuildRequires:	libxfce4util-devel >= @LIBXFCE4UTIL_REQUIRED_VERSION@
 
 %description
 Mousepad is a simple text editor for the Xfce Desktop Environment.
diff --git a/configure.in.in b/configure.in.in
index 7099a24..74c44a5 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -69,8 +69,8 @@ AC_SUBST([MOUSEPAD_VERSION_MICRO])
 dnl **********************************
 dnl *** Check for standard headers ***
 dnl **********************************
-AC_CHECK_HEADERS([errno.h fcntl.h memory.h math.h stdlib.h string.h \
-                  sys/types.h sys/stat.h time.h unistd.h])
+AC_CHECK_HEADERS([errno.h fcntl.h libintl.h memory.h math.h stdlib.h \
+                  string.h sys/types.h sys/stat.h time.h unistd.h])
 
 dnl ******************************
 dnl *** Check for i18n support ***
@@ -84,7 +84,6 @@ XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.12.0])
 XDT_CHECK_PACKAGE([GMODULE], [gmodule-2.0], [2.12.0])
 XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.12.0])
 XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.10.0])
-XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.4.0])
 
 dnl **********************************
 dnl *** Optional support for D-BUS ***
diff --git a/icons/16x16/Makefile.am b/icons/16x16/Makefile.am
index 4fe130f..6cedaf6 100644
--- a/icons/16x16/Makefile.am
+++ b/icons/16x16/Makefile.am
@@ -1,10 +1,15 @@
 # $Id$
 
-appsdir = $(datadir)/icons/hicolor/16x16/apps
-apps_DATA =								\
+iconsdir = $(datadir)/icons/hicolor/16x16/apps
+icons_DATA =								\
 	Mousepad.png
 
+# install symlink
+install-data-local:
+	$(mkinstalldirs) $(DESTDIR)$(iconsdir)
+	-( cd $(DESTDIR)$(iconsdir) ; ln -sf Mousepad.png accessories-text-editor.png )
+
 EXTRA_DIST =								\
-	$(apps_DATA)
+	$(icons_DATA)
 
 # vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
diff --git a/icons/24x24/Makefile.am b/icons/24x24/Makefile.am
index 2608272..0a73503 100644
--- a/icons/24x24/Makefile.am
+++ b/icons/24x24/Makefile.am
@@ -4,6 +4,11 @@ iconsdir = $(datadir)/icons/hicolor/24x24/apps
 icons_DATA =								\
 	Mousepad.png
 
+# install symlink
+install-data-local:
+	$(mkinstalldirs) $(DESTDIR)$(iconsdir)
+	-( cd $(DESTDIR)$(iconsdir) ; ln -sf Mousepad.png accessories-text-editor.png )
+
 EXTRA_DIST =								\
 	$(icons_DATA)
 
diff --git a/icons/scalable/Makefile.am b/icons/scalable/Makefile.am
index 305a62c..b2a0019 100644
--- a/icons/scalable/Makefile.am
+++ b/icons/scalable/Makefile.am
@@ -4,6 +4,11 @@ iconsdir = $(datadir)/icons/hicolor/scalable/apps
 icons_DATA =								\
 	Mousepad.svg
 
+# install symlink
+install-data-local:
+	$(mkinstalldirs) $(DESTDIR)$(iconsdir)
+	-( cd $(DESTDIR)$(iconsdir) ; ln -sf Mousepad.svg accessories-text-editor.svg )
+
 EXTRA_DIST =								\
 	$(icons_DATA)
 
diff --git a/mousepad/Makefile.am b/mousepad/Makefile.am
index 1d1b787..f78f66e 100644
--- a/mousepad/Makefile.am
+++ b/mousepad/Makefile.am
@@ -59,7 +59,6 @@ mousepad_SOURCES =								\
 
 mousepad_CFLAGS =								\
 	$(GTK_CFLAGS)								\
-	$(LIBXFCE4UTIL_CFLAGS)							\
 	$(GMODULE_CFLAGS)							\
 	$(GTHREAD_CFLAGS)							\
 	$(PLATFORM_CFLAGS)
@@ -70,7 +69,6 @@ mousepad_LDFLAGS =								\
 
 mousepad_LDADD =								\
 	$(GTK_LIBS)								\
-	$(LIBXFCE4UTIL_LIBS)							\
 	$(GMODULE_LIBS)								\
 	$(GTHREAD_LIBS)
 
diff --git a/mousepad/main.c b/mousepad/main.c
index 2dd937a..63d17a6 100644
--- a/mousepad/main.c
+++ b/mousepad/main.c
@@ -25,6 +25,9 @@
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
+#ifdef HAVE_LIBINTL_H
+#include <libintl.h>
+#endif
 
 #include <mousepad/mousepad-private.h>
 #include <mousepad/mousepad-application.h>
@@ -68,8 +71,11 @@ main (gint argc, gchar **argv)
   MousepadDBusService *dbus_service;
 #endif
 
-  /* translation domain */
-  xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
+  /* bind the text domain to the locale directory */
+  bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+
+  /* set the package textdomain */
+  textdomain (GETTEXT_PACKAGE);
 
   /* default application name */
   g_set_application_name (_("Mousepad"));
@@ -105,7 +111,7 @@ main (gint argc, gchar **argv)
   /* check if we should print version information */
   if (G_UNLIKELY (opt_version))
     {
-      g_print ("%s %s (Xfce %s)\n\n", PACKAGE_NAME, PACKAGE_VERSION, xfce_version_string ());
+      g_print ("%s %s\n\n", PACKAGE_NAME, PACKAGE_VERSION);
       g_print ("%s\n", "Copyright (c) 2007");
       g_print ("\t%s\n\n", _("The Xfce development team. All rights reserved."));
       g_print (_("Please report bugs to <%s>."), PACKAGE_BUGREPORT);
diff --git a/mousepad/mousepad-application.c b/mousepad/mousepad-application.c
index b308d15..10e1250 100644
--- a/mousepad/mousepad-application.c
+++ b/mousepad/mousepad-application.c
@@ -76,17 +76,17 @@ mousepad_application_class_init (MousepadApplicationClass *klass)
 static void
 mousepad_application_init (MousepadApplication *application)
 {
-  gchar *path;
+  gchar *filename;
 
   /* check if we have a saved accel map */
-  path = xfce_resource_lookup (XFCE_RESOURCE_CONFIG, PACKAGE_NAME G_DIR_SEPARATOR_S "accels.scm");
-  if (G_LIKELY (path != NULL))
+  filename = mousepad_util_get_save_location (MOUSEPAD_ACCELS_RELPATH, FALSE);
+  if (G_LIKELY (filename != NULL))
     {
       /* load the accel map */
-      gtk_accel_map_load (path);
+      gtk_accel_map_load (filename);
 
       /* cleanup */
-      g_free (path);
+      g_free (filename);
     }
 }
 
@@ -97,7 +97,7 @@ mousepad_application_finalize (GObject *object)
 {
   MousepadApplication *application = MOUSEPAD_APPLICATION (object);
   GSList              *li;
-  gchar               *path;
+  gchar               *filename;
 
   /* flush the history items of the replace dialog
    * this is a bit of an ugly place, but cleaning on a window close
@@ -105,14 +105,14 @@ mousepad_application_finalize (GObject *object)
   mousepad_replace_dialog_history_clean ();
 
   /* save the current accel map */
-  path = xfce_resource_save_location (XFCE_RESOURCE_CONFIG, PACKAGE_NAME G_DIR_SEPARATOR_S "accels.scm", TRUE);
-  if (G_LIKELY (path != NULL))
+  filename = mousepad_util_get_save_location (MOUSEPAD_ACCELS_RELPATH, TRUE);
+  if (G_LIKELY (filename != NULL))
     {
       /* save the accel map */
-      gtk_accel_map_save (path);
+      gtk_accel_map_save (filename);
 
       /* cleanup */
-      g_free (path);
+      g_free (filename);
     }
 
   /* destroy the windows if they are still opened */
diff --git a/mousepad/mousepad-dialogs.c b/mousepad/mousepad-dialogs.c
index 3ec9dad..498b613 100644
--- a/mousepad/mousepad-dialogs.c
+++ b/mousepad/mousepad-dialogs.c
@@ -40,8 +40,7 @@ mousepad_dialogs_show_about (GtkWindow *parent)
                          "authors", authors,
                          "comments", _("Mousepad is a fast text editor for the Xfce Desktop Environment."),
                          "destroy-with-parent", TRUE,
-                         "license", XFCE_LICENSE_GPL,
-                         "logo-icon-name", PACKAGE_NAME,
+                         "logo-icon-name", "accessories-text-editor",
 #if GTK_CHECK_VERSION (2,12,0)
                          "program-name", PACKAGE_NAME,
 #else
diff --git a/mousepad/mousepad-preferences.c b/mousepad/mousepad-preferences.c
index ab1e3c1..3ae251c 100644
--- a/mousepad/mousepad-preferences.c
+++ b/mousepad/mousepad-preferences.c
@@ -122,8 +122,7 @@ struct _MousepadPreferences
  * @const GValue : String #GValue.
  * @GValue       : Return location for a #GValue boolean.
  *
- * Converts a string into a boolean. This is used when
- * converting the XfceRc values.
+ * Converts a string into a boolean.
  **/
 static void
 transform_string_to_boolean (const GValue *src,
@@ -357,8 +356,8 @@ mousepad_preferences_finalize (GObject *object)
   /* flush preferences */
   if (G_UNLIKELY (preferences->store_idle_id != 0))
     {
-      mousepad_preferences_store (preferences);
       g_source_remove (preferences->store_idle_id);
+      mousepad_preferences_store (preferences);
     }
   /* release the property values */
   for (n = 1; n < N_PROPERTIES; ++n)
@@ -451,82 +450,88 @@ mousepad_preferences_check_option_name (GParamSpec *pspec)
 static void
 mousepad_preferences_load (MousepadPreferences *preferences)
 {
-  const gchar  *string;
-  GParamSpec  **specs;
-  GParamSpec   *spec;
-  XfceRc       *rc;
-  GValue        dst = { 0, };
-  GValue        src = { 0, };
-  guint         nspecs;
-  guint         n;
-
-  /* try to open the config file */
-  rc = xfce_rc_config_open (XFCE_RESOURCE_CONFIG, MOUSEPAD_PREFERENCES_REL_PATH, TRUE);
-  if (G_UNLIKELY (rc == NULL))
-    {
-      g_warning (_("Failed to load the preferences."));
-
-      return;
-    }
+  gchar       *string;
+  GParamSpec **pspecs;
+  GParamSpec  *pspec;
+  GKeyFile    *keyfile;
+  gchar       *filename;
+  GValue       dst = { 0, };
+  GValue       src = { 0, };
+  guint        nspecs;
+  guint        n;
+
+  /* get the save location */
+  filename = mousepad_util_get_save_location (MOUSEPAD_RC_RELPATH, FALSE);
+
+  /* leave when there if no file found */
+  if (G_UNLIKELY (filename == NULL))
+    return;
+
+  /* create a new key file */
+  keyfile = g_key_file_new ();
 
-  /* freeze notification signals */
-  g_object_freeze_notify (G_OBJECT (preferences));
-
-  /* set group */
-  xfce_rc_set_group (rc, "Configuration");
+  /* open the config file */
+  if (G_LIKELY (g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL)))
+    {
+      /* freeze notification signals */
+      g_object_freeze_notify (G_OBJECT (preferences));
 
-  /* get all the properties in the class */
-  specs = g_object_class_list_properties (G_OBJECT_GET_CLASS (preferences), &nspecs);
+      /* get all the properties in the class */
+      pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (preferences), &nspecs);
 
-  for (n = 0; n < nspecs; ++n)
-    {
-      spec = specs[n];
+      for (n = 0; n < nspecs; n++)
+        {
+          pspec = pspecs[n];
 
 #ifndef NDEBUG
-      /* check nick name with generated option name */
-      mousepad_preferences_check_option_name (spec);
+          /* check nick name with generated option name */
+          mousepad_preferences_check_option_name (pspec);
 #endif
 
-      /* read the entry */
-      string = xfce_rc_read_entry (rc, spec->_nick, NULL);
-
-      if (G_UNLIKELY (string == NULL))
-        continue;
-
-      /* create gvalue with the string as value */
-      g_value_init (&src, G_TYPE_STRING);
-      g_value_set_static_string (&src, string);
-
-      if (spec->value_type == G_TYPE_STRING)
-        {
-          /* they have the same type, so set the property */
-          g_object_set_property (G_OBJECT (preferences), spec->name, &src);
-        }
-      else if (g_value_type_transformable (G_TYPE_STRING, spec->value_type))
-        {
-          /* transform the type */
-          g_value_init (&dst, spec->value_type);
-          if (g_value_transform (&src, &dst))
-            g_object_set_property (G_OBJECT (preferences), spec->name, &dst);
-          g_value_unset (&dst);
-        }
-      else
-        {
-          g_warning ("Failed to load property \"%s\"", spec->name);
+          /* read the propert value */
+          string = g_key_file_get_string (keyfile, "Configuration", pspec->_nick, NULL);
+
+          if (G_UNLIKELY (string == NULL))
+            continue;
+
+          /* create gvalue with the string as value */
+          g_value_init (&src, G_TYPE_STRING);
+          g_value_take_string (&src, string);
+
+          if (pspec->value_type == G_TYPE_STRING)
+            {
+              /* they have the same type, so set the property */
+              g_object_set_property (G_OBJECT (preferences), pspec->name, &src);
+            }
+          else if (g_value_type_transformable (G_TYPE_STRING, pspec->value_type))
+            {
+              /* transform the type */
+              g_value_init (&dst, pspec->value_type);
+              if (g_value_transform (&src, &dst))
+                g_object_set_property (G_OBJECT (preferences), pspec->name, &dst);
+              g_value_unset (&dst);
+            }
+          else
+            {
+              g_warning ("Failed to load property \"%s\"", pspec->name);
+            }
+
+          /* cleanup */
+          g_value_unset (&src);
         }
 
-      /* cleanup */
-      g_value_unset (&src);
-    }
+      /* cleanup the specs */
+      g_free (pspecs);
 
-  /* cleanup the specs */
-  g_free (specs);
+      /* allow notifications again */
+      g_object_thaw_notify (G_OBJECT (preferences));
+    }
 
-  /* close the rc file */
-  xfce_rc_close (rc);
+  /* free the key file */
+  g_key_file_free (keyfile);
 
-  /* allow notifications again */
-  g_object_thaw_notify (G_OBJECT (preferences));
+  /* cleanup filename */
+  g_free (filename);
 }
 
 
@@ -546,63 +551,76 @@ mousepad_preferences_store (MousepadPreferences *preferences)
 static gboolean
 mousepad_preferences_store_idle (gpointer user_data)
 {
-  MousepadPreferences *preferences = MOUSEPAD_PREFERENCES (user_data);
-  const gchar         *string;
-  GParamSpec         **specs;
-  GParamSpec          *spec;
-  XfceRc              *rc;
-  GValue               dst = { 0, };
-  GValue               src = { 0, };
-  guint                nspecs;
-  guint                n;
-
-  /* open the config file */
-  rc = xfce_rc_config_open (XFCE_RESOURCE_CONFIG, MOUSEPAD_PREFERENCES_REL_PATH, FALSE);
-  if (G_UNLIKELY (rc == NULL))
-    {
-      g_warning (_("Failed to store the preferences."));
-      return FALSE;
-    }
-
-  /* set the group */
-  xfce_rc_set_group (rc, "Configuration");
+  MousepadPreferences  *preferences = MOUSEPAD_PREFERENCES (user_data);
+  const gchar          *string;
+  GParamSpec          **pspecs;
+  GParamSpec           *pspec;
+  GKeyFile             *keyfile;
+  gchar                *filename;
+  GValue                dst = { 0, };
+  GValue                src = { 0, };
+  guint                 nspecs;
+  guint                 n;
+
+  /* get the config filename */
+  filename = mousepad_util_get_save_location (MOUSEPAD_RC_RELPATH, TRUE);
+
+  /* leave when no filename is returned */
+  if (G_UNLIKELY (filename == NULL))
+    return FALSE;
+
+  /* create an empty key file */
+  keyfile = g_key_file_new ();
+
+  /* try to load the file contents, no worries if this fails */
+  g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL);
 
   /* get the list of properties in the class */
-  specs = g_object_class_list_properties (G_OBJECT_GET_CLASS (preferences), &nspecs);
+  pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (preferences), &nspecs);
 
   for (n = 0; n < nspecs; ++n)
     {
-      spec = specs[n];
+      pspec = pspecs[n];
 
       /* init a string value */
       g_value_init (&dst, G_TYPE_STRING);
 
-      if (spec->value_type == G_TYPE_STRING)
+      if (pspec->value_type == G_TYPE_STRING)
         {
           /* set the string value */
-          g_object_get_property (G_OBJECT (preferences), spec->name, &dst);
+          g_object_get_property (G_OBJECT (preferences), pspec->name, &dst);
         }
       else
         {
           /* property contains another type, transform it first */
-          g_value_init (&src, spec->value_type);
-          g_object_get_property (G_OBJECT (preferences), spec->name, &src);
+          g_value_init (&src, pspec->value_type);
+          g_object_get_property (G_OBJECT (preferences), pspec->name, &src);
           g_value_transform (&src, &dst);
           g_value_unset (&src);
         }
 
-      /* store the setting */
+      /* get the string from the value */
       string = g_value_get_string (&dst);
+
+      /* store the value */
       if (G_LIKELY (string != NULL))
-        xfce_rc_write_entry (rc, spec->_nick, string);
+        g_key_file_set_string (keyfile, "Configuration", pspec->_nick, string);
 
       /* cleanup */
       g_value_unset (&dst);
     }
 
+  /* cleanup the specs */
+  g_free (pspecs);
+
+  /* save the keyfile */
+  mousepad_util_save_key_file (keyfile, filename);
+
+  /* close the key file */
+  g_key_file_free (keyfile);
+
   /* cleanup */
-  g_free (specs);
-  xfce_rc_close (rc);
+  g_free (filename);
 
   return FALSE;
 }
diff --git a/mousepad/mousepad-preferences.h b/mousepad/mousepad-preferences.h
index c782432..d3161a0 100644
--- a/mousepad/mousepad-preferences.h
+++ b/mousepad/mousepad-preferences.h
@@ -27,8 +27,6 @@ G_BEGIN_DECLS
 #define MOUSEPAD_IS_PREFERENCES_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), MOUSEPAD_TYPE_PREFERENCES))
 #define MOUSEPAD_PREFERENCES_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), MOUSEPAD_TYPE_PREFERENCES, MousepadPreferencesClass))
 
-#define MOUSEPAD_PREFERENCES_REL_PATH         ("Mousepad" G_DIR_SEPARATOR_S "mousepadrc")
-
 typedef struct _MousepadPreferencesClass MousepadPreferencesClass;
 typedef struct _MousepadPreferences      MousepadPreferences;
 
diff --git a/mousepad/mousepad-print.c b/mousepad/mousepad-print.c
index 1a1ba60..23df23a 100644
--- a/mousepad/mousepad-print.c
+++ b/mousepad/mousepad-print.c
@@ -159,12 +159,13 @@ static void
 mousepad_print_settings_load (GtkPrintOperation *operation)
 {
   MousepadPrint         *print = MOUSEPAD_PRINT (operation);
-  XfceRc                *rc;
+  GKeyFile              *keyfile;
+  gchar                 *filename;
   GtkPrintSettings      *settings = NULL;
   gchar                **keys;
   gint                   i;
   gchar                 *key;
-  const gchar           *value;
+  gchar                 *value;
   GtkPageSetup          *page_setup;
   GtkPaperSize          *paper_size;
   PangoContext          *context;
@@ -173,13 +174,18 @@ mousepad_print_settings_load (GtkPrintOperation *operation)
   _mousepad_return_if_fail (MOUSEPAD_IS_DOCUMENT (print->document));
   _mousepad_return_if_fail (GTK_IS_WIDGET (print->document->textview));
 
-  /* open the config file */
-  rc = xfce_rc_config_open (XFCE_RESOURCE_CONFIG, MOUSEPAD_PREFERENCES_REL_PATH, TRUE);
+  /* get the config file filename */
+  filename = mousepad_util_get_save_location (MOUSEPAD_RC_RELPATH, FALSE);
+  if (G_UNLIKELY (filename == NULL))
+    return;
 
-  if (G_LIKELY (rc != NULL))
+  /* create a new keyfile */
+  keyfile = g_key_file_new ();
+
+  if (G_LIKELY (g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL)))
     {
       /* get all the keys from the config file */
-      keys = xfce_rc_get_entries (rc, "Print Settings");
+      keys = g_key_file_get_keys (keyfile, "Print Settings", NULL, NULL);
 
       if (G_LIKELY (keys))
         {
@@ -190,7 +196,7 @@ mousepad_print_settings_load (GtkPrintOperation *operation)
           for (i = 0; keys[i] != NULL; i++)
             {
               /* read the value from the config file */
-              value = xfce_rc_read_entry (rc, keys[i], NULL);
+              value = g_key_file_get_string (keyfile, "Print Settings", keys[i], NULL);
 
               /* set the value */
               if (G_LIKELY (value))
@@ -198,17 +204,21 @@ mousepad_print_settings_load (GtkPrintOperation *operation)
                   key = mousepad_util_key_name (keys[i]);
                   gtk_print_settings_set (settings, key, value);
                   g_free (key);
+                  g_free (value);
                 }
             }
 
           /* cleanup */
           g_strfreev (keys);
         }
-
-      /* close */
-      xfce_rc_close (rc);
     }
 
+  /* free the key file */
+  g_key_file_free (keyfile);
+
+  /* cleanup */
+  g_free (filename);
+
   if (G_LIKELY (settings))
     {
       /* apply the settings */
@@ -267,14 +277,14 @@ mousepad_print_settings_save_foreach (const gchar *key,
                                       const gchar *value,
                                       gpointer     user_data)
 {
-  XfceRc *rc = (XfceRc *) user_data;
-  gchar  *config;
+  GKeyFile *keyfile = user_data;
+  gchar    *config;
 
   /* save the setting */
   if (G_LIKELY (key && value))
     {
       config = mousepad_util_config_name (key);
-      xfce_rc_write_entry (rc, config, value);
+      g_key_file_set_string (keyfile, "Print Settings", config, value);
       g_free (config);
     }
 }
@@ -285,19 +295,21 @@ static void
 mousepad_print_settings_save (GtkPrintOperation *operation)
 {
   MousepadPrint    *print = MOUSEPAD_PRINT (operation);
-  XfceRc           *rc;
+  GKeyFile         *keyfile;
+  gchar            *filename;
   GtkPrintSettings *settings;
   GtkPageSetup     *page_setup;
   GtkPaperSize     *paper_size;
 
-  /* open the config file */
-  rc = xfce_rc_config_open (XFCE_RESOURCE_CONFIG, MOUSEPAD_PREFERENCES_REL_PATH, FALSE);
+  /* get the save location */
+  filename = mousepad_util_get_save_location (MOUSEPAD_RC_RELPATH, TRUE);
 
-  if (G_LIKELY (rc != NULL))
-    {
-      /* set print settings group */
-      xfce_rc_set_group (rc, "Print Settings");
+  /* create a new keyfile */
+  keyfile = g_key_file_new ();
 
+  /* load the existing settings */
+  if (G_LIKELY (g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL)))
+    {
       /* get the print settings */
       settings = gtk_print_operation_get_print_settings (operation);
 
@@ -336,12 +348,16 @@ mousepad_print_settings_save (GtkPrintOperation *operation)
           gtk_print_settings_set (settings, "font-name", print->font_name);
 
           /* store all the print settings */
-          gtk_print_settings_foreach (settings, mousepad_print_settings_save_foreach, rc);
-        }
+          gtk_print_settings_foreach (settings, mousepad_print_settings_save_foreach, keyfile);
 
-      /* close */
-      xfce_rc_close (rc);
+          /* save the contents */
+          mousepad_util_save_key_file (keyfile, filename);
+        }
     }
+
+  /* cleanup */
+  g_key_file_free (keyfile);
+  g_free (filename);
 }
 
 
diff --git a/mousepad/mousepad-private.h b/mousepad/mousepad-private.h
index 5ba0333..f271186 100644
--- a/mousepad/mousepad-private.h
+++ b/mousepad/mousepad-private.h
@@ -21,10 +21,14 @@
 #include <glib.h>
 #include <glib-object.h>
 #include <gtk/gtk.h>
-#include <libxfce4util/libxfce4util.h>
+#include <glib/gi18n.h>
 
 G_BEGIN_DECLS
 
+/* config file locations */
+#define MOUSEPAD_RC_RELPATH     ("Mousepad" G_DIR_SEPARATOR_S "mousepadrc")
+#define MOUSEPAD_ACCELS_RELPATH ("Mousepad" G_DIR_SEPARATOR_S "accels.scm")
+
 /* handling flags */
 #define MOUSEPAD_SET_FLAG(flags,flag)   G_STMT_START{ ((flags) |= (flag)); }G_STMT_END
 #define MOUSEPAD_UNSET_FLAG(flags,flag) G_STMT_START{ ((flags) &= ~(flag)); }G_STMT_END
diff --git a/mousepad/mousepad-util.c b/mousepad/mousepad-util.c
index fdb2281..16ff0dd 100644
--- a/mousepad/mousepad-util.c
+++ b/mousepad/mousepad-util.c
@@ -547,6 +547,87 @@ mousepad_util_forward_iter_to_text (GtkTextIter       *iter,
 
 
 
+gchar *
+mousepad_util_get_save_location (const gchar *relpath,
+                                 gboolean     create_parents)
+{
+  gchar *filename, *dirname;
+
+  _mousepad_return_val_if_fail (g_get_user_config_dir () != NULL, NULL);
+
+  /* create the full filename */
+  filename = g_build_filename (g_get_user_config_dir (), relpath, NULL);
+
+  /* test if the file exists */
+  if (G_UNLIKELY (g_file_test (filename, G_FILE_TEST_IS_REGULAR) == FALSE))
+    {
+      if (create_parents)
+        {
+          /* get the directory name */
+          dirname = g_path_get_dirname (filename);
+
+          /* make the directory with parents */
+          if (g_mkdir_with_parents (dirname, 0700) == -1)
+            {
+              /* show warning to the user */
+              g_critical (_("Unable to create base directory \"%s\". "
+                            "Saving to file \"%s\" will be aborted."), dirname, filename);
+
+              /* don't return a filename, to avoid problems */
+              g_free (filename);
+              filename = NULL;
+            }
+
+          /* cleanup */
+          g_free (dirname);
+        }
+      else
+        {
+          /* cleanup */
+          g_free (filename);
+          filename = NULL;
+        }
+    }
+
+  return filename;
+}
+
+
+
+void
+mousepad_util_save_key_file (GKeyFile    *keyfile,
+                             const gchar *filename)
+{
+  gchar  *contents;
+  gsize   length;
+  GError *error = NULL;
+
+  /* get the contents of the key file */
+  contents = g_key_file_to_data (keyfile, &length, &error);
+
+  if (G_LIKELY (error == NULL))
+    {
+      /* write the contents to the file */
+      if (G_UNLIKELY (g_file_set_contents (filename, contents, length, &error) == FALSE))
+        goto print_error;
+    }
+  else
+    {
+      print_error:
+
+      /* print error */
+      g_critical (_("Failed to store the preferences to \"%s\": %s"), filename, error->message);
+
+      /* cleanup */
+      g_error_free (error);
+    }
+
+  /* cleanup */
+  g_free (contents);
+}
+
+
+
 GType
 mousepad_util_search_flags_get_type (void)
 {
diff --git a/mousepad/mousepad-util.h b/mousepad/mousepad-util.h
index bd5d20a..0fb9032 100644
--- a/mousepad/mousepad-util.h
+++ b/mousepad/mousepad-util.h
@@ -102,6 +102,12 @@ gint       mousepad_util_get_real_line_offset     (const GtkTextIter   *iter,
 gboolean   mousepad_util_forward_iter_to_text     (GtkTextIter         *iter,
                                                    const GtkTextIter   *limit);
 
+gchar     *mousepad_util_get_save_location        (const gchar         *relpath,
+                                                   gboolean             create_parents);
+
+void       mousepad_util_save_key_file            (GKeyFile            *keyfile,
+                                                   const gchar         *filename);
+
 GType      mousepad_util_search_flags_get_type    (void) G_GNUC_CONST;
 
 gint       mousepad_util_highlight                (GtkTextBuffer       *buffer,
diff --git a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c
index 8b551c3..f6ceaf7 100644
--- a/mousepad/mousepad-window.c
+++ b/mousepad/mousepad-window.c
@@ -550,20 +550,23 @@ mousepad_window_init (MousepadWindow *window)
   window->active = NULL;
   window->recent_manager = NULL;
 
+  /* setup window */
+  gtk_window_set_icon_name (GTK_WINDOW (window), "accessories-text-editor");
+
   /* increase clipboard history ref count */
   clipboard_history_ref_count++;
 
   /* add the preferences to the window */
   window->preferences = mousepad_preferences_get ();
 
+  /* signal for handling the window delete event */
+  g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (mousepad_window_delete_event), NULL);
+
   /* allocate a closure for the menu_item_selected() callback */
   window->menu_item_selected_closure = g_cclosure_new_object (G_CALLBACK (mousepad_window_menu_item_selected), G_OBJECT (window));
   g_closure_ref (window->menu_item_selected_closure);
   g_closure_sink (window->menu_item_selected_closure);
 
-  /* signal for handling the window delete event */
-  g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (mousepad_window_delete_event), NULL);
-
   /* allocate a closure for the menu_item_deselected() callback */
   window->menu_item_deselected_closure = g_cclosure_new_object (G_CALLBACK (mousepad_window_menu_item_deselected), G_OBJECT (window));
   g_closure_ref (window->menu_item_deselected_closure);
@@ -1818,7 +1821,7 @@ mousepad_window_menu_templates (GtkWidget      *item,
   mousepad_window_recent_menu (window);
 
   /* get the templates path */
-  templates_path = xfce_get_homefile ("Templates", NULL);
+  templates_path = g_build_filename (g_get_home_dir (), "Templates", NULL);
 
   /* check if the directory exists */
   if (g_file_test (templates_path, G_FILE_TEST_IS_DIR))


More information about the Xfce4-commits mailing list