ui: do not accept numerical value typed by user

This commit is contained in:
Vinícius 2022-01-21 18:05:53 -03:00 committed by Peter F. Patel-Schneider
parent c3e88001e4
commit 2b26c9dc92
1 changed files with 4 additions and 10 deletions

View File

@ -733,7 +733,6 @@ class SmartComboBox(Gtk.ComboBox):
alternative name of more than one value. alternative name of more than one value.
The widget displays the names, but the alternative names are also suggested and accepted as input. The widget displays the names, but the alternative names are also suggested and accepted as input.
For values that are `int` instances (including `NamedInt`s), their numerical values are also accepted if typed by the user.
If `has_entry` is `True`, then the user can insert arbitrary text (possibly with auto-complete if `completion` is True). If `has_entry` is `True`, then the user can insert arbitrary text (possibly with auto-complete if `completion` is True).
Otherwise, only a drop-down list is shown, with an extra blank item in the beginning (correspondent to `None`). Otherwise, only a drop-down list is shown, with an extra blank item in the beginning (correspondent to `None`).
@ -864,11 +863,6 @@ class SmartComboBox(Gtk.ComboBox):
return self._name_to_idx[self._norm(search)] return self._name_to_idx[self._norm(search)]
except KeyError: except KeyError:
pass pass
if isinstance(search, str) and search.isdigit():
try:
return self._value_to_idx[int(search)]
except KeyError:
pass
return None return None
def set_value(self, value, accept_invalid=True): def set_value(self, value, accept_invalid=True):
@ -904,7 +898,9 @@ class SmartComboBox(Gtk.ComboBox):
values = self._all_values[:] values = self._all_values[:]
if include_new and only is not None: if include_new and only is not None:
values += [v for v in only if v not in self._value_to_idx] values += [v for v in only if v not in self._value_to_idx]
self.set_all_values(values, (lambda v: only is None or (v in only))) self.set_all_values(
values, (lambda v: only is None or (only.has_element(v) if isinstance(only, NamedInts) else (v in only)))
)
@dataclass @dataclass
@ -1742,9 +1738,7 @@ class ExecuteUI(ActionUI):
def _from_named_ints(v, all_values): def _from_named_ints(v, all_values):
"""Obtain a NamedInt from NamedInts given its numeric value (as int or str) or name.""" """Obtain a NamedInt from NamedInts given its numeric value (as int) or name."""
if isinstance(v, str) and v.isdigit():
v = int(v)
if all_values and (v in all_values): if all_values and (v in all_values):
return all_values[v] return all_values[v]
return v return v