diff options
author | Eitan Isaacson <eitan@monotonous.org> | 2011-04-27 20:32:35 -0700 |
---|---|---|
committer | Eitan Isaacson <eitan@monotonous.org> | 2011-05-02 10:18:49 -0700 |
commit | 6294dab42aec83a4e9edd314544903a67152b7fb (patch) | |
tree | e44d70f016e22510032935816be3d58014bb847c /libcaribou/level-model.vala | |
parent | 1242c1ea37f30109609c041de3572f5b900a2a3b (diff) | |
download | caribou-6294dab42aec83a4e9edd314544903a67152b7fb.tar.gz |
libcaribou: Implemented CaribouKeyboardModel.
Diffstat (limited to 'libcaribou/level-model.vala')
-rw-r--r-- | libcaribou/level-model.vala | 41 |
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 |