Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflorent <florent.pigout@gmail.com>2011-04-12 16:09:21 (GMT)
committer florent <florent.pigout@gmail.com>2011-04-12 16:09:21 (GMT)
commit4fd78607f5a8fc25ba406fc6611986916bd8db60 (patch)
treeb0672d5b4da567afafa21b385506bea8fdc893ef
parent03bdfae8193d98aa5d8e1cc2b7836ee6fb679e27 (diff)
add activity screen to manage atoidejouer options ... [work in progress]
-rw-r--r--activity.py68
-rw-r--r--atoidejouer/ui/screens.py118
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)