Coverage for src / osiris_cli / command_footer.py: 0%

16 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-27 17:41 +0200

1from textual.containers import Horizontal 

2from textual.widgets import Button, Label 

3from textual.app import ComposeResult 

4 

5class OsirisCommandFooter(Horizontal): 

6 """ 

7 A sleek, slim footer for clickable quick commands/shortcuts. 

8 """ 

9 DEFAULT_CSS = """ 

10 OsirisCommandFooter { 

11 dock: bottom; 

12 height: 1; /* Make it slim */ 

13 background: #020408; /* Darker than main footer */ 

14 border-top: solid #1a1e29; /* Subtle separator */ 

15 align: center middle; 

16 padding: 0 1; 

17 layout: horizontal; 

18 } 

19 

20 OsirisCommandFooter Button { 

21 min-width: 8; 

22 background: #0e121b; 

23 color: #e0e6ed; 

24 border: none; 

25 height: 1; /* Match footer height */ 

26 padding: 0 1; 

27 margin: 0 1; /* Spacing between buttons */ 

28 text-align: center; 

29 text-style: bold; 

30 } 

31 OsirisCommandFooter Button:hover { 

32 background: #003344; 

33 color: #00d4ff; 

34 } 

35 """ 

36 

37 def compose(self) -> ComposeResult: 

38 # Chosen quick commands 

39 yield Button("Quit", id="cmd-quit") 

40 yield Button("Clear", id="cmd-clear") 

41 yield Button("YOLO", id="cmd-yolo") 

42 yield Button("Config", id="cmd-config") 

43 yield Button("Help", id="cmd-help") 

44 

45 def on_button_pressed(self, event: Button.Pressed): 

46 """Handle button clicks and dispatch commands.""" 

47 command_map = { 

48 "cmd-quit": "/quit", 

49 "cmd-clear": "/clear", 

50 "cmd-yolo": "/yolo", 

51 "cmd-config": "/config", 

52 "cmd-help": "/help", 

53 } 

54 cmd = command_map.get(event.button.id) 

55 if cmd: 

56 self.app.call_from_thread(self.app.handle_command, cmd)