diff options
Diffstat (limited to 'smile.py')
-rwxr-xr-x | smile.py | 135 |
1 files changed, 97 insertions, 38 deletions
@@ -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'] |