ui: add blank field to toggle widgets

This commit is contained in:
Vinícius 2022-01-20 20:41:22 -03:00 committed by Peter F. Patel-Schneider
parent 573cb6e985
commit fa0ecc6c2c
1 changed files with 5 additions and 19 deletions

View File

@ -1736,17 +1736,12 @@ def _from_named_ints(v, all_values):
class SetValueControl(Gtk.HBox): class SetValueControl(Gtk.HBox):
TOGGLE_VALUES = [('~', _('Toggle')), ('t', _('True')), ('f', _('False'))]
TYPES = ('toggle', 'choice', 'range')
def __init__(self, on_change, *args, **kwargs): def __init__(self, on_change, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.on_change = on_change self.on_change = on_change
self.toggle_widget = Gtk.ComboBoxText() self.toggle_widget = SmartComboBox([('~', _('Toggle'), _('Toggle')), (True, 'True', _('True'), 'yes', 'on', 't', 'y'),
for v in self.TOGGLE_VALUES: (False, 'False', _('False'), 'no', 'off', 'f', 'n')],
self.toggle_widget.append(*v) case_insensitive=True)
self.toggle_widget.connect('changed', self._changed) self.toggle_widget.connect('changed', self._changed)
self.range_widget = Gtk.SpinButton.new_with_range(0, 0xFFFF, 1) self.range_widget = Gtk.SpinButton.new_with_range(0, 0xFFFF, 1)
self.range_widget.connect('value-changed', self._changed) self.range_widget.connect('value-changed', self._changed)
@ -1787,8 +1782,7 @@ class SetValueControl(Gtk.HBox):
def get_value(self): def get_value(self):
if self.current_kind == 'toggle': if self.current_kind == 'toggle':
value = self.toggle_widget.get_active_id() return self.toggle_widget.get_value()
return True if value == 't' else False if value == 'f' else value
if self.current_kind == 'range': if self.current_kind == 'range':
return int(self.range_widget.get_value()) return int(self.range_widget.get_value())
if self.current_kind == 'range_with_key': if self.current_kind == 'range_with_key':
@ -1799,15 +1793,7 @@ class SetValueControl(Gtk.HBox):
def set_value(self, value): def set_value(self, value):
if self.current_kind == 'toggle': if self.current_kind == 'toggle':
value = str(value).lower() self.toggle_widget.set_value(value if value is not None else '')
if value in ('true', 'yes', 'on', 't', 'y'):
self.toggle_widget.set_active_id('t')
elif value in ('false', 'no', 'off', 'f', 'n'):
self.toggle_widget.set_active_id('f')
elif value in ('~', 'toggle'):
self.toggle_widget.set_active_id('~')
else:
self.toggle_widget.set_active_id(None)
elif self.current_kind == 'range': elif self.current_kind == 'range':
minimum, maximum = self.range_widget.get_range() minimum, maximum = self.range_widget.get_range()
try: try: