[gnome-games] [same-gnome-clutter] Use small/medium/large instead of arbitrary sizes



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">&#x2022;</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">&#x2022;</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]