From 3f047e2955c9913bed091da5878b9a99e8e8117b Mon Sep 17 00:00:00 2001 From: Tony Anderson Date: Wed, 02 Sep 2009 06:03:19 +0000 Subject: version 1 --- diff --git a/activity/activity-smile.svg b/activity/activity-smile.svg index 0049daa..51d0cd1 100644 --- a/activity/activity-smile.svg +++ b/activity/activity-smile.svg @@ -1,33 +1,29 @@ - - - + + +]> - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + diff --git a/activity/activity.info b/activity/activity.info index aae8509..d152492 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 = 2 +activity_version = 1 show_launcher = yes -mime_types = application/x-smile; image/png; image/jpeg; image/svg+xml; image/gif; image/tiff/; image/bmp +mime_types = application/x-smile; application/zip;image/png; image/jpeg; image/svg+xml; image/gif; image/tiff; image/bmp; audio/mp4; application/ogg; audio/mpeg; audio/x-wav; audio/x-ms-wma; video/mpeg; video/quicktime; video/x-ms-wmv; video/x-msvideo; video/mp4; video/ogg; video/x-flv; text/plain diff --git a/ambulantglue.py b/ambulantglue.py index 476f4e3..9fb6547 100755 --- a/ambulantglue.py +++ b/ambulantglue.py @@ -28,7 +28,7 @@ class Glue(ambulant.gui_player, ambulant.factories): # print 'parse the document' self.document = ambulant.create_from_file(self, filename) - print 'doc' + print 'doc', filename player = ambulant.create_smil2_player(self.document, self, None) print 'initialize player', type(player) player.initialize() diff --git a/icons/gtk-media-pause.svg b/icons/gtk-media-pause.svg new file mode 100755 index 0000000..aa4a585 --- /dev/null +++ b/icons/gtk-media-pause.svg @@ -0,0 +1,9 @@ + + +]> + + + + + \ No newline at end of file diff --git a/icons/gtk-media-stop.svg b/icons/gtk-media-stop.svg new file mode 100755 index 0000000..4779fd5 --- /dev/null +++ b/icons/gtk-media-stop.svg @@ -0,0 +1,6 @@ + + +]> + + \ No newline at end of file diff --git a/smile.py b/smile.py index 51212e1..d4c7a8e 100755 --- a/smile.py +++ b/smile.py @@ -35,6 +35,7 @@ class SmileActivity(activity.Activity): activity.Activity.__init__(self, handle) self.set_title("Smile") self.connect("destroy", self.set_exit) + self.readflag = False self.exit = False #setup chooser screen box = gtk.VBox(homogeneous=False) @@ -62,31 +63,77 @@ class SmileActivity(activity.Activity): lbl.show() box.pack_start(lbl, False, False, 0) self.scrn = gtk.DrawingArea() + self.scrn.show() box.pack_start(self.scrn, True, True, 0) self.playerscreen = box self.playerscreen.show_all() - self.set_canvas(self.playerscreen) + self.current_screen = self.playerscreen + self.screenbox = gtk.VBox() + self.screenbox.pack_start(self.current_screen, True, True, 0) + self.screenbox.show_all() + print 'set_canvas' + self.doc = 'no doc' + self.set_canvas(self.screenbox) + print 'canvas_set', self.doc def flush_events(self): while gtk.events_pending(): - gtk.main_iteration() + gtk.main_iteration(False) - def set_exit(self): - self.exit = True + def set_exit(self, widget): + #self.exit = True + print 'set_exit', widget def start(self): + return while self.exit == False: self.flush_events() + def start_smil(self, pth): + print 'start smil' + self.set_screen(self.playerscreen) + print 'playerscreen set' + self.player = ambulantglue.Glue(pth , self.scrn) + self.update_buttons(None) + print 'self.player', type(self.player) + + def set_screen(self, screen): + if not self.current_screen == screen: + self.screenbox.remove(self.current_screen) + self.current_screen = screen + self.current_screen.show_all() + self.screenbox.pack_start(self.current_screen, True, True, 0) + + def update_buttons(self, b): + if self.player: + self.playbutton.set_sensitive(self.player.is_play_enabled()) + self.pausebutton.set_sensitive(self.player.is_pause_enabled()) + self.stopbutton.set_sensitive(self.player.is_stop_enabled()) + else: + self.playbutton.set_sensitive(False) + self.pausebutton.set_sensitive(False) + self.stopbutton.set_sensitive(False) + print 'update_buttons', self.playbutton.is_sensitive(), self.pausebutton.is_sensitive(), self.stopbutton.is_sensitive() + def play_cb(self, widget): - self.player.play() - self.destroy() + #self.start_smil(BUNDLEPATH / self.doc) + #print 'smil started in play_cb', self.doc + print 'play_cb' + if self.player: + self.player.play() + self.update_buttons(None) def pause_cb(self, widget): - self.player.pause() + print 'pause_cb' + if self.player: + self.player.pause() + self.update_buttons(None) def stop_cb(self, widget): - self.player.stop() + print 'stop_cb' + if self.player: + self.player.stop() + self.update_buttons(None) def activate_cb(self, widget): #ignore @@ -96,19 +143,26 @@ class SmileActivity(activity.Activity): treeview = self.chooser.get_treeView() treeview.set_model(self.chooser.set_store(source, pth)) treeview.show() - self.set_canvas(self.chooserscreen) - self.chooserscreen.show_all() + self.set_screen(self.chooserscreen) print 'choosebundle done' def read_file(self, file_path): - print 'read_file:', file_path + print 'read_file:', file_path, self.readflag + if self.readflag: + print 'read_file called twice' + else: + self.readflag = True filepath = path(file_path) + pos = file_path.find('(') + pos1 = file_path[pos:].find(')') + filepath = path(file_path[:pos] + file_path[pos+pos1+1:]) + print 'filepath', path(file_path).name, filepath.name #set up bundle folder d = BUNDLEPATH if not d.exists: d.mkdir() else: - for f in d.files('*.py'): + for f in d.files(): f.remove() #move smil file and content to BUNDLEPATH if filepath.ext == '.png': @@ -199,7 +253,7 @@ class SmileActivity(activity.Activity): src = filepath dst = BUNDLEPATH / 'audio.wma' path.copy(src, dst) - elif filepath.ext == '.mpg': + elif filepath.ext == '.mpg' or filepath.ext == '.mpeg': self.doc = 'videompg.smil' src = SMILPATH / self.doc dst = BUNDLEPATH @@ -231,7 +285,7 @@ class SmileActivity(activity.Activity): src = filepath dst = BUNDLEPATH / 'video.avi' path.copy(src, dst) - elif filepath.ext == '.ogg': + elif filepath.ext == '.ogv': self.doc = 'videoogg.smil' src = SMILPATH / self.doc dst = BUNDLEPATH @@ -247,6 +301,30 @@ class SmileActivity(activity.Activity): src = filepath dst = BUNDLEPATH / 'video.mp4' path.copy(src, dst) + elif filepath.ext == '.flv': + self.doc = 'videoflv.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'video.flv' + path.copy(src, dst) + elif filepath.ext == ".txt": + self.doc = 'text.smil' + src = SMILPATH / 'textpln.smil' + f = open(src, 'r') + skeleton = f.read() + f.close() + f = open(filepath, 'r') + txt = f.read() + f.close() + pos1 = skeleton.find('*****') + pos2 = skeleton[pos1+5:].find('*****') + tsmil = skeleton[:pos1] + txt + skeleton[pos1+pos2+9:] + dst = BUNDLEPATH / 'text.smil' + f = open(dst, 'w') + f.write(tsmil) + f.close() elif filepath.ext == '.smxo': z = zipfile.ZipFile(file_path, "r") for i in z.infolist(): @@ -271,15 +349,12 @@ class SmileActivity(activity.Activity): print 'unknown extension', filepath.ext, filepath #play smil document self.entry.set_text(self.doc) + print 'ready to play', self.doc + self.start() self.start_smil(BUNDLEPATH / self.doc) + print 'flush events started, calling play_cb' self.play_cb(self.doc) - def start_smil(self, pth): - self.set_canvas(self.playerscreen) - self.playerscreen.show() - self.player = ambulantglue.Glue(pth , self.scrn) - self.start() - def on_activated(self, widget, row, col): print 'smxo on_activated' model = widget.get_model() @@ -289,10 +364,12 @@ class SmileActivity(activity.Activity): timestamp = model[row][3] object = datastore.get(model[row][0]) object.destroy() - fn = object.file_path - print 'object filename', path(fn).exists(), fn + fn = path(object.file_path) + print 'object filename', fn.exists(), fn #open slideshow, set Navigation toolbar current - self.read_file(path(fn)) + print 'on_activated calling read_file', fn.name + self.read_file(fn) + print 'on_activated file read' class SelectToolBar(gtk.Toolbar): @@ -301,7 +378,6 @@ class SelectToolBar(gtk.Toolbar): self.chooser = activity.chooser entry = activity.entry choosebundle = activity.choosebundle - set_exit = activity.set_exit #get mount points ds_mounts = datastore.mounts() @@ -343,6 +419,10 @@ class SelectToolBar(gtk.Toolbar): self.stopbutton.show() self.insert(self.stopbutton, -1) + activity.stopbutton = self.stopbutton + activity.pausebutton = self.pausebutton + activity.playbutton = self.playbutton + self.toolitem = gtk.ToolItem() self.toolitem.set_expand(True) self.toolitem.show() @@ -397,6 +477,7 @@ class Smxoview(gtk.VBox): #get objects from the local datastore media_list = [] media_list.append('application/x-smile') + media_list.append('application/zip') media_list.append('image/png') media_list.append('image/jpeg') media_list.append('image/svg+xml') @@ -404,7 +485,10 @@ class Smxoview(gtk.VBox): media_list.append('image/gif') media_list.append('image/tiff') media_list.append('audio/mp4') + media_list.append('video/x-flv') media_list.append('application/ogg') + media_list.append('audio/ogg') + media_list.append('video/ogg') media_list.append('audio/mpeg') media_list.append('audio/x-wav') media_list.append('audio/x-ms-wma') @@ -413,13 +497,15 @@ class Smxoview(gtk.VBox): media_list.append('video/x-ms-wmv') media_list.append('video/x-msvideo') media_list.append('video/mp4') + media_list.append('text/plain') 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'] mime_type = f.metadata['mime_type'] - date = f.metadata['mtime'].replace('T',' ') - store.append([object, title, mime_type, date]) + date = f.metadata['mtime'].replace('T',' ') + if not mime_type == 'application/zip' or path(f).ext == '.smxo': + store.append([object, title, mime_type, date]) f.destroy() print 'return smxo store', len(store) return store -- cgit v0.9.1