Simulation progression
This commit is contained in:
@@ -25,6 +25,7 @@ class SimulationRunController(QObject):
|
||||
run_cancelled = Signal()
|
||||
run_failed = Signal(object)
|
||||
run_progress = Signal(int)
|
||||
segment_completed = Signal()
|
||||
simulation_state_changed = Signal()
|
||||
|
||||
def __init__(self, window: SimulationWindow, files: SimulationFileController, session_factory: SessionFactory = _create_session) -> None:
|
||||
@@ -45,6 +46,7 @@ class SimulationRunController(QObject):
|
||||
self.run_cancelled.connect(self._cancelled)
|
||||
self.run_failed.connect(self._failed)
|
||||
self.run_progress.connect(self.window.ui.progressBar.setValue)
|
||||
self.segment_completed.connect(self._segment_completed)
|
||||
self._load_session()
|
||||
|
||||
@property
|
||||
@@ -98,7 +100,7 @@ class SimulationRunController(QObject):
|
||||
self.run_completed.emit(result)
|
||||
|
||||
async def _run_with_progress(self, session: SimulationSession) -> SimulationResult:
|
||||
task = asyncio.create_task(session.run_next())
|
||||
task = asyncio.create_task(session.run_next_segmented(lambda _result: self.segment_completed.emit()))
|
||||
last_progress = -1
|
||||
while not task.done():
|
||||
progress = min(session.get_progress(), 99)
|
||||
@@ -108,6 +110,12 @@ class SimulationRunController(QObject):
|
||||
await asyncio.sleep(0.1)
|
||||
return await task
|
||||
|
||||
def _segment_completed(self) -> None:
|
||||
self._store_session_state()
|
||||
if self.session is not None:
|
||||
self.window.statusBar().showMessage(f"Simulation running · current time {self.session.current_end_time}")
|
||||
logger.debug("Simulation segment completed at time %s", self.session.current_end_time)
|
||||
|
||||
def _completed(self, result: SimulationResult) -> None:
|
||||
self._running = False
|
||||
self._store_session_state()
|
||||
|
||||
Reference in New Issue
Block a user