[gnome-games] gnotski: Use gsettings



commit 8d8dfdbc82b02c002444cb1023802b273e1b412f
Author: Robert Ancell <robert ancell canonical com>
Date:   Tue Jan 3 16:49:53 2012 +1100

    gnotski: Use gsettings

 gnotski/data/Makefile.am                      |   27 +++-------
 gnotski/data/gnotski.schemas.in               |   17 ------
 gnotski/data/org.gnome.gnotski.gschema.xml.in |    9 +++
 gnotski/src/Makefile.am                       |    5 --
 gnotski/src/gnotski.c                         |   73 +++++++++++++++++--------
 5 files changed, 65 insertions(+), 66 deletions(-)
---
diff --git a/gnotski/data/Makefile.am b/gnotski/data/Makefile.am
index 6b9f6b1..83cf951 100644
--- a/gnotski/data/Makefile.am
+++ b/gnotski/data/Makefile.am
@@ -4,11 +4,10 @@ pixmapdir = $(datadir)/gnotski
 pixmap_DATA = \
 	gnotski.svg
 
-schema_in_files = gnotski.schemas.in
-if HAVE_GNOME
-schemadir = $(GCONF_SCHEMA_FILE_DIR)
-schema_DATA = $(schema_in_files:.schemas.in=.schemas)
-endif
+gsettings_in_file = org.gnome.gnotski.gschema.xml.in
+gsettings_SCHEMAS = $(gsettings_in_file:.xml.in=.xml)
+ INTLTOOL_XML_NOMERGE_RULE@
+ GSETTINGS_RULES@
 
 man_MANS = gnotski.6
 
@@ -20,25 +19,13 @@ SCOREFILES = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2
 
 EXTRA_DIST = \
 	$(pixmap_DATA)		\
-	$(schema_in_files)	\
+	$(gsettings_in_file)	\
 	$(man_MANS) \
 	$(desktop_in_files)
 
-CLEANFILES = $(desktop_DATA) $(schema_DATA)
-DISTCLEANFILES = $(desktop_DATA) $(schema_DATA)
+CLEANFILES = $(desktop_DATA) $(gsettings_SCHEMAS)
+DISTCLEANFILES = $(desktop_DATA) $(gsettings_SCHEMAS)
 
-install-schemas-local: $(schema_DATA)
-if GCONF_SCHEMAS_INSTALL
-	if test -z "$(DESTDIR)" ; then \
-		for p in $^ ; do \
-			GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $$p 2>&1 > /dev/null; \
-		done \
-	fi
-endif
-
-install-data-local: install-schemas-local
-
- INTLTOOL_SCHEMAS_RULE@
 @INTLTOOL_DESKTOP_RULE@
 
 -include $(top_srcdir)/git.mk
diff --git a/gnotski/data/org.gnome.gnotski.gschema.xml.in b/gnotski/data/org.gnome.gnotski.gschema.xml.in
new file mode 100644
index 0000000..48b40b0
--- /dev/null
+++ b/gnotski/data/org.gnome.gnotski.gschema.xml.in
@@ -0,0 +1,9 @@
+<schemalist>
+  <schema id="org.gnome.gnotski" path="/org/gnome/gnotski/" gettext-domain="gnome-games">
+    <key name="level" type="i">
+      <default>0</default>
+      <_summary>The puzzle in play</_summary>
+      <_description>The number of the puzzle being played.</_description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/gnotski/src/Makefile.am b/gnotski/src/Makefile.am
index 0248ba4..0c708f1 100644
--- a/gnotski/src/Makefile.am
+++ b/gnotski/src/Makefile.am
@@ -18,11 +18,6 @@ gnotski_LDADD = \
 	$(GTK_LIBS)	\
 	$(INTLLIBS)
 
-if HAVE_GNOME
-gnotski_CFLAGS += $(GNOME_CFLAGS)
-gnotski_LDADD += $(GNOME_LIBS)
-endif
-
 if HAVE_RSVG
 gnotski_CFLAGS += $(RSVG_CFLAGS)
 gnotski_LDADD += $(RSVG_LIBS)
diff --git a/gnotski/src/gnotski.c b/gnotski/src/gnotski.c
index 3a614b7..57026e4 100644
--- a/gnotski/src/gnotski.c
+++ b/gnotski/src/gnotski.c
@@ -28,7 +28,6 @@
 #include <gtk/gtk.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
 
-#include <libgames-support/games-conf.h>
 #include <libgames-support/games-gridframe.h>
 #include <libgames-support/games-preimage.h>
 #include <libgames-support/games-scores.h>
@@ -50,9 +49,7 @@
 #define SPACE_PADDING 5
 #define SPACE_OFFSET 4
 
