hspylib-clitt 0.9.41__py3-none-any.whl → 0.9.51__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 +4 -3
- clitt/__main__.py +8 -41
- clitt/addons/__init__.py +2 -3
- clitt/addons/appman/__init__.py +2 -2
- clitt/addons/appman/appman.py +1 -1
- clitt/addons/appman/templates/__init__.py +2 -2
- clitt/addons/widman/__init__.py +2 -2
- clitt/addons/widman/widgets/__init__.py +2 -2
- clitt/addons/widman/widgets/widget_free.py +2 -1
- clitt/addons/widman/widgets/widget_punch.py +3 -2
- clitt/core/__init__.py +3 -3
- clitt/core/icons/__init__.py +2 -2
- clitt/core/icons/emojis/__init__.py +2 -2
- clitt/core/icons/font_awesome/__init__.py +2 -2
- clitt/core/term/__init__.py +14 -0
- clitt/core/term/commons.py +63 -0
- clitt/core/term/cursor.py +124 -0
- clitt/core/term/screen.py +96 -0
- clitt/core/term/terminal.py +173 -0
- clitt/core/tui/__init__.py +3 -4
- clitt/core/tui/mchoose/__init__.py +2 -2
- clitt/core/tui/mchoose/menu_choose.py +6 -5
- clitt/core/tui/mdashboard/__init__.py +2 -2
- clitt/core/tui/mdashboard/menu_dashboard.py +9 -9
- clitt/core/tui/menu/__init__.py +2 -2
- clitt/core/tui/menu/tui_menu_action.py +1 -3
- clitt/core/tui/menu/tui_menu_item.py +6 -5
- clitt/core/tui/menu/tui_menu_ui.py +5 -7
- clitt/core/tui/menu/tui_menu_view.py +2 -3
- clitt/core/tui/minput/__init__.py +2 -2
- clitt/core/tui/minput/menu_input.py +22 -18
- clitt/core/tui/minput/minput_utils.py +4 -3
- clitt/core/tui/mselect/__init__.py +2 -2
- clitt/core/tui/mselect/menu_select.py +6 -5
- clitt/core/tui/table/__init__.py +2 -2
- clitt/core/tui/table/table_renderer.py +13 -15
- clitt/core/tui/tui_application.py +27 -13
- clitt/core/tui/tui_component.py +28 -21
- clitt/core/tui/tui_preferences.py +3 -0
- clitt/utils/__init__.py +11 -0
- clitt/utils/git_utils.py +67 -0
- clitt/welcome.txt +6 -6
- {hspylib_clitt-0.9.41.dist-info → hspylib_clitt-0.9.51.dist-info}/METADATA +4 -4
- hspylib_clitt-0.9.51.dist-info/RECORD +90 -0
- clitt/addons/setman/__init__.py +0 -13
- clitt/addons/setman/setman.py +0 -148
- clitt/addons/setman/setman_config.py +0 -26
- clitt/addons/setman/setman_enums.py +0 -54
- clitt/core/settings/__init__.py +0 -15
- clitt/core/settings/settings.py +0 -182
- clitt/core/settings/settings_config.py +0 -47
- clitt/core/settings/settings_entry.py +0 -108
- clitt/core/settings/settings_repository.py +0 -103
- clitt/core/settings/settings_service.py +0 -50
- clitt/core/tui/tui_screen.py +0 -222
- hspylib_clitt-0.9.41.dist-info/RECORD +0 -94
- {hspylib_clitt-0.9.41.dist-info → hspylib_clitt-0.9.51.dist-info}/WHEEL +0 -0
- {hspylib_clitt-0.9.41.dist-info → hspylib_clitt-0.9.51.dist-info}/top_level.txt +0 -0
clitt/core/tui/tui_screen.py
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
@project: HsPyLib-Clitt
|
|
6
|
-
@package: clitt.core.tui
|
|
7
|
-
@file: tui_screen.py
|
|
8
|
-
@created: Thu, 22 Jun 2023
|
|
9
|
-
@author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior"
|
|
10
|
-
@site: https://github.com/yorevs/hspylib
|
|
11
|
-
@license: MIT - Please refer to <https://opensource.org/licenses/MIT>
|
|
12
|
-
|
|
13
|
-
Copyright 2023, HsPyLib team
|
|
14
|
-
"""
|
|
15
|
-
from clitt.core.tui.tui_preferences import TUIPreferences
|
|
16
|
-
from hspylib.core.enums.enumeration import Enumeration
|
|
17
|
-
from hspylib.core.metaclass.singleton import Singleton
|
|
18
|
-
from hspylib.core.tools.commons import sysout
|
|
19
|
-
from hspylib.core.tools.text_tools import last_index_of
|
|
20
|
-
from hspylib.modules.cli.vt100.vt_code import VtCode
|
|
21
|
-
from hspylib.modules.cli.vt100.vt_color import VtColor
|
|
22
|
-
from hspylib.modules.cli.vt100.vt_utils import (clear_screen, get_cursor_position, restore_cursor, restore_terminal,
|
|
23
|
-
save_cursor, screen_size)
|
|
24
|
-
from threading import Timer
|
|
25
|
-
from typing import Any, Callable, List, Optional, Tuple, TypeVar, Union
|
|
26
|
-
|
|
27
|
-
import atexit
|
|
28
|
-
import os
|
|
29
|
-
import threading
|
|
30
|
-
|
|
31
|
-
DIMENSION = TypeVar("DIMENSION", bound=Tuple[int, ...])
|
|
32
|
-
|
|
33
|
-
POSITION = TypeVar("POSITION", bound=Tuple[int, int])
|
|
34
|
-
|
|
35
|
-
CB_RESIZE = TypeVar("CB_RESIZE", bound=Callable[[None], None])
|
|
36
|
-
|
|
37
|
-
MOVE_DIRECTION = TypeVar("MOVE_DIRECTION", bound="TUIScreen.CursorDirection")
|
|
38
|
-
|
|
39
|
-
ERASE_DIRECTION = TypeVar("ERASE_DIRECTION", bound=Union["TUIScreen.CursorDirection", "TUIScreen.ScreenPortion"])
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class TUIScreen(metaclass=Singleton):
|
|
43
|
-
"""Provide a base class for terminal UI components."""
|
|
44
|
-
|
|
45
|
-
INSTANCE = None
|
|
46
|
-
|
|
47
|
-
RESIZE_WATCH_INTERVAL = 0.5
|
|
48
|
-
|
|
49
|
-
class CursorDirection(Enumeration):
|
|
50
|
-
"""Provide a base class for the cursor direction."""
|
|
51
|
-
|
|
52
|
-
# fmt: off
|
|
53
|
-
UP = '%ED1%', '%CUU({n})%' # Cursor up (line)
|
|
54
|
-
RIGHT = '%EL0%', '%CUF({n})%' # Cursor right (forward)
|
|
55
|
-
DOWN = '%ED0%', '%CUD({n})%' # Cursor down (line)
|
|
56
|
-
LEFT = '%EL1%', '%CUB({n})%' # Cursor left (backward)
|
|
57
|
-
# fmt: on
|
|
58
|
-
|
|
59
|
-
class ScreenPortion(Enumeration):
|
|
60
|
-
"""Provide a base class for the portions of the screen."""
|
|
61
|
-
|
|
62
|
-
# fmt: off
|
|
63
|
-
SCREEN = '%ED2%', '' # Entire screen (screen)
|
|
64
|
-
LINE = '%EL2%', '' # Entire line (line)
|
|
65
|
-
# fmt: on
|
|
66
|
-
|
|
67
|
-
class Cursor(metaclass=Singleton):
|
|
68
|
-
"""Provide a base class for the screen cursor."""
|
|
69
|
-
|
|
70
|
-
CURSOR_HOME = 1, 1
|
|
71
|
-
|
|
72
|
-
def __init__(self):
|
|
73
|
-
self._position: POSITION = get_cursor_position() or self.CURSOR_HOME
|
|
74
|
-
self._bottom: POSITION = self.CURSOR_HOME
|
|
75
|
-
self._saved_attrs = self._position, self._bottom
|
|
76
|
-
|
|
77
|
-
def __str__(self):
|
|
78
|
-
return f"({', '.join(list(map(str, self._position)))})"
|
|
79
|
-
|
|
80
|
-
def __repr__(self):
|
|
81
|
-
return str(self)
|
|
82
|
-
|
|
83
|
-
@property
|
|
84
|
-
def position(self) -> POSITION:
|
|
85
|
-
return self._position
|
|
86
|
-
|
|
87
|
-
@position.setter
|
|
88
|
-
def position(self, new_position: POSITION) -> None:
|
|
89
|
-
self._bottom = (new_position[0], new_position[1]) if new_position >= self._bottom else self._bottom
|
|
90
|
-
self._position = new_position
|
|
91
|
-
|
|
92
|
-
@property
|
|
93
|
-
def bottom(self) -> POSITION:
|
|
94
|
-
return self._bottom
|
|
95
|
-
|
|
96
|
-
def home(self) -> None:
|
|
97
|
-
"""Move the cursor to home position."""
|
|
98
|
-
self.move_to(self.CURSOR_HOME[0], self.CURSOR_HOME[1])
|
|
99
|
-
|
|
100
|
-
def end(self) -> None:
|
|
101
|
-
"""Move the cursor to the bottom most position on the screen."""
|
|
102
|
-
self.move_to(self.bottom[0], self.bottom[1])
|
|
103
|
-
|
|
104
|
-
def move_to(self, row: int = None, column: int = None) -> POSITION:
|
|
105
|
-
"""Move the cursor to the specified position."""
|
|
106
|
-
row_pos = max(self.CURSOR_HOME[0], row if row is not None else self.position[0])
|
|
107
|
-
col_pos = max(self.CURSOR_HOME[1], column if column is not None else self.position[1])
|
|
108
|
-
sysout(f"%CUP({row_pos};{col_pos})%", end="")
|
|
109
|
-
self.position = row_pos, col_pos
|
|
110
|
-
return self.position
|
|
111
|
-
|
|
112
|
-
def move(self, amount: int, direction: MOVE_DIRECTION) -> POSITION:
|
|
113
|
-
"""Move the cursor towards the specified direction."""
|
|
114
|
-
sysout(direction.value[1].format(n=amount), end="")
|
|
115
|
-
row_pos, col_pos = self.position
|
|
116
|
-
match direction:
|
|
117
|
-
case TUIScreen.CursorDirection.UP:
|
|
118
|
-
row_pos -= max(0, amount)
|
|
119
|
-
case TUIScreen.CursorDirection.DOWN:
|
|
120
|
-
row_pos += max(0, amount)
|
|
121
|
-
case TUIScreen.CursorDirection.LEFT:
|
|
122
|
-
col_pos -= max(0, amount)
|
|
123
|
-
case TUIScreen.CursorDirection.RIGHT:
|
|
124
|
-
col_pos += max(0, amount)
|
|
125
|
-
self.position = row_pos, col_pos
|
|
126
|
-
return self.position
|
|
127
|
-
|
|
128
|
-
def erase(self, direction: ERASE_DIRECTION) -> POSITION:
|
|
129
|
-
"""Erase the screen following the specified direction.
|
|
130
|
-
Note: It does not move the cursor along the way."""
|
|
131
|
-
sysout(direction.value[0], end="")
|
|
132
|
-
return self.position
|
|
133
|
-
|
|
134
|
-
def track(self) -> POSITION:
|
|
135
|
-
"""Track the cursor position."""
|
|
136
|
-
self.position = get_cursor_position() or self.position
|
|
137
|
-
return self.position
|
|
138
|
-
|
|
139
|
-
def write(self, obj: Any, end: str = "") -> POSITION:
|
|
140
|
-
"""Write the string representation of the object to the screen."""
|
|
141
|
-
sysout(obj, end=end)
|
|
142
|
-
text = (str(obj) + end).replace("%EOL%", os.linesep)
|
|
143
|
-
text = VtColor.strip_colors(VtCode.strip_codes(text))
|
|
144
|
-
text_offset = len(text[max(0, last_index_of(text, os.linesep)) :])
|
|
145
|
-
self.position = self.position[0] + text.count(os.linesep), text_offset + (
|
|
146
|
-
self.position[1] if text.count(os.linesep) == 0 else 0
|
|
147
|
-
)
|
|
148
|
-
return self.position
|
|
149
|
-
|
|
150
|
-
def writeln(self, obj: Any) -> POSITION:
|
|
151
|
-
"""Write the string representation of the object to the screen, appending a new line."""
|
|
152
|
-
return self.write(obj, end=os.linesep)
|
|
153
|
-
|
|
154
|
-
def save(self) -> POSITION:
|
|
155
|
-
"""Save the current cursor position and attributes."""
|
|
156
|
-
save_cursor()
|
|
157
|
-
self._saved_attrs = self._position, self._bottom
|
|
158
|
-
return self.position
|
|
159
|
-
|
|
160
|
-
def restore(self) -> POSITION:
|
|
161
|
-
"""Save the current cursor position and attributes."""
|
|
162
|
-
restore_cursor()
|
|
163
|
-
self._position = self._saved_attrs[0]
|
|
164
|
-
self._bottom = self._saved_attrs[1]
|
|
165
|
-
return self.position
|
|
166
|
-
|
|
167
|
-
def __init__(self):
|
|
168
|
-
self._preferences: TUIPreferences = TUIPreferences.INSTANCE or TUIPreferences()
|
|
169
|
-
self._dimension: DIMENSION = screen_size()
|
|
170
|
-
self._cursor: TUIScreen.Cursor = self.Cursor()
|
|
171
|
-
self._resize_timer: Optional[Timer] = None
|
|
172
|
-
self._cb_watchers: List[CB_RESIZE] = []
|
|
173
|
-
|
|
174
|
-
atexit.register(restore_terminal)
|
|
175
|
-
self._resize_watcher()
|
|
176
|
-
|
|
177
|
-
def __str__(self):
|
|
178
|
-
return f"TUIScreen(rows={self.rows}, columns={self.columns}, cursor={self.cursor})"
|
|
179
|
-
|
|
180
|
-
def __repr__(self):
|
|
181
|
-
return str(self)
|
|
182
|
-
|
|
183
|
-
@property
|
|
184
|
-
def preferences(self) -> TUIPreferences:
|
|
185
|
-
return self._preferences
|
|
186
|
-
|
|
187
|
-
@property
|
|
188
|
-
def dimension(self) -> DIMENSION:
|
|
189
|
-
return self._dimension
|
|
190
|
-
|
|
191
|
-
@property
|
|
192
|
-
def rows(self) -> int:
|
|
193
|
-
return self._dimension[0]
|
|
194
|
-
|
|
195
|
-
@property
|
|
196
|
-
def columns(self) -> int:
|
|
197
|
-
return self._dimension[1]
|
|
198
|
-
|
|
199
|
-
@property
|
|
200
|
-
def cursor(self) -> Cursor:
|
|
201
|
-
return self._cursor
|
|
202
|
-
|
|
203
|
-
def clear(self) -> None:
|
|
204
|
-
"""Clear the entire screen and move the cursor home."""
|
|
205
|
-
clear_screen()
|
|
206
|
-
self._cursor.home()
|
|
207
|
-
|
|
208
|
-
def add_watcher(self, watcher: CB_RESIZE) -> None:
|
|
209
|
-
"""Add a resize watcher."""
|
|
210
|
-
self._cb_watchers.append(watcher)
|
|
211
|
-
if not self._resize_timer:
|
|
212
|
-
self._resize_watcher()
|
|
213
|
-
|
|
214
|
-
def _resize_watcher(self) -> None:
|
|
215
|
-
"""Add a watcher for screen resizes. If a resize is detected, the callback is called with the new dimension."""
|
|
216
|
-
if self._cb_watchers and threading.main_thread().is_alive():
|
|
217
|
-
dimension: DIMENSION = screen_size()
|
|
218
|
-
self._resize_timer = Timer(self.RESIZE_WATCH_INTERVAL, self._resize_watcher)
|
|
219
|
-
if dimension != self._dimension:
|
|
220
|
-
list(map(lambda cb_w: cb_w(), self._cb_watchers))
|
|
221
|
-
self._dimension = dimension
|
|
222
|
-
self._resize_timer.start()
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
clitt/.version,sha256=bMVFlT_4Puym0BzsglaZmuYxW-b7mDddvOpIPNcZ9v8,7
|
|
2
|
-
clitt/__classpath__.py,sha256=j7k_kckSu-7r0RB630enzF3JH_1z2J7RByxp2ZZNdmg,717
|
|
3
|
-
clitt/__init__.py,sha256=amd0_NegCohwezpaD1PhgIwYLAQCU-gByFz7bZB99BY,164
|
|
4
|
-
clitt/__main__.py,sha256=oRU7vQuKIWyArdoXrseaVlUGkkK0n8Z0iFOwXDYOA48,6968
|
|
5
|
-
clitt/welcome.txt,sha256=x4oQU6m_9g75x4d7tLriPkFR6I_4MLhlHRzqwBIC-lA,452
|
|
6
|
-
clitt/addons/__init__.py,sha256=44MYVnSnVH3Ft-dCTumsfAOLBI9V4nYCd4PYv61Z9yM,186
|
|
7
|
-
clitt/addons/appman/__init__.py,sha256=yUgDmYQbLwEZ51o5KOXdYYDpFpf4HmRYRppWQct4Mb8,202
|
|
8
|
-
clitt/addons/appman/appman.py,sha256=-fwijYySTWoyoAwzWFycIdScBkStH7VLFr-4bFuGXw8,13150
|
|
9
|
-
clitt/addons/appman/appman_enums.py,sha256=vBCmCSGYfVY1VwyEAw9UzbcvNkZSGvHtlUhBBMgcDz0,872
|
|
10
|
-
clitt/addons/appman/templates/__init__.py,sha256=7vaTOVdeIu9mg0tADgD7vOpakZOT2XlSAXt9Lvgf2q0,169
|
|
11
|
-
clitt/addons/appman/templates/build.gradle.tpl,sha256=VQKs4r41xPr7P14PtQPt3alYCmNuXaGraaXbKB_FKkM,1817
|
|
12
|
-
clitt/addons/appman/templates/classpath.py.tpl,sha256=R60uLvVxeJ7nJCXCvav_9LAnDe5VOfJqWO-T1QAlwAc,397
|
|
13
|
-
clitt/addons/appman/templates/dependencies.hspd.tpl,sha256=bbVNU6XBm5QT28lvH7Bp_4nlXvoD-LwX5kGQ-CPhOEA,764
|
|
14
|
-
clitt/addons/appman/templates/gitignore.tpl,sha256=OLb8eoac2nnG1lvZL2l7J_3mc94i6xTuIfCV-J8aFSM,903
|
|
15
|
-
clitt/addons/appman/templates/main.py.tpl,sha256=bHvc8yrqn-8Ksm0vaBxufGaWwvsEd27DX8YPYULLDro,1506
|
|
16
|
-
clitt/addons/appman/templates/main_qt.py.tpl,sha256=1nlBCVjZZmIackSpBQwgWm6ygYQGpjodI9oHuLucw58,1043
|
|
17
|
-
clitt/addons/appman/templates/main_qt_view.py.tpl,sha256=mGGsuXY88MPugt9fvZdCK_yiAxedTeikrcSIWeHh8Jc,626
|
|
18
|
-
clitt/addons/appman/templates/main_qt_view.ui.tpl,sha256=JbEz9xU_50_Fd8FCKC33WPCz4De0egg1eW2xvP8wzJI,2780
|
|
19
|
-
clitt/addons/appman/templates/run.sh.tpl,sha256=2xpuHjZP9-7j14dAA2CqPm4G2xtnuenf-RBe3LdC2rI,150
|
|
20
|
-
clitt/addons/appman/templates/test_main.py.tpl,sha256=x_xuKy2O2b1bs6tuzOUqF5shnx-2-EfFRc7sBV4Fndc,1239
|
|
21
|
-
clitt/addons/appman/templates/usage.txt.tpl,sha256=R0e48HCeD7PDbWnX6HGIjz6gr_hBdp-zK6V42U1Aexw,217
|
|
22
|
-
clitt/addons/appman/templates/widget.py.tpl,sha256=JmlO5rh2ETCF5ldiB9MStfjB4oB4JLI8UUnNP5SAAcM,1668
|
|
23
|
-
clitt/addons/setman/__init__.py,sha256=0g55Z7qdRcSRLDx-5_wKBHcCS8IT5Xc0a2me_A97udE,206
|
|
24
|
-
clitt/addons/setman/setman.py,sha256=ASkaSPCUnV6D_l9Uwmuc_A_ueMZnXKv1rpEpV3Gb60o,5606
|
|
25
|
-
clitt/addons/setman/setman_config.py,sha256=jTREC8x4cYleA9B3GbkeyuQkGNfYk6gncH4qJ3VgJck,827
|
|
26
|
-
clitt/addons/setman/setman_enums.py,sha256=2RIZRyLbfUmbuaJR_x7gKC9nuofBbTP18sxFMRaJwLw,1280
|
|
27
|
-
clitt/addons/widman/__init__.py,sha256=WPQ89aL4WmVP0-Jbp2xCg4O1lJjjGgKWz11RS3pq6g0,213
|
|
28
|
-
clitt/addons/widman/widget.py,sha256=mIEB3Fs4ypaUMhh85meg2vMhKJVjW8Tyxkp_XqHIHtA,1920
|
|
29
|
-
clitt/addons/widman/widget_entry.py,sha256=8Shj4_esh6KN69usTrCcUsfGVas81Xz0QabsY_zV9o0,1350
|
|
30
|
-
clitt/addons/widman/widman.py,sha256=kfv3CcDSjUZglurPXa4Bv1jYELtEkbixOjpVL8yRf3M,5260
|
|
31
|
-
clitt/addons/widman/widgets/__init__.py,sha256=EqWldlczNf3OZctZon2YO4jBlTigQ3nhzgNg0lswWfA,244
|
|
32
|
-
clitt/addons/widman/widgets/widget_free.py,sha256=5imXWD4F984KqwcWuI-ZuBaF1gtNha0TAmmaiIZ-MVg,3997
|
|
33
|
-
clitt/addons/widman/widgets/widget_punch.py,sha256=YQ27qC15gyt1jn-R4oNumVLVbMzbs3s7I0yLPqpR8xY,10535
|
|
34
|
-
clitt/addons/widman/widgets/widget_send_msg.py,sha256=MMBOGTBc6c3jgLgZBzbQIiQsSs5jl-8ohqy7evMSNQU,11056
|
|
35
|
-
clitt/addons/widman/widgets/widget_time_calc.py,sha256=JQOHRf5OFDL73Y-GJEWtdN5_s2vKR-9mX0yoisxNQRg,5100
|
|
36
|
-
clitt/core/__init__.py,sha256=V5kSvNXhj66NE8XPh9kJ8_NdwBvEk6ljPKE08caW4C0,182
|
|
37
|
-
clitt/core/icons/__init__.py,sha256=9x0_25QYPUDTi3tZgrGntBiAo_OUukBCB9fTIg4uyLs,183
|
|
38
|
-
clitt/core/icons/emojis/__init__.py,sha256=V8lfW4y7PaMlyLzAP_eesjQfyij-c6dRjBiMYoy0sdU,190
|
|
39
|
-
clitt/core/icons/emojis/emojis.py,sha256=LbwpjJonRlNVPa6eMEDTreQz1fmFfFK4dOk6X-4XHrI,1109
|
|
40
|
-
clitt/core/icons/emojis/face_smiling.py,sha256=qho6t7W3za6-H9bW51_0RoYKah_f0_DCJ0EiCiwvQwI,1269
|
|
41
|
-
clitt/core/icons/font_awesome/__init__.py,sha256=MPUx1veXCxxU52RZVqzw7c8gA400IDm-ZswYfkPADYg,288
|
|
42
|
-
clitt/core/icons/font_awesome/app_icons.py,sha256=cMPlXVWOn5YnLmlk20nwhFgA16Ug2jFiHZPYlwwH724,1662
|
|
43
|
-
clitt/core/icons/font_awesome/awesome.py,sha256=oEOi0DWj0yvJbmg18fXE5hgSrMmCckTYC0cbgw1cyQQ,1831
|
|
44
|
-
clitt/core/icons/font_awesome/control_icons.py,sha256=OuAnvXRIusxDRVnPHxltTn4V6tF_uc2gfoqoQWB7Bks,1075
|
|
45
|
-
clitt/core/icons/font_awesome/dashboard_icons.py,sha256=MGXLJ-I_xXalOaLeWHkaZe5ZIqdycNLg4S-L7abBHEU,3085
|
|
46
|
-
clitt/core/icons/font_awesome/form_icons.py,sha256=mDF_0nFJ9VYO2ZoXWSTETm7qEd03dcIgeCUpFnH0sLI,2314
|
|
47
|
-
clitt/core/icons/font_awesome/nav_icons.py,sha256=A3GqJuwD-RKybY67THimI1oqcNlDSEaA_Hdy8LSzfqo,1105
|
|
48
|
-
clitt/core/icons/font_awesome/widget_icons.py,sha256=Oho4jPezyMSw-tKWSjpdK3dv-FK2GC_62liNeThhhAs,1024
|
|
49
|
-
clitt/core/settings/__init__.py,sha256=cAmkcHWr9sYLwt4qBqT_8eln04Lkv7EICTveJFw0VkQ,261
|
|
50
|
-
clitt/core/settings/settings.py,sha256=StADql3wxNnjjJ4be-i1UlRjmMVidvbHSuyTO4Zi7xg,6940
|
|
51
|
-
clitt/core/settings/settings_config.py,sha256=iSNvXrlZLV9a3rveese1dnJJ3G2D3XqLFPjUqasblaE,1404
|
|
52
|
-
clitt/core/settings/settings_entry.py,sha256=zrN34_Q5eDMfsP_zor04CWlrmFpPsyS97ODKSAckxd4,3453
|
|
53
|
-
clitt/core/settings/settings_repository.py,sha256=hWAxIbJe_5Bldmm0OtlSDS1i-H4AbNW1Vzq3nhXG_k4,3598
|
|
54
|
-
clitt/core/settings/settings_service.py,sha256=JvRCtxM9iYV495bkFk3GUt0O2nLbEsSauC-OGK7H8wE,1759
|
|
55
|
-
clitt/core/tui/__init__.py,sha256=8HPdzPJ7HQ6H36QZDdn5RHbiPBMU6zmtpBwlUkUNYpM,311
|
|
56
|
-
clitt/core/tui/tui_application.py,sha256=kBYc_IUrVrZ6v7MZ6A8QJ9hONDpXwqO9TqJa_XBsM8E,1611
|
|
57
|
-
clitt/core/tui/tui_component.py,sha256=TXHmSQYowmeuUcj_V4y-W94BlTNfsZaA_RsYr_mlA_w,4670
|
|
58
|
-
clitt/core/tui/tui_preferences.py,sha256=Qh9TKtGT_XFSyoW3dUoKKoPrzwG7im6k_lFbRZRKojo,4712
|
|
59
|
-
clitt/core/tui/tui_screen.py,sha256=oLT-3YRbZR24yd0tzboB4gLr45mECUsyxtlEocbn4hs,8372
|
|
60
|
-
clitt/core/tui/mchoose/__init__.py,sha256=2g0N07krOljHfM9rKJtqKK4emfiKMqPTmplqCntzoTc,189
|
|
61
|
-
clitt/core/tui/mchoose/mchoose.py,sha256=ZW7mr7WCP2Lc545PBy2-QRaUt6BNYP5cAwczooU86eU,1180
|
|
62
|
-
clitt/core/tui/mchoose/menu_choose.py,sha256=ghPyNzkBz8YPtQGp91kFrLwHgyW0-nf0YFEmeDO2b6E,7012
|
|
63
|
-
clitt/core/tui/mdashboard/__init__.py,sha256=YzEIT5TMjw3FdJDW62vjqu1yauQSzj0GxI5ChAdsXkE,243
|
|
64
|
-
clitt/core/tui/mdashboard/dashboard_builder.py,sha256=wWcT1UyQnOrvalV920XtmBUg5lRVbhA8hMrmxRcLrtY,1658
|
|
65
|
-
clitt/core/tui/mdashboard/dashboard_item.py,sha256=4MK6bxROWo1ZK9FlMoSm38z0qe5HoxqH0W5tt3iUT5M,886
|
|
66
|
-
clitt/core/tui/mdashboard/mdashboard.py,sha256=juNPFzmoKQRJa2CZFxVZAFr2QXFna3cvsoYlFNaQjis,890
|
|
67
|
-
clitt/core/tui/mdashboard/menu_dashboard.py,sha256=PwZ4YwcF_CODvWlGH6ekDgRUuSV6pHEnj3ehwv2mIVY,5524
|
|
68
|
-
clitt/core/tui/menu/__init__.py,sha256=Xx_uSJCLYxm9pZfm2tPgrIvw7mkrau0buUXUNLNcEJE,272
|
|
69
|
-
clitt/core/tui/menu/tui_menu.py,sha256=nAux3qJ6_kyvV6Z2IbIG6dS62zFfTo5qA4rB8cXAIYk,3593
|
|
70
|
-
clitt/core/tui/menu/tui_menu_action.py,sha256=KqhG_YkEMWF37uoI7Q_bCr3jHLIeTbDr_-uROuhAvB0,1590
|
|
71
|
-
clitt/core/tui/menu/tui_menu_factory.py,sha256=rL33KX5yD2ppvVRAEFIAme5ka7GrBQecVr63aUf2hf0,4459
|
|
72
|
-
clitt/core/tui/menu/tui_menu_item.py,sha256=ZZA4maFlzVERlHkKygIuCuOS5ljOIg2wpL_e2M6MMpo,7480
|
|
73
|
-
clitt/core/tui/menu/tui_menu_ui.py,sha256=mwXvTDHKctMVUOPMZiN0fFxgx0ASHOTYuk-R7UVoxYg,3424
|
|
74
|
-
clitt/core/tui/menu/tui_menu_view.py,sha256=WWcMqWsPgFX7XoyU9Z5q_zCP_wboc69SPWM0bnQWKFQ,1942
|
|
75
|
-
clitt/core/tui/minput/__init__.py,sha256=PVqosPDOpKBujVlYGqb8mZluWB3S6pXBOsVr_UwCbns,318
|
|
76
|
-
clitt/core/tui/minput/access_type.py,sha256=Dss6okfXHCoUI3_OOu2nKsgpy2NeStIwhdDvTR2z-2w,636
|
|
77
|
-
clitt/core/tui/minput/field_builder.py,sha256=5te6nDYHCa9VmzGK0b1lXRCc7n4GbMIVIR2InLdLzXg,4414
|
|
78
|
-
clitt/core/tui/minput/form_builder.py,sha256=CwUpswLD9rTCs3PXaOpu0bFKavHsbUkgs4OnQgbS-RQ,2865
|
|
79
|
-
clitt/core/tui/minput/form_field.py,sha256=5p-IT_2RgzkU4RfyXihrNdD9_yV4X5FqNgIckDE9zEQ,5766
|
|
80
|
-
clitt/core/tui/minput/input_type.py,sha256=O6-jk_QSjjRGeHsGVzIDZSCLg739f2xtnVV_ElcHYpA,722
|
|
81
|
-
clitt/core/tui/minput/input_validator.py,sha256=XjK9O435OIvuyAHAY7XJt_ELvJ-sJsWIO-jv6hVt2-c,3360
|
|
82
|
-
clitt/core/tui/minput/menu_input.py,sha256=rL_lgcCC0Q6FbDECmUGlfHwKOHjYjBpUhpiFFzGZCM8,12749
|
|
83
|
-
clitt/core/tui/minput/minput.py,sha256=20Vz-SRVaNuqYJrG6kdkdE4bVy_YNjXEcYaFEnRCqNQ,1532
|
|
84
|
-
clitt/core/tui/minput/minput_utils.py,sha256=KAWUBPORhbv-s2ycHAHoSLeLWoRRgzUST7lm2FPskXQ,5277
|
|
85
|
-
clitt/core/tui/mselect/__init__.py,sha256=mSwPMcSbU2hBGofaC2y1ZGcf6tw0ZKe02ZyVN13F2DA,189
|
|
86
|
-
clitt/core/tui/mselect/menu_select.py,sha256=k6Gpqkrbrkstp84KKhvxrmrpwNYp99jmR_EOl4SP5Ow,6174
|
|
87
|
-
clitt/core/tui/mselect/mselect.py,sha256=3Q4X2XMqhXCicO5XhDXsldn9m-1bWOQ9ez1MLMj8fps,1040
|
|
88
|
-
clitt/core/tui/table/__init__.py,sha256=nKtKp_w_a3mwuvrwAsYHS7_Vt8CsKWbAS3uBT0o_rC0,194
|
|
89
|
-
clitt/core/tui/table/table_enums.py,sha256=gbA2e7kgpjLjL8oxbIGalcX-cyaXPfdXy01wzivqpWc,1183
|
|
90
|
-
clitt/core/tui/table/table_renderer.py,sha256=2vn0-3OuSA5tMdsfQJMtgSVXMFMuy-EAmrUIH2AiH2g,9646
|
|
91
|
-
hspylib_clitt-0.9.41.dist-info/METADATA,sha256=Tvztfk_3VYqGz4l5jrPA0AhJokvThPEaxOfpS3bU1Zs,1728
|
|
92
|
-
hspylib_clitt-0.9.41.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
|
93
|
-
hspylib_clitt-0.9.41.dist-info/top_level.txt,sha256=vrnpkFU7dZ-vH7x5xdcY1vJSuboTqPBUcc3jD6SJkAo,6
|
|
94
|
-
hspylib_clitt-0.9.41.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|