[gnome-games] [same-gnome-clutter] Use small/medium/large instead of arbitrary sizes
- From: Tim Horton <hortont src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-games] [same-gnome-clutter] Use small/medium/large instead of arbitrary sizes
- Date: Thu, 16 Jul 2009 22:34:17 +0000 (UTC)
commit f24d3f2494a5a2e4ba74934b19b71780ad770b57
Author: Tim Horton <hortont424 gmail com>
Date: Sun Jul 12 20:59:08 2009 -0400
[same-gnome-clutter] Use small/medium/large instead of arbitrary sizes
same-gnome-clutter/data/settings.ui | 42 ++++-----------
same-gnome-clutter/same-gnome-clutter.schemas.in | 24 ++-------
same-gnome-clutter/src/Settings.js | 59 ++++++++++------------
3 files changed, 44 insertions(+), 81 deletions(-)
---
diff --git a/same-gnome-clutter/data/settings.ui b/same-gnome-clutter/data/settings.ui
index d531377..41850c2 100644
--- a/same-gnome-clutter/data/settings.ui
+++ b/same-gnome-clutter/data/settings.ui
@@ -36,30 +36,20 @@
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Number of rows:</property>
+ <property name="label" translatable="yes">Board size:</property>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Number of columns:</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
<object class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Number of colors:</property>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
@@ -72,30 +62,16 @@
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkSpinButton" id="rows-spinner">
+ <object class="GtkComboBox" id="size-selector">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="adjustment">rows-adjustment</property>
- <signal name="value_changed" handler="update_rows"/>
+ <property name="model">liststore2</property>
+ <signal name="changed" handler="update_size"/>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkSpinButton" id="columns-spinner">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="adjustment">columns-adjustment</property>
- <signal name="value_changed" handler="update_columns"/>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
<object class="GtkSpinButton" id="colors-spinner">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -104,7 +80,7 @@
<signal name="value_changed" handler="update_colors"/>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
@@ -322,4 +298,10 @@
<property name="upper">4</property>
<property name="step_increment">1</property>
</object>
+ <object class="GtkListStore" id="liststore2">
+ <columns>
+ <!-- column-name str -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
</interface>
diff --git a/same-gnome-clutter/same-gnome-clutter.schemas.in b/same-gnome-clutter/same-gnome-clutter.schemas.in
index cf9a8c8..19eb67a 100644
--- a/same-gnome-clutter/same-gnome-clutter.schemas.in
+++ b/same-gnome-clutter/same-gnome-clutter.schemas.in
@@ -14,29 +14,17 @@
</schema>
<schema>
- <key>/schemas/apps/same-gnome-clutter/columns</key>
- <applyto>/apps/same-gnome-clutter/columns</applyto>
- <owner>same-gnome-clutter</owner>
- <type>int</type>
- <default>15</default>
- <locale name="C">
- <short>Board column count</short>
- <long>The number of columns of tiles in the game board.</long>
- </locale>
- </schema>
-
- <schema>
- <key>/schemas/apps/same-gnome-clutter/rows</key>
- <applyto>/apps/same-gnome-clutter/rows</applyto>
+ <key>/schemas/apps/same-gnome-clutter/size</key>
+ <applyto>/apps/same-gnome-clutter/size</applyto>
<owner>same-gnome-clutter</owner>
<type>int</type>
- <default>10</default>
+ <default>1</default>
<locale name="C">
- <short>Board row count</short>
- <long>The number of rows of tiles in the game board.</long>
+ <short>Board size</short>
+ <long>The size of the game board.</long>
</locale>
</schema>
-
+
<schema>
<key>/schemas/apps/same-gnome-clutter/colors</key>
<applyto>/apps/same-gnome-clutter/colors</applyto>
diff --git a/same-gnome-clutter/src/Settings.js b/same-gnome-clutter/src/Settings.js
index ed5d4df..6749fa9 100644
--- a/same-gnome-clutter/src/Settings.js
+++ b/same-gnome-clutter/src/Settings.js
@@ -8,33 +8,28 @@ ThemeLoader = imports.ThemeLoader;
GConf.init(Seed.argv);
// Defaults
-var theme, columns, rows, colors, zealous, fly_score;
+var theme, colors, zealous, fly_score, size;
var default_theme = "Tango";
-var default_columns = 15;
-var default_rows = 10;
+var default_size = 1;
var default_colors = 3;
var default_zealous = true;
var default_fly_score = true;
// Map theme names to themes
var themes = ThemeLoader.load_themes();
+var sizes = [{name: "Small", columns: 6, rows: 5},
+ {name: "Normal", columns: 15, rows: 10},
+ {name: "Large", columns: 20, rows: 15}];
try
{
gconf_client = GConf.Client.get_default();
theme = themes[gconf_client.get_string("/apps/same-gnome-clutter/theme")];
- columns = gconf_client.get_int("/apps/same-gnome-clutter/columns");
- rows = gconf_client.get_int("/apps/same-gnome-clutter/rows");
+ size = gconf_client.get_int("/apps/same-gnome-clutter/size");
colors = gconf_client.get_int("/apps/same-gnome-clutter/colors");
zealous = gconf_client.get_bool("/apps/same-gnome-clutter/zealous");
fly_score = gconf_client.get_bool("/apps/same-gnome-clutter/fly_score");
- if(columns < 4 || columns > 20) // TODO: arbitrary. determine reasonable limits
- columns = default_columns;
-
- if(rows < 4 || rows > 20)
- rows = default_rows;
-
if(colors < 2 || colors > 4)
colors = default_colors;
@@ -45,8 +40,7 @@ catch(e)
{
print("Couldn't load settings from GConf.");
theme = themes[default_theme];
- columns = default_columns;
- rows = default_rows;
+ size = default_size;
colors = default_colors;
zealous = default_zealous;
fly_score = default_fly_score;
@@ -116,28 +110,13 @@ handlers = {
print("Couldn't save settings to GConf.");
}
},
- update_rows: function(widget, ud)
+ update_size: function(widget, ud)
{
- rows = widget.get_value();
+ size = widget.get_active();
try
{
- gconf_client.set_int("/apps/same-gnome-clutter/rows", rows);
- }
- catch(e)
- {
- print("Couldn't save settings to GConf.");
- }
-
- Watcher.signal.size_changed.emit();
- },
- update_columns: function(widget, ud)
- {
- columns = widget.get_value();
-
- try
- {
- gconf_client.set_int("/apps/same-gnome-clutter/columns", columns);
+ gconf_client.set_int("/apps/same-gnome-clutter/size", size);
}
catch(e)
{
@@ -176,10 +155,10 @@ function show_settings()
b.connect_signals(handlers);
populate_theme_selector(b.get_object("theme-selector"));
+ populate_size_selector(b.get_object("size-selector"));
// Set current values
- b.get_object("rows-spinner").value = rows;
- b.get_object("columns-spinner").value = columns;
+ b.get_object("size-selector").set_active(size);
b.get_object("colors-spinner").value = colors;
b.get_object("zealous-checkbox").active = zealous;
b.get_object("fly-score-checkbox").active = fly_score;
@@ -192,6 +171,20 @@ function show_settings()
settings_dialog.destroy();
}
+function populate_size_selector(selector)
+{
+ // Since we're using GtkBuilder, we can't make a Gtk.ComboBox.text. Instead,
+ // we'll construct the cell renderer here, once, and use that.
+ var cell = new Gtk.CellRendererText();
+ selector.pack_start(cell, true);
+ selector.add_attribute(cell, "text", 0);
+
+ for(var i in sizes)
+ {
+ selector.append_text(sizes[i].name);
+ }
+}
+
function populate_theme_selector(selector)
{
// Since we're using GtkBuilder, we can't make a Gtk.ComboBox.text. Instead,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]