summaryrefslogtreecommitdiff
path: root/libcaribou/level-model.vala
diff options
context:
space:
mode:
authorEitan Isaacson <eitan@monotonous.org>2011-04-27 20:32:35 -0700
committerEitan Isaacson <eitan@monotonous.org>2011-05-02 10:18:49 -0700
commit6294dab42aec83a4e9edd314544903a67152b7fb (patch)
treee44d70f016e22510032935816be3d58014bb847c /libcaribou/level-model.vala
parent1242c1ea37f30109609c041de3572f5b900a2a3b (diff)
downloadcaribou-6294dab42aec83a4e9edd314544903a67152b7fb.tar.gz
libcaribou: Implemented CaribouKeyboardModel.
Diffstat (limited to 'libcaribou/level-model.vala')
-rw-r--r--libcaribou/level-model.vala41
1 files changed, 41 insertions, 0 deletions
diff --git a/libcaribou/level-model.vala b/libcaribou/level-model.vala
new file mode 100644
index 0000000..14e8ea8
--- /dev/null
+++ b/libcaribou/level-model.vala
@@ -0,0 +1,41 @@
+using GLib;
+
+namespace Caribou {
+ public class LevelModel : GLib.Object {
+ public signal void level_toggled (string new_level);
+
+ public string mode { get; private set; default = ""; }
+ public int n_rows {
+ get {
+ return _rows.length;
+ }
+ }
+
+ private RowModel[] _rows;
+
+ public LevelModel (string mode, uint nrows) {
+ uint i;
+ this.mode = mode;
+ _rows = new RowModel[nrows];
+ for (i=0;i<nrows;i++)
+ _rows[i] = new RowModel ();
+ }
+
+ public void add_key (uint rownum, KeyModel key) {
+ key.key_clicked.connect (on_key_clicked);
+ _rows[rownum].add_key (key);
+ }
+
+ public RowModel[] get_rows () {
+ return _rows;
+ }
+
+ private void on_key_clicked (KeyModel key) {
+ if (key.toggle != "")
+ level_toggled (key.toggle);
+ else
+ level_toggled ("default");
+ }
+
+ }
+} \ No newline at end of file