[gnome-games] quadrapassel: Stop using GamesControls
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games] quadrapassel: Stop using GamesControls
- Date: Thu, 30 Aug 2012 01:12:35 +0000 (UTC)
commit d6173771ec49afc173a13c7d13a47b9bec0ef4e7
Author: Robert Ancell <robert ancell canonical com>
Date: Thu Aug 30 13:11:21 2012 +1200
quadrapassel: Stop using GamesControls
quadrapassel/src/quadrapassel.vala | 86 +++++++++++++++++++++++++++++++----
1 files changed, 76 insertions(+), 10 deletions(-)
---
diff --git a/quadrapassel/src/quadrapassel.vala b/quadrapassel/src/quadrapassel.vala
index f343a72..e5ae9d4 100644
--- a/quadrapassel/src/quadrapassel.vala
+++ b/quadrapassel/src/quadrapassel.vala
@@ -45,6 +45,7 @@ public class Quadrapassel : Gtk.Application
private Gtk.CheckButton rotate_counter_clock_wise_toggle;
private Gtk.CheckButton show_shadow_toggle;
private Gtk.CheckButton sound_toggle;
+ private Gtk.ListStore controls_model;
private const GLib.ActionEntry[] action_entries =
{
@@ -373,15 +374,44 @@ public class Quadrapassel : Gtk.Application
grid.attach (show_shadow_toggle, 0, 7, 2, 1);
/* controls page */
- var controls_list = new GnomeGamesSupport.ControlsList (settings);
- controls_list.add_controls ("key-left", _("Move left"), 0,
- "key-right", _("Move right"), 0,
- "key-down", _("Move down"), 0,
- "key-drop", _("Drop"), 0,
- "key-rotate", _("Rotate"), 0,
- "key-pause", _("Pause"), 0,
- null);
+ controls_model = new Gtk.ListStore (4, typeof (string), typeof (string), typeof (uint), typeof (uint));
+ Gtk.TreeIter iter;
+ controls_model.append (out iter);
+ var keyval = settings.get_int ("key-left");
+ controls_model.set (iter, 0, "key-left", 1, _("Move left"), 2, keyval);
+ controls_model.append (out iter);
+ keyval = settings.get_int ("key-right");
+ controls_model.set (iter, 0, "key-right", 1, _("Move right"), 2, keyval);
+ controls_model.append (out iter);
+ keyval = settings.get_int ("key-down");
+ controls_model.set (iter, 0, "key-down", 1, _("Move down"), 2, keyval);
+ controls_model.append (out iter);
+ keyval = settings.get_int ("key-drop");
+ controls_model.set (iter, 0, "key-drop", 1, _("Drop"), 2, keyval);
+ controls_model.append (out iter);
+ keyval = settings.get_int ("key-rotate");
+ controls_model.set (iter, 0, "key-rotate", 1, _("Rotate"), 2, keyval);
+ controls_model.append (out iter);
+ keyval = settings.get_int ("key-pause");
+ controls_model.set (iter, 0, "key-pause", 1, _("Pause"), 2, keyval);
+ var controls_view = new Gtk.TreeView.with_model (controls_model);
+ controls_view.headers_visible = false;
+ controls_view.enable_search = false;
+ var label_renderer = new Gtk.CellRendererText ();
+ controls_view.insert_column_with_attributes (-1, "Control", label_renderer, "text", 1);
+ var key_renderer = new Gtk.CellRendererAccel ();
+ key_renderer.editable = true;
+ key_renderer.accel_mode = Gtk.CellRendererAccelMode.OTHER;
+ key_renderer.accel_edited.connect (accel_edited_cb);
+ key_renderer.accel_cleared.connect (accel_cleared_cb);
+ controls_view.insert_column_with_attributes (-1, "Key", key_renderer, "accel-key", 2, "accel-mods", 3);
+
+ var controls_list = new Gtk.ScrolledWindow (null, null);
controls_list.border_width = 12;
+ controls_list.hscrollbar_policy = Gtk.PolicyType.NEVER;
+ controls_list.vscrollbar_policy = Gtk.PolicyType.ALWAYS;
+ controls_list.shadow_type = Gtk.ShadowType.IN;
+ controls_list.add (controls_view);
label = new Gtk.Label (_("Controls"));
notebook.append_page (controls_list, label);
@@ -399,8 +429,6 @@ public class Quadrapassel : Gtk.Application
theme_combo.pack_start (renderer, true);
theme_combo.add_attribute (renderer, "text", 0);
- Gtk.TreeIter iter;
-
theme_store.append (out iter);
theme_store.set (iter, 0, _("Plain"), 1, "plain", -1);
if (settings.get_string ("theme") == "plain")
@@ -462,6 +490,44 @@ public class Quadrapassel : Gtk.Application
view.show_shadow = show_shadow;
}
+ private void accel_edited_cb (Gtk.CellRendererAccel cell, string path_string, uint keyval, Gdk.ModifierType mask, uint hardware_keycode)
+ {
+ var path = new Gtk.TreePath.from_string (path_string);
+ if (path == null)
+ return;
+
+ Gtk.TreeIter iter;
+ if (!controls_model.get_iter (out iter, path))
+ return;
+
+ string? key = null;
+ controls_model.get (iter, 0, out key);
+ if (key == null)
+ return;
+
+ controls_model.set (iter, 2, keyval);
+ settings.set_int (key, (int) keyval);
+ }
+
+ private void accel_cleared_cb (Gtk.CellRendererAccel cell, string path_string)
+ {
+ var path = new Gtk.TreePath.from_string (path_string);
+ if (path == null)
+ return;
+
+ Gtk.TreeIter iter;
+ if (!controls_model.get_iter (out iter, path))
+ return;
+
+ string? key = null;
+ controls_model.get (iter, 0, out key);
+ if (key == null)
+ return;
+
+ controls_model.set (iter, 2, 0);
+ settings.set_int (key, 0);
+ }
+
private void theme_combo_changed_cb (Gtk.ComboBox widget)
{
Gtk.TreeIter iter;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]