Coverage for openhcs/textual_tui/config.py: 0.0%

34 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-04 02:09 +0000

1""" 

2Configuration classes for OpenHCS Textual User Interface. 

3 

4These classes are only used by the deprecated Textual TUI and are not part of the core config. 

5""" 

6 

7from dataclasses import dataclass, field 

8from textual_window import TilingLayout 

9 

10 

11@dataclass(frozen=True) 

12class TilingKeybinding: 

13 """Declarative mapping between key combination and window manager method.""" 

14 key: str 

15 action: str # method name that already exists 

16 description: str 

17 

18 

19@dataclass(frozen=True) 

20class TilingKeybindings: 

21 """Declarative mapping of tiling keybindings to existing methods.""" 

22 

23 # Focus controls 

24 focus_next: TilingKeybinding = TilingKeybinding("ctrl+j", "focus_next_window", "Focus Next Window") 

25 focus_prev: TilingKeybinding = TilingKeybinding("ctrl+k", "focus_previous_window", "Focus Previous Window") 

26 

27 # Layout controls - map to wrapper methods 

28 horizontal_split: TilingKeybinding = TilingKeybinding("ctrl+shift+h", "set_horizontal_split", "Horizontal Split") 

29 vertical_split: TilingKeybinding = TilingKeybinding("ctrl+shift+v", "set_vertical_split", "Vertical Split") 

30 grid_layout: TilingKeybinding = TilingKeybinding("ctrl+shift+g", "set_grid_layout", "Grid Layout") 

31 master_detail: TilingKeybinding = TilingKeybinding("ctrl+shift+m", "set_master_detail", "Master Detail") 

32 toggle_floating: TilingKeybinding = TilingKeybinding("ctrl+shift+f", "toggle_floating", "Toggle Floating") 

33 

34 # Window movement - map to extracted window_manager methods 

35 move_window_prev: TilingKeybinding = TilingKeybinding("ctrl+shift+left", "move_focused_window_prev", "Move Window Left") 

36 move_window_next: TilingKeybinding = TilingKeybinding("ctrl+shift+right", "move_focused_window_next", "Move Window Right") 

37 rotate_left: TilingKeybinding = TilingKeybinding("ctrl+alt+left", "rotate_window_order_left", "Rotate Windows Left") 

38 rotate_right: TilingKeybinding = TilingKeybinding("ctrl+alt+right", "rotate_window_order_right", "Rotate Windows Right") 

39 

40 # Gap controls 

41 gap_increase: TilingKeybinding = TilingKeybinding("ctrl+plus", "gap_increase", "Increase Gap") 

42 gap_decrease: TilingKeybinding = TilingKeybinding("ctrl+minus", "gap_decrease", "Decrease Gap") 

43 

44 # Bulk operations 

45 minimize_all: TilingKeybinding = TilingKeybinding("ctrl+shift+d", "minimize_all_windows", "Minimize All") 

46 open_all: TilingKeybinding = TilingKeybinding("ctrl+shift+o", "open_all_windows", "Open All") 

47 

48 

49@dataclass(frozen=True) 

50class TUIConfig: 

51 """Configuration for OpenHCS Textual User Interface.""" 

52 default_tiling_layout: TilingLayout = TilingLayout.MASTER_DETAIL 

53 """Default tiling layout for window manager on startup.""" 

54 

55 default_window_gap: int = 1 

56 """Default gap between windows in tiling mode (in characters).""" 

57 

58 enable_startup_notification: bool = True 

59 """Whether to show notification about tiling mode on startup.""" 

60 

61 keybindings: TilingKeybindings = field(default_factory=TilingKeybindings) 

62 """Declarative mapping of all tiling keybindings.""" 

63