zettcode-tui 0.4.0__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.
- zettcode/tui/__init__.py +422 -0
- zettcode/tui/_compat.py +32 -0
- zettcode/tui/capabilities.py +107 -0
- zettcode/tui/clipboard.py +91 -0
- zettcode/tui/console.py +229 -0
- zettcode/tui/core/__init__.py +63 -0
- zettcode/tui/core/app.py +658 -0
- zettcode/tui/core/events.py +134 -0
- zettcode/tui/core/focus.py +85 -0
- zettcode/tui/core/geometry.py +212 -0
- zettcode/tui/core/host.py +66 -0
- zettcode/tui/core/keymap.py +218 -0
- zettcode/tui/core/scheduler.py +105 -0
- zettcode/tui/core/screen.py +80 -0
- zettcode/tui/core/theme.py +248 -0
- zettcode/tui/core/widget.py +204 -0
- zettcode/tui/gallery.py +588 -0
- zettcode/tui/glyphs.py +73 -0
- zettcode/tui/input/__init__.py +18 -0
- zettcode/tui/input/bridge.py +46 -0
- zettcode/tui/input/decoder.py +234 -0
- zettcode/tui/input/events.py +64 -0
- zettcode/tui/input/keys.py +289 -0
- zettcode/tui/input/reader.py +147 -0
- zettcode/tui/layout/__init__.py +24 -0
- zettcode/tui/layout/box.py +153 -0
- zettcode/tui/layout/overlay.py +164 -0
- zettcode/tui/layout/scroll.py +477 -0
- zettcode/tui/layout/solver.py +95 -0
- zettcode/tui/layout/spacing.py +137 -0
- zettcode/tui/py.typed +0 -0
- zettcode/tui/render/__init__.py +71 -0
- zettcode/tui/render/ansi.py +371 -0
- zettcode/tui/render/canvas.py +153 -0
- zettcode/tui/render/code.py +456 -0
- zettcode/tui/render/color.py +177 -0
- zettcode/tui/render/renderer.py +151 -0
- zettcode/tui/render/rich_text.py +80 -0
- zettcode/tui/render/style.py +121 -0
- zettcode/tui/render/sweep.py +87 -0
- zettcode/tui/render/text.py +319 -0
- zettcode/tui/runner.py +316 -0
- zettcode/tui/terminal.py +222 -0
- zettcode/tui/testing/__init__.py +6 -0
- zettcode/tui/testing/harness.py +220 -0
- zettcode/tui/testing/snapshot.py +64 -0
- zettcode/tui/theme_file.py +300 -0
- zettcode/tui/themes/ayu-mirage.toml +44 -0
- zettcode/tui/themes/catppuccin-latte.toml +44 -0
- zettcode/tui/themes/catppuccin-mocha.toml +44 -0
- zettcode/tui/themes/dracula.toml +44 -0
- zettcode/tui/themes/github-dimmed.toml +44 -0
- zettcode/tui/themes/github-light.toml +44 -0
- zettcode/tui/themes/gruvbox-dark.toml +44 -0
- zettcode/tui/themes/gruvbox-light.toml +44 -0
- zettcode/tui/themes/kanagawa.toml +44 -0
- zettcode/tui/themes/nord.toml +44 -0
- zettcode/tui/themes/one-dark.toml +44 -0
- zettcode/tui/themes/rose-pine-dawn.toml +44 -0
- zettcode/tui/themes/rose-pine.toml +44 -0
- zettcode/tui/themes/solarized-dark.toml +44 -0
- zettcode/tui/themes/solarized-light.toml +44 -0
- zettcode/tui/themes/tokyo-night.toml +44 -0
- zettcode/tui/widgets/__init__.py +121 -0
- zettcode/tui/widgets/collapsible.py +116 -0
- zettcode/tui/widgets/completion.py +211 -0
- zettcode/tui/widgets/console.py +442 -0
- zettcode/tui/widgets/dialog.py +165 -0
- zettcode/tui/widgets/diff.py +236 -0
- zettcode/tui/widgets/list.py +293 -0
- zettcode/tui/widgets/list_page.py +121 -0
- zettcode/tui/widgets/markdown.py +657 -0
- zettcode/tui/widgets/progress.py +166 -0
- zettcode/tui/widgets/rich_text.py +84 -0
- zettcode/tui/widgets/status.py +106 -0
- zettcode/tui/widgets/table.py +101 -0
- zettcode/tui/widgets/tasks.py +130 -0
- zettcode/tui/widgets/text.py +111 -0
- zettcode/tui/widgets/textarea.py +671 -0
- zettcode/tui/widgets/toast.py +137 -0
- zettcode_tui-0.4.0.dist-info/METADATA +20 -0
- zettcode_tui-0.4.0.dist-info/RECORD +83 -0
- zettcode_tui-0.4.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"""A transient notice that expires on the application clock."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
from time import monotonic
|
|
7
|
+
|
|
8
|
+
from zettcode.tui import RULE
|
|
9
|
+
|
|
10
|
+
from ..core.focus import walk
|
|
11
|
+
from ..core.geometry import Constraints, Size
|
|
12
|
+
from ..core.widget import Widget
|
|
13
|
+
from ..render import Canvas, Style, truncate
|
|
14
|
+
from ..render.text import display_width
|
|
15
|
+
|
|
16
|
+
LEVELS = ("info", "success", "warning", "error")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Toast(Widget):
|
|
20
|
+
"""A framed notice that counts down while the application keeps painting.
|
|
21
|
+
|
|
22
|
+
Shape::
|
|
23
|
+
|
|
24
|
+
+-----------------------+
|
|
25
|
+
| saved to disk | <- frame in the level's colour
|
|
26
|
+
+-----------------------+
|
|
27
|
+
|
|
28
|
+
The frame carries the level's colour; the message stays in the primary
|
|
29
|
+
foreground so a one-line notice reads as text rather than as a warning.
|
|
30
|
+
|
|
31
|
+
Mount registers a scheduler token so the frame loop keeps running for the
|
|
32
|
+
countdown; ``on_tick`` dismisses it once the deadline passes, either by
|
|
33
|
+
popping its own screen or by calling ``on_expire``.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
def __init__(
|
|
37
|
+
self,
|
|
38
|
+
message: str,
|
|
39
|
+
*,
|
|
40
|
+
level: str = "info",
|
|
41
|
+
duration: float = 3.0,
|
|
42
|
+
clock=monotonic,
|
|
43
|
+
on_expire: Callable[[], None] | None = None,
|
|
44
|
+
) -> None:
|
|
45
|
+
"""Configure the message, the level, the countdown, and the expiry hook.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
message: Single line of text; truncated to the toast width.
|
|
49
|
+
level: Colour key, one of ``LEVELS``.
|
|
50
|
+
duration: Seconds the toast stays up, floored at zero.
|
|
51
|
+
clock: Time source for the countdown, injectable for tests.
|
|
52
|
+
on_expire: Called once the countdown ends, instead of the toast
|
|
53
|
+
popping its own screen. The toast then stays mounted until the
|
|
54
|
+
owner removes it.
|
|
55
|
+
"""
|
|
56
|
+
super().__init__()
|
|
57
|
+
if level not in LEVELS:
|
|
58
|
+
raise ValueError(f"Unknown toast level: {level!r}")
|
|
59
|
+
self.message = message
|
|
60
|
+
self.level = level
|
|
61
|
+
self.duration = max(0.0, duration)
|
|
62
|
+
self.clock = clock
|
|
63
|
+
self.on_expire = on_expire
|
|
64
|
+
self._token = f"toast:{id(self)}"
|
|
65
|
+
self._deadline = 0.0
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def remaining(self) -> float:
|
|
69
|
+
"""Return the seconds left before the toast expires."""
|
|
70
|
+
return max(0.0, self._deadline - self.clock())
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def expired(self) -> bool:
|
|
74
|
+
"""Return whether the countdown has run out."""
|
|
75
|
+
return self.clock() >= self._deadline
|
|
76
|
+
|
|
77
|
+
def on_mount(self) -> None:
|
|
78
|
+
"""Start the countdown and keep the frame loop alive while it runs."""
|
|
79
|
+
self._deadline = self.clock() + self.duration
|
|
80
|
+
if self.app is not None:
|
|
81
|
+
self.app.scheduler.animate(self._token)
|
|
82
|
+
|
|
83
|
+
def on_unmount(self) -> None:
|
|
84
|
+
"""Release the animation token when the toast is removed."""
|
|
85
|
+
if self.app is not None:
|
|
86
|
+
self.app.scheduler.animate(self._token, active=False)
|
|
87
|
+
|
|
88
|
+
def on_tick(self) -> None:
|
|
89
|
+
"""Dismiss once the countdown reaches zero."""
|
|
90
|
+
if not self.expired:
|
|
91
|
+
return
|
|
92
|
+
if self.on_expire is not None:
|
|
93
|
+
self.on_expire()
|
|
94
|
+
return
|
|
95
|
+
if self.app is not None and any(widget is self for widget in walk(self.app.screens.top.widget)):
|
|
96
|
+
self.app.pop_screen()
|
|
97
|
+
|
|
98
|
+
def measure(self, constraints: Constraints) -> Size:
|
|
99
|
+
"""Ask for the frame plus one row of message."""
|
|
100
|
+
return constraints.constrain(Size(display_width(self.message) + 4, 3))
|
|
101
|
+
|
|
102
|
+
def render(self, canvas: Canvas) -> None:
|
|
103
|
+
"""Paint the frame and the message in the level's colour."""
|
|
104
|
+
if self.rect.empty:
|
|
105
|
+
return
|
|
106
|
+
theme = self.theme
|
|
107
|
+
# Clear to the page colour rather than to the terminal's default: the
|
|
108
|
+
# toast floats over the shell, so "no style" would punch a hole through
|
|
109
|
+
# whatever palette is active.
|
|
110
|
+
canvas.fill(
|
|
111
|
+
self.rect.x,
|
|
112
|
+
self.rect.y,
|
|
113
|
+
self.rect.width,
|
|
114
|
+
self.rect.height,
|
|
115
|
+
Style(background=theme.background),
|
|
116
|
+
" ",
|
|
117
|
+
)
|
|
118
|
+
color = {
|
|
119
|
+
"info": theme.text,
|
|
120
|
+
"success": theme.accent,
|
|
121
|
+
"warning": theme.warning,
|
|
122
|
+
"error": theme.error,
|
|
123
|
+
}[self.level]
|
|
124
|
+
width = self.rect.width
|
|
125
|
+
rule = RULE * max(0, width - 2)
|
|
126
|
+
canvas.draw_text(self.rect.x, self.rect.y, f"\u250c{rule}\u2510", Style(foreground=color))
|
|
127
|
+
canvas.draw_text(self.rect.x, self.rect.y + 1, "\u2502", Style(foreground=color))
|
|
128
|
+
canvas.draw_text(
|
|
129
|
+
self.rect.x + 2,
|
|
130
|
+
self.rect.y + 1,
|
|
131
|
+
truncate(self.message, max(0, width - 4)),
|
|
132
|
+
Style(foreground=theme.text),
|
|
133
|
+
max_width=max(0, width - 4),
|
|
134
|
+
)
|
|
135
|
+
canvas.draw_text(self.rect.x + width - 1, self.rect.y + 1, "\u2502", Style(foreground=color))
|
|
136
|
+
if self.rect.height > 2:
|
|
137
|
+
canvas.draw_text(self.rect.x, self.rect.y + 2, f"\u2514{rule}\u2518", Style(foreground=color))
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: zettcode-tui
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: The widget framework ZettCode's terminal is drawn with, and nothing else
|
|
5
|
+
Project-URL: Repository, https://github.com/Chang-LeHung/zettcode
|
|
6
|
+
Author: Chang-LeHung
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Keywords: terminal,tui,widgets,zettcode
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
16
|
+
Classifier: Typing :: Typed
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Requires-Dist: pyperclip<2,>=1.9
|
|
19
|
+
Requires-Dist: tomli<3,>=2; python_version < '3.11'
|
|
20
|
+
Requires-Dist: wcwidth<1,>=0.2
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
zettcode/tui/__init__.py,sha256=uAVxeBDf5OFEbIT6cowmBGcrdpiFstgkcraqx2hR97k,9530
|
|
2
|
+
zettcode/tui/_compat.py,sha256=tPaYFdlYNeeSxSa_nvis2Yl_ccBmcshKPUIxPiFrhbY,1257
|
|
3
|
+
zettcode/tui/capabilities.py,sha256=Falj59bBouh2hg_kY7Q7FqUHNL9CLTPJe6c6TjzK8RA,4033
|
|
4
|
+
zettcode/tui/clipboard.py,sha256=N6jJhxVRr47ZT6Bsn0DVcjf6jIGACr6nYZyWluzhkJ0,4237
|
|
5
|
+
zettcode/tui/console.py,sha256=gLfKqPLTIUUH9UzJD8137g80-SpZKsHaoyTIU3XsdFc,8822
|
|
6
|
+
zettcode/tui/gallery.py,sha256=4lstm2IB33tVn6ZgUYAkUbjmwHpCHlJybQKydJAUGao,20951
|
|
7
|
+
zettcode/tui/glyphs.py,sha256=f7Kbm6wH8mTmALKNptji5v2CaHjctSRs3-z_MReKrEs,2495
|
|
8
|
+
zettcode/tui/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
zettcode/tui/runner.py,sha256=9EMqUMm7vIEixadyVKG2dW_XFVs4Cf7O5Nj5u1ezHvE,15221
|
|
10
|
+
zettcode/tui/terminal.py,sha256=d6-ZyQ4BPtwMArZ6ZX3V4u3bPOsyfw2U0k2RBF9sjvs,9827
|
|
11
|
+
zettcode/tui/theme_file.py,sha256=FaJaXKtd5fCVZPGOiWIKxIspYlScUIcgJZ7cYrY76DU,12186
|
|
12
|
+
zettcode/tui/core/__init__.py,sha256=-a-ksfiJ71Dos8MYjHIsxoD9daupeAUKnvqGLiz-zLw,1304
|
|
13
|
+
zettcode/tui/core/app.py,sha256=3pjYwszlLGeXq4IrmtF8TWNdsBh7b7wFXUc23Yi9THc,26912
|
|
14
|
+
zettcode/tui/core/events.py,sha256=f9xgXD7JjbTAXQtHtuDnlaZ52P_gUnbt3VNqySLZoUw,3554
|
|
15
|
+
zettcode/tui/core/focus.py,sha256=6V6pAgRdzXcjoRGeutOuMFBhuIVekifR3y-JMCsNrpE,2871
|
|
16
|
+
zettcode/tui/core/geometry.py,sha256=S5Abmk0eenuf-SXJRrjBOQwwRlSms2gMfuS4GeoUZbY,6626
|
|
17
|
+
zettcode/tui/core/host.py,sha256=ETzblei1B4P7U5558XQAva6Qtrwj_xmsIswix_V5xQM,2164
|
|
18
|
+
zettcode/tui/core/keymap.py,sha256=JoJ4jlXX1Uco6WlBLF3GCag4eCgA28PoA7nD6EhR02M,7822
|
|
19
|
+
zettcode/tui/core/scheduler.py,sha256=5f_DGU9rnCcIK7rSfrA-mA77j6gNdIp9Iq-nUmrsWXQ,3821
|
|
20
|
+
zettcode/tui/core/screen.py,sha256=fYAbb1ya2JXcR45cbTDknxFxY-Jy42jbZ3qN52xZlDE,2585
|
|
21
|
+
zettcode/tui/core/theme.py,sha256=DiN4gH3LfH5zMk1tX8Cvc7_dd7fDJnldPPSKVHqJa7Y,11514
|
|
22
|
+
zettcode/tui/core/widget.py,sha256=3NmBhMw1hMQpdoP7_VvrHh3_-K3-2KBqxVlZgLmgOhw,7269
|
|
23
|
+
zettcode/tui/input/__init__.py,sha256=95b0q0Sg7NdzYnwLKnYwYk_4xMuWN8DWZPk96bW7s-E,412
|
|
24
|
+
zettcode/tui/input/bridge.py,sha256=H22LilSVW8RQzXYro1I-F-PrZToBN893fuJhAHhZVlE,1484
|
|
25
|
+
zettcode/tui/input/decoder.py,sha256=OKwjSDI1RszW-Zn-IpAUAfYwKLfJUGhlb9EZwRAIUFQ,10208
|
|
26
|
+
zettcode/tui/input/events.py,sha256=B_BeFCHSAjKOCPrBIHxAXNZjZEeUf_P7_4fS7qBUN1M,2093
|
|
27
|
+
zettcode/tui/input/keys.py,sha256=7oGhl_VktNdsXOzwBqL6JxPqYN_i-04FVFg7uPdyI-g,11167
|
|
28
|
+
zettcode/tui/input/reader.py,sha256=Z_3XQkrzm1NAB68C2lir0HYZLdomkSFggO5x7_LvhPw,6128
|
|
29
|
+
zettcode/tui/layout/__init__.py,sha256=ryqAsk1Qpw3ndcTaqbLTfCypihHx2BG9hEKwf1WX5b8,539
|
|
30
|
+
zettcode/tui/layout/box.py,sha256=ZUcr1Vw3lKcmIFD8K9h1DOqD5awFdRFsZVOxF5HMOTc,5576
|
|
31
|
+
zettcode/tui/layout/overlay.py,sha256=i6VOFN-l7sfx1J_L4NtubYUlrw3ziMa7J-E5gftGwwc,6362
|
|
32
|
+
zettcode/tui/layout/scroll.py,sha256=yEZJJ9--AAiZL8KYdTPoaptpEJOCPwYRZtaI6pyVAhY,20526
|
|
33
|
+
zettcode/tui/layout/solver.py,sha256=D_VSpgRjuRUs421YcHmG118BDo3lZXZ8EqP-5fXV8Wg,3588
|
|
34
|
+
zettcode/tui/layout/spacing.py,sha256=4Ifz6MS8Q8ZKwlPXF6cYJkF7P23H9vEz1EJcIEPWUFI,5623
|
|
35
|
+
zettcode/tui/render/__init__.py,sha256=b_i8mh9j-TG8pMemNlWU5W4VOV_WIc9FR_n6dO-pxgM,1643
|
|
36
|
+
zettcode/tui/render/ansi.py,sha256=1RrPxfuB0604rfx8CySYNmHN_gUhFRoSm_GWEwICOUU,14748
|
|
37
|
+
zettcode/tui/render/canvas.py,sha256=odK3Fa3b7DZQq_ECzLdZ5Of-ONDRUPJcp8iN2oe8ElM,6163
|
|
38
|
+
zettcode/tui/render/code.py,sha256=ft1zR-814I_RGfRInqPI7ThUO3gweB511Qg-DNIXWI4,19435
|
|
39
|
+
zettcode/tui/render/color.py,sha256=b58WkKeLFWaxYYrvfaD8y2svwFlJLpuA8WHon0bPzWg,6425
|
|
40
|
+
zettcode/tui/render/renderer.py,sha256=v88QJEohEu8CIEez8lRple68MP7yainkoAg5Kh-uMmY,7081
|
|
41
|
+
zettcode/tui/render/rich_text.py,sha256=WNJCrK6yrk6AJzdrE_nxrpHTsJmH859sk5gO9UjQwBY,3305
|
|
42
|
+
zettcode/tui/render/style.py,sha256=O57Czv8V0bHjIqGprCEBmtooH76qyTqrm_-KRyPMJBE,3835
|
|
43
|
+
zettcode/tui/render/sweep.py,sha256=b4Fth9njPaSmp_jcxam3IRfLffHh_j9H5Kzqkw6dhtw,3307
|
|
44
|
+
zettcode/tui/render/text.py,sha256=D6EqTmVm2-IO0f2OjED2q9_nsuKpsg1Ap6jifllmdbM,11529
|
|
45
|
+
zettcode/tui/testing/__init__.py,sha256=k2AzxYGGLKFOklY6qtV1NcyRhkC0VVcvaTeKXHELC9A,259
|
|
46
|
+
zettcode/tui/testing/harness.py,sha256=nLjcG-6Ykd-ZvZiz3-p2aJdGTtorQq8h-xP-MokadrM,8363
|
|
47
|
+
zettcode/tui/testing/snapshot.py,sha256=8ugKcy2LJLnlAMaZHlfgw_ob2yxNAu8fuIBb7ztdj4w,2279
|
|
48
|
+
zettcode/tui/themes/ayu-mirage.toml,sha256=lr5hKwMnUWKwtYbDWKk9C2H5uxiY8Rf9fHLEGLBUGck,805
|
|
49
|
+
zettcode/tui/themes/catppuccin-latte.toml,sha256=1KEBekwaS77p1vjBVf6otR32IjT1Ink1gux9kep1T88,821
|
|
50
|
+
zettcode/tui/themes/catppuccin-mocha.toml,sha256=ey6M09D6CyECLDHQXeL_7LVgh6hqoG_ieCXBQ0kF4h8,813
|
|
51
|
+
zettcode/tui/themes/dracula.toml,sha256=ZfzUhg6P0LO-9LYMpCytjvq8cgClIJgwTWgE-HPKW9c,809
|
|
52
|
+
zettcode/tui/themes/github-dimmed.toml,sha256=O_DRAaYlZJwFIKQA7mQcrlP9ULSz32kKK15s_ylwIVc,813
|
|
53
|
+
zettcode/tui/themes/github-light.toml,sha256=dvMCtyGiMZtR5PgWlHQFbTqxbLeBOVGgVErsdvtOU5M,818
|
|
54
|
+
zettcode/tui/themes/gruvbox-dark.toml,sha256=tFPaEJCo4L78TYCXQ8w6r-WRrIce3atJrFg0dmQCLps,811
|
|
55
|
+
zettcode/tui/themes/gruvbox-light.toml,sha256=PhNkmgWoupNqk6aq1p2TXT8GgEeQ-GALZLfN-kne_js,805
|
|
56
|
+
zettcode/tui/themes/kanagawa.toml,sha256=JPrNzSGDSb3Usnu7akB3_udjLq7bB7_s6g-liPP0kIQ,804
|
|
57
|
+
zettcode/tui/themes/nord.toml,sha256=4WD2qcS6JG1OcTNDIF9fHVHxwaSJa68LfmKmEscYXB4,818
|
|
58
|
+
zettcode/tui/themes/one-dark.toml,sha256=1AtHACprq8hg4U7zb_qV6b7hSJXJkelgkpfOplvAcLE,813
|
|
59
|
+
zettcode/tui/themes/rose-pine-dawn.toml,sha256=ROXtFqGp34Qe84pbyOGdcShzxbehlNj7cDKNjuDlG6E,813
|
|
60
|
+
zettcode/tui/themes/rose-pine.toml,sha256=w747JzGFDn-UZtQopK9obo3OLHdKTyno3HNyfoqgcgQ,807
|
|
61
|
+
zettcode/tui/themes/solarized-dark.toml,sha256=vVUdHEUTaDv9NqQgIhCucjm_qIrNA9mokSHOxD23NoE,804
|
|
62
|
+
zettcode/tui/themes/solarized-light.toml,sha256=zaPeXgUgDRf19AbX2sax2z-DUphXL2smmzxn1oUBOZM,810
|
|
63
|
+
zettcode/tui/themes/tokyo-night.toml,sha256=UpeOL8GJ_wfw2OJMEvPE9bUpMUeMD2BIX0bNu6wJlqM,809
|
|
64
|
+
zettcode/tui/widgets/__init__.py,sha256=_8AEo33GKSpdeJ30_GiPKbAJ_qpFC69TQFux57hrmC4,3447
|
|
65
|
+
zettcode/tui/widgets/collapsible.py,sha256=rYZ-qfvd5MPhenlXxM9w78eFsg8kUXQgQ61vr_2FeZA,4311
|
|
66
|
+
zettcode/tui/widgets/completion.py,sha256=DqlnNOfG6A4NSFOInpOlYEOKVB_cJZxqXk200pPSoeE,8622
|
|
67
|
+
zettcode/tui/widgets/console.py,sha256=osYYmfpJk2pXdz4sGDA0GjouHAz_zoqMy_xhFB39bz8,18544
|
|
68
|
+
zettcode/tui/widgets/dialog.py,sha256=3Ip4JEmuGmQsc8Y_358hgjGlJHS_lJvbCVVArX3ZPfQ,5846
|
|
69
|
+
zettcode/tui/widgets/diff.py,sha256=XmkswgYEhlxDx0KSPQJUhdYjB2uFXO8qu84yjY2hHUQ,9288
|
|
70
|
+
zettcode/tui/widgets/list.py,sha256=DTDQo-kcj93YfmiqGA9GTFQ_taoLfIfMIUs6uYiObQw,12119
|
|
71
|
+
zettcode/tui/widgets/list_page.py,sha256=jyvSggXpv_OGV1T86zHLVBT0j92-Z_q1UAx3ZPKMSpQ,5627
|
|
72
|
+
zettcode/tui/widgets/markdown.py,sha256=GJ3K-riOujSjureFvViNajF01By13vjyaoj1Aofc3eg,26643
|
|
73
|
+
zettcode/tui/widgets/progress.py,sha256=mTn5ToMkLSr6-KPCm4WCPNqZ0CUuX3RTRV_TQP8CXO0,6223
|
|
74
|
+
zettcode/tui/widgets/rich_text.py,sha256=J4Fhn4je5uFL7lcVQsoIqx9DkNdXWT0HyxoN1LgtI18,3762
|
|
75
|
+
zettcode/tui/widgets/status.py,sha256=e7jopfHt9JMGoODZtqGtsU79ZyFAfDlJc6hbmT05qC4,4386
|
|
76
|
+
zettcode/tui/widgets/table.py,sha256=DMgKz-dGeE-Qt2QZD-OuD3j-gN_i7IQ79-ClhsJMC5E,3724
|
|
77
|
+
zettcode/tui/widgets/tasks.py,sha256=v6QazBKnS8CE8rzzRtBarDQSvvVRmxSAw-VVXVtKjcY,6021
|
|
78
|
+
zettcode/tui/widgets/text.py,sha256=xXeOGMv6vAFKsIXBnNsCcm_-LR9RZTpogwgZYfF03gw,3824
|
|
79
|
+
zettcode/tui/widgets/textarea.py,sha256=af90H5f4P8BbEtp2Hu_R_4PvI45ZOzh-Sz2-jtqJHxA,28067
|
|
80
|
+
zettcode/tui/widgets/toast.py,sha256=3Ubqwk6yT6-Rgdn3L4iEl6DG8bjyXGZ9TIlbBw4OJoU,5027
|
|
81
|
+
zettcode_tui-0.4.0.dist-info/METADATA,sha256=VBmapr04A1CIMNlAzlQ_nnPDR0p47vJAPiAfbtkf8RU,819
|
|
82
|
+
zettcode_tui-0.4.0.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
|
|
83
|
+
zettcode_tui-0.4.0.dist-info/RECORD,,
|