[gnome-games] gnect: Use gsettings



commit 67e174966c001392d332dd44c20593e970472e37
Author: Robert Ancell <robert ancell canonical com>
Date:   Tue Jan 3 11:52:37 2012 +1100

    gnect: Use gsettings

 gnect/data/Makefile.am                    |   20 ++----
 gnect/data/gnect.schemas.in               |  102 ----------------------------
 gnect/data/org.gnome.gnect.gschema.xml.in |   44 ++++++++++++
 gnect/src/Makefile.am                     |    5 --
 gnect/src/main.c                          |   12 ++--
 gnect/src/prefs.c                         |  105 ++++++++++-------------------
 gnect/src/prefs.h                         |   10 ---
 7 files changed, 91 insertions(+), 207 deletions(-)
---
diff --git a/gnect/data/Makefile.am b/gnect/data/Makefile.am
index 493da97..e6c734e 100644
--- a/gnect/data/Makefile.am
+++ b/gnect/data/Makefile.am
@@ -1,5 +1,10 @@
 SUBDIRS = icons
 
+gsettings_in_file = org.gnome.gnect.gschema.xml.in
+gsettings_SCHEMAS = $(gsettings_in_file:.xml.in=.xml)
+ INTLTOOL_XML_NOMERGE_RULE@
+ GSETTINGS_RULES@
+
 pixmapdir = $(datadir)/gnect
 pixmap_DATA = \
     tileset_50x50_sunspot.svg \
@@ -19,26 +24,15 @@ desktop_in_files = gnect.desktop.in.in
 desktopdir       = $(datadir)/applications
 desktop_DATA     = $(desktop_in_files:.desktop.in.in=.desktop)
 
-schema_in_files = gnect.schemas.in
-if HAVE_GNOME
-schemadir = $(GCONF_SCHEMA_FILE_DIR)
-schema_DATA = $(schema_in_files:.schemas.in=.schemas)
-endif
-
 man_MANS     = gnect.6
 
 EXTRA_DIST = $(pixmap_DATA) \
              $(velena_DATA) \
              $(desktop_in_files) \
-             $(schema_in_files) \
+             $(gsettings_in_file) \
              $(man_MANS)
 
-DISTCLEANFILES = $(schema_DATA) $(desktop_DATA)
-
-install-data-local: 
-if GCONF_SCHEMAS_INSTALL
-	GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/gnect/data/$(schema_DATA)
-endif
+DISTCLEANFILES = $(gsettings_SCHEMAS) $(desktop_DATA)
 
 @INTLTOOL_DESKTOP_RULE@
 @INTLTOOL_SCHEMAS_RULE@
diff --git a/gnect/data/org.gnome.gnect.gschema.xml.in b/gnect/data/org.gnome.gnect.gschema.xml.in
new file mode 100644
index 0000000..0ac28d2
--- /dev/null
+++ b/gnect/data/org.gnome.gnect.gschema.xml.in
@@ -0,0 +1,44 @@
+<schemalist>
+  <schema id="org.gnome.gnect" path="/org/gnome/gnect/">
+    <key name="player1" type="i">
+      <default>0</default>
+      <_summary>Level of Player One</_summary>
+      <_description>Zero is human; one through three correspond to the level of the computer player.</_description>
+    </key>
+    <key name="player2" type="i">
+      <default>1</default>
+      <_summary>Level of Player Two</_summary>
+      <_description>Zero is human; one through three correspond to the level of the computer player.</_description>
+    </key>
+    <key name="theme-id" type="i">
+      <default>3</default>
+      <_summary>Theme ID</_summary>
+      <_description>A number specifying the preferred theme.</_description>
+    </key>
+    <key name="animate" type="b">
+      <default>true</default>
+      <_summary>Animate</_summary>
+      <_description>Whether or not to use animation.</_description>
+    </key>
+    <key name="sound" type="b">
+      <default>true</default>
+      <_summary>Sound</_summary>
+      <_description>Whether or not to play event sounds.</_description>
+    </key>
+    <key name="key-left" type="i">
+      <default>65361</default>
+      <_summary>Move left</_summary>
+      <_description>Key press to move left.</_description>
+    </key>
+    <key name="key-right" type="i">
+      <default>65363</default>
+      <_summary>Move right</_summary>
+      <_description>Key press to move right.</_description>
+    </key>
+    <key name="key-drop" type="i">
+      <default>65364</default>
+      <_summary>Drop marble</_summary>
+      <_description>Key press to drop a marble.</_description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/gnect/src/Makefile.am b/gnect/src/Makefile.am
index 58807fd..c5e5426 100644
--- a/gnect/src/Makefile.am
+++ b/gnect/src/Makefile.am
@@ -41,11 +41,6 @@ gnect_LDADD = \
 	$(INTLLIBS) \
 	-lz
 
