diff options
author | Daiki Ueno <dueno@src.gnome.org> | 2015-01-16 17:30:29 +0900 |
---|---|---|
committer | Daiki Ueno <dueno@src.gnome.org> | 2015-01-16 18:01:40 +0900 |
commit | 927311ecc396ecfed66c4da29cd45cdf5155d24f (patch) | |
tree | 721b3509f7a50bc229b83b47f5ceb19355978424 /libcaribou/keyboard-model.vala | |
parent | 9e1e605a224b14b473c769e926208d157089b525 (diff) | |
download | caribou-927311ecc396ecfed66c4da29cd45cdf5155d24f.tar.gz |
libcaribou: Enable keyboard creation from a file
https://bugzilla.gnome.org/show_bug.cgi?id=690436
Diffstat (limited to 'libcaribou/keyboard-model.vala')
-rw-r--r-- | libcaribou/keyboard-model.vala | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/libcaribou/keyboard-model.vala b/libcaribou/keyboard-model.vala index f1c8dbb..c74ab1c 100644 --- a/libcaribou/keyboard-model.vala +++ b/libcaribou/keyboard-model.vala @@ -9,6 +9,7 @@ namespace Caribou { public class KeyboardModel : Object, IKeyboardObject { public string active_group { get; private set; default = ""; } public string keyboard_type { get; construct; } + public string keyboard_file { get; construct; } private DisplayAdapter xadapter; private Gee.HashMap<string, GroupModel> groups; @@ -19,16 +20,31 @@ namespace Caribou { public signal void group_removed (string name); construct { - assert (keyboard_type != null); - xadapter = DisplayAdapter.get_default (); - xadapter.group_changed.connect (on_group_changed); - xadapter.config_changed.connect (on_config_changed); - groups = new Gee.HashMap<string, GroupModel> (); - on_config_changed (); - active_mod_keys = new Gee.HashSet<KeyModel> (); + + if (keyboard_file != null) { + GroupModel grp = + XmlDeserializer.load_group_from_file (keyboard_file); + if (grp != null) { + grp.key_clicked.connect (on_key_clicked); + grp.key_pressed.connect (on_key_pressed); + grp.key_released.connect (on_key_released); + } + + // Use dummy group/variant names. + groups.set ("us", grp); + group_added ("us"); + active_group = GroupModel.create_group_name ("us", ""); + } else { + assert (keyboard_type != null); + + xadapter.group_changed.connect (on_group_changed); + xadapter.config_changed.connect (on_config_changed); + + on_config_changed (); + } } private void on_config_changed () { |