Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activity.py
diff options
context:
space:
mode:
Diffstat (limited to 'activity.py')
-rw-r--r--activity.py96
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):