Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Anderson <tony_anderson@usa.net>2009-08-25 10:33:32 (GMT)
committer Tony Anderson <tony_anderson@usa.net>2009-08-25 10:33:32 (GMT)
commit79cb6a9eada084a5be4bdc55154156807a13af22 (patch)
tree54bfe96860f4fc350a2d62db38b20371c27aa230
parent22ddbdeb9c1bdf1cc5a1e7cb679013875436f9a0 (diff)
show images
-rwxr-xr-xactivity/activity.info4
-rwxr-xr-xsetup.py12
-rwxr-xr-xsmile.py135
3 files changed, 111 insertions, 40 deletions
diff --git a/activity/activity.info b/activity/activity.info
index c199c2f..aae8509 100755
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -4,6 +4,6 @@ service_name = org.laptop.SmileActivity
class = smile.SmileActivity
exec = sugar-activity smile.SmileActivity
icon = activity-smile
-activity_version = 1
+activity_version = 2
show_launcher = yes
-mime_types = application/x-smile; application/zip
+mime_types = application/x-smile; image/png; image/jpeg; image/svg+xml; image/gif; image/tiff/; image/bmp
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..77e788c
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+try:
+ from sugar.activity import bundlebuilder
+ bundlebuilder.start("ClassroomPresenter")
+except ImportError:
+ import os
+ #os.system("find ./ | sed 's,^./,ClassroomPresenter.activity/,g' > MANIFEST")
+ os.system('rm ClassroomPresenter.xo')
+ os.chdir('..')
+ os.system('zip -r ClassroomPresenter.xo ClassroomPresenter.activity')
+ os.system('mv ClassroomPresenter.xo ./ClassroomPresenter.activity')
+ os.chdir('ClassroomPresenter.activity')
diff --git a/smile.py b/smile.py
index 8f94a35..f6c6913 100755
--- a/smile.py
+++ b/smile.py
@@ -19,14 +19,16 @@ import subprocess
BASE = path("/media/0BF7-0F5D") / 'sandbox'
DATASTORE = '/home/olpc/.sugar/default/datastore/store'
DATAPATH = path(activity.get_activity_root()) / "data"
+ACTIVITYPATH = path(activity.get_bundle_path())
+SMILPATH = ACTIVITYPATH / 'smils'
BUNDLEPATH = DATAPATH / 'bundle'
SELECTTOOLBAR = 1
-class SmileyActivity(activity.Activity):
+class SmileActivity(activity.Activity):
def __init__ (self, handle):
activity.Activity.__init__(self, handle)
- self.set_title("Smiley")
+ self.set_title("Smile")
self.connect("destroy", self.destroy)
self.exit = False
#setup chooser screen
@@ -57,13 +59,8 @@ class SmileyActivity(activity.Activity):
self.scrn = gtk.DrawingArea()
box.pack_start(self.scrn, True, True, 0)
self.playerscreen = box
- self.screenbox = gtk.VBox()
- self.set_canvas(self.screenbox)
- self.show_all()
- self.current_screen = None
- #set up bundle folder
- subprocess.call("mkdir -p " + BUNDLEPATH, shell=True)
- subprocess.call("rm -rf " + BUNDLEPATH + '/*', shell=True)
+ self.playerscreen.show_all()
+ self.set_canvas(self.playerscreen)
def flush_events(self):
while gtk.events_pending():
@@ -84,11 +81,8 @@ class SmileyActivity(activity.Activity):
treeview = self.chooser.get_treeView()
treeview.set_model(self.chooser.set_store(source, pth))
treeview.show()
- if not self.current_screen == None:
- self.screenbox.remove(self.current_screen)
- self.current_screen = self.chooserscreen
- self.current_screen.show()
- self.screenbox.pack_start(self.current_screen, True, True)
+ self.set_canvas(self.chooserscreen)
+ self.chooserscreen.show_all()
print 'choosebundle done'
def set_smil(self, widget):
@@ -99,34 +93,91 @@ class SmileyActivity(activity.Activity):
def read_file(self, file_path):
print 'read_file:', file_path
- z = zipfile.ZipFile(file_path, "r")
- for i in z.infolist():
- f = open(os.path.join(BUNDLEPATH, i.filename), "wb")
- f.write(z.read(i.filename))
- if path(i.filename).ext == ".smil":
- self.doc = i.filename
+ filepath = path(file_path)
+ #set up bundle folder
+ d = BUNDLEPATH
+ if not d.exists:
+ d.mkdir()
+ else:
+ for f in d.files('*.py'):
+ f.remove()
+ #move smil file and content to BUNDLEPATH
+ if filepath.ext == '.png':
+ self.doc = 'imagepng.smil'
+ src = SMILPATH / self.doc
+ dst = BUNDLEPATH
+ path.copy(src, dst)
+ src = filepath
+ dst = BUNDLEPATH / 'image.png'
+ path.copy(src, dst)
+ elif filepath.ext == '.jpg' or filepath.ext == '.jpeg':
+ self.doc = 'imagejpg.smil'
+ src = SMILPATH / self.doc
+ dst = BUNDLEPATH
+ path.copy(src, dst)
+ src = filepath
+ dst = BUNDLEPATH / 'image.jpg'
+ path.copy(src, dst)
+ elif filepath.ext == '.svg':
+ self.doc = 'imagesvg.smil'
+ src = SMILPATH / self.doc
+ dst = BUNDLEPATH
+ path.copy(src, dst)
+ src = filepath
+ dst = BUNDLEPATH / 'image.svg'
+ path.copy(src, dst)
+ elif filepath.ext == '.gif':
+ self.doc = 'imagegif.smil'
+ src = SMILPATH / self.doc
+ dst = BUNDLEPATH
+ path.copy(src, dst)
+ src = filepath
+ dst = BUNDLEPATH / 'image.gif'
+ path.copy(src, dst)
+ elif filepath.ext == '.tiff':
+ self.doc = 'imagetiff.smil'
+ src = SMILPATH / self.doc
+ dst = BUNDLEPATH
+ path.copy(src, dst)
+ src = filepath
+ dst = BUNDLEPATH / 'image.tiff'
+ path.copy(src, dst)
+ elif filepath.ext == '.bmp':
+ self.doc = 'imagebmp.smil'
+ src = SMILPATH / self.doc
+ dst = BUNDLEPATH
+ path.copy(src, dst)
+ src = filepath
+ dst = BUNDLEPATH / 'image.bmp'
+ path.copy(src, dst)
+ elif filepath.ext == '.smxo':
+ z = zipfile.ZipFile(file_path, "r")
+ for i in z.infolist():
+ f = open(os.path.join(BUNDLEPATH, i.filename), "wb")
+ f.write(z.read(i.filename))
+ if path(i.filename).ext == ".smil":
+ self.doc = i.filename
+ f.close()
+ z.close()
+ print 'bundle unzipped'
+ #convert src to absolute path
+ f = open(BUNDLEPATH / self.doc, 'r')
+ t = f.read()
+ f.close()
+ tc = t.replace('src = "', 'src = "' + BUNDLEPATH + '/')
+ tcc = tc.replace('src="', 'src = "' + BUNDLEPATH + '/')
+ f = open(BUNDLEPATH / self.doc, 'w')
+ f.write(tcc)
f.close()
- z.close()
- print 'bundle unzipped'
- #convert src to absolute path
- f = open(BUNDLEPATH / self.doc, 'r')
- t = f.read()
- f.close()
- tc = t.replace('src = "', 'src = "' + BUNDLEPATH + '/')
- tcc = tc.replace('src="', 'src = "' + BUNDLEPATH + '/')
- f = open(BUNDLEPATH / self.doc, 'w')
- f.write(tcc)
- f.close()
- print 'smil=', tcc
+ print 'smil=', tcc
+ else:
+ print 'unknown extension', filepath.ext, filepath
#play smil document
self.start_smil(BUNDLEPATH / self.doc)
def start_smil(self, pth):
- if not self.current_screen == None:
- self.screenbox.remove(self.current_screen)
- self.current_screen = self.playerscreen
+ self.set_canvas(self.playerscreen)
self.playerscreen.show()
- self.screenbox.pack_start(self.current_screen, True, True)
self.player = ambulantglue.Glue(pth , self.scrn)
self.start()
@@ -140,7 +191,7 @@ class SmileyActivity(activity.Activity):
fn = object.file_path
print 'object filename', path(fn).exists(), fn
#open slideshow, set Navigation toolbar current
- self.read_file(fn)
+ self.read_file(path(fn))
class SelectToolBar(gtk.Toolbar):
@@ -231,7 +282,15 @@ class Smxoview(gtk.VBox):
print 'set_store', mountpoint, pth
store = gtk.ListStore(str, str, str)
#get objects from the local datastore
- ds_objects, num_objects = datastore.find({'mountpoints':[mountpoint], 'mime_type':['application/x-smile', 'application/zip']})
+ media_list = []
+ media_list.append('application/x-smile')
+ media_list.append('image/png')
+ media_list.append('image/jpeg')
+ media_list.append('image/svg+xml')
+ media_list.append('image/bmp')
+ media_list.append('image/gif')
+ media_list.append('image/tiff')
+ ds_objects, num_objects = datastore.find({'mountpoints':[mountpoint], 'mime_type': media_list})
for f in ds_objects:
object = f.object_id
title = f.metadata['title']