MCPcopy Index your code
hub / github.com/Codeplain-ai/codeplain / PlainModuleRenderChoiceTUI

Class PlainModuleRenderChoiceTUI

tui/plain_module_render_choice_tui.py:15–242  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13
14
15class PlainModuleRenderChoiceTUI(App):
16 BINDINGS = [
17 Binding("ctrl+o", "toggle_expand", "Expand/Collapse", show=False),
18 Binding("ctrl+c", "copy_selection", "Copy", show=False),
19 Binding("ctrl+d", "quit", "Quit", show=False),
20 ]
21
22 def __init__(
23 self,
24 plain_module: PlainModule,
25 plain_module_render_state: PlainModuleRenderState,
26 render_choices: dict[str, RenderChoice],
27 state_machine_version: str,
28 render_id: str,
29 on_cancel: Optional[Callable[[], None]] = None,
30 **kwargs,
31 ):
32 super().__init__(**kwargs)
33 self.plain_module = plain_module
34 self.plain_module_render_state = plain_module_render_state
35 self.state_machine_version = state_machine_version
36 self.render_id = render_id
37 self._expandable_labels: list[dict] = []
38 self.render_choices = render_choices
39 self._on_cancel = on_cancel
40
41 def get_msg_from_choice(self, render_choice: RenderChoice) -> str:
42 if render_choice.choice_type == "module_start":
43 if render_choice.module.module_name == self.plain_module.module_name:
44 if render_choice.module.is_module_fully_rendered():
45 return f"Re-render the current module ([#5593FF]{render_choice.module.module_name}[/])"
46 else:
47 return f"Start rendering the current module ([#5593FF]{render_choice.module.module_name}[/])"
48 else:
49 return f"Start from module [#5593FF]{render_choice.module.module_name}[/]"
50 elif render_choice.choice_type == "render_from_change":
51 assert render_choice.module is not None
52 assert render_choice.render_range is not None
53 start_frid = render_choice.render_range[0]
54 quote = self._short_functionality_quote(render_choice.module, start_frid)
55 return (
56 f"Render from changed functionality [#5593FF]{start_frid}[/]"
57 f" in module [#5593FF]{render_choice.module.module_name}[/]"
58 f": [#888]{quote}[/]"
59 )
60 elif render_choice.choice_type == "rerender_affected" and self.plain_module_render_state.change is not None:
61 all_affected_modules = get_all_affected_modules_from_change(
62 self.plain_module, self.plain_module_render_state
63 )
64
65 module_names = ", ".join([m.module_name for m in all_affected_modules])
66 if len(all_affected_modules) == 1:
67 return f"Re-render module [#5593FF]{module_names}[/] from scratch"
68 return f"Re-render affected modules ([#5593FF]{module_names}[/]) from scratch"
69
70 elif render_choice.choice_type == "rerender_from_first":
71 return f"Re-render from first module ([#5593FF]{render_choice.module.module_name}[/])"
72 elif render_choice.choice_type == "continue_from_frid":

Callers 1

renderFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected