MCPcopy Create free account
hub / github.com/PabloLec/RecoverPy / RecoverpyApp

Class RecoverpyApp

recoverpy/ui/app.py:23–113  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21
22
23class RecoverpyApp(App[None]):
24 screens: Dict[str, Screen[None]]
25 CSS_PATH = get_css() # type: ignore[assignment]
26 BINDINGS = [
27 Binding(
28 "question_mark",
29 "show_keyboard_help",
30 "Help",
31 key_display="?",
32 priority=True,
33 ),
34 Binding("ctrl+q", "quit", "Quit"),
35 ]
36
37 def __init__(self, *args, **kwargs) -> None: # type: ignore
38 super().__init__(*args, **kwargs)
39 self._is_user_root = False
40 self._initialize_screens()
41 log.debug("Recoverpy app initialized")
42
43 def _initialize_screens(self) -> None:
44 self.screens = {
45 "params": ParamsScreen(name="params"),
46 "search": SearchScreen(name="search"),
47 "result": ResultScreen(name="result"),
48 "save": SaveScreen(name="save"),
49 "path_edit": PathEditScreen(name="path_edit"),
50 }
51 for screen_name, screen_instance in self.screens.items():
52 self.install_screen(screen_instance, screen_name)
53 log.debug(f"Installed screen {screen_name}")
54
55 def compose(self) -> ComposeResult:
56 yield Footer()
57
58 async def on_mount(self) -> None:
59 self.theme = "atom-one-dark"
60 await self.push_screen("params")
61 await verify_app_environment(self)
62 self.notify("Press ? for keyboard help", title="Tip", timeout=5)
63
64 def _get_keyboard_help_message(self) -> str:
65 hidden_keys = {"left", "right", "up", "down"}
66 lines: list[str] = []
67 for active_binding in self.active_bindings.values():
68 binding = active_binding.binding
69 if not binding.show or not binding.description:
70 continue
71 if binding.key in hidden_keys:
72 continue
73 key = binding.key_display or binding.key
74 lines.append(f"{key}: {binding.description}")
75
76 if not lines:
77 return "No keyboard shortcuts available."
78
79 ordered = sorted(set(lines), key=str.lower)
80 return "Available shortcuts:\n" + "\n".join(ordered)

Calls 1

get_cssFunction · 0.90