[gnome-tweak-tool] xkb: Support multiple selection options
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-tweak-tool] xkb: Support multiple selection options
- Date: Wed, 13 Apr 2016 21:18:29 +0000 (UTC)
commit 7d1803f79873804142828194013731002927bab1
Author: Rui Matos <tiagomatos gmail com>
Date: Wed Apr 13 23:12:43 2016 +0200
xkb: Support multiple selection options
https://bugzilla.gnome.org/show_bug.cgi?id=740914
gtweak/tweaks/tweak_group_xkb.py | 53 ++++++++++++++++++-------------------
1 files changed, 26 insertions(+), 27 deletions(-)
---
diff --git a/gtweak/tweaks/tweak_group_xkb.py b/gtweak/tweaks/tweak_group_xkb.py
index 6548617..af2b6ac 100644
--- a/gtweak/tweaks/tweak_group_xkb.py
+++ b/gtweak/tweaks/tweak_group_xkb.py
@@ -44,64 +44,63 @@ class _XkbOption(Gtk.Expander, Tweak):
vbox.set_margin_start(15)
self.add(vbox)
+ self._multiple_selection = not group_id in { 'keypad', 'kpdl', 'caps', 'altwin', 'nbsp', 'esperanto'
}
self._group_id = group_id
self._parent_settings = parent_settings
self._xkb_info = xkb_info
- self._value = None
self._possible_values = []
- model_values = [(None, _("Disabled"))]
+ model_values = []
for option_id in self._xkb_info.get_options_for_group(group_id):
desc = self._xkb_info.description_for_option(group_id, option_id)
model_values.append((option_id, desc))
self._possible_values.append(option_id)
- self._radios = dict()
+ self._checks = dict()
for (val, name) in model_values:
- self._radios[val] = r = Gtk.RadioButton.new_from_widget(self._radios.get(None))
+ self._checks[val] = r = Gtk.CheckButton.new()
vbox.add(r)
l = Gtk.Label(label=name)
l.set_line_wrap(True)
r.add(l)
- r._changed_id = r.connect('toggled', self._on_radio_changed)
+ r._changed_id = r.connect('toggled', self._on_check_changed)
r._val = val
self.widget_for_size_group = None
self.reload()
def reload(self):
+ self._values = []
for v in self._parent_settings.get_strv(TypingTweakGroup.XKB_GSETTINGS_NAME):
if (v in self._possible_values):
- self._value = v
- self._update_radios()
- return
+ self._values.append(v)
- self._value = None
- self._update_radios()
+ self._update_checks()
- def _update_radios(self):
- if self._value:
+ def _update_checks(self):
+ if len(self._values) > 0:
self.set_label('<b>'+self.name+'</b>')
self.set_use_markup(True)
else:
self.set_label(self.name)
- r = self._radios.get(self._value)
- if r:
+ for r in self._checks.values():
r.disconnect(r._changed_id)
- r.set_active(True)
- r._changed_id = r.connect('toggled', self._on_radio_changed)
-
- def _on_radio_changed(self, r):
- if not r.get_active():
- return
-
- if not r._val:
- if self._value:
- self._parent_settings.setting_remove_from_list(TypingTweakGroup.XKB_GSETTINGS_NAME,
self._value)
- else:
- if self._value:
- self._parent_settings.setting_remove_from_list(TypingTweakGroup.XKB_GSETTINGS_NAME,
self._value)
+ if r._val in self._values:
+ r.set_active(True)
+ else:
+ r.set_active(False)
+ r._changed_id = r.connect('toggled', self._on_check_changed)
+
+ def _on_check_changed(self, r):
+ active = r.get_active()
+ if not self._multiple_selection and active:
+ for v in self._values:
+ self._parent_settings.setting_remove_from_list(TypingTweakGroup.XKB_GSETTINGS_NAME, v)
+
+ if r._val in self._values and not active:
+ self._parent_settings.setting_remove_from_list(TypingTweakGroup.XKB_GSETTINGS_NAME, r._val)
+ elif active and not r._val in self._values:
self._parent_settings.setting_add_to_list(TypingTweakGroup.XKB_GSETTINGS_NAME, r._val)
class TypingTweakGroup(Gtk.Box, TweakGroup):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]