From 512d963880a47c483ff3a7f070110dd93885d18d Mon Sep 17 00:00:00 2001 From: mike Date: Mon, 30 Nov 2009 21:19:20 +0000 Subject: Remote : Adding tutorial listing --- (limited to 'src') diff --git a/src/extensions/tutoriusremote.py b/src/extensions/tutoriusremote.py index 9bb4bfb..92e031a 100755 --- a/src/extensions/tutoriusremote.py +++ b/src/extensions/tutoriusremote.py @@ -21,20 +21,29 @@ creator from the Sugar frame. """ import gtk + from gettext import gettext as _ import gconf import dbus +import logging + from sugar.graphics.tray import TrayIcon from sugar.graphics.palette import Palette from sugar.graphics.xocolor import XoColor +from sugar.graphics.combobox import ComboBox from jarabe.frame.frameinvoker import FrameWidgetInvoker +from jarabe.model.shell import get_model from sugar.tutorius.creator import default_creator +from sugar.tutorius.vault import Vault + _ICON_NAME = 'tutortool' +LOGGER = logging.getLogger('remote') + class TutoriusRemote(TrayIcon): FRAME_POSITION_RELATIVE = 102 @@ -61,14 +70,54 @@ class TPalette(Palette): self._creator_item = gtk.MenuItem(_('Create a tutorial')) self._creator_item.connect('activate', self._start_creator) self._creator_item.show() + + self._tut_list_item = gtk.MenuItem(_('Show tutorials')) + self._tut_list_item.connect('activate', self._list_tutorials) + self._tut_list_item.show() + self.menu.append(self._creator_item) + self.menu.append(self._tut_list_item) self.set_content(None) def _start_creator(self, widget): default_creator().start_authoring(tutorial=None) - + def _list_tutorials(self, widget): + dlg = gtk.Dialog('Run a tutorial', + None, + gtk.DIALOG_MODAL, + (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, + gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) + dlg.vbox.pack_start(gtk.Label(_('Which tutorial do you want to run?'))) + + activity = get_model().get_active_activity() + + act_name = activity.get_activity_name() + tutorial_dict = Vault.list_available_tutorials(act_name) + + # Build the combo box + combo = ComboBox() + for (tuto_name, tuto_guid) in tutorial_dict.items(): + combo.append_item(tuto_name, tuto_guid) + dlg.vbox.pack_end(combo) + dlg.show_all() + + result = dlg.run() + + if result == gtk.RESPONSE_ACCEPT: + row = combo.get_active_item() + if row: + guid = row[0] + name = row[1] + LOGGER.debug("TPalette :: Got message to launch tutorial %s with guid %s"%(str(name), str(guid))) + + from sugar.tutorius.service import ServiceProxy + service = ServiceProxy() + + service.launch(guid) + + dlg.destroy() def setup(tray): tray.add_device(TutoriusRemote(default_creator())) -- cgit v0.9.1