upd xlib.console

This commit is contained in:
iperov 2021-11-11 23:08:48 +04:00
parent 3231b9ed95
commit fd0ca499bf

View file

@ -16,16 +16,16 @@ class EDlgMode(IntEnum):
class DlgChoice: class DlgChoice:
def __init__(self, name : str = None, def __init__(self, short_name : str = None,
row_def : str = None, row_def : str = None,
on_choose : Callable = None): on_choose : Callable = None):
if len(name) == 0: if len(short_name) == 0:
raise ValueError('Zero len name is not valid.') raise ValueError('Zero len short_name is not valid.')
self._name = name self._short_name = short_name
self._row_def = row_def self._row_def = row_def
self._on_choose = on_choose self._on_choose = on_choose
def get_name(self) -> Union[str, None]: return self._name def get_short_name(self) -> Union[str, None]: return self._short_name
def get_row_def(self) -> Union[str, None]: return self._row_def def get_row_def(self) -> Union[str, None]: return self._row_def
def get_on_choose(self) -> Callable: return self._on_choose def get_on_choose(self) -> Callable: return self._on_choose
@ -52,8 +52,6 @@ class Dlg:
else: else:
raise Exception('on_recreate() is not defined.') raise Exception('on_recreate() is not defined.')
def get_name(self) -> str: return self._name
def set_current(self, print=True): def set_current(self, print=True):
Diacon.update_dlg(self, print=print) Diacon.update_dlg(self, print=print)
@ -215,36 +213,13 @@ class DlgChoices(Dlg):
self._choices = choices self._choices = choices
self._on_multi_choice = on_multi_choice self._on_multi_choice = on_multi_choice
self._short_names = [choice.get_name() for choice in choices] self._short_names = [choice.get_short_name() for choice in choices]
# Make short names for all choices # Make short names for all choices
names = [ choice.get_name() for choice in choices ] if len(set(self._short_names)) != len(self._short_names):
names_len = len(names) raise ValueError(f'Contains duplicate short name : {self._short_names}')
if len(set(names)) != names_len:
raise ValueError(f'Contains duplicate name of choice : {names}')
short_names_len = [1]*names_len
while True:
short_names = [ name[:short_names_len[i_name]] for i_name, name in enumerate(names) ]
has_dup = False
for i in range(names_len):
i_short_name = short_names[i]
match_count = 0
for j in range(names_len):
j_short_name = short_names[j]
if i_short_name == j_short_name:
match_count += 1
if match_count > 1:
has_dup = True
short_names_len[i] += 1
if not has_dup:
break
self._short_names = short_names
#overridable #overridable
def on_print(self, table_def : List[str]): def on_print(self, table_def : List[str]):
@ -326,9 +301,7 @@ class _Diacon:
if not self._started: if not self._started:
raise Exception('Diacon not started.') raise Exception('Diacon not started.')
self._started = False self._started = False
self._dialog_t.join()
self._dialog_t = None self._dialog_t = None
self._input_t.join()
self._input_t = None self._input_t = None
def _input_thread(self,): def _input_thread(self,):