Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/showntell.py
diff options
context:
space:
mode:
Diffstat (limited to 'showntell.py')
-rw-r--r--[-rwxr-xr-x]showntell.py128
1 files changed, 51 insertions, 77 deletions
diff --git a/showntell.py b/showntell.py
index fb2678f..846f4d5 100755..100644
--- a/showntell.py
+++ b/showntell.py
@@ -1,4 +1,4 @@
-# -*- mode:python; tab-width:4; indent-tabs-mode:t; -*-
+# -*- mode:python; tab-width:4; indent-tabs-mode:t; -*-
# showntell.py
#
@@ -42,6 +42,7 @@ import utils
import shared
import time
import pdb
+from path import path
import listview
import cpxoview
@@ -51,69 +52,48 @@ from sugar import env
hulahop.startup(os.path.join(env.get_profile_path(), 'gecko'))
from hulahop.webview import WebView
+import xml.dom.minidom
+
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')
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s')
-
+ self.__screens = []
# Find our instance path
- self.__work_path = os.path.join(self.get_activity_root(), 'instance')
- self.__deck_dir = os.path.join(self.__work_path, 'deck')
- if '-o' not in sys.argv:
- try:
- os.mkdir(self.__deck_dir)
- except Exception, e:
- self.__logger.debug("Caught exception and continuing: %s", e)
- print 'deck_dir exists'
- subprocess.call("rm -rf " + self.__deck_dir + "/*", shell=True)
-
- self.__rsrc_dir = os.path.join(activity.get_bundle_path(), 'resources')
- self.__logger.debug("Found deck directory: %s", self.__deck_dir)
-
- # Copy the splash screen to the working directory
- 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.__title_slide_name, self.__deck_dir)
+ self.__work_path = path(self.get_activity_root()) / 'instance'
+ self.__save_path = path(self.get_activity_root()) / 'data'
+ self.__deck_dir = self.__work_path / 'deck'
+ bpth = path(activity.get_bundle_path())
+ self.__rsrc_dir = bpth / 'resources'
+ self.__handle = handle
+ # Set up the main canvas
+ self.__slide_view = gtk.HBox()
+ print 'enter set_canvas', self.__handle.object_id
+ self.set_canvas(self.__slide_view)
+
+ self.__deck = slideshow.Deck(self, handle, self.__rsrc_dir, 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, self.__deck)
-
- # Set up the main canvas
- self.__slide_view = gtk.HBox()
- self.set_canvas(self.__slide_view)
-
+
# 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.__slideshow_chooser = cpxoview.Cpxoview(self, self.__deck)
self.__html_slide = gtk.EventBox()
- self.__screens = []
+ self.__html_slide.set_size_request(600,480)
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)
@@ -123,15 +103,17 @@ class ShowNTell(activity.Activity):
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
makeTB = toolbars.MakeToolBar(self, self.__deck)
+ self.__makeTB = makeTB
+ self.__makeTB.decktitle_change_cb(None)
navTB = toolbars.NavToolBar(self, self.__shared, self.__deck)
inkTB = toolbars.InkToolBar(self.__slide, self.__deck)
-
+
# Create the standard activity toolbox; add our toolbars
toolbox = activity.ActivityToolbox(self)
- toolbox.add_toolbar("Slideshow", makeTB)
+ toolbox.add_toolbar("Presentation", makeTB)
toolbox.add_toolbar("Navigation",navTB)
toolbox.add_toolbar("Ink", inkTB)
self.set_toolbox(toolbox)
@@ -140,19 +122,19 @@ class ShowNTell(activity.Activity):
# 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)
self.__side_bar.set_size_request(225, 100)
-
+
# Set up a separator for the two widgets
separator = gtk.VSeparator()
-
+
# Pack widgets into main window
self.__slide_view.pack_start(self.__main_view_box, True, True, 0)
self.__slide_view.pack_start(separator, False, False, 5)
self.__slide_view.pack_start(self.__side_bar, False, False, 0)
-
+
# Show all widgets
self.__slide_view.show_all()
self.__main_view_box.show()
@@ -163,7 +145,7 @@ class ShowNTell(activity.Activity):
#self.__html_viewer.hide()
separator.show()
self.__side_bar.show_all()
-
+
# Set up the progress view
self.__progress_max = 1.0
self.__progress_cur = 0.01
@@ -173,37 +155,32 @@ class ShowNTell(activity.Activity):
self.__progress_view.pack_start(self.__progress_lbl, True, False, 5)
#self.__progress_view.pack_start(self.__progress_bar, False, False, 5)
self.__progress_bar.set_fraction(self.__progress_cur / self.__progress_max)
-
- 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
+ self.__shared.connect('deck-download-complete', self.dl_complete_cb)
def dl_complete_cb(self, widget):
self.do_slideview_mode()
-
+
def do_slideview_mode(self):
self.set_canvas(self.__slide_view)
self.__slide_view.show_all()
-
+
def set_progress_max(self, maxval):
self.__progress_max = maxval
self.__progress_bar.set_fraction(float(self.__progress_cur) / float(self.__progress_max))
-
+
def do_progress_view(self):
self.set_canvas(self.__progress_view)
self.__progress_view.show_all()
-
+
def set_progress(self, val):
self.__progress_cur = val
self.__progress_bar.set_fraction(float(self.__progress_cur) / float(self.__progress_max))
-
- #resume from journal
+
+ #resume from journal
def read_file(self, file_path):
self.__logger.debug("read_file " + str(file_path))
+ print 'read_file:', file_path
ftype = utils.getFileType(file_path)
z = zipfile.ZipFile(file_path, "r")
for i in z.infolist():
@@ -211,21 +188,23 @@ class ShowNTell(activity.Activity):
f.write(z.read(i.filename))
f.close()
z.close()
- self.__deck.set_title(self.metadata['title'])
+ print 'read_file: reload()', len(z.infolist())
self.__deck.reload()
+ print 'read_file: before', self.__deck.get_title(), self.metadata['title']
+ self.__deck.set_title(self.metadata['title'])
+ print 'read_file: after', self.__deck.get_title()
self.__toolbox.set_current_toolbar(NAVIGATION_TOOLBAR)
newindex = 0
if 'current_index' in self.metadata:
newindex = int(self.metadata.get('current_index', '0'))
self.__deck.goToIndex(newindex, is_local=False)
-
+
#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(2)
+ print 'title', self.__deck.get_title()
+ self.metadata['title'] = self.__deck.get_title()
self.metadata['mime_type'] = "application/x-classroompresenter"
self.metadata['current_index'] = str(self.__deck.getIndex())
self.__deck.save()
@@ -234,21 +213,16 @@ class ShowNTell(activity.Activity):
for f in files:
z.write(os.path.join(root, f), f)
z.close()
-
+
def get_shared_activity(self):
- return self._shared_activity
-
+ return self._shared_activity
+
def set_screen(self,scrn):
- print 'set_screen', scrn
+ if len(self.__screens) < 1:
+ return
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]
-