diff options
Diffstat (limited to 'showntell.py')
-rwxr-xr-x | showntell.py | 74 |
1 files changed, 62 insertions, 12 deletions
diff --git a/showntell.py b/showntell.py index 8b37da8..fb2678f 100755 --- a/showntell.py +++ b/showntell.py @@ -28,6 +28,7 @@ import logging import sys, os import subprocess +import atexit, signal import gtk import zipfile @@ -43,13 +44,27 @@ import time import pdb import listview -#import htmlview +import cpxoview +import hulahop +from sugar import env +hulahop.startup(os.path.join(env.get_profile_path(), 'gecko')) +from hulahop.webview import WebView + +SLIDESHOW_TOOLBAR = 1 +NAVIGATION_TOOLBAR = 2 +TITLE_SLIDE = "title.html" class ShowNTell(activity.Activity): def __init__(self, handle): #pdb.set_trace() + atexit.register(self.report_exit, 'message') + signal.signal(signal.SIGINT, self.signal_exit) + signal.signal(signal.SIGABRT, self.signal_exit) + signal.signal(signal.SIGTERM, self.signal_exit) + signal.signal(signal.SIGSEGV, self.signal_exit) + signal.signal(signal.SIGQUIT, self.signal_exit) activity.Activity.__init__(self, handle) self.__logger = logging.getLogger('ClassroomPresenter') @@ -71,17 +86,18 @@ class ShowNTell(activity.Activity): self.__logger.debug("Found deck directory: %s", self.__deck_dir) # Copy the splash screen to the working directory - utils.copy_file(os.path.join(self.__rsrc_dir, 'splash.svg'), - os.path.join(self.__deck_dir, 'splash.svg')) + self.__title_slide_name = TITLE_SLIDE + utils.copy_file(os.path.join(self.__rsrc_dir, self.__title_slide_name), + os.path.join(self.__deck_dir, self.__title_slide_name)) # Create a slide deck object - self.__deck = slideshow.Deck(self.__deck_dir) + self.__deck = slideshow.Deck(self.__title_slide_name, self.__deck_dir) # Set up activity sharing self.__shared = shared.Shared(self, self.__deck, self.__work_path) # Create a renderer for slides - self.__renderer = sliderenderer.Renderer(self.__deck) + self.__renderer = sliderenderer.Renderer(self, self.__deck) # Set up the main canvas self.__slide_view = gtk.HBox() @@ -89,13 +105,23 @@ class ShowNTell(activity.Activity): # Set up Main Viewer box self.__main_view_box = gtk.VBox() + #here enter a gtk widget in place of self.__slide + #pack this common widget to self.__main_view_box + #then render each 'screen' to this common widget as needed self.__slide = slideviewer.SlideViewer(self.__deck, self.__renderer) self.__text_area = textarea.TextArea(self.__deck) self.__image_chooser = listview.Listview(self, self.__deck) - #self.__html_viewer = htmlview.Htmlview() + self.__slideshow_chooser = cpxoview.Cpxoview(self, self.__deck) + self.__html_slide = gtk.EventBox() + self.__screens = [] self.__main_view_box.pack_start(self.__slide, True, True, 5) + self.__screens.append(self.__slide) self.__main_view_box.pack_start(self.__image_chooser, True, True, 5) - #self.__main_view_box.pack_start(self.__html_viewer, True, True, 5) + self.__screens.append(self.__image_chooser) + self.__main_view_box.pack_start(self.__slideshow_chooser, True, True, 5) + self.__screens.append(self.__slideshow_chooser) + self.__main_view_box.pack_start(self.__html_slide, True, True, 5) + self.__screens.append(self.__html_slide) self.__main_view_box.pack_start(self.__text_area, False, False, 0) # Create our toolbars @@ -110,6 +136,10 @@ class ShowNTell(activity.Activity): toolbox.add_toolbar("Ink", inkTB) self.set_toolbox(toolbox) toolbox.show() + self.__toolbox = toolbox + + # Open with slideshow toolbar + toolbox.set_current_toolbar(SLIDESHOW_TOOLBAR) # Set up the side scrollbar widget self.__side_bar = sidebar.SideBar(self.__deck, self.__renderer) @@ -129,6 +159,7 @@ class ShowNTell(activity.Activity): self.__slide.show() self.__text_area.show() self.__image_chooser.hide() + self.__slideshow_chooser.hide() #self.__html_viewer.hide() separator.show() self.__side_bar.show_all() @@ -145,6 +176,12 @@ class ShowNTell(activity.Activity): self.__shared.connect('deck-download-complete', self.dl_complete_cb) + def report_exit(self, message): + print 'activity exited', message + + def signal_exit(signal, frame): + print 'activity exited', signal + def dl_complete_cb(self, widget): self.do_slideview_mode() @@ -176,6 +213,7 @@ class ShowNTell(activity.Activity): z.close() self.__deck.set_title(self.metadata['title']) self.__deck.reload() + self.__toolbox.set_current_toolbar(NAVIGATION_TOOLBAR) newindex = 0 if 'current_index' in self.metadata: newindex = int(self.metadata.get('current_index', '0')) @@ -183,8 +221,11 @@ class ShowNTell(activity.Activity): #save state in journal for resume def write_file(self, file_path): + print 'write_file', self.__toolbox.get_current_toolbar(), str(file_path) + if self.__toolbox.get_current_toolbar() > 0: + return self.__logger.debug("write_file " + str(file_path)) - self.metadata['title'] = self.__deck.get_title() + self.metadata['title'] = self.__deck.get_title(2) self.metadata['mime_type'] = "application/x-classroompresenter" self.metadata['current_index'] = str(self.__deck.getIndex()) self.__deck.save() @@ -197,8 +238,17 @@ class ShowNTell(activity.Activity): def get_shared_activity(self): return self._shared_activity - def get_window(self): - #return (self.__slide, self.__image_chooser, self.__html_viewer) - return (self.__slide, self.__image_chooser) - + def set_screen(self,scrn): + print 'set_screen', scrn + self.__screens[0].hide() + print 'screen 0 hidden' + self.__screens[1].hide() + print 'screen 1 hidden' + self.__screens[2].hide() + print 'screen 2 hidden' + self.__screens[3].hide() + print 'screen 3 hidden' + self.__screens[scrn].show() + print 'screen', scrn, 'shown' + return self.__screens[scrn] |