class TypingTweakGroup(Gtk.Box, TweakGroup): XKB_GSETTINGS_SCHEMA = "org.gnome.desktop.input-sources" XKB_GSETTINGS_NAME = "xkb-options" # These are configurable in gnome-control-center. grp_led is unsupported XKB_OPTIONS_BLACKLIST = {"lv3","Compose key","grp","grp_led"} def __init__(self): Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=3) self._option_objects = [] ok = False try: self._kbdsettings = GSettingsSetting(self.XKB_GSETTINGS_SCHEMA) self._kbdsettings.connect("changed::"+self.XKB_GSETTINGS_NAME, self._on_changed) self._xkb_info = GnomeDesktop.XkbInfo() ok = True self.loaded = True except GSettingsMissingError: logging.info("Typing missing schema %s" % self.XKB_GSETTINGS_SCHEMA) self.loaded = False except AttributeError: logging.warning("Typing missing GnomeDesktop.gir with Xkb support") self.loaded = False finally: if ok: for opt in set(self._xkb_info.get_all_option_groups()) - self.XKB_OPTIONS_BLACKLIST: obj = _XkbOption(opt, self._kbdsettings, self._xkb_info) self._option_objects.append(obj) self.pack_start(obj, False, False, 0) TweakGroup.__init__(self, _("Typing"), *self._option_objects) def _on_changed(self, *args): for obj in self._option_objects: obj.reload()
class TypingTweakGroup(Gtk.Box, TweakGroup): XKB_GSETTINGS_SCHEMA = "org.gnome.desktop.input-sources" XKB_GSETTINGS_NAME = "xkb-options" # These are configurable in gnome-control-center XKB_OPTIONS_BLACKLIST = {"lv3", "Compose key"} def __init__(self): Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=3) self._option_objects = [] self._sg = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.HORIZONTAL) ok = False try: self._kbdsettings = GSettingsSetting(self.XKB_GSETTINGS_SCHEMA) self._kbdsettings.connect("changed::" + self.XKB_GSETTINGS_NAME, self._on_changed) self._xkb_info = GnomeDesktop.XkbInfo() ok = True self.loaded = True except GSettingsMissingError: logging.info("Typing missing schema %s" % self.XKB_GSETTINGS_SCHEMA) self.loaded = False except AttributeError: logging.warning("Typing missing GnomeDesktop.gir with Xkb support") self.loaded = False finally: if ok: for opt in set(self._xkb_info.get_all_option_groups() ) - self.XKB_OPTIONS_BLACKLIST: obj = _XkbOption(opt, self._kbdsettings, self._xkb_info) self._sg.add_widget(obj._combo) self._option_objects.append(obj) self.pack_start(obj, False, False, 0) TweakGroup.__init__(self, _("Typing"), *self._option_objects) def _on_changed(self, *args): for obj in self._option_objects: obj.reload()
class TypingTweakGroup(Gtk.Box): XKB_GSETTINGS_SCHEMA = "org.gnome.desktop.input-sources" XKB_GSETTINGS_NAME = "xkb-options" # grp_led is unsupported XKB_OPTIONS_BLACKLIST = {"grp_led", "Compose key"} def __init__(self): Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=3) self._option_objects = [] ok = False try: self._kbdsettings = GSettingsSetting(self.XKB_GSETTINGS_SCHEMA) self._kdb_settings_id = self._kbdsettings.connect( "changed::" + self.XKB_GSETTINGS_NAME, self._on_changed) self._xkb_info = GnomeDesktop.XkbInfo() ok = True self.loaded = True except GSettingsMissingError: logging.info("Typing missing schema %s" % self.XKB_GSETTINGS_SCHEMA) self.loaded = False except AttributeError: logging.warning("Typing missing GnomeDesktop.gir with Xkb support") self.loaded = False finally: if ok: for opt in set(self._xkb_info.get_all_option_groups() ) - self.XKB_OPTIONS_BLACKLIST: obj = _XkbOption(opt, self._kbdsettings, self._xkb_info) self._option_objects.append(obj) self.pack_start(obj, False, False, 0) TweakGroup.__init__(self, _("Typing"), *self._option_objects) self.connect("destroy", self._on_destroy) def _on_changed(self, *args): for obj in self._option_objects: obj.reload() def _on_destroy(self, event): if (self._kdb_settings_id): self._kbdsettings.disconnect(self._kdb_settings_id)