Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activity.py
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-12-16 19:36:06 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-12-16 19:36:06 (GMT)
commitf699b1f6dc897a96e4323db65961190e65690eef (patch)
tree8c457dc2e20f02e7716a3185f15bbabef9df1080 /activity.py
parent33cc7c69a7af607d129c43072187f44e5c99c066 (diff)
Switch to services
Diffstat (limited to 'activity.py')
-rw-r--r--activity.py148
1 files changed, 84 insertions, 64 deletions
diff --git a/activity.py b/activity.py
index 970397d..c30a8ce 100644
--- a/activity.py
+++ b/activity.py
@@ -21,8 +21,11 @@ logger = logging.getLogger('cartoon-builder')
from sugar.graphics.toolbutton import ToolButton
from sugar.graphics.toggletoolbutton import ToggleToolButton
from sugar.activity.activity import ActivityToolbox
-from port.activity import SharedActivity
-from port.temposlider import TempoSlider
+
+from widgets.temposlider import TempoSlider
+from toolkit.activity import SharedActivity
+from toolkit.toolbarbox import ToolbarBox
+from toolkit.activity_widgets import *
import montage
import lessons
@@ -34,6 +37,7 @@ import theme
from messenger import Messenger, SERVICE
from utils import *
+
class CartoonBuilderActivity(SharedActivity):
def __init__(self, handle):
self.notebook = gtk.Notebook()
@@ -49,20 +53,41 @@ class CartoonBuilderActivity(SharedActivity):
self.lessons.show()
self.notebook.append_page(self.lessons)
- toolbox = ActivityToolbox(self)
+ toolbox = ToolbarBox()
toolbox.show()
- toolbox.connect('current-toolbar-changed', self._toolbar_changed_cb)
- self.set_toolbox(toolbox)
- montage_bar = MontageToolbar(self.montage)
- montage_bar.show()
- toolbox.add_toolbar(_('Montage'), montage_bar)
+ toolbox.toolbar.insert(ActivityToolbarButton(self), -1)
+
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(False)
+ toolbox.toolbar.insert(separator, -1)
+
+ lessons_button = ToggleToolButton('mamamedia')
+ lessons_button.connect('toggled', self.__toggled_lessons_button_cb)
+ lessons_button.set_tooltip(_('Lessons'))
+ toolbox.toolbar.insert(lessons_button, -1)
+
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(False)
+ toolbox.toolbar.insert(separator, -1)
+
+ self.notebook_toolbar = gtk.Notebook()
+ self.notebook_toolbar.props.show_border = False
+ self.notebook_toolbar.props.show_tabs = False
+ self.notebook_toolbar.append_page(self._create_montage_toolbar())
+ self.notebook_toolbar.append_page(self._create_lessons_toolbar())
+ self.notebook_toolbar.show()
- lessons_bar = LessonsToolbar()
- lessons_bar.show()
- toolbox.add_toolbar(_('Lessons'), lessons_bar)
+ notebook_item = gtk.ToolItem()
+ notebook_item.set_expand(True)
+ notebook_item.add(self.notebook_toolbar)
+ notebook_item.show()
+ toolbox.toolbar.insert(notebook_item, -1)
- toolbox.set_current_toolbar(1)
+ toolbox.toolbar.insert(StopButton(self), -1)
+
+ toolbox.show_all()
+ self.toolbar_box = toolbox
def new_instance(self):
logger.debug('new_instance')
@@ -84,90 +109,85 @@ class CartoonBuilderActivity(SharedActivity):
logger.debug('share_instance')
self.messenger = Messenger(tube_conn, initiating, self.montage)
- def _toolbar_changed_cb(self, widget, index):
- if index == 2:
- self.notebook.set_current_page(1)
- else:
- self.notebook.set_current_page(0)
-
-class MontageToolbar(gtk.Toolbar):
- def __init__(self, montage):
- gtk.Toolbar.__init__(self)
- self.montage = montage
+ def _create_montage_toolbar(self):
+ toolbar = gtk.Toolbar()
- self.playButton = ToggleToolButton('media-playback-start')
- self.playButton.connect('toggled', self._play_cb)
- self.insert(self.playButton, -1)
- self.playButton.set_tooltip(_('Play / Pause'))
+ playButtonImg = gtk.Image()
+ playButtonImg.show()
+ playButtonImg.set_from_icon_name('media-playback-start',
+ gtk.ICON_SIZE_LARGE_TOOLBAR)
- # Play button Image
- self.playButtonImg = gtk.Image()
- self.playButtonImg.show()
- self.playButtonImg.set_from_icon_name('media-playback-start', gtk.ICON_SIZE_LARGE_TOOLBAR)
+ pauseButtonImg = gtk.Image()
+ pauseButtonImg.show()
+ pauseButtonImg.set_from_icon_name('media-playback-pause',
+ gtk.ICON_SIZE_LARGE_TOOLBAR)
- # Pause button Image
- self.pauseButtonImg = gtk.Image()
- self.pauseButtonImg.show()
- self.pauseButtonImg.set_from_icon_name('media-playback-pause', gtk.ICON_SIZE_LARGE_TOOLBAR)
+ playButton = ToggleToolButton('media-playback-start')
+ playButton.connect('toggled', self.__play_cb, playButtonImg,
+ pauseButtonImg)
+ toolbar.insert(playButton, -1)
+ playButton.set_tooltip(_('Play / Pause'))
tempo = TempoSlider(0, 10)
- tempo.adjustment.connect("value-changed", self._tempo_cb)
+ tempo.adjustment.connect("value-changed", self.__tempo_cb)
tempo.set_size_request(250, -1)
tempo.set_value(5)
tempo_item = gtk.ToolItem()
tempo_item.add(tempo)
- self.insert(tempo_item, -1)
+ toolbar.insert(tempo_item, -1)
separator = gtk.SeparatorToolItem()
- self.insert(separator,-1)
+ toolbar.insert(separator,-1)
clear_tape = ToolButton('sl-reset')
- clear_tape.connect('clicked', self._clear_tape_cb)
+ clear_tape.connect('clicked', self.__clear_tape_cb)
clear_tape.set_tooltip(_('Reset'))
- self.insert(clear_tape, -1)
+ toolbar.insert(clear_tape, -1)
+
+ toolbar.show_all()
- self.show_all()
+ return toolbar
- def _clear_tape_cb(self, widget):
+ def __clear_tape_cb(self, widget):
for i in range(theme.TAPE_COUNT):
self.montage.props.frame = (i, None)
- def _tempo_cb(self, widget):
+ def __tempo_cb(self, widget):
self.montage.set_tempo(widget.value)
- def _play_cb(self, widget):
+ def __play_cb(self, widget, playButtonImg, pauseButtonImg):
if widget.get_active():
- widget.set_icon_widget(self.pauseButtonImg)
+ widget.set_icon_widget(pauseButtonImg)
sound.play()
self.montage.play()
else:
- widget.set_icon_widget(self.playButtonImg)
+ widget.set_icon_widget(playButtonImg)
sound.stop()
self.montage.stop()
-class LessonsToolbar(gtk.Toolbar):
- def __init__(self):
- gtk.Toolbar.__init__(self)
- self._mask = False
+ def _create_lessons_toolbar(self):
+ toolbar = gtk.Toolbar()
for lesson in lessons.THEMES:
- button = gtk.ToggleToolButton()
+ button = gtk.RadioToolButton()
button.set_label(lesson.name)
- button.connect('clicked', self._lessons_cb, lesson)
- self.insert(button, -1)
+ if toolbar.get_n_items():
+ button.props.group = toolbar.get_nth_item(0)
+ button.connect('clicked', self.__lesson_clicked_cb, lesson)
+ toolbar.insert(button, -1)
- self.get_nth_item(0).set_active(True)
- self.show_all()
+ toolbar.get_nth_item(0).set_active(True)
+ toolbar.show_all()
- def _lessons_cb(self, widget, lesson):
- if self._mask:
- return
- self._mask = True
+ return toolbar
- for i, j in enumerate(lessons.THEMES):
- if j != lesson:
- self.get_nth_item(i).set_active(False)
-
- widget.props.active = True
+ def __lesson_clicked_cb(self, widget, lesson):
lesson.change()
- self._mask = False
+
+ def __toggled_lessons_button_cb(self, button):
+ page = button.props.active and 1 or 0
+ self.notebook_toolbar.set_current_page(page)
+ self.notebook.set_current_page(page)
+
+ sound.stop()
+ self.montage.stop()