From 2ed5da66f4357e85a06f6bab2b88718ac71885fe Mon Sep 17 00:00:00 2001 From: Tony Anderson Date: Sat, 29 Aug 2009 14:43:00 +0000 Subject: change icon, add video´ --- diff --git a/activity/activity-smile.svg b/activity/activity-smile.svg index 494ebfb..0049daa 100755..100644 --- a/activity/activity-smile.svg +++ b/activity/activity-smile.svg @@ -1,84 +1,33 @@ - - - - - - image/svg+xml - - - - - - - - - Smi le + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smile.py b/smile.py index f6c6913..51212e1 100755 --- a/smile.py +++ b/smile.py @@ -3,6 +3,9 @@ # test ambulantglue import os, sys, time +import subprocess +from datetime import datetime +from time import strftime import pygtk pygtk.require('2.0') @@ -11,10 +14,11 @@ import gtk from sugar.activity import activity from sugar.datastore import datastore from sugar.graphics.toolbutton import ToolButton + import ambulantglue + from path import path import zipfile -import subprocess BASE = path("/media/0BF7-0F5D") / 'sandbox' DATASTORE = '/home/olpc/.sugar/default/datastore/store' @@ -22,6 +26,7 @@ DATAPATH = path(activity.get_activity_root()) / "data" ACTIVITYPATH = path(activity.get_bundle_path()) SMILPATH = ACTIVITYPATH / 'smils' BUNDLEPATH = DATAPATH / 'bundle' +DATEFORMAT = "%Y-%m-%d %H:%M:%S" SELECTTOOLBAR = 1 class SmileActivity(activity.Activity): @@ -29,7 +34,7 @@ class SmileActivity(activity.Activity): def __init__ (self, handle): activity.Activity.__init__(self, handle) self.set_title("Smile") - self.connect("destroy", self.destroy) + self.connect("destroy", self.set_exit) self.exit = False #setup chooser screen box = gtk.VBox(homogeneous=False) @@ -42,9 +47,9 @@ class SmileActivity(activity.Activity): self.chooserscreen = box # Create the standard activity toolbox; add our toolbar self.entry = gtk.Entry() - self.entry.connect("activate", self.set_smil) + self.entry.connect("activate", self.activate_cb) self.entry.show() - selectTB = SelectToolBar(self.chooser, self.play_cb, self.entry, self.choosebundle, self.destroy) + selectTB = SelectToolBar(self) self.toolbox = activity.ActivityToolbox(self) self.toolbox.add_toolbar("Select", selectTB) # Open with slideshow toolbar @@ -66,7 +71,7 @@ class SmileActivity(activity.Activity): while gtk.events_pending(): gtk.main_iteration() - def destroy(self): + def set_exit(self): self.exit = True def start(self): @@ -77,6 +82,16 @@ class SmileActivity(activity.Activity): self.player.play() self.destroy() + def pause_cb(self, widget): + self.player.pause() + + def stop_cb(self, widget): + self.player.stop() + + def activate_cb(self, widget): + #ignore + pass + def choosebundle(self, widget, source, pth): treeview = self.chooser.get_treeView() treeview.set_model(self.chooser.set_store(source, pth)) @@ -85,12 +100,6 @@ class SmileActivity(activity.Activity): self.chooserscreen.show_all() print 'choosebundle done' - def set_smil(self, widget): - print self.entry.get_text() - pth = BASE / self.entry.get_text() - print 'pth=', pth - self.start_smil(pth) - def read_file(self, file_path): print 'read_file:', file_path filepath = path(file_path) @@ -150,6 +159,94 @@ class SmileActivity(activity.Activity): src = filepath dst = BUNDLEPATH / 'image.bmp' path.copy(src, dst) + elif filepath.ext == '.ogg' or filepath.ext == '.oga': + self.doc = 'audioogg.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'audio.ogg' + path.copy(src, dst) + elif filepath.ext == '.m4a': + self.doc = 'audiom4a.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'audio.m4a' + path.copy(src, dst) + elif filepath.ext == '.mp3': + self.doc = 'audiomp3.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'audio.mp3' + path.copy(src, dst) + elif filepath.ext == '.wav': + self.doc = 'audiowav.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'audio.wav' + path.copy(src, dst) + elif filepath.ext == '.wma': + self.doc = 'audiowma.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'audio.wma' + path.copy(src, dst) + elif filepath.ext == '.mpg': + self.doc = 'videompg.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'video.mpg' + path.copy(src, dst) + elif filepath.ext == '.mov': + self.doc = 'videomov.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'video.mov' + path.copy(src, dst) + elif filepath.ext == '.wmv': + self.doc = 'videowmv.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'video.wmv' + path.copy(src, dst) + elif filepath.ext == '.avi': + self.doc = 'videoavi.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'video.avi' + path.copy(src, dst) + elif filepath.ext == '.ogg': + self.doc = 'videoogg.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'video.ogg' + path.copy(src, dst) + elif filepath.ext == '.mp4': + self.doc = 'videomp4.smil' + src = SMILPATH / self.doc + dst = BUNDLEPATH + path.copy(src, dst) + src = filepath + dst = BUNDLEPATH / 'video.mp4' + path.copy(src, dst) elif filepath.ext == '.smxo': z = zipfile.ZipFile(file_path, "r") for i in z.infolist(): @@ -173,7 +270,9 @@ class SmileActivity(activity.Activity): else: print 'unknown extension', filepath.ext, filepath #play smil document + self.entry.set_text(self.doc) self.start_smil(BUNDLEPATH / self.doc) + self.play_cb(self.doc) def start_smil(self, pth): self.set_canvas(self.playerscreen) @@ -184,10 +283,12 @@ class SmileActivity(activity.Activity): def on_activated(self, widget, row, col): print 'smxo on_activated' model = widget.get_model() - print 'row', model[row][0], model[row][1], model[row][2] + print 'row', model[row] title = model[row][1] - timestamp = model[row][2] + mime_type = model[row][2] + timestamp = model[row][3] object = datastore.get(model[row][0]) + object.destroy() fn = object.file_path print 'object filename', path(fn).exists(), fn #open slideshow, set Navigation toolbar current @@ -195,15 +296,18 @@ class SmileActivity(activity.Activity): class SelectToolBar(gtk.Toolbar): - def __init__(self, chooser, play_cb, entry, choosebundle, destroy): + def __init__(self, activity): gtk.Toolbar.__init__(self) - self.chooser = chooser + self.chooser = activity.chooser + entry = activity.entry + choosebundle = activity.choosebundle + set_exit = activity.set_exit #get mount points ds_mounts = datastore.mounts() pendrive = -1 for i in range(0, len(ds_mounts), 1): - print 'mount', i, ds_mounts[i]['uri'], ds_mounts[i]['title'], ds_mounts[i]['id'] + print 'mount', i, ds_mounts[i] if ds_mounts[i]['uri'].find('datastore') > 0: journal = i else: @@ -225,21 +329,26 @@ class SelectToolBar(gtk.Toolbar): self.show() self.playbutton = ToolButton('gtk-media-play') - self.playbutton.connect('clicked', play_cb) + self.playbutton.connect('clicked', activity.play_cb) self.playbutton.show() self.insert(self.playbutton, -1) + self.pausebutton = ToolButton('gtk-media-pause') + self.pausebutton.connect('clicked', activity.pause_cb) + self.pausebutton.show() + self.insert(self.pausebutton, -1) + + self.stopbutton = ToolButton('gtk-media-stop') + self.playbutton.connect('clicked', activity.stop_cb) + self.stopbutton.show() + self.insert(self.stopbutton, -1) + self.toolitem = gtk.ToolItem() self.toolitem.set_expand(True) self.toolitem.show() self.toolitem.add(entry) self.insert(self.toolitem, -1) - self.quitbutton = ToolButton('ooops') - self.quitbutton.connect('clicked', destroy) - self.quitbutton.show() - self.insert(self.quitbutton, -1) - def choosebundle(self, widget, source, pth): treeview = self.chooser.get_treeView() treeview.set_model(self.chooser.set_store(source, pth)) @@ -270,17 +379,21 @@ class Smxoview(gtk.VBox): column.set_sort_column_id(1) treeView.append_column(column) rendererText = gtk.CellRendererText() - column = gtk.TreeViewColumn("Date", rendererText, text=2) - column.set_sort_order(gtk.SORT_DESCENDING) + column = gtk.TreeViewColumn("Media", rendererText, text=2) column.set_sort_column_id(2) treeView.append_column(column) + rendererText = gtk.CellRendererText() + column = gtk.TreeViewColumn("Date", rendererText, text=3) + column.set_sort_order(gtk.SORT_DESCENDING) + column.set_sort_column_id(3) + treeView.append_column(column) def get_treeView(self): return self.treeView def set_store(self, mountpoint, pth): print 'set_store', mountpoint, pth - store = gtk.ListStore(str, str, str) + store = gtk.ListStore(str, str, str, str) #get objects from the local datastore media_list = [] media_list.append('application/x-smile') @@ -290,17 +403,23 @@ class Smxoview(gtk.VBox): media_list.append('image/bmp') media_list.append('image/gif') media_list.append('image/tiff') + media_list.append('audio/mp4') + media_list.append('application/ogg') + media_list.append('audio/mpeg') + media_list.append('audio/x-wav') + media_list.append('audio/x-ms-wma') + media_list.append('video/mpeg') + media_list.append('video/quicktime') + media_list.append('video/x-ms-wmv') + media_list.append('video/x-msvideo') + media_list.append('video/mp4') 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'] - try: - t = f.metadata['timestamp'] - except: - t = 0 - #timestamp = datetime.fromtimestamp(t) - timestamp = t - store.append([object, title, timestamp]) + mime_type = f.metadata['mime_type'] + date = f.metadata['mtime'].replace('T',' ') + store.append([object, title, mime_type, date]) f.destroy() print 'return smxo store', len(store) return store -- cgit v0.9.1