-if HAVE_GNOME
-gnect_CFLAGS += $(GNOME_CFLAGS)
-gnect_LDADD += $(GNOME_LIBS)
-endif
-
 if HAVE_RSVG
 gnect_CFLAGS += $(RSVG_CFLAGS)
 gnect_LDADD += $(RSVG_LIBS)
diff --git a/gnect/src/main.c b/gnect/src/main.c
index 9d273b2..e597178 100644
--- a/gnect/src/main.c
+++ b/gnect/src/main.c
@@ -49,6 +49,7 @@
 
 extern Prefs p;
 
+GSettings *settings;
 GtkWidget *app;
 GtkWidget *notebook;
 GtkWidget *drawarea;
@@ -855,7 +856,7 @@ static void
 on_settings_toggle_sound (GtkMenuItem * m, gpointer user_data)
 {
   p.do_sound = GTK_CHECK_MENU_ITEM (m)->active;
-  games_conf_set_boolean (NULL, KEY_DO_SOUND, p.do_sound);
+  g_settings_set_boolean (NULL, KEY_DO_SOUND, p.do_sound);
 }
 #endif
 
@@ -1275,7 +1276,7 @@ create_app (void)
   gtk_window_set_title (GTK_WINDOW (app), _(APPNAME_LONG));
 
   gtk_window_set_default_size (GTK_WINDOW (app), DEFAULT_WIDTH, DEFAULT_HEIGHT);
-  games_conf_add_window (GTK_WINDOW (app), NULL);
+  //games_conf_add_window (GTK_WINDOW (app), NULL);
 
   notebook = gtk_notebook_new ();
   gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);
@@ -1364,17 +1365,16 @@ main (int argc, char *argv[])
     g_error_free (error);
     exit (1);
   }
+  
+  settings = g_settings_new ("org.gnome.gnect");
 
   g_set_application_name (_(APPNAME_LONG));
 
-  games_conf_initialise (APPNAME);
-
   prefs_init ();
   game_init ();
 
   /* init gfx */
   if (!gfx_load_pixmaps ()) {
-    games_conf_shutdown ();
     exit (1);
   }
 
@@ -1385,7 +1385,5 @@ main (int argc, char *argv[])
 
   game_free ();
 
-  games_conf_shutdown ();
-
   return 0;
 }
diff --git a/gnect/src/prefs.c b/gnect/src/prefs.c
index 8d2b85f..e77d254 100644
--- a/gnect/src/prefs.c
+++ b/gnect/src/prefs.c
@@ -30,7 +30,6 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 
-#include <libgames-support/games-conf.h>
 #include <libgames-support/games-frame.h>
 #include <libgames-support/games-controls.h>
 
@@ -39,17 +38,14 @@
 #include "prefs.h"
 #include "gfx.h"
 
-#define DEFAULT_LEVEL_PLAYER1  LEVEL_HUMAN
-#define DEFAULT_LEVEL_PLAYER2  LEVEL_WEAK
 #define DEFAULT_THEME_ID       0
 #define DEFAULT_KEY_LEFT       GDK_KEY_Left
 #define DEFAULT_KEY_RIGHT      GDK_KEY_Right
 #define DEFAULT_KEY_DROP       GDK_KEY_Down
-#define DEFAULT_DO_SOUND       TRUE
-#define DEFAULT_DO_ANIMATE     TRUE
 
 Prefs p;
 
+extern GSettings *settings;
 extern GtkWidget *app;
 extern Theme theme[];
 extern gint n_themes;
@@ -64,27 +60,6 @@ static GtkWidget *checkbutton_animate;
 static GtkWidget *checkbutton_sound;
 
 static gint
-gnect_conf_get_int (gchar * key, gint default_int)
-{
-  return games_conf_get_integer_with_default (NULL, key, default_int);
-}
-
-static gboolean
-gnect_conf_get_boolean (gchar * key, gboolean default_bool)
-{
-  gboolean value;
-  GError *error = NULL;
-
-  value = games_conf_get_boolean (NULL, key, &error);
-  if (error) {
-    g_error_free (error);
-    value = default_bool;
-  }
-
-  return value;
-}
-
-static gint
 sane_theme_id (gint val)
 {
   if (val < 0 || val >= n_themes)
@@ -122,34 +97,30 @@ prefsbox_update_player_labels (void)
 }
 
 static void
