tklr-dgraham 0.0.0rc22__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.
- tklr/__init__.py +0 -0
- tklr/cli/main.py +528 -0
- tklr/cli/migrate_etm_to_tklr.py +764 -0
- tklr/common.py +1296 -0
- tklr/controller.py +3635 -0
- tklr/item.py +4014 -0
- tklr/list_colors.py +234 -0
- tklr/model.py +4548 -0
- tklr/shared.py +739 -0
- tklr/sounds/alert.mp3 +0 -0
- tklr/tklr_env.py +493 -0
- tklr/use_system.py +64 -0
- tklr/versioning.py +21 -0
- tklr/view.py +3503 -0
- tklr/view_textual.css +296 -0
- tklr_dgraham-0.0.0rc22.dist-info/METADATA +814 -0
- tklr_dgraham-0.0.0rc22.dist-info/RECORD +20 -0
- tklr_dgraham-0.0.0rc22.dist-info/WHEEL +5 -0
- tklr_dgraham-0.0.0rc22.dist-info/entry_points.txt +2 -0
- tklr_dgraham-0.0.0rc22.dist-info/top_level.txt +1 -0
tklr/view_textual.css
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/* ── Screen ───────────────────────────────────────── */
|
|
2
|
+
Screen {
|
|
3
|
+
layout: vertical;
|
|
4
|
+
background: #373737 100%;
|
|
5
|
+
opacity: 100%;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* Screen, */
|
|
9
|
+
/* SafeScreen, */
|
|
10
|
+
/* ScrollableList, */
|
|
11
|
+
/* ListWithDetails { */
|
|
12
|
+
/* layout: vertical; */
|
|
13
|
+
/* background: #373737; */
|
|
14
|
+
/* } */
|
|
15
|
+
|
|
16
|
+
/* ── Titles ───────────────────────────────────────── */
|
|
17
|
+
#table_title,
|
|
18
|
+
#week_title,
|
|
19
|
+
#scroll_title,
|
|
20
|
+
#details_title,
|
|
21
|
+
#list_title,
|
|
22
|
+
#events_title,
|
|
23
|
+
#tasks_title,
|
|
24
|
+
#dt_title,
|
|
25
|
+
#ed_title,
|
|
26
|
+
#bins_title {
|
|
27
|
+
color: white;
|
|
28
|
+
border-bottom: solid #7f7f7f;
|
|
29
|
+
text-style: bold;
|
|
30
|
+
text-align: center;
|
|
31
|
+
padding: 1 1 0 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* ── ScrollView defaults (plain) ──────────────────── */
|
|
35
|
+
ScrollView {
|
|
36
|
+
padding: 0;
|
|
37
|
+
margin: 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Hidden utility */
|
|
41
|
+
.hidden {
|
|
42
|
+
display: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
#custom_footer {
|
|
46
|
+
color: white;
|
|
47
|
+
text-style: bold;
|
|
48
|
+
border-top: #7f7f7f;
|
|
49
|
+
padding: 0 1 1 1;
|
|
50
|
+
}
|
|
51
|
+
/* ── Details Pane ───────────────────────────── */
|
|
52
|
+
#details-pane {
|
|
53
|
+
dock: bottom;
|
|
54
|
+
layout: vertical; /* header then body */
|
|
55
|
+
border-top: heavy #7f7f7f; /* optional separator */
|
|
56
|
+
height: 14; /* fixed: 2 rows for header + 12 for body */
|
|
57
|
+
padding: 0 1 1 1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
#details-pane.hidden {
|
|
61
|
+
display: none;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#details-title {
|
|
65
|
+
width: 1fr;
|
|
66
|
+
max-width: 1fr;
|
|
67
|
+
overflow: hidden;
|
|
68
|
+
text-overflow: ellipsis;
|
|
69
|
+
padding: 0 1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
#details-body {
|
|
73
|
+
height: 1fr; /* fills remaining space in the pane */
|
|
74
|
+
border: none;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
#details-body-content {
|
|
78
|
+
border: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* (Optional) Help panel styles you already had */
|
|
82
|
+
#help_panel {
|
|
83
|
+
width: 100%;
|
|
84
|
+
height: 100%;
|
|
85
|
+
border: solid #7f7f7f;
|
|
86
|
+
}
|
|
87
|
+
#help_layout {
|
|
88
|
+
height: 1fr;
|
|
89
|
+
}
|
|
90
|
+
#help_scroll {
|
|
91
|
+
height: 1fr;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.dim-rule {
|
|
95
|
+
color: #7f7f7f;
|
|
96
|
+
height: 1;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* ---- DatetimePrompt Layout ---- */
|
|
100
|
+
|
|
101
|
+
/* Padding Supply 1, 2 or 4 integers separated by a space */
|
|
102
|
+
/* e.g. padding: 1; */
|
|
103
|
+
/* e.g. padding: 1 2; # Vertical, horizontal */
|
|
104
|
+
/* e.g. padding: 1 2 3 4; # Top, right, bottom, left */
|
|
105
|
+
|
|
106
|
+
/* Title bar FOR ALL TITLES */
|
|
107
|
+
.title-class {
|
|
108
|
+
text-align: center;
|
|
109
|
+
color: white;
|
|
110
|
+
text-style: bold;
|
|
111
|
+
border-bottom: solid #7f7f7f;
|
|
112
|
+
/* background: #373737; */
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* Horizontal rule */
|
|
116
|
+
.dim-rule {
|
|
117
|
+
color: #555555;
|
|
118
|
+
background: #373737;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* Live feedback (“→ parsed datetime”) */
|
|
122
|
+
#dt_feedback {
|
|
123
|
+
color: limegreen;
|
|
124
|
+
padding: 0 1;
|
|
125
|
+
}
|
|
126
|
+
/* Message block just under the title */
|
|
127
|
+
#dt_message {
|
|
128
|
+
color: #cccccc; /* soft grey */
|
|
129
|
+
background: #373737;
|
|
130
|
+
padding: 0 1 1 1;
|
|
131
|
+
/* text-align: center; */
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
#dt_entry:focus {
|
|
135
|
+
border: solid #7f7f7f;
|
|
136
|
+
/* background: #373737; */
|
|
137
|
+
background: #2e2e2e;
|
|
138
|
+
color: white;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Fixed universal instructions */
|
|
142
|
+
#dt_instructions {
|
|
143
|
+
color: #cccccc;
|
|
144
|
+
background: #373737;
|
|
145
|
+
padding: 0 1;
|
|
146
|
+
text-align: center;
|
|
147
|
+
/* text-style: dim; */
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
#ed_prompt {
|
|
151
|
+
layout: vertical;
|
|
152
|
+
padding: 0 1;
|
|
153
|
+
}
|
|
154
|
+
/* Message block just under the title */
|
|
155
|
+
|
|
156
|
+
#ed_instructions {
|
|
157
|
+
color: #cccccc;
|
|
158
|
+
background: #373737;
|
|
159
|
+
padding: 0 1;
|
|
160
|
+
text-align: center;
|
|
161
|
+
/* text-style: dim; */
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
#ed_message {
|
|
165
|
+
color: #cccccc; /* soft grey */
|
|
166
|
+
background: #373737;
|
|
167
|
+
padding: 0 1;
|
|
168
|
+
/* text-align: center; */
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
#ed_entry:focus {
|
|
172
|
+
border: solid #7f7f7f;
|
|
173
|
+
/* background: #373737; */
|
|
174
|
+
background: #3a3a3a;
|
|
175
|
+
/* background: #2e2e2e; */
|
|
176
|
+
color: white;
|
|
177
|
+
height: auto;
|
|
178
|
+
padding: 0 0;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
#ed_feedback {
|
|
182
|
+
height: auto;
|
|
183
|
+
color: limegreen;
|
|
184
|
+
padding: 0 1 0 1;
|
|
185
|
+
}
|
|
186
|
+
/* Container that holds a main list + details list */
|
|
187
|
+
ListWithDetails {
|
|
188
|
+
layout: vertical;
|
|
189
|
+
/* background: #373737; */
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* Main list fills available space */
|
|
193
|
+
ListWithDetails > #main-list {
|
|
194
|
+
/* background: #373737; */
|
|
195
|
+
height: 1fr;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/* Details list appears at bottom when shown and scrolls if long */
|
|
199
|
+
ListWithDetails > #details-list {
|
|
200
|
+
/* background: #373737; */
|
|
201
|
+
height: auto;
|
|
202
|
+
max-height: 14; /* tweak to taste */
|
|
203
|
+
border-top: solid #7f7f7f; /* optional separator */
|
|
204
|
+
/* border-bottom: solid #7f7f7f; */
|
|
205
|
+
/* padding-left: 1; */
|
|
206
|
+
/* border: none; */
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
ListWithDetails > #details_text {
|
|
210
|
+
/* background: #373737; */
|
|
211
|
+
color: yellow;
|
|
212
|
+
/* height: auto; */
|
|
213
|
+
/* max-height: 14; */
|
|
214
|
+
/* border-top: solid #7f7f7f; */
|
|
215
|
+
/* border-bottom: solid #7f7f7f; */
|
|
216
|
+
/* padding-left: 1; */
|
|
217
|
+
/* border: none; */
|
|
218
|
+
padding: 1 0;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
ListWithDetails > #details-list.hidden {
|
|
222
|
+
display: none;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.busy-bar {
|
|
226
|
+
text-style: bold;
|
|
227
|
+
text-align: center;
|
|
228
|
+
/* padding: 0 0 1 0; */
|
|
229
|
+
height: auto;
|
|
230
|
+
/* border: none; */
|
|
231
|
+
border-bottom: #7f7f7f; /* optional separator */
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* ── BinHierarchyScreen ───────────────────────────── */
|
|
235
|
+
|
|
236
|
+
/* Make the tree fill the vertical space between Header and Footer */
|
|
237
|
+
#bins-tree {
|
|
238
|
+
height: 1fr; /* grow to fill */
|
|
239
|
+
margin: 0;
|
|
240
|
+
padding: 0 1; /* match your other lists */
|
|
241
|
+
/* border: solid #7f7f7f; */
|
|
242
|
+
background: #373737; /* same dark base */
|
|
243
|
+
color: #e0e0e0; /* legible on dark */
|
|
244
|
+
overflow: auto; /* scroll if tall */
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* Stronger focus ring to mirror inputs’ focus state */
|
|
248
|
+
#bins-tree:focus {
|
|
249
|
+
/* border: heavy #7f7f7f; */
|
|
250
|
+
background: #2e2e2e; /* slight focus darken like #dt_entry / #ed_entry */
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* Optional: tighten header/footer to your house style */
|
|
254
|
+
BinHierarchyScreen > Header,
|
|
255
|
+
BinHierarchyScreen > Footer {
|
|
256
|
+
background: #373737;
|
|
257
|
+
color: white;
|
|
258
|
+
border: none;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* ── Tree niceties (Textual’s internal parts) ───────
|
|
262
|
+
These selectors are supported by Textual’s Tree widget.
|
|
263
|
+
If you’re on a very old Textual, you can safely delete them. */
|
|
264
|
+
|
|
265
|
+
/* Guides (│ ├ └) */
|
|
266
|
+
#bins-tree .tree--guides {
|
|
267
|
+
color: #7f7f7f;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* The row your cursor is on */
|
|
271
|
+
#bins-tree .tree--cursor {
|
|
272
|
+
background: #2e2e2e;
|
|
273
|
+
color: white;
|
|
274
|
+
text-style: bold;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* Labels (node text) */
|
|
278
|
+
#bins-tree .tree--label {
|
|
279
|
+
color: #e0e0e0;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/* Expanded node labels a touch bolder for hierarchy pop */
|
|
283
|
+
#bins-tree .tree--label.-expanded {
|
|
284
|
+
text-style: bold;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/* Dim disabled nodes (if you ever mark any) */
|
|
288
|
+
#bins-tree .-disabled .tree--label {
|
|
289
|
+
color: #7f7f7f;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/* Scrollbar to match the rest of the app (works on recent Textual) */
|
|
293
|
+
#bins-tree {
|
|
294
|
+
scrollbar-gutter: stable;
|
|
295
|
+
scrollbar-color: #7f7f7f #373737; /* thumb, track */
|
|
296
|
+
}
|