[gnome-games] gnect: Use gsettings
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games] gnect: Use gsettings
- Date: Tue, 3 Jan 2012 00:52:43 +0000 (UTC)
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]