hspylib-clitt 0.9.126__py3-none-any.whl → 0.9.128__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of hspylib-clitt might be problematic. Click here for more details.
- clitt/.version +1 -1
- clitt/__classpath__.py +1 -1
- clitt/__init__.py +2 -2
- clitt/__main__.py +1 -1
- clitt/addons/__init__.py +2 -2
- clitt/addons/appman/__init__.py +2 -2
- clitt/addons/appman/appman.py +1 -1
- clitt/addons/appman/appman_enums.py +1 -1
- clitt/addons/appman/templates/__init__.py +2 -2
- clitt/addons/widman/__init__.py +2 -2
- clitt/addons/widman/widget.py +1 -1
- clitt/addons/widman/widget_entry.py +1 -1
- clitt/addons/widman/widgets/__init__.py +2 -2
- clitt/addons/widman/widgets/widget_free.py +1 -1
- clitt/addons/widman/widgets/widget_punch.py +1 -1
- clitt/addons/widman/widgets/widget_send_msg.py +1 -1
- clitt/addons/widman/widgets/widget_time_calc.py +1 -1
- clitt/addons/widman/widman.py +1 -1
- clitt/core/__init__.py +2 -2
- clitt/core/exception/__init__.py +2 -2
- clitt/core/exception/exceptions.py +1 -1
- clitt/core/icons/__init__.py +2 -2
- clitt/core/icons/emojis/__init__.py +2 -2
- clitt/core/icons/emojis/emojis.py +1 -1
- clitt/core/icons/emojis/face_smiling.py +1 -1
- clitt/core/icons/font_awesome/__init__.py +2 -2
- clitt/core/icons/font_awesome/app_icons.py +1 -1
- clitt/core/icons/font_awesome/awesome.py +1 -1
- clitt/core/icons/font_awesome/dashboard_icons.py +1 -1
- clitt/core/icons/font_awesome/form_icons.py +1 -1
- clitt/core/icons/font_awesome/game_icons.py +1 -1
- clitt/core/icons/font_awesome/nav_icons.py +1 -1
- clitt/core/icons/font_awesome/trickplay_icons.py +1 -1
- clitt/core/icons/font_awesome/widget_icons.py +1 -1
- clitt/core/preferences.py +1 -1
- clitt/core/term/__init__.py +2 -2
- clitt/core/term/commons.py +1 -1
- clitt/core/term/cursor.py +18 -8
- clitt/core/term/screen.py +1 -1
- clitt/core/term/terminal.py +8 -4
- clitt/core/tui/__init__.py +2 -2
- clitt/core/tui/line_input/__init__.py +2 -2
- clitt/core/tui/line_input/keyboard_input.py +122 -86
- clitt/core/tui/line_input/line_input.py +1 -1
- clitt/core/tui/mchoose/__init__.py +2 -2
- clitt/core/tui/mchoose/mchoose.py +1 -1
- clitt/core/tui/mchoose/menu_choose.py +1 -1
- clitt/core/tui/mdashboard/__init__.py +2 -2
- clitt/core/tui/mdashboard/dashboard_builder.py +1 -1
- clitt/core/tui/mdashboard/dashboard_item.py +1 -1
- clitt/core/tui/mdashboard/mdashboard.py +1 -1
- clitt/core/tui/mdashboard/menu_dashboard.py +1 -1
- clitt/core/tui/menu/__init__.py +2 -2
- clitt/core/tui/menu/tui_menu.py +1 -1
- clitt/core/tui/menu/tui_menu_action.py +1 -1
- clitt/core/tui/menu/tui_menu_factory.py +1 -1
- clitt/core/tui/menu/tui_menu_item.py +1 -1
- clitt/core/tui/menu/tui_menu_ui.py +1 -1
- clitt/core/tui/menu/tui_menu_view.py +1 -1
- clitt/core/tui/minput/__init__.py +2 -2
- clitt/core/tui/minput/access_type.py +1 -1
- clitt/core/tui/minput/field_builder.py +1 -1
- clitt/core/tui/minput/form_builder.py +1 -1
- clitt/core/tui/minput/form_field.py +1 -1
- clitt/core/tui/minput/input_type.py +1 -1
- clitt/core/tui/minput/input_validator.py +1 -1
- clitt/core/tui/minput/menu_input.py +1 -1
- clitt/core/tui/minput/minput.py +1 -1
- clitt/core/tui/minput/minput_utils.py +1 -1
- clitt/core/tui/mselect/__init__.py +2 -2
- clitt/core/tui/mselect/menu_select.py +1 -1
- clitt/core/tui/mselect/mselect.py +1 -1
- clitt/core/tui/table/__init__.py +2 -2
- clitt/core/tui/table/table_enums.py +1 -1
- clitt/core/tui/table/table_renderer.py +1 -1
- clitt/core/tui/tui_application.py +3 -3
- clitt/core/tui/tui_component.py +29 -19
- clitt/core/tui/tui_preferences.py +1 -1
- clitt/utils/__init__.py +2 -2
- {hspylib_clitt-0.9.126.dist-info → hspylib_clitt-0.9.128.dist-info}/METADATA +2 -2
- hspylib_clitt-0.9.128.dist-info/RECORD +97 -0
- {hspylib_clitt-0.9.126.dist-info → hspylib_clitt-0.9.128.dist-info}/WHEEL +1 -1
- hspylib_clitt-0.9.126.dist-info/RECORD +0 -97
- {hspylib_clitt-0.9.126.dist-info → hspylib_clitt-0.9.128.dist-info}/top_level.txt +0 -0
|
@@ -6,26 +6,32 @@
|
|
|
6
6
|
@package: main.clitt.core.tui.line_input
|
|
7
7
|
@file: keyboard_input.py
|
|
8
8
|
@created: Wed, 17 Jan 2024
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
13
13
|
Copyright·(c)·2024,·HSPyLib
|
|
14
14
|
"""
|
|
15
|
+
import os
|
|
16
|
+
from collections import defaultdict
|
|
17
|
+
from typing import Optional, Callable, TypeAlias
|
|
15
18
|
|
|
16
|
-
from
|
|
17
|
-
|
|
18
|
-
from clitt.core.term.commons import Direction
|
|
19
|
+
from clitt.core.term.commons import Direction, Position
|
|
19
20
|
from clitt.core.term.terminal import Terminal
|
|
20
21
|
from clitt.core.tui.tui_component import TUIComponent
|
|
21
22
|
from hspylib.core.tools.dict_tools import get_or_default
|
|
22
23
|
from hspylib.modules.cli.keyboard import Keyboard
|
|
23
24
|
from hspylib.modules.cli.vt100.vt_color import VtColor
|
|
24
25
|
|
|
26
|
+
KeyBinding: TypeAlias = dict[Keyboard, Callable[[], None]]
|
|
27
|
+
|
|
25
28
|
|
|
26
29
|
class KeyboardInput(TUIComponent):
|
|
27
30
|
"""Provides a keyboard input for terminal UIs with undo and history."""
|
|
28
31
|
|
|
32
|
+
# minimum length to be considered as history store.
|
|
33
|
+
_MIN_HIST_STORE_LEN: int = 3
|
|
34
|
+
|
|
29
35
|
# Current history index.
|
|
30
36
|
_HIST_INDEX: int = 0
|
|
31
37
|
|
|
@@ -64,6 +70,8 @@ class KeyboardInput(TUIComponent):
|
|
|
64
70
|
"""Add the following input to the history set.
|
|
65
71
|
:param input_text: The input text to add to the history.
|
|
66
72
|
"""
|
|
73
|
+
if not len(input_text) > cls._MIN_HIST_STORE_LEN:
|
|
74
|
+
return
|
|
67
75
|
if cls._HISTORY[-1] != '':
|
|
68
76
|
cls._HISTORY.append('')
|
|
69
77
|
if input_text:
|
|
@@ -96,136 +104,164 @@ class KeyboardInput(TUIComponent):
|
|
|
96
104
|
text_color: VtColor = VtColor.NC,
|
|
97
105
|
navbar_enable: bool = False,
|
|
98
106
|
):
|
|
107
|
+
self._HISTORY[-1] = ""
|
|
108
|
+
self._HIST_INDEX = max(0, len(self._HISTORY) - 1)
|
|
99
109
|
super().__init__(prompt)
|
|
100
110
|
self._placeholder: str = placeholder
|
|
101
111
|
self._prompt_color: VtColor = prompt_color
|
|
102
112
|
self._text_color: VtColor = text_color
|
|
103
113
|
self._navbar_enable: bool = navbar_enable
|
|
114
|
+
self._offset: Position = 0, 0
|
|
104
115
|
self._input_index: int = 0
|
|
105
116
|
self._input_text: str = ""
|
|
106
117
|
self._suggestion: str = ""
|
|
107
|
-
self.
|
|
108
|
-
self.
|
|
118
|
+
self._bindings: KeyBinding = defaultdict()
|
|
119
|
+
self._bind_keys()
|
|
120
|
+
|
|
121
|
+
@property
|
|
122
|
+
def prompt(self) -> str:
|
|
123
|
+
return f"{self.prompt_color}{self.title}{self.text_color}"
|
|
124
|
+
|
|
125
|
+
@property
|
|
126
|
+
def text(self) -> str:
|
|
127
|
+
return self._input_text
|
|
128
|
+
|
|
129
|
+
@text.setter
|
|
130
|
+
def text(self, value: str) -> None:
|
|
131
|
+
self._input_text = value
|
|
109
132
|
|
|
110
133
|
@property
|
|
111
134
|
def length(self) -> int:
|
|
112
|
-
return len(self.
|
|
135
|
+
return len(self.text) if self.text else 0
|
|
113
136
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
Terminal.set_show_cursor(show_cursor)
|
|
118
|
-
self.cursor.save()
|
|
137
|
+
@property
|
|
138
|
+
def prompt_color(self) -> str:
|
|
139
|
+
return self._prompt_color.placeholder
|
|
119
140
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
141
|
+
@property
|
|
142
|
+
def text_color(self) -> str:
|
|
143
|
+
return self._text_color.placeholder
|
|
123
144
|
|
|
145
|
+
@property
|
|
146
|
+
def placeholder(self) -> str:
|
|
147
|
+
return self._placeholder
|
|
148
|
+
|
|
149
|
+
@property
|
|
150
|
+
def bindings(self) -> KeyBinding:
|
|
151
|
+
return self._bindings
|
|
152
|
+
|
|
153
|
+
def execute(self) -> Optional[str | Keyboard]:
|
|
154
|
+
keypress = self._loop(cleanup=False) or Keyboard.VK_ESC
|
|
124
155
|
if keypress.isEnter():
|
|
125
|
-
self._add_history(self.
|
|
156
|
+
self._add_history(self.text)
|
|
126
157
|
self._UNDO_HISTORY.clear()
|
|
127
158
|
self._REDO_HISTORY.clear()
|
|
128
|
-
|
|
129
|
-
self.cursor.restore()
|
|
130
|
-
self.write(f"{self._prompt_color.placeholder}{self.title}{self._text_color.placeholder}")
|
|
131
|
-
self.write(self._input_text)
|
|
132
|
-
self._terminal.cursor.erase(Direction.DOWN)
|
|
133
|
-
Terminal.set_show_cursor(True)
|
|
159
|
+
self.cursor.erase(Direction.DOWN)
|
|
134
160
|
elif keypress == Keyboard.VK_ESC:
|
|
135
|
-
self.
|
|
161
|
+
self.text = None
|
|
136
162
|
self.writeln("%NC%")
|
|
137
163
|
|
|
138
|
-
return self.
|
|
164
|
+
return self.text
|
|
139
165
|
|
|
140
166
|
def reset(self) -> None:
|
|
141
167
|
"""Reset the contents of the input."""
|
|
142
168
|
self._input_index = 0
|
|
143
169
|
self._update_input("")
|
|
144
170
|
|
|
145
|
-
def
|
|
146
|
-
|
|
147
|
-
|
|
171
|
+
def home(self) -> None:
|
|
172
|
+
"""Place the cursor at the start of the input text."""
|
|
173
|
+
self._input_index = 0
|
|
148
174
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if self._re_render:
|
|
153
|
-
self.render()
|
|
154
|
-
# Navigation input
|
|
155
|
-
keypress = self.handle_keypress()
|
|
175
|
+
def end(self) -> None:
|
|
176
|
+
"""Place the cursor at the end of the input text."""
|
|
177
|
+
self._input_index = self.length
|
|
156
178
|
|
|
157
|
-
|
|
179
|
+
def complete(self) -> None:
|
|
180
|
+
"""Complete the input text with the suggested text."""
|
|
181
|
+
text: str = self.text + self._suggestion
|
|
182
|
+
self._update_input(text)
|
|
183
|
+
self._input_index = len(text)
|
|
158
184
|
|
|
159
185
|
def render(self) -> None:
|
|
160
186
|
Terminal.set_show_cursor(False)
|
|
161
|
-
self.cursor.
|
|
162
|
-
self.
|
|
163
|
-
self.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
self.
|
|
187
|
+
self.cursor.move(self._offset[0], Direction.UP)
|
|
188
|
+
self.cursor.move(self._offset[1], Direction.LEFT)
|
|
189
|
+
self.cursor.erase(Direction.DOWN)
|
|
190
|
+
self.write(self.prompt)
|
|
191
|
+
if self.text:
|
|
192
|
+
self.write(self.text)
|
|
193
|
+
self._render_suggestions()
|
|
167
194
|
else:
|
|
168
|
-
self.write(f"%GRAY%{self.
|
|
169
|
-
self.
|
|
170
|
-
self.cursor.move(len(self.
|
|
195
|
+
self.write(f"%GRAY%{self.placeholder}%NC%")
|
|
196
|
+
self.cursor.erase(Direction.DOWN)
|
|
197
|
+
self.cursor.move(len(self.placeholder), Direction.LEFT)
|
|
171
198
|
self._re_render = False
|
|
172
199
|
self._set_cursor_pos()
|
|
200
|
+
self._offset = self.prompt.count(os.linesep), self.cursor.position[1]
|
|
173
201
|
Terminal.set_show_cursor()
|
|
174
202
|
|
|
175
203
|
def navbar(self, **kwargs) -> str:
|
|
176
|
-
|
|
204
|
+
...
|
|
177
205
|
|
|
178
206
|
def handle_keypress(self) -> Keyboard:
|
|
179
207
|
if keypress := Keyboard.wait_keystroke():
|
|
180
208
|
match keypress:
|
|
209
|
+
# Default key bindings.
|
|
181
210
|
case Keyboard.VK_BACKSPACE:
|
|
182
211
|
if self._input_index > 0:
|
|
183
212
|
self._input_index = max(0, self._input_index - 1)
|
|
184
213
|
self._update_input(
|
|
185
|
-
self.
|
|
214
|
+
self.text[: self._input_index] + self.text[1 + self._input_index:]
|
|
186
215
|
)
|
|
187
216
|
case Keyboard.VK_DELETE:
|
|
188
217
|
self._update_input(
|
|
189
|
-
self.
|
|
218
|
+
self.text[: self._input_index] + self.text[1 + self._input_index:]
|
|
190
219
|
)
|
|
191
|
-
case Keyboard.VK_CTRL_R:
|
|
192
|
-
self.reset()
|
|
193
|
-
case Keyboard.VK_CTRL_F:
|
|
194
|
-
self.forget_history()
|
|
195
220
|
case Keyboard.VK_LEFT:
|
|
196
221
|
self._input_index = max(0, self._input_index - 1)
|
|
197
222
|
case Keyboard.VK_RIGHT:
|
|
198
223
|
self._input_index = min(self.length, self._input_index + 1)
|
|
199
224
|
case Keyboard.VK_UP:
|
|
200
|
-
self.
|
|
225
|
+
self.text = self._prev_in_history()
|
|
201
226
|
self._input_index = self.length
|
|
202
227
|
case Keyboard.VK_DOWN:
|
|
203
|
-
self.
|
|
204
|
-
self._input_index = self.length
|
|
205
|
-
case Keyboard.VK_HOME:
|
|
206
|
-
self._input_index = 0
|
|
207
|
-
case Keyboard.VK_END:
|
|
208
|
-
self._input_index = self.length
|
|
209
|
-
case Keyboard.VK_TAB:
|
|
210
|
-
self._update_input(self._input_text + self._suggestion)
|
|
228
|
+
self.text = self._next_in_history()
|
|
211
229
|
self._input_index = self.length
|
|
230
|
+
# Customizable key bindings.
|
|
231
|
+
case _ as key if key in self.bindings:
|
|
232
|
+
if (fn := self.bindings[key]) and callable(fn):
|
|
233
|
+
fn()
|
|
234
|
+
# Printable characters
|
|
212
235
|
case _ as key if key.val.isprintable():
|
|
213
236
|
text: str = key.val
|
|
214
237
|
while (key := Keyboard.wait_keystroke(False)) != Keyboard.VK_NONE:
|
|
215
238
|
if key.val and key.val.isprintable():
|
|
216
239
|
text += key.val
|
|
217
240
|
self._update_input(
|
|
218
|
-
self.
|
|
241
|
+
self.text[: self._input_index] + text + self.text[self._input_index:])
|
|
219
242
|
self._input_index += len(text)
|
|
243
|
+
# Loop breaking characters
|
|
220
244
|
case _ as key if key in Keyboard.break_keys():
|
|
221
245
|
self._done = True
|
|
222
246
|
case _:
|
|
223
|
-
self.
|
|
247
|
+
self.text = keypress
|
|
224
248
|
self._done = True
|
|
225
249
|
self._re_render = True
|
|
226
250
|
|
|
227
251
|
return keypress
|
|
228
252
|
|
|
253
|
+
def _bind_keys(self) -> None:
|
|
254
|
+
"""Configure the default key bindings."""
|
|
255
|
+
self._bindings.update({
|
|
256
|
+
Keyboard.VK_CTRL_A: self.home,
|
|
257
|
+
Keyboard.VK_CTRL_E: self.end,
|
|
258
|
+
Keyboard.VK_CTRL_R: self.reset,
|
|
259
|
+
Keyboard.VK_CTRL_F: self.forget_history,
|
|
260
|
+
Keyboard.VK_HOME: self.home,
|
|
261
|
+
Keyboard.VK_END: self.end,
|
|
262
|
+
Keyboard.VK_TAB: self.complete
|
|
263
|
+
})
|
|
264
|
+
|
|
229
265
|
def _set_cursor_pos(self):
|
|
230
266
|
"""Set the cursor position on the input."""
|
|
231
267
|
index_offset = max(0, self.length - self._input_index)
|
|
@@ -235,12 +271,33 @@ class KeyboardInput(TUIComponent):
|
|
|
235
271
|
"""Update the value of the input.
|
|
236
272
|
:param text: The text to be set.
|
|
237
273
|
"""
|
|
238
|
-
self._UNDO_HISTORY.append(self.
|
|
239
|
-
self._HISTORY[-1] = text if text not in self._HISTORY else self.
|
|
240
|
-
self.
|
|
274
|
+
self._UNDO_HISTORY.append(self.text)
|
|
275
|
+
self._HISTORY[-1] = text if text not in self._HISTORY else self.text
|
|
276
|
+
self.text = text
|
|
241
277
|
self._HIST_INDEX = max(0, len(self._HISTORY) - 1)
|
|
242
278
|
return text
|
|
243
279
|
|
|
280
|
+
def _render_suggestions(self) -> None:
|
|
281
|
+
"""Render the input suggestions."""
|
|
282
|
+
edt_text: str = self.text
|
|
283
|
+
filtered: list[str] = list(filter(lambda h: h.startswith(edt_text), self._HISTORY))
|
|
284
|
+
hint: str = ''
|
|
285
|
+
|
|
286
|
+
if edt_text and edt_text in filtered:
|
|
287
|
+
edt_idx = filtered.index(edt_text) - 1
|
|
288
|
+
index = max(0, min(edt_idx, self._HIST_INDEX))
|
|
289
|
+
hint: str = get_or_default(filtered, index, '') or filtered[-1]
|
|
290
|
+
if hint and (hint := hint[len(edt_text):]):
|
|
291
|
+
self.write(f"%GRAY%{hint}%NC%")
|
|
292
|
+
self._terminal.cursor.erase(Direction.DOWN)
|
|
293
|
+
self.cursor.move(len(hint), Direction.LEFT)
|
|
294
|
+
else:
|
|
295
|
+
self._terminal.cursor.erase(Direction.DOWN)
|
|
296
|
+
else:
|
|
297
|
+
self._terminal.cursor.erase(Direction.DOWN)
|
|
298
|
+
|
|
299
|
+
self._suggestion = hint
|
|
300
|
+
|
|
244
301
|
def _next_in_history(self) -> str:
|
|
245
302
|
"""Return the next input in history."""
|
|
246
303
|
edt_text: str = self._HISTORY[-1]
|
|
@@ -264,24 +321,3 @@ class KeyboardInput(TUIComponent):
|
|
|
264
321
|
self._HIST_INDEX = filtered.index(text)
|
|
265
322
|
return text
|
|
266
323
|
return edt_text
|
|
267
|
-
|
|
268
|
-
def _write_suggestion(self) -> None:
|
|
269
|
-
"""TODO """
|
|
270
|
-
edt_text: str = self._input_text
|
|
271
|
-
filtered: list[str] = list(filter(lambda h: h.startswith(edt_text), self._HISTORY))
|
|
272
|
-
hint: str = ''
|
|
273
|
-
|
|
274
|
-
if edt_text and edt_text in filtered:
|
|
275
|
-
edt_idx = filtered.index(edt_text) - 1
|
|
276
|
-
index = max(0, min(edt_idx, self._HIST_INDEX))
|
|
277
|
-
hint: str = get_or_default(filtered, index, '') or filtered[-1]
|
|
278
|
-
if hint and (hint := hint[len(edt_text):]):
|
|
279
|
-
self.write(f"%GRAY%{hint}%NC%")
|
|
280
|
-
self._terminal.cursor.erase(Direction.DOWN)
|
|
281
|
-
self.cursor.move(len(hint), Direction.LEFT)
|
|
282
|
-
else:
|
|
283
|
-
self._terminal.cursor.erase(Direction.DOWN)
|
|
284
|
-
else:
|
|
285
|
-
self._terminal.cursor.erase(Direction.DOWN)
|
|
286
|
-
|
|
287
|
-
self._suggestion = hint
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: main.clitt.core.tui.line_input
|
|
7
7
|
@file: line_input.py
|
|
8
8
|
@created: Wed, 17 Jan 2024
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# _*_ coding: utf-8 _*_
|
|
2
2
|
#
|
|
3
|
-
# hspylib-clitt v0.9.
|
|
3
|
+
# hspylib-clitt v0.9.128
|
|
4
4
|
#
|
|
5
5
|
# Package: main.clitt.core.tui.mchoose
|
|
6
6
|
"""Package initialization."""
|
|
@@ -9,4 +9,4 @@ __all__ = [
|
|
|
9
9
|
'mchoose',
|
|
10
10
|
'menu_choose'
|
|
11
11
|
]
|
|
12
|
-
__version__ = '0.9.
|
|
12
|
+
__version__ = '0.9.128'
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.mchoose
|
|
7
7
|
@file: mchoose.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.mchoose
|
|
7
7
|
@file: menu_choose.py
|
|
8
8
|
@created: Wed, 17 May 2023
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# _*_ coding: utf-8 _*_
|
|
2
2
|
#
|
|
3
|
-
# hspylib-clitt v0.9.
|
|
3
|
+
# hspylib-clitt v0.9.128
|
|
4
4
|
#
|
|
5
5
|
# Package: main.clitt.core.tui.mdashboard
|
|
6
6
|
"""Package initialization."""
|
|
@@ -11,4 +11,4 @@ __all__ = [
|
|
|
11
11
|
'mdashboard',
|
|
12
12
|
'menu_dashboard'
|
|
13
13
|
]
|
|
14
|
-
__version__ = '0.9.
|
|
14
|
+
__version__ = '0.9.128'
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.mdashboard
|
|
7
7
|
@file: dashboard_builder.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.mdashboard
|
|
7
7
|
@file: dashboard_item.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.mdashboard
|
|
7
7
|
@file: mdashboard.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.mdashboard
|
|
7
7
|
@file: menu_dashboard.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
clitt/core/tui/menu/__init__.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# _*_ coding: utf-8 _*_
|
|
2
2
|
#
|
|
3
|
-
# hspylib-clitt v0.9.
|
|
3
|
+
# hspylib-clitt v0.9.128
|
|
4
4
|
#
|
|
5
5
|
# Package: main.clitt.core.tui.menu
|
|
6
6
|
"""Package initialization."""
|
|
@@ -13,4 +13,4 @@ __all__ = [
|
|
|
13
13
|
'tui_menu_ui',
|
|
14
14
|
'tui_menu_view'
|
|
15
15
|
]
|
|
16
|
-
__version__ = '0.9.
|
|
16
|
+
__version__ = '0.9.128'
|
clitt/core/tui/menu/tui_menu.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.menu
|
|
7
7
|
@file: tui_menu.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.menu
|
|
7
7
|
@file: tui_menu_action.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.menu
|
|
7
7
|
@file: tui_menu_factory.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.menu
|
|
7
7
|
@file: tui_menu_item.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.menu
|
|
7
7
|
@file: tui_menu_ui.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.menu
|
|
7
7
|
@file: tui_menu_view.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# _*_ coding: utf-8 _*_
|
|
2
2
|
#
|
|
3
|
-
# hspylib-clitt v0.9.
|
|
3
|
+
# hspylib-clitt v0.9.128
|
|
4
4
|
#
|
|
5
5
|
# Package: main.clitt.core.tui.minput
|
|
6
6
|
"""Package initialization."""
|
|
@@ -16,4 +16,4 @@ __all__ = [
|
|
|
16
16
|
'minput',
|
|
17
17
|
'minput_utils'
|
|
18
18
|
]
|
|
19
|
-
__version__ = '0.9.
|
|
19
|
+
__version__ = '0.9.128'
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: access_type.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: field_builder.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: form_builder.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: form_field.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: input_type.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: input_validator.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: menu_input.py
|
|
8
8
|
@created: Wed, 17 May 2023
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
clitt/core/tui/minput/minput.py
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: minput.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.minput
|
|
7
7
|
@file: minput_utils.py
|
|
8
8
|
@created: Thu, 20 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# _*_ coding: utf-8 _*_
|
|
2
2
|
#
|
|
3
|
-
# hspylib-clitt v0.9.
|
|
3
|
+
# hspylib-clitt v0.9.128
|
|
4
4
|
#
|
|
5
5
|
# Package: main.clitt.core.tui.mselect
|
|
6
6
|
"""Package initialization."""
|
|
@@ -9,4 +9,4 @@ __all__ = [
|
|
|
9
9
|
'menu_select',
|
|
10
10
|
'mselect'
|
|
11
11
|
]
|
|
12
|
-
__version__ = '0.9.
|
|
12
|
+
__version__ = '0.9.128'
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.mselect
|
|
7
7
|
@file: menu_select.py
|
|
8
8
|
@created: Wed, 17 May 2023
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
@package: clitt.core.tui.mselect
|
|
7
7
|
@file: mselect.py
|
|
8
8
|
@created: Tue, 4 May 2021
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
9
|
+
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior
|
|
10
10
|
@site: https://github.com/yorevs/hspylib
|
|
11
11
|
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
12
|
|