1515 RenderFailed ,
1616 RenderModuleCompleted ,
1717 RenderModuleStarted ,
18+ RenderPaused ,
1819 RenderStateUpdated ,
1920)
2021from render_machine .states import States
21- from tui .widget_helpers import log_to_widget , set_frid_progress_to_paused
22+ from tui .widget_helpers import log_to_widget , transition_frid_progress
2223
2324from .components import (
2425 CustomFooter ,
2526 FRIDProgress ,
2627 LogFilterChanged ,
2728 LogLevelFilter ,
29+ ProgressItem ,
2830 RenderingInfoBox ,
2931 ScriptOutputType ,
3032 StructuredLogView ,
@@ -65,7 +67,7 @@ def __init__(
6567 conformance_tests_script : str ,
6668 prepare_environment_script : str ,
6769 state_machine_version : str ,
68- pause_event : threading .Event | None = None ,
70+ enter_pause_event : threading .Event | None = None ,
6971 ** kwargs ,
7072 ):
7173 super ().__init__ (** kwargs )
@@ -77,7 +79,7 @@ def __init__(
7779 self .conformance_tests_script : Optional [str ] = conformance_tests_script
7880 self .prepare_environment_script : Optional [str ] = prepare_environment_script
7981 self .state_machine_version = state_machine_version
80- self .pause_event = pause_event
82+ self .enter_pause_event = enter_pause_event
8183 self ._render_finished = False
8284
8385 # Initialize state handlers
@@ -138,6 +140,7 @@ def dispatch_wrapper(fn):
138140 self .event_bus .subscribe (RenderModuleStarted , self .on_render_module_started )
139141 self .event_bus .subscribe (RenderModuleCompleted , self .on_render_module_completed )
140142 self .event_bus .subscribe (LogMessageEmitted , self .on_log_message_emitted )
143+ self .event_bus .subscribe (RenderPaused , self .on_render_paused )
141144
142145 self ._on_ready ()
143146
@@ -250,6 +253,10 @@ def _handle_frid_state(
250253
251254 self ._state_completion_handler .handle (segments , snapshot , previous_state_segments )
252255
256+ def on_render_paused (self , event : RenderPaused ):
257+ transition_frid_progress (self , ProgressItem .PAUSING , ProgressItem .PAUSED )
258+ pass
259+
253260 def on_render_completed (self , event : RenderCompleted ):
254261 """Handle successful render completion."""
255262 self ._render_success_handler .handle (event .rendered_code_path )
@@ -284,13 +291,14 @@ async def action_copy_selection(self) -> None:
284291
285292 def action_pause (self ) -> None :
286293 """Handle ctrl+shift+p: request the render machine to pause."""
287- if not self ._render_finished and self .pause_event is not None :
288- set_frid_progress_to_paused ( self )
289-
290- if self . pause_event . is_set ():
291- self .pause_event .clear ()
294+ if not self ._render_finished and self .enter_pause_event is not None :
295+ if self . enter_pause_event . is_set ():
296+ transition_frid_progress ( self , ProgressItem . PAUSED , ProgressItem . PROCESSING )
297+ transition_frid_progress ( self , ProgressItem . PAUSING , ProgressItem . PROCESSING )
298+ self .enter_pause_event .clear ()
292299 else :
293- self .pause_event .set ()
300+ transition_frid_progress (self , ProgressItem .PROCESSING , ProgressItem .PAUSING )
301+ self .enter_pause_event .set ()
294302
295303 def action_enter_exit (self ) -> None :
296304 """Handle enter: exit the TUI only after rendering has finished."""
0 commit comments