-conf_value_changed_cb (GamesConf *conf,
-                       const char *group,
-                       const char *key,
-                       gpointer user_data)
+settings_changed_cb (GSettings *settings,
+                     const char *key,
+                     gpointer user_data)
 {
-  if (group != NULL)
-    return;
-
-  if (strcmp (key, KEY_DO_ANIMATE) == 0) {
-    p.do_animate = games_conf_get_boolean (NULL, KEY_DO_ANIMATE, NULL);
+  if (strcmp (key, "animate") == 0) {
+    p.do_animate = g_settings_get_boolean (settings, "animate");
     if (prefsbox == NULL)
       return;
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton_animate),
                                   p.do_animate);
-  } else if (strcmp (key, KEY_DO_SOUND) == 0) {
-    p.do_sound = games_conf_get_boolean (NULL, KEY_DO_SOUND, NULL);
+  } else if (strcmp (key, "sound") == 0) {
+    p.do_sound = g_settings_get_boolean (settings, "sound");
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton_sound),
                                   p.do_sound);
-  } else if (strcmp (key, KEY_MOVE_LEFT) == 0) {
-    p.keypress[MOVE_LEFT] = games_conf_get_keyval_with_default (NULL, KEY_MOVE_LEFT, DEFAULT_KEY_LEFT);
-  } else if (strcmp (key, KEY_MOVE_RIGHT) == 0) {
-    p.keypress[MOVE_RIGHT] = games_conf_get_keyval_with_default (NULL, KEY_MOVE_RIGHT, DEFAULT_KEY_RIGHT);
-  } else if (strcmp (key, KEY_MOVE_DROP) == 0) {
-    p.keypress[MOVE_DROP] = games_conf_get_keyval_with_default (NULL, KEY_MOVE_DROP, DEFAULT_KEY_DROP);
-  } else if (strcmp (key, KEY_THEME_ID) == 0) {
+  } else if (strcmp (key, "key-left") == 0) {
+    p.keypress[MOVE_LEFT] = g_settings_get_int (settings, "key-left");
+  } else if (strcmp (key, "key-right") == 0) {
+    p.keypress[MOVE_RIGHT] = g_settings_get_int (settings, "key-right");
+  } else if (strcmp (key, "key-drop") == 0) {
+    p.keypress[MOVE_DROP] = g_settings_get_int (settings, "key-drop");
+  } else if (strcmp (key, "theme-id") == 0) {
     gint val;
 
-    val = sane_theme_id (games_conf_get_integer (NULL, KEY_THEME_ID, NULL));
+    val = sane_theme_id (g_settings_get_int (settings, "theme-id"));
     if (val != p.theme_id) {
       p.theme_id = val;
       if (!gfx_change_theme ())
@@ -168,7 +139,7 @@ on_select_theme (GtkComboBox * combo, gpointer data)
   gint id;
 
   id = gtk_combo_box_get_active (combo);
-  games_conf_set_integer (NULL, KEY_THEME_ID, id);
+  g_settings_set_int (settings, "theme-id", id);
 }
 
 
@@ -177,14 +148,14 @@ static void
 on_toggle_animate (GtkToggleButton * t, gpointer data)
 {
   p.do_animate = gtk_toggle_button_get_active (t);
-  games_conf_set_boolean (NULL, KEY_DO_ANIMATE, gtk_toggle_button_get_active (t));
+  g_settings_set_boolean (settings, "animate", gtk_toggle_button_get_active (t));
 }
 
 static void
 on_toggle_sound (GtkToggleButton * t, gpointer data)
 {
   p.do_sound = gtk_toggle_button_get_active (t);
-  games_conf_set_boolean (NULL, KEY_DO_SOUND, gtk_toggle_button_get_active (t));
+  g_settings_set_boolean (settings, "sound", gtk_toggle_button_get_active (t));
 }
 
 static void
@@ -193,7 +164,7 @@ on_select_player1 (GtkWidget * w, gpointer data)
   if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
     return;
   p.level[PLAYER1] = GPOINTER_TO_INT (data);
-  games_conf_set_integer (NULL, KEY_LEVEL_PLAYER1, GPOINTER_TO_INT (data));
+  g_settings_set_int (settings, "player1", GPOINTER_TO_INT (data));
   scorebox_reset ();
   who_starts = PLAYER2;		/* This gets reversed in game_reset. */
   game_reset ();
@@ -205,7 +176,7 @@ on_select_player2 (GtkWidget * w, gpointer data)
   if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
     return;
   p.level[PLAYER2] = GPOINTER_TO_INT (data);
-  games_conf_set_integer (NULL, KEY_LEVEL_PLAYER2, GPOINTER_TO_INT (data));
+  g_settings_set_int (settings, "player2", GPOINTER_TO_INT (data));
   scorebox_reset ();
   who_starts = PLAYER2;		/* This gets reversed in game_reset. */
   game_reset ();
@@ -214,22 +185,16 @@ on_select_player2 (GtkWidget * w, gpointer data)
 void
 prefs_init (void)
 {
-  p.do_sound = gnect_conf_get_boolean (KEY_DO_SOUND, DEFAULT_DO_SOUND);
-  p.do_animate = gnect_conf_get_boolean (KEY_DO_ANIMATE, DEFAULT_DO_ANIMATE);
-  p.level[PLAYER1] =
-    gnect_conf_get_int (KEY_LEVEL_PLAYER1, DEFAULT_LEVEL_PLAYER1);
-  p.level[PLAYER2] =
-    gnect_conf_get_int (KEY_LEVEL_PLAYER2, DEFAULT_LEVEL_PLAYER2);
-  p.keypress[MOVE_LEFT] =
-    games_conf_get_keyval_with_default (NULL, KEY_MOVE_LEFT, DEFAULT_KEY_LEFT);
-  p.keypress[MOVE_RIGHT] =
-    games_conf_get_keyval_with_default (NULL, KEY_MOVE_RIGHT, DEFAULT_KEY_RIGHT);
-  p.keypress[MOVE_DROP] =
-    games_conf_get_keyval_with_default (NULL, KEY_MOVE_DROP, DEFAULT_KEY_DROP);
-  p.theme_id = gnect_conf_get_int (KEY_THEME_ID, DEFAULT_THEME_ID);
-
-  g_signal_connect (games_conf_get_default (), "value-changed",
-                    G_CALLBACK (conf_value_changed_cb), NULL);
+  p.do_sound = g_settings_get_boolean (settings, "sound");
+  p.do_animate = g_settings_get_boolean (settings, "animate");
+  p.level[PLAYER1] = g_settings_get_int (settings, "player1");
+  p.level[PLAYER2] = g_settings_get_int (settings, "player2");
+  p.keypress[MOVE_LEFT] = g_settings_get_int (settings, "key-left");
+  p.keypress[MOVE_RIGHT] = g_settings_get_int (settings, "key-right");
+  p.keypress[MOVE_DROP] = g_settings_get_int (settings, "key-drop");
+  p.theme_id = g_settings_get_int (settings, "theme-id");
+
+  g_signal_connect (settings, "changed", G_CALLBACK (settings_changed_cb), NULL);
 
   p.level[PLAYER1] = sane_player_level (p.level[PLAYER1]);
   p.level[PLAYER2] = sane_player_level (p.level[PLAYER2]);
@@ -362,11 +327,11 @@ prefsbox_open (void)
 
   label = gtk_label_new_with_mnemonic (_("Keyboard Controls"));
 
-  controls_list = games_controls_list_new (NULL);
+  controls_list = games_controls_list_new_settings (settings);
   games_controls_list_add_controls (GAMES_CONTROLS_LIST (controls_list),
-				    KEY_MOVE_LEFT, _("Move left"), DEFAULT_KEY_LEFT,
-                                    KEY_MOVE_RIGHT, _("Move right"), DEFAULT_KEY_RIGHT,
-				    KEY_MOVE_DROP, _("Drop marble"), DEFAULT_KEY_DROP,
+				    "key-left", _("Move left"), DEFAULT_KEY_LEFT,
+                                    "key-right", _("Move right"), DEFAULT_KEY_RIGHT,
+				    "key-drop", _("Drop marble"), DEFAULT_KEY_DROP,
                                     NULL);
   gtk_container_set_border_width (GTK_CONTAINER (controls_list), 12);
   gtk_notebook_append_page (GTK_NOTEBOOK (notebook), controls_list, label);
diff --git a/gnect/src/prefs.h b/gnect/src/prefs.h
index 7febc6f..e7ad40e 100644
--- a/gnect/src/prefs.h
+++ b/gnect/src/prefs.h
@@ -1,15 +1,5 @@
 /* prefs.h */
 
-#define KEY_LEVEL_PLAYER1      "player1"
-#define KEY_LEVEL_PLAYER2      "player2"
-#define KEY_THEME_ID           "theme_id"
-#define KEY_DO_SOUND           "sound"
-#define KEY_DO_ANIMATE         "animate"
-
-#define KEY_MOVE_LEFT          "keyleft"
-#define KEY_MOVE_RIGHT         "keyright"
-#define KEY_MOVE_DROP          "keydrop"
-
 typedef struct _Prefs Prefs;
 struct _Prefs {
   gboolean do_sound;



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