diff options
author | florent <florent.pigout@gmail.com> | 2011-04-12 16:09:21 (GMT) |
---|---|---|
committer | florent <florent.pigout@gmail.com> | 2011-04-12 16:09:21 (GMT) |
commit | 4fd78607f5a8fc25ba406fc6611986916bd8db60 (patch) | |
tree | b0672d5b4da567afafa21b385506bea8fdc893ef | |
parent | 03bdfae8193d98aa5d8e1cc2b7836ee6fb679e27 (diff) |
add activity screen to manage atoidejouer options ... [work in progress]
-rw-r--r-- | activity.py | 68 | ||||
-rw-r--r-- | atoidejouer/ui/screens.py | 118 |
2 files changed, 168 insertions, 18 deletions
diff --git a/activity.py b/activity.py index 3a6bcce..54973fb 100644 --- a/activity.py +++ b/activity.py @@ -1,6 +1,9 @@ # python import import json, logging, os, threading, time +# ... +from functools import partial +# .. from gettext import gettext as _ # gtk import @@ -23,14 +26,14 @@ logger.setLevel(logging.DEBUG) class ThreadAnim(threading.Thread): - def __init__(self, activity, rate=1): + def __init__(self, activity_, rate=1): # init parent threading.Thread.__init__(self) # main flag self._die = False self._pause = True # main vars - self._activity = activity + self._activity = activity_ self._rate = rate self._time = 0 # start right now @@ -110,6 +113,19 @@ class ThreadAnim(threading.Thread): self.set_time(rate=self._rate) +def _toolbar_changed(toolbox, page, activity_): + """Catch toolbox activity tab focus to display settings screen. + """ + # is the activity tab? + if page == 0: + # show the activity screen + activity_._change_screen(toolbar=None, name='activity') + else: + pass + # propagate it + return True + + class AToiDeJouerActivity(activity.Activity): def __init__(self, handle): @@ -142,6 +158,8 @@ class AToiDeJouerActivity(activity.Activity): _toolbar = _t # set default tab self._toolbox.set_current_toolbar(1) + # .. + self._toolbox.connect('current-toolbar-changed', _toolbar_changed, self) # do anim self._thread = ThreadAnim(self) @@ -187,41 +205,55 @@ class AToiDeJouerActivity(activity.Activity): else: return None - def _change_screen(self, toolbar): - # update current screen name - self._current = toolbar.name + def _change_screen(self, toolbar=None, name=None): + # little check + if toolbar is None and name is None: + return + else: + # update current screen name + self._current = toolbar.name if name is None else name # already exist if self._current in self._screens: # show - self._screens[toolbar.name]._show() - # do pause - toolbar.pause() - # update all - self._thread.set_time() + self._screens[self._current]._show() + if toolbar is None: + pass + else: + # do pause + toolbar.pause() + # update all + self._thread.set_time() # exit return + # .. + elif self._current == 'activity': + _scr = screens.ScreenActivity(self) + # update screens dict + self._screens[self._current] = _scr + # .. + return # screen factory elif self._current == 'graphics': - _current = screens.ScreenEditGraphics(toolbar) + _scr = screens.ScreenEditGraphics(toolbar) # .. init sequences for _n in self.graphic_keys._names: - _current.timeline.add_sequence(_n) + _scr.timeline.add_sequence(_n) # .. refresh - _current.timeline.refresh_sequence() + _scr.timeline.refresh_sequence() elif self._current == 'sounds': - _current = screens.ScreenEditSounds(toolbar) + _scr = screens.ScreenEditSounds(toolbar) # .. init sequences for _n in self.sound_keys._names: - _current.timeline.add_sequence(_n) + _scr.timeline.add_sequence(_n) # .. refresh - _current.timeline.refresh_sequence() + _scr.timeline.refresh_sequence() elif self._current == 'story': - _current = screens.ScreenStory(toolbar, set_canvas=True) + _scr = screens.ScreenStory(toolbar, set_canvas=True) else: # ?? return # update screens dict - self._screens[self._current] = _current + self._screens[self._current] = _scr # update slider self._update_slider(toolbar) diff --git a/atoidejouer/ui/screens.py b/atoidejouer/ui/screens.py index f14d152..4fa3a30 100644 --- a/atoidejouer/ui/screens.py +++ b/atoidejouer/ui/screens.py @@ -562,3 +562,121 @@ class ScreenBrowserSounds(ScreenBrowser): def __init__(self, toolbar): # init parent ScreenBrowser.__init__(self, toolbar, 'sounds') + + +def _on_toggle_click(radio, screen, part, name): + # DEBUG + logger.debug('[screens] _on_toggle_click - radio: %s' % radio) + logger.debug('[screens] _on_toggle_click - self: %s' % screen) + logger.debug('[screens] _on_toggle_click - part: %s' % part) + logger.debug('[screens] _on_toggle_click - name: %s' % name) + # DEBUG + + +class ScreenActivity(gtk.HBox): + + def __init__(self, activity_): + # init parent + gtk.HBox.__init__(self, homogeneous=True, spacing=2) + # keep toolbar + self._activity = activity_ + # add left menu + self._add_left_part() + # .. + self.pack_start(gtk.EventBox(), expand=False, fill=True) + # add right menu + self._add_right_part() + # do show + self._show() + + def _get_title(self, text): + # init + _label = gtk.Label() + # show + _label.show() + # set markup + _label.set_use_markup(True) + _label.set_markup('<span size="x-large" weight="heavy">%s</span>' % text) + # align + _label.set_padding(5, 5) + _label.set_alignment(0, 0.5) + # return it + return _label + + def _get_toggle_box(self, group, part, name, text): + # create checkbox + _toggle = gtk.RadioButton(group=group, label=text) + _toggle.show() + # set cb + _toggle.connect('clicked', _on_toggle_click, self, part, name) + # return it + return _toggle + + def _get_mode_part(self): + # .. + _vbox = gtk.VBox(homogeneous=False, spacing=5) + # border + _vbox.set_border_width(5) + # show + _vbox.show() + # add first part title + _vbox.pack_start(self._get_title(_('MODE')), + expand=False, fill=True) + # TODO - add some explanation text + # init easy option and use it as group + _easy = self._get_toggle_box(None, 'mode', 'easy', _('Easy')) + # add options + _vbox.pack_start(_easy, expand=False, fill=True) + # with easy as group + _vbox.pack_start(self._get_toggle_box(_easy, 'mode', 'medium', + _('Meduim')), expand=False, fill=True) + _vbox.pack_start(self._get_toggle_box(_easy, 'mode', 'advanced', + _('Advanced')), expand=False, fill=True) + # .. + return _vbox + + def _add_left_part(self): + # .. + _vbox = gtk.VBox(homogeneous=False, spacing=5) + # border + _vbox.set_border_width(5) + # show + _vbox.show() + # add + self.pack_start(_vbox, expand=False, fill=True) + # add first part title + _vbox.pack_start(self._get_mode_part(), + expand=False, fill=True) + + def _get_export_part(self): + # .. + _vbox = gtk.VBox(homogeneous=False, spacing=5) + # border + _vbox.set_border_width(5) + # show + _vbox.show() + # add first part title + _vbox.pack_start(self._get_title(_('EXPORT')), + expand=False, fill=True) + # .. + return _vbox + + def _add_right_part(self): + # .. + _vbox = gtk.VBox(homogeneous=False, spacing=5) + # border + _vbox.set_border_width(5) + # show + _vbox.show() + # add + self.pack_start(_vbox, expand=False, fill=True) + # add first part title + # _vbox.pack_start(self._get_export_part(), + # expand=False, fill=True) + + + def _show(self): + # show all + self.show() + # update toolbar + self._activity.set_canvas(self) |