-#define KEY_LEVEL "level"
-#define KEY_LEVEL_INFO_GROUP "level_info"
-
+GSettings *settings;
 GtkWidget *window;
 GtkWidget *statusbar;
 GtkWidget *space;
@@ -477,12 +474,12 @@ main (int argc, char **argv)
 
   g_set_application_name (_(APPNAME_LONG));
 
-  games_conf_initialise (APPNAME);
-
   games_stock_init ();
 
   gtk_window_set_default_icon_name ("gnotski");
   
+  settings = g_settings_new ("org.gnome.gnotski");
+  
   highscores = games_scores_new ("gnotski",
                                  scorecats, G_N_ELEMENTS (scorecats),
                                  NULL, NULL,
@@ -493,9 +490,9 @@ main (int argc, char **argv)
   gtk_window_set_title (GTK_WINDOW (window), _(APPNAME_LONG));
 
   gtk_window_set_default_size (GTK_WINDOW (window), MINWIDTH, MINHEIGHT);
-  games_conf_add_window (GTK_WINDOW (window), NULL);
+  //games_conf_add_window (GTK_WINDOW (window), NULL);
 
-  startup_level = games_conf_get_integer (NULL, KEY_LEVEL, NULL);
+  startup_level = g_settings_get_int (settings, "level");
 
   g_signal_connect (window, "delete_event",
 		    G_CALLBACK (quit_game_cb), NULL);
@@ -524,8 +521,6 @@ main (int argc, char **argv)
 
   gtk_main ();
 
-  games_conf_shutdown ();
-
   return 0;
 }
 
@@ -805,12 +800,34 @@ void
 game_score (void)
 {
   gint pos;
-  gchar *key;
-    
+  gchar *key, *filename;
+  GKeyFile *keyfile;
+  gchar *data;
+  gsize data_length;
+
+  filename = g_build_filename (g_get_user_data_dir (), "gnotski", NULL);
+  g_mkdir_with_parents (filename, 0775);
+  g_free (filename);
+
   /* Level is complete */
   key = get_level_key (current_level);
-  games_conf_set_boolean (KEY_LEVEL_INFO_GROUP, key, TRUE);
+  keyfile = g_key_file_new ();
+  filename = g_build_filename (g_get_user_data_dir (), "gnotski", "levels", NULL);
+printf("%s\n", filename);
+  g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL);
+
+  g_key_file_set_boolean (keyfile, key, "solved", TRUE);
+
+  data = g_key_file_to_data (keyfile, &data_length, NULL);
+  if (data)
+  {
+     g_file_set_contents (filename, data, data_length, NULL);
+     g_free (data);
+  }  
   g_free (key);
+  g_key_file_unref (keyfile);
+  g_free (filename);
+
   gtk_image_set_from_stock (GTK_IMAGE(level_image[current_level]), GTK_STOCK_YES, GTK_ICON_SIZE_MENU);
 
   pos = games_scores_add_plain_score (highscores, (guint32) moves);
@@ -1049,21 +1066,29 @@ get_level_key (gint level_number)
 	}
     }
 
-    return g_strdup_printf ("%08X/solved", ~result);
+    return g_strdup_printf ("%08X", ~result);
 }
 
 void
 load_solved_state (void)
 {
-    gint i;
-    gchar *key;
-    
-    for (i = 0; i < max_level; i++) {
-	key = get_level_key (i);
-	if (games_conf_get_boolean (KEY_LEVEL_INFO_GROUP, key, NULL))
-	    gtk_image_set_from_stock (GTK_IMAGE(level_image[i]), GTK_STOCK_YES, GTK_ICON_SIZE_MENU);
-	g_free (key);
-    }
+	gint i;
+	gchar *key, *filename;
+	GKeyFile *keyfile;
+
+	keyfile = g_key_file_new ();
+	filename = g_build_filename (g_get_user_data_dir (), "gnotski", "levels", NULL);
+	g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL);
+	g_free (filename);
+	
+	for (i = 0; i < max_level; i++) {
+		key = get_level_key (i);
+		if (g_key_file_get_boolean (keyfile, key, "solved", NULL))
+			gtk_image_set_from_stock (GTK_IMAGE(level_image[i]), GTK_STOCK_YES, GTK_ICON_SIZE_MENU);
+		g_free (key);
+	}
+
+	g_key_file_unref (keyfile);
 }
 
 void
@@ -1354,7 +1379,7 @@ new_game (gint requested_level)
 
   games_scores_set_category (highscores, scorecats[current_level].key);
 
-  games_conf_set_integer (NULL, KEY_LEVEL, current_level);
+  g_settings_get_int (settings, "level");
 
   prepare_map ();
   games_grid_frame_set (GAMES_GRID_FRAME (gameframe), width, height);



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