From 7d79e8ecea95f36a482b195b707c282cfce9bf41 Mon Sep 17 00:00:00 2001 From: Terry Stewart Date: Fri, 2 Jun 2017 22:43:27 -0400 Subject: [PATCH] Added hooks: on_pause, on_continue, on_start, on_close --- nengo_gui/components/sim_control.py | 7 +++++++ nengo_gui/guibackend.py | 1 + nengo_gui/page.py | 10 +++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/nengo_gui/components/sim_control.py b/nengo_gui/components/sim_control.py index b05a80c1..4a994389 100644 --- a/nengo_gui/components/sim_control.py +++ b/nengo_gui/components/sim_control.py @@ -190,11 +190,18 @@ def javascript(self): def message(self, msg): if msg == 'pause': self.paused = True + if 'on_pause' in self.page.locals: + self.page.locals['on_pause'](self.page.sim) elif msg == 'config': self.send_config_options = True elif msg == 'continue': if self.page.sim is None: self.page.rebuild = True + if 'on_start' in self.page.locals: + self.page.locals['on_start'](self.page.sim) + else: + if 'on_continue' in self.page.locals: + self.page.locals['on_continue'](self.page.sim) self.paused = False elif msg == 'reset': self.paused = True diff --git a/nengo_gui/guibackend.py b/nengo_gui/guibackend.py index 57b1ded1..ffccda4c 100644 --- a/nengo_gui/guibackend.py +++ b/nengo_gui/guibackend.py @@ -432,6 +432,7 @@ def create_page(self, filename, reset_cfg=False): def remove_page(self, page): self._last_access = time.time() + page.close() self.pages.remove(page) if (not self._shutting_down and self.settings.auto_shutdown > 0 and len(self.pages) <= 0): diff --git a/nengo_gui/page.py b/nengo_gui/page.py index d012b81c..d30dd6b4 100644 --- a/nengo_gui/page.py +++ b/nengo_gui/page.py @@ -510,8 +510,16 @@ def runner(self): self.error = dict(trace=traceback.format_exc(), line=line) self.sim = None while self.sims_to_close: - self.sims_to_close.pop().close() + s = self.sims_to_close.pop() + if 'on_close' in self.locals: + self.locals['on_close'](s) + s.close() if self.rebuild: self.build() self.sim = None + + def close(self): + if self.sim is not None: + if 'on_close' in self.locals: + self.locals['on_close'](self.sim)