diff options
Diffstat (limited to 'activity.py')
-rw-r--r-- | activity.py | 96 |
1 files changed, 42 insertions, 54 deletions
diff --git a/activity.py b/activity.py index 6a14b11..e34067f 100644 --- a/activity.py +++ b/activity.py @@ -61,11 +61,11 @@ class ThreadAnim(threading.Thread): if hasattr(_current_screen, 'refresh'): _current_screen.refresh(key=key) # update slider - if hasattr(_current_screen, 'toolbar'): - _current_screen.toolbar.refresh(self._time) - # pause - if pause and not self._pause: - _current_screen.toolbar.pause() + if self._activity._toolbar: + self._activity._toolbar.refresh(self._time) + # pause + if pause and not self._pause: + self._activity._toolbar.pause() # set pause self._pause = self._pause if pause is None else pause @@ -92,9 +92,7 @@ def _toolbar_changed(toolbox, page, activity_): """Catch toolbox activity tab focus to display settings screen. """ # is the activity tab? - if page == 0: - # remove first if exist - activity_.remove_screen('activity') + if page == 0 and activity_._updating is False: # show the activity screen activity_.change_screen('activity') else: @@ -128,21 +126,15 @@ class AToiDeJouerActivity(activity.Activity): self.max_time = 0 # show self._toolbox.show() - self.__toolbars = {'activity': None} - # init toolbars - for _n in ['story', 'edit', 'help']: - # init toolbar - self.__toolbars[_n] = toolbar.Toolbar(self, name=_n) + self._toolbar = None # set toolbox cb + self._updating = False self._toolbox.connect('current-toolbar-changed', _toolbar_changed, self) # do anim self._thread = ThreadAnim(self) # show the activity screen self.change_screen('activity') - def get_toolbox(self): - return self._toolbox - def update_max_time(self): self.max_time = story.DB().get_max('time') @@ -160,12 +152,12 @@ class AToiDeJouerActivity(activity.Activity): # little check self.add_screen(name, screen) - def _update_slider(self, toolbar): + def _update_slider(self): # sync time if self._thread is None: pass else: - toolbar.update_slider(self._thread._time, self._thread._pause) + self._toolbar.update_slider(self._thread._time, self._thread._pause) def add_screen(self, name, screen): if name in self._screens: @@ -190,63 +182,59 @@ class AToiDeJouerActivity(activity.Activity): return None def change_screen(self, name): - # get current toolbar - toolbar = self.__toolbars[name] if name in self.__toolbars else None + self._updating = True # update current screen name self._previous = self._current self._current = name # already exist if self._current == 'edit': if self._splash is None: - self._splash = screen.Splash(toolbar) + self._splash = screen.Splash(self) else: self._splash._show() - # ... - glib.idle_add(partial(self.__idle_change, toolbar)) - # .. default + glib.idle_add(self.__idle_change) else: - self.__idle_change(toolbar) - - def __idle_change(self, toolbar): + self.__idle_change() + + def __idle_change(self): + # init toolbar + if self._toolbar: + self._toolbar.pause() + self._toolbox.remove_toolbar(1) + if self._current != 'activity': + self._toolbar = toolbar.Toolbar(self, self._current) + self._toolbox.set_current_toolbar(1) + # help specific - need rebuild + if self._current == 'help': + if 'help' in self._screens: + del self._screens['help'] + _scr = screen.ScreenHelp(self) # already exist - if self._current in self._screens: - # show - self._screens[self._current]._show() - if toolbar is None: - pass - else: - # do pause - toolbar.pause() + elif self._current in self._screens: + _scr = self._screens[self._current] + # refresh + if self._current in ['story', 'edit']: # update all self._thread.set_time() - if self._current == 'help': - del self._screens[self._current] - self._screens[self._current] = screen.ScreenHelp(self) - else: - pass - # exit - return - # .. + # init screen elif self._current == 'activity': _scr = screen.ScreenActivity(self) - # update screens dict - self._screens[self._current] = _scr - # .. - return # screen factory elif self._current == 'edit': - _scr = screen.ScreenEdit(toolbar) + _scr = screen.ScreenEdit(self) elif self._current == 'story': - _scr = screen.ScreenStory(toolbar, set_canvas=True) - elif self._current == 'help': - _scr = screen.ScreenHelp(self) + _scr = screen.ScreenStory(self, set_canvas=True) else: - # ?? return + # update slider + if self._current in ['edit', 'story']: + self._update_slider() # update screens dict self._screens[self._current] = _scr - # update slider - self._update_slider(toolbar) + # show + _scr._show() + # .. + self._updating = False def read_file(self, file_path): if not file_path or not os.path.exists(file_path): |