From d634e36b1692382bfa37523d771ee98fc0c41b4a Mon Sep 17 00:00:00 2001 From: Eitan Isaacson Date: Tue, 31 May 2011 16:24:56 -0700 Subject: Support on-the-fly keyboard type switching. --- caribou/antler/keyboard_view.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'caribou') diff --git a/caribou/antler/keyboard_view.py b/caribou/antler/keyboard_view.py index 49a32f0..d7ee310 100644 --- a/caribou/antler/keyboard_view.py +++ b/caribou/antler/keyboard_view.py @@ -219,14 +219,6 @@ class AntlerKeyboardView(Gtk.Notebook): gobject.GObject.__init__(self) settings = AntlerSettings() self.set_show_tabs(False) - self.keyboard_model = Caribou.KeyboardModel( - keyboard_type=settings.keyboard_type.value) - 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 = {} use_system = settings.use_system use_system.connect("value-changed", self._on_use_system_theme_changed) @@ -248,6 +240,19 @@ class AntlerKeyboardView(Gtk.Notebook): Gdk.Screen.get_default(), self._user_css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION + 1) + self.set_keyboard_model(settings.keyboard_type.value) + settings.keyboard_type.connect('value-changed', self._on_kb_type_changed) + + + def set_keyboard_model(self, keyboard_type): + self.keyboard_model = Caribou.KeyboardModel(keyboard_type=keyboard_type) + 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 = {} + for gname in self.keyboard_model.get_groups(): group = self.keyboard_model.get_group(gname) self.layers[gname] = {} @@ -260,6 +265,14 @@ class AntlerKeyboardView(Gtk.Notebook): self._set_to_active_layer() + def _on_kb_type_changed(self, setting, value): + is_visible = self.get_visible() + for l in [self.get_nth_page(i) for i in xrange(self.get_n_pages ())]: + self.remove(l) + self.set_keyboard_model(value) + if is_visible: + self.show_all () + def _on_key_activated(self, model, key): if key.props.name == "Caribou_Prefs": p = PreferencesDialog(AntlerSettings()) -- cgit v1.2.1