Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/smile.py
diff options
context:
space:
mode:
Diffstat (limited to 'smile.py')
-rwxr-xr-xsmile.py138
1 files changed, 112 insertions, 26 deletions
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