Skip to content

Commit d80e070

Browse files
committed
design and wording update
1 parent 7179d24 commit d80e070

3 files changed

Lines changed: 45 additions & 11 deletions

File tree

tui/components.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import time
22
from enum import Enum
3-
from typing import Optional
3+
from typing import Literal, Optional
44

55
from textual.containers import Horizontal, Vertical, VerticalScroll
66
from textual.message import Message
@@ -13,23 +13,39 @@
1313
class CustomFooter(Horizontal):
1414
"""A custom footer with keyboard shortcuts and render ID."""
1515

16-
FOOTER_TEXT = "ctrl+c: copy * ctrl+d: quit * ctrl+l: toggle logs * ctrl+p: pause"
16+
FOOTER_BASE_TEXT = "ctrl+c: copy * ctrl+d: quit * ctrl+l: toggle logs"
17+
FOOTER_RENDERING_TEXT = FOOTER_BASE_TEXT + " * ctrl+p: pause"
18+
RENDER_PAUSING_TEXT = FOOTER_BASE_TEXT + " * pausing ..."
19+
RENDER_PAUSED_TEXT = FOOTER_BASE_TEXT + " * ctrl+p: resume"
1720
RENDER_FINISHED_TEXT = "enter: exit * ctrl+c: copy * ctrl+l: toggle logs"
1821

1922
def __init__(self, render_id: str = "", **kwargs):
2023
super().__init__(**kwargs)
2124
self.render_id = render_id
2225

2326
def compose(self):
24-
self._footer_text_widget = Static(self.FOOTER_TEXT, classes="custom-footer-text")
27+
self._footer_text_widget = Static(self.FOOTER_RENDERING_TEXT, classes="custom-footer-text")
2528
yield self._footer_text_widget
2629
if self.render_id:
2730
yield Static(f"render id: {self.render_id} ", classes="custom-footer-render-id")
2831

29-
def show_render_finished(self) -> None:
30-
"""Update footer text to show render-finished keybindings."""
32+
def update_footer_state(self, state: Literal["rendering", "pausing", "paused", "finished"]) -> None:
33+
self.remove_class("footer-state-default")
34+
self.remove_class("footer-state-paused")
35+
3136
if self._footer_text_widget is not None:
32-
self._footer_text_widget.update(self.RENDER_FINISHED_TEXT)
37+
if state == "rendering":
38+
self._footer_text_widget.update(self.FOOTER_RENDERING_TEXT)
39+
self.add_class("footer-state-default")
40+
elif state == "pausing":
41+
self._footer_text_widget.update(self.RENDER_PAUSING_TEXT)
42+
self.add_class("footer-state-paused")
43+
elif state == "paused":
44+
self._footer_text_widget.update(self.RENDER_PAUSED_TEXT)
45+
self.add_class("footer-state-paused")
46+
elif state == "finished":
47+
self._footer_text_widget.update(self.RENDER_FINISHED_TEXT)
48+
self.add_class("footer-state-default")
3349

3450

3551
class ScriptOutputType(str, Enum):

tui/plain2code_tui.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@ def _handle_frid_state(
246246
self._state_completion_handler.handle(segments, snapshot, previous_state_segments)
247247

248248
def on_render_paused(self, event: RenderPaused):
249+
footer = self.screen.query_one(CustomFooter)
250+
footer.update_footer_state("paused")
249251
transition_frid_progress(self, ProgressItem.PAUSING, ProgressItem.PAUSED)
250252
pass
251253

@@ -255,7 +257,7 @@ def on_render_completed(self, event: RenderCompleted):
255257
self._render_finished = True
256258
try:
257259
footer = self.screen.query_one(CustomFooter)
258-
footer.show_render_finished()
260+
footer.update_footer_state("finished")
259261
except NoMatches:
260262
pass
261263

@@ -265,7 +267,7 @@ def on_render_failed(self, event: RenderFailed):
265267
self._render_finished = True
266268
try:
267269
footer = self.screen.query_one(CustomFooter)
268-
footer.show_render_finished()
270+
footer.update_footer_state("finished")
269271
except NoMatches:
270272
pass
271273

@@ -287,9 +289,13 @@ def action_pause(self) -> None:
287289
if self.enter_pause_event.is_set():
288290
transition_frid_progress(self, ProgressItem.PAUSED, ProgressItem.PROCESSING)
289291
transition_frid_progress(self, ProgressItem.PAUSING, ProgressItem.PROCESSING)
292+
footer = self.screen.query_one(CustomFooter)
293+
footer.update_footer_state("rendering")
290294
self.enter_pause_event.clear()
291295
else:
292296
transition_frid_progress(self, ProgressItem.PROCESSING, ProgressItem.PAUSING)
297+
footer = self.screen.query_one(CustomFooter)
298+
footer.update_footer_state("pausing")
293299
self.enter_pause_event.set()
294300

295301
def action_enter_exit(self) -> None:

tui/styles.css

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -394,20 +394,32 @@ Footer {
394394
/* Custom Footer */
395395
CustomFooter {
396396
dock: bottom;
397-
height: 2;
397+
height: auto;
398+
min-height: 1;
399+
max-height: 2;
398400
background: transparent;
399401
padding: 0 1;
400402
align: left bottom;
401403
}
402404

405+
CustomFooter.footer-state-default {
406+
background: $background;
407+
color: #888;
408+
}
409+
410+
CustomFooter.footer-state-paused {
411+
background: #0a1fd5;
412+
color: #fff;
413+
}
414+
403415
.custom-footer-text {
404416
width: 1fr;
405-
color: #888;
417+
background: transparent;
406418
}
407419

408420
.custom-footer-render-id {
409421
width: auto;
410-
color: #888;
422+
background: transparent;
411423
text-align: right;
412424
}
413425

0 commit comments

Comments
 (0)