diff options
Diffstat (limited to 'activity.py')
-rw-r--r-- | activity.py | 69 |
1 files changed, 67 insertions, 2 deletions
diff --git a/activity.py b/activity.py index fe3da0b..8639348 100644 --- a/activity.py +++ b/activity.py @@ -17,9 +17,14 @@ """HelloWorld Activity: A case study for developing an activity.""" import gtk +import os +import sys import logging +import socket +from time import sleep from gettext import gettext as _ +#from multiprocessing import Process from sugar.activity import activity from sugar.graphics.toolbarbox import ToolbarBox @@ -29,8 +34,26 @@ from sugar.activity.widgets import TitleEntry from sugar.activity.widgets import StopButton from sugar.activity.widgets import ShareButton from sugar.activity.widgets import KeepButton +from sugar.activity.widgets import ToolButton from about import AboutButton +try: + import webkit +except ImportError: + try: + import webkit_local #from Agubrowser! + except ImportError: + print "You need webkit to use WebSDK." + sys.exit(0) +from inspector import Inspector + +def PickUnusedPort(): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.bind(('localhost', 0)) + addr, port = s.getsockname() + s.close() + return port + class HelloWorldActivity(activity.Activity): """HelloWorldActivity class as specified in activity.info""" @@ -41,6 +64,19 @@ class HelloWorldActivity(activity.Activity): # we do not have collaboration features # make the share option insensitive self.max_participants = 1 + self.port = PickUnusedPort() + + #Potentially this could be a subprocess, need to test more + #self.serverpid = Process(target=self.server) + #self.serverpid.start() + #self.serverpid.join() + + self.serverpid = os.fork() + if self.serverpid==0: + self.server() + print "Server quit. Exiting." + sys.exit(0) + # toolbar with the new toolbar redesign toolbar_box = ToolbarBox() @@ -67,6 +103,11 @@ class HelloWorldActivity(activity.Activity): toolbar_box.toolbar.insert(separator, -1) separator.show() + debug_button = ToolButton("activity-debug") + toolbar_box.toolbar.insert(debug_button, -1) + debug_button.connect('clicked', self.__debug_button_cb) + debug_button.show() + about_button = AboutButton(self) toolbar_box.toolbar.insert(about_button, -1) about_button.show() @@ -80,5 +121,29 @@ class HelloWorldActivity(activity.Activity): # label with the text, make the string translatable label = gtk.Label(_("Hello World!")) - self.set_canvas(label) - label.show() + + self.web_view = webkit.WebView() + sleep(1) # TODO implement throbber and callback + self.web_view.open("http://localhost:%s/www/index.html" % self.port) + + settings = self.web_view.get_settings() + settings.set_property("enable-developer-extras", True) + self.inspector = Inspector(self.web_view.get_web_inspector()) + self.inspector.set_title("WebSDK Inspector") + + self.set_canvas(self.web_view) + self.web_view.show() + + def __debug_button_cb(self, widget): + self.inspector.emit('inspect-web-view') + self.inspector.show() + return True + + def can_close(self): + #self.serverpid.terminate() + os.kill(self.serverpid, 15) + return True + + def server(self): + import appservice + appservice.start(self.port) |