[caribou] Aggregate button activation signals.



commit 0b377562a5d294f974883104133c39f14b147211
Author: Eitan Isaacson <eitan monotonous org>
Date:   Tue May 31 13:11:43 2011 -0700

    Aggregate button activation signals.

 caribou/antler/keyboard_view.py |   18 +++++++++---------
 libcaribou/column-model.vala    |    1 +
 libcaribou/group-model.vala     |    3 ++-
 libcaribou/key-model.vala       |    8 ++++----
 libcaribou/keyboard-model.vala  |    8 +++++++-
 libcaribou/level-model.vala     |    6 +++---
 libcaribou/row-model.vala       |    1 +
 7 files changed, 27 insertions(+), 18 deletions(-)
---
diff --git a/caribou/antler/keyboard_view.py b/caribou/antler/keyboard_view.py
index ff77b75..49a32f0 100644
--- a/caribou/antler/keyboard_view.py
+++ b/caribou/antler/keyboard_view.py
@@ -37,8 +37,6 @@ class AntlerKey(Gtk.Button):
         ctx = self.get_style_context()
         ctx.add_class("antler-keyboard-button")
 
-        if key.props.name == "Caribou_Prefs":
-            key.connect("key-clicked", self._on_prefs_clicked)
         if key.get_extended_keys ():
             self._sublevel = AntlerSubLevel(self)
 
@@ -61,13 +59,6 @@ class AntlerKey(Gtk.Button):
         else:
             self.unset_state_flags(Gtk.StateFlags.INCONSISTENT)
 
-    def _on_prefs_clicked(self, key):
-        p = PreferencesDialog(AntlerSettings())
-        p.populate_settings(CaribouSettings())
-        p.show_all()
-        p.run()
-        p.destroy()
-
     def _get_key_label(self):
         label = self.caribou_key.props.name
         if PRETTY_LABELS.has_key(self.caribou_key.props.name):
@@ -233,6 +224,7 @@ class AntlerKeyboardView(Gtk.Notebook):
         self.scanner = Caribou.Scanner()
         self.scanner.set_keyboard(self.keyboard_model)
         self.keyboard_model.connect("notify::active-group", self._on_group_changed)
+        self.keyboard_model.connect("key-activated", self._on_key_activated)
 
         self.layers = {}
 
@@ -268,6 +260,14 @@ class AntlerKeyboardView(Gtk.Notebook):
 
         self._set_to_active_layer()
 
+    def _on_key_activated(self, model, key):
+        if key.props.name == "Caribou_Prefs":
+            p = PreferencesDialog(AntlerSettings())
+            p.populate_settings(CaribouSettings())
+            p.show_all()
+            p.run()
+            p.destroy()
+
     def _on_use_system_theme_changed(self, setting, value):
         if value:
             Gtk.StyleContext.remove_provider_for_screen(
diff --git a/libcaribou/column-model.vala b/libcaribou/column-model.vala
index 1707edc..98fc52e 100644
--- a/libcaribou/column-model.vala
+++ b/libcaribou/column-model.vala
@@ -10,6 +10,7 @@ namespace Caribou {
         }
 
         internal void add_key (KeyModel key) {
+            key.key_activated.connect ((k) => { key_activated (k); });
             keys.add (key);
         }
 
diff --git a/libcaribou/group-model.vala b/libcaribou/group-model.vala
index 279e9a3..6b578d4 100644
--- a/libcaribou/group-model.vala
+++ b/libcaribou/group-model.vala
@@ -25,7 +25,8 @@ namespace Caribou {
 
         internal void add_level (string lname, LevelModel level) {
             levels.set (lname, level);
-            level.level_toggled.connect(on_level_toggled);
+            level.level_toggled.connect (on_level_toggled);
+            level.key_activated.connect ((k) => { key_activated (k); });
             if (level.mode == "default") {
                 default_level = lname;
                 active_level = lname;
diff --git a/libcaribou/key-model.vala b/libcaribou/key-model.vala
index e7edb8c..e989f34 100644
--- a/libcaribou/key-model.vala
+++ b/libcaribou/key-model.vala
@@ -32,7 +32,6 @@ namespace Caribou {
 
         public signal void key_pressed ();
         public signal void key_released ();
-        public signal void key_clicked ();
         public signal void key_hold_end ();
         public signal void key_hold ();
 
@@ -45,11 +44,12 @@ namespace Caribou {
 
         internal void add_subkey (string name) {
             KeyModel key = new KeyModel (name);
-            key.key_clicked.connect(on_subkey_clicked);
+            key.key_activated.connect(on_subkey_activated);
             extended_keys.add (key);
         }
 
-        private void on_subkey_clicked () {
+        private void on_subkey_activated (KeyModel key) {
+            key_activated (key);
             show_subkeys = false;
         }
 
@@ -63,7 +63,7 @@ namespace Caribou {
             if (hold_tid != 0) {
                 GLib.Source.remove (hold_tid);
                 hold_tid = 0;
-                key_clicked();
+                key_activated (this);
                 if (keyval != 0) {
                     xadapter.keyval_press(keyval);
                     xadapter.keyval_release(keyval);
diff --git a/libcaribou/keyboard-model.vala b/libcaribou/keyboard-model.vala
index 99c3b6e..9fca05d 100644
--- a/libcaribou/keyboard-model.vala
+++ b/libcaribou/keyboard-model.vala
@@ -33,8 +33,14 @@ namespace Caribou {
         private void populate_group (string group, string variant) {
             GroupModel grp = JsonDeserializer.load_group (keyboard_type,
                                                           group, variant);
-            if (grp != null)
+            if (grp != null) {
                 groups.set (GroupModel.create_group_name (group, variant), grp);
+                grp.key_activated.connect (on_key_activated);
+            }
+        }
+
+        private void on_key_activated (KeyModel key) {
+            key_activated (key);
         }
 
         public string[] get_groups () {
diff --git a/libcaribou/level-model.vala b/libcaribou/level-model.vala
index 127e5d9..dc6917e 100644
--- a/libcaribou/level-model.vala
+++ b/libcaribou/level-model.vala
@@ -21,25 +21,25 @@ namespace Caribou {
 
             if (rownum >= rows.size) {
                 row = new RowModel ();
+                row.key_activated.connect (on_key_activated);
                 rows.add(row);
             } else {
                 row = rows[rowindex];
             }
 
             row.add_key (colnum, key);
-
-            key.key_clicked.connect (on_key_clicked);
         }
 
         public RowModel[] get_rows () {
             return (RowModel[]) rows.to_array ();
         }
 
-        private void on_key_clicked (KeyModel key) {
+        private void on_key_activated (KeyModel key) {
             if (key.toggle != "")
                 level_toggled (key.toggle);
             else if (mode == "latched")
                 level_toggled ("default");
+            key_activated (key);
         }
 
         public KeyModel[] get_keys () {
diff --git a/libcaribou/row-model.vala b/libcaribou/row-model.vala
index 8387689..c7f0e8f 100644
--- a/libcaribou/row-model.vala
+++ b/libcaribou/row-model.vala
@@ -18,6 +18,7 @@ namespace Caribou {
 
             if (colnum >= columns.size) {
                 column = new ColumnModel ();
+                column.key_activated.connect ((k) => { key_activated (k); });
                 columns.add(column);
             } else {
                 column = columns[colindex];



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