Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormike <michael.jmontcalm@gmail.com>2009-11-30 21:19:20 (GMT)
committer mike <michael.jmontcalm@gmail.com>2009-11-30 21:19:20 (GMT)
commit512d963880a47c483ff3a7f070110dd93885d18d (patch)
tree153d5807c44056e5fd95a2a7e91f0a51b9fda95a
parent825143f4e633c4025ba39307760a3924769f2f02 (diff)
Remote : Adding tutorial listing
-rwxr-xr-xsrc/extensions/tutoriusremote.py51
-rw-r--r--tutorius/TProbe.py3
2 files changed, 52 insertions, 2 deletions
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()))
diff --git a/tutorius/TProbe.py b/tutorius/TProbe.py
index 7d1b91a..1521eab 100644
--- a/tutorius/TProbe.py
+++ b/tutorius/TProbe.py
@@ -571,7 +571,8 @@ class ProbeManager(object):
@param is_editing whether this action comes from the editor
"""
if self.currentActivity:
- return self._probes[self.currentActivity].uninstall(action, block, is_editing)
+ # return self._probes[self.currentActivity].uninstall(action, block, is_editing)
+ return self._first_proxy(self.currentActivity).uninstall(action, block, is_editing)
else:
raise RuntimeWarning("No activity attached")