A Textual TUI for plain2code.
| 48 | |
| 49 | |
| 50 | class Plain2CodeTUI(App): |
| 51 | """A Textual TUI for plain2code.""" |
| 52 | |
| 53 | ENABLE_COMMAND_PALETTE = False |
| 54 | |
| 55 | BINDINGS = [ |
| 56 | Binding("ctrl+c", "copy_selection", "Copy", show=False), |
| 57 | Binding("ctrl+d", "quit", "Quit", show=False), |
| 58 | Binding("enter", "enter_exit", "Exit", show=False), |
| 59 | Binding("ctrl+p", "pause", "Pause", show=False, priority=True), |
| 60 | ("ctrl+l", "toggle_logs", "Toggle Logs"), |
| 61 | ] |
| 62 | |
| 63 | def __init__( |
| 64 | self, |
| 65 | event_bus: EventBus, |
| 66 | on_ready: Callable[[], None], |
| 67 | render_id: str, |
| 68 | unittests_script: str, |
| 69 | conformance_tests_script: str, |
| 70 | prepare_environment_script: str, |
| 71 | state_machine_version: str, |
| 72 | enter_pause_event: threading.Event | None = None, |
| 73 | on_cancel: Callable[[], None] | None = None, |
| 74 | default_log_level: str = "INFO", |
| 75 | **kwargs, |
| 76 | ): |
| 77 | super().__init__(**kwargs) |
| 78 | self.dark = True # Set dark mode as default |
| 79 | self.event_bus = event_bus |
| 80 | self._on_ready = on_ready |
| 81 | self.render_id = render_id |
| 82 | self.unittests_script: Optional[str] = unittests_script |
| 83 | self.conformance_tests_script: Optional[str] = conformance_tests_script |
| 84 | self.prepare_environment_script: Optional[str] = prepare_environment_script |
| 85 | self.state_machine_version = state_machine_version |
| 86 | self.enter_pause_event = enter_pause_event |
| 87 | self._on_cancel = on_cancel |
| 88 | self.default_log_level = default_log_level |
| 89 | self._render_finished = False |
| 90 | |
| 91 | # Initialize state handlers |
| 92 | self._state_handlers: dict[str, StateHandler] = { |
| 93 | States.READY_FOR_FRID_IMPLEMENTATION.value: FridReadyHandler( |
| 94 | self, self.unittests_script, self.conformance_tests_script |
| 95 | ), |
| 96 | States.PROCESSING_UNIT_TESTS.value: UnitTestsHandler( |
| 97 | self, self.unittests_script, self.conformance_tests_script |
| 98 | ), |
| 99 | States.REFACTORING_CODE.value: RefactoringHandler( |
| 100 | self, self.unittests_script, self.conformance_tests_script |
| 101 | ), |
| 102 | States.PROCESSING_CONFORMANCE_TESTS.value: ConformanceTestsHandler( |
| 103 | self, self.unittests_script, self.conformance_tests_script |
| 104 | ), |
| 105 | States.FRID_FULLY_IMPLEMENTED.value: FridFullyImplementedHandler( |
| 106 | self, self.unittests_script, self.conformance_tests_script |
| 107 | ), |