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
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-04 02:09 +0000
1"""
2Configuration classes for OpenHCS Textual User Interface.
4These classes are only used by the deprecated Textual TUI and are not part of the core config.
5"""
7from dataclasses import dataclass, field
8from textual_window import TilingLayout
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
19@dataclass(frozen=True)
20class TilingKeybindings:
21 """Declarative mapping of tiling keybindings to existing methods."""
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")
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")
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")
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")
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")
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."""
55 default_window_gap: int = 1
56 """Default gap between windows in tiling mode (in characters)."""
58 enable_startup_notification: bool = True
59 """Whether to show notification about tiling mode on startup."""
61 keybindings: TilingKeybindings = field(default_factory=TilingKeybindings)
62 """Declarative mapping of all tiling keybindings."""