From 12b224983b3b2638a9f03391ea23bbb8d96824c1 Mon Sep 17 00:00:00 2001 From: Tony Anderson Date: Tue, 07 Jul 2009 10:28:55 +0000 Subject: save deck title --- diff --git a/Readme b/Readme index 4e62542..4e62542 100644..100755 --- a/Readme +++ b/Readme diff --git a/activity/old.svg b/activity/old.svg new file mode 100755 index 0000000..d57facb --- /dev/null +++ b/activity/old.svg @@ -0,0 +1,431 @@ + + +image/svg+xml + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/activity/showntell-activity.svg b/activity/showntell-activity.svg index d57facb..0342378 100755 --- a/activity/showntell-activity.svg +++ b/activity/showntell-activity.svg @@ -1,431 +1,14 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - \ No newline at end of file + + +]> + + + + + + + + + + diff --git a/cpxoview.py b/cpxoview.py index 6300d5c..5ceb547 100755..100644 --- a/cpxoview.py +++ b/cpxoview.py @@ -11,9 +11,10 @@ import sys, os import gtk +from sugar.activity import activity from sugar.datastore import datastore from path import path - +from time import strftime class Cpxoview(gtk.VBox): def __init__(self, activity, deck): @@ -53,26 +54,35 @@ class Cpxoview(gtk.VBox): def get_treeView(self): return self.treeView - def set_store(self): - print 'set_store' + def set_store(self, src): + print 'set_store', src store = gtk.ListStore(str, str, str) #get objects from the local datastore - ds_objects, num_objects = datastore.find({'mime_type':['application/x-classroompresenter']}) - for f in ds_objects: - try: - title = f.metadata['title'] - except: - title = "" - try: - description = f.metadata['description'] - except: - description = '' - try: - timestamp = f.metadata['timestamp'] - except: - timestamp = "0" - store.append([title, description, timestamp]) - f.destroy() + if src == "datastore": + ds_objects, num_objects = datastore.find({'mime_type':['application/x-classroompresenter']}) + for f in ds_objects: + try: + title = f.metadata['title'] + except: + title = "" + try: + description = f.metadata['description'] + except: + description = '' + try: + t = int(f.metadata['timestamp']) + except: + t = "0" + #tstamp = strftime("%a, %b, %Y %H %M", t) + store.append([title, description, t]) + f.destroy() + elif src == "activity": + #source is activity bundle + srcdir = path(activity.get_bundle_path()) / 'resources' / 'Presentations' + for f in srcdir.files('*.cpxo'): + store.append([f.name, "", f.getctime()]) + else: + print 'error in src', src print 'return cpxo store' return store @@ -85,20 +95,19 @@ class Cpxoview(gtk.VBox): description = model[row][1] timestamp = model[row][2] print 'search for', title, description, timestamp - if int(timestamp) > 0: + if len(str(timestamp)) > 1: ds_objects, num_objects = datastore.find({'title':[title], 'timestamp':[timestamp]}) else: ds_objects, num_objects = datastore.find({'title':[title], 'description': [description]}) if num_objects > 0: object = ds_objects[0] else: - print 'datastore find failed', f + print 'datastore find failed', num_objects, str(timestamp) + return fn = object.file_path print 'object filename', path(fn).exists(), fn #open slideshow, set Navigation toolbar current self.activity.read_file(fn) for object in ds_objects: object.destroy() - self.activity.set_screen(2) - - + self.activity.set_screen(0) diff --git a/icons/gtk-media-play.svg b/icons/gtk-media-play.svg new file mode 100755 index 0000000..e2e0051 --- /dev/null +++ b/icons/gtk-media-play.svg @@ -0,0 +1,15 @@ + + +]> + + + + + + + + + + + \ No newline at end of file diff --git a/icons/gtk-media-record.svg b/icons/gtk-media-record.svg new file mode 100755 index 0000000..0adb08f --- /dev/null +++ b/icons/gtk-media-record.svg @@ -0,0 +1,6 @@ + + +]> + + \ No newline at end of file diff --git a/icons/help-button.svg b/icons/help-button.svg new file mode 100755 index 0000000..ed0784b --- /dev/null +++ b/icons/help-button.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/icons/new-slideshow.svg b/icons/new-slideshow.svg new file mode 100755 index 0000000..2bda67c --- /dev/null +++ b/icons/new-slideshow.svg @@ -0,0 +1,462 @@ + + +image/svg+xml + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/icons/new-transparency.svg b/icons/new-transparency.svg new file mode 100755 index 0000000..d607afa --- /dev/null +++ b/icons/new-transparency.svg @@ -0,0 +1,12 @@ + + +]> + + + + + + + + diff --git a/icons/save-transparency.svg b/icons/save-transparency.svg new file mode 100644 index 0000000..aeb532b --- /dev/null +++ b/icons/save-transparency.svg @@ -0,0 +1,22 @@ + + +]> + + + + + + + + + + + + + - --- + --- + - -- - + + + diff --git a/icons/transparency.svg b/icons/transparency.svg new file mode 100644 index 0000000..331d83e --- /dev/null +++ b/icons/transparency.svg @@ -0,0 +1,17 @@ + + +]> + + + + + + + + - - + - + - - + + + diff --git a/listview.py b/listview.py index 20e61be..22086da 100755 --- a/listview.py +++ b/listview.py @@ -57,7 +57,7 @@ class Listview(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':['image/jpg', 'image/png', 'image/svg']}) + ds_objects, num_objects = datastore.find({'mountpoints':[mountpoint], 'mime_type':['image/jpg', 'image/png', 'image/svg', 'image/jpeg']}) for f in ds_objects: try: title = f.metadata['title'] @@ -72,6 +72,7 @@ class Listview(gtk.VBox): except: timestamp = "0" store.append([title, mime_type, timestamp]) + print 'store.append', title, mime_type, timestamp f.destroy() return store diff --git a/makeogg.sh b/makeogg.sh new file mode 100755 index 0000000..e38d40a --- /dev/null +++ b/makeogg.sh @@ -0,0 +1 @@ +gst-launch-0.10 filesrc location=/tmp/temp.wav ! wavparse ! vorbisenc ! filesink location = /tmp/temp.ogg diff --git a/playwav.sh b/playwav.sh new file mode 100755 index 0000000..4cd8561 --- /dev/null +++ b/playwav.sh @@ -0,0 +1 @@ +gst-launch-0.10 filesrc location=/tmp/temp.wav ! wavparse ! alsasink diff --git a/resources/bepictures/ant.jpg b/resources/bepictures/ant.jpg new file mode 100755 index 0000000..ccd9805 --- /dev/null +++ b/resources/bepictures/ant.jpg Binary files differ diff --git a/resources/bepictures/ball.jpg b/resources/bepictures/ball.jpg new file mode 100755 index 0000000..34c932d --- /dev/null +++ b/resources/bepictures/ball.jpg Binary files differ diff --git a/resources/bepictures/cow.jpg b/resources/bepictures/cow.jpg new file mode 100755 index 0000000..4669884 --- /dev/null +++ b/resources/bepictures/cow.jpg Binary files differ diff --git a/resources/bepictures/deck.xml b/resources/bepictures/deck.xml new file mode 100644 index 0000000..4bae17f --- /dev/null +++ b/resources/bepictures/deck.xml @@ -0,0 +1,69 @@ + + BEPictures2 + + title.html + + title_thumb.png + slide0.ogg + 972166706;0.0,0.0,1.0;4#627,371;627,371; + + ant.jpg + slide1_thumb.png + slide1.ogg + + + ball.jpg + slide2_thumb.png + slide2.ogg + + + foot.jpg + slide3_thumb.png + slide3.ogg + + + hand.jpg + slide4_thumb.png + slide4.ogg + + + spoon.jpg + slide5_thumb.png + slide5.ogg + + + tongue.jpg + slide6_thumb.png + slide6.ogg + + + cow.jpg + slide7_thumb.png + slide7.ogg + + + fork.jpg + slide8_thumb.png + slide8.ogg + + + shoe.jpg + slide9_thumb.png + slide9.ogg + + + train.jpg + slide10_thumb.png + slide10.ogg + + + watch.jpg + slide11_thumb.png + slide11.ogg + + + window.jpg + slide12_thumb.png + slide12.ogg + + diff --git a/resources/bepictures/foot.jpg b/resources/bepictures/foot.jpg new file mode 100755 index 0000000..540782b --- /dev/null +++ b/resources/bepictures/foot.jpg Binary files differ diff --git a/resources/bepictures/fork.jpg b/resources/bepictures/fork.jpg new file mode 100755 index 0000000..cbafd1e --- /dev/null +++ b/resources/bepictures/fork.jpg Binary files differ diff --git a/resources/bepictures/hand.jpg b/resources/bepictures/hand.jpg new file mode 100755 index 0000000..38d2c76 --- /dev/null +++ b/resources/bepictures/hand.jpg Binary files differ diff --git a/resources/bepictures/shoe.jpg b/resources/bepictures/shoe.jpg new file mode 100755 index 0000000..ac2e3f0 --- /dev/null +++ b/resources/bepictures/shoe.jpg Binary files differ diff --git a/resources/bepictures/slide0.ogg b/resources/bepictures/slide0.ogg new file mode 100755 index 0000000..7104aeb --- /dev/null +++ b/resources/bepictures/slide0.ogg Binary files differ diff --git a/resources/bepictures/slide0_thumb.png b/resources/bepictures/slide0_thumb.png new file mode 100755 index 0000000..81533b9 --- /dev/null +++ b/resources/bepictures/slide0_thumb.png Binary files differ diff --git a/resources/bepictures/slide1.ogg b/resources/bepictures/slide1.ogg new file mode 100755 index 0000000..571ac04 --- /dev/null +++ b/resources/bepictures/slide1.ogg Binary files differ diff --git a/resources/bepictures/slide1_thumb.png b/resources/bepictures/slide1_thumb.png new file mode 100755 index 0000000..2cce5b3 --- /dev/null +++ b/resources/bepictures/slide1_thumb.png Binary files differ diff --git a/resources/bepictures/slide2.ogg b/resources/bepictures/slide2.ogg new file mode 100755 index 0000000..4592f89 --- /dev/null +++ b/resources/bepictures/slide2.ogg Binary files differ diff --git a/resources/bepictures/slide2_thumb.png b/resources/bepictures/slide2_thumb.png new file mode 100755 index 0000000..c175fac --- /dev/null +++ b/resources/bepictures/slide2_thumb.png Binary files differ diff --git a/resources/bepictures/slide3.ogg b/resources/bepictures/slide3.ogg new file mode 100755 index 0000000..74c6af0 --- /dev/null +++ b/resources/bepictures/slide3.ogg Binary files differ diff --git a/resources/bepictures/slide3_thumb.png b/resources/bepictures/slide3_thumb.png new file mode 100755 index 0000000..ee3f576 --- /dev/null +++ b/resources/bepictures/slide3_thumb.png Binary files differ diff --git a/resources/bepictures/slide4.ogg b/resources/bepictures/slide4.ogg new file mode 100755 index 0000000..beb8d3c --- /dev/null +++ b/resources/bepictures/slide4.ogg Binary files differ diff --git a/resources/bepictures/slide4_thumb.png b/resources/bepictures/slide4_thumb.png new file mode 100755 index 0000000..8d077b3 --- /dev/null +++ b/resources/bepictures/slide4_thumb.png Binary files differ diff --git a/resources/bepictures/slide5.ogg b/resources/bepictures/slide5.ogg new file mode 100755 index 0000000..ce5713a --- /dev/null +++ b/resources/bepictures/slide5.ogg Binary files differ diff --git a/resources/bepictures/slide5_thumb.png b/resources/bepictures/slide5_thumb.png new file mode 100755 index 0000000..2d43584 --- /dev/null +++ b/resources/bepictures/slide5_thumb.png Binary files differ diff --git a/resources/bepictures/slide6.ogg b/resources/bepictures/slide6.ogg new file mode 100755 index 0000000..89e8a3d --- /dev/null +++ b/resources/bepictures/slide6.ogg Binary files differ diff --git a/resources/bepictures/slide6_thumb.png b/resources/bepictures/slide6_thumb.png new file mode 100755 index 0000000..09fdaab --- /dev/null +++ b/resources/bepictures/slide6_thumb.png Binary files differ diff --git a/resources/bepictures/slide7.ogg b/resources/bepictures/slide7.ogg new file mode 100755 index 0000000..6e1554e --- /dev/null +++ b/resources/bepictures/slide7.ogg Binary files differ diff --git a/resources/bepictures/slide7_thumb.png b/resources/bepictures/slide7_thumb.png new file mode 100755 index 0000000..dc0c9cb --- /dev/null +++ b/resources/bepictures/slide7_thumb.png Binary files differ diff --git a/resources/bepictures/slide8.ogg b/resources/bepictures/slide8.ogg new file mode 100755 index 0000000..e4af294 --- /dev/null +++ b/resources/bepictures/slide8.ogg Binary files differ diff --git a/resources/bepictures/slide8_thumb.png b/resources/bepictures/slide8_thumb.png new file mode 100755 index 0000000..5c7b03f --- /dev/null +++ b/resources/bepictures/slide8_thumb.png Binary files differ diff --git a/resources/bepictures/slide9.ogg b/resources/bepictures/slide9.ogg new file mode 100755 index 0000000..27f26d9 --- /dev/null +++ b/resources/bepictures/slide9.ogg Binary files differ diff --git a/resources/bepictures/slide9_thumb.png b/resources/bepictures/slide9_thumb.png new file mode 100755 index 0000000..0b55c8b --- /dev/null +++ b/resources/bepictures/slide9_thumb.png Binary files differ diff --git a/resources/bepictures/spoon.jpg b/resources/bepictures/spoon.jpg new file mode 100755 index 0000000..2b17a94 --- /dev/null +++ b/resources/bepictures/spoon.jpg Binary files differ diff --git a/resources/bepictures/title.html b/resources/bepictures/title.html new file mode 100755 index 0000000..5ce5988 --- /dev/null +++ b/resources/bepictures/title.html @@ -0,0 +1,22 @@ + + + + +

 

+

 

+
+

BE-pictures

+
+

 

+

 

+

 

+

 

+

 

+

 

+

 

+

 

+
+

Sat, Jun 27, 2009 11:49

+
+ + diff --git a/resources/bepictures/title_thumb.png b/resources/bepictures/title_thumb.png new file mode 100755 index 0000000..5d5361f --- /dev/null +++ b/resources/bepictures/title_thumb.png Binary files differ diff --git a/resources/bepictures/tongue.jpg b/resources/bepictures/tongue.jpg new file mode 100755 index 0000000..9632d92 --- /dev/null +++ b/resources/bepictures/tongue.jpg Binary files differ diff --git a/resources/bepictures/train.jpg b/resources/bepictures/train.jpg new file mode 100755 index 0000000..035c31e --- /dev/null +++ b/resources/bepictures/train.jpg Binary files differ diff --git a/resources/bepictures/watch.jpg b/resources/bepictures/watch.jpg new file mode 100755 index 0000000..4c02e92 --- /dev/null +++ b/resources/bepictures/watch.jpg Binary files differ diff --git a/resources/bepictures/window.jpg b/resources/bepictures/window.jpg new file mode 100755 index 0000000..a06f77b --- /dev/null +++ b/resources/bepictures/window.jpg Binary files differ diff --git a/resources/deck.xml b/resources/deck.xml new file mode 100755 index 0000000..b8456a0 --- /dev/null +++ b/resources/deck.xml @@ -0,0 +1,9 @@ + + + New + + title.html + + title_thumb.png + + diff --git a/resources/deck/deck.xml b/resources/deck/deck.xml new file mode 100755 index 0000000..3fba156 --- /dev/null +++ b/resources/deck/deck.xml @@ -0,0 +1,15 @@ + + OLENepal + + title.html + + title_thumb.png + slide0.ogg + + + image-2.jpg + + slide1_thumb.png + slide1.ogg + + diff --git a/resources/deck/image-1.jpg b/resources/deck/image-1.jpg new file mode 100755 index 0000000..b43236a --- /dev/null +++ b/resources/deck/image-1.jpg Binary files differ diff --git a/resources/deck/image-10.jpg b/resources/deck/image-10.jpg new file mode 100755 index 0000000..25fa453 --- /dev/null +++ b/resources/deck/image-10.jpg Binary files differ diff --git a/resources/deck/image-11.jpg b/resources/deck/image-11.jpg new file mode 100755 index 0000000..8abf93c --- /dev/null +++ b/resources/deck/image-11.jpg Binary files differ diff --git a/resources/deck/image-13.jpg b/resources/deck/image-13.jpg new file mode 100755 index 0000000..5844df8 --- /dev/null +++ b/resources/deck/image-13.jpg Binary files differ diff --git a/resources/deck/image-14.jpg b/resources/deck/image-14.jpg new file mode 100755 index 0000000..61b4245 --- /dev/null +++ b/resources/deck/image-14.jpg Binary files differ diff --git a/resources/deck/image-15.jpg b/resources/deck/image-15.jpg new file mode 100755 index 0000000..f438669 --- /dev/null +++ b/resources/deck/image-15.jpg Binary files differ diff --git a/resources/deck/image-16.jpg b/resources/deck/image-16.jpg new file mode 100755 index 0000000..5b8b7b7 --- /dev/null +++ b/resources/deck/image-16.jpg Binary files differ diff --git a/resources/deck/image-17.jpg b/resources/deck/image-17.jpg new file mode 100755 index 0000000..6efe4f6 --- /dev/null +++ b/resources/deck/image-17.jpg Binary files differ diff --git a/resources/deck/image-18.jpg b/resources/deck/image-18.jpg new file mode 100755 index 0000000..10eb6c1 --- /dev/null +++ b/resources/deck/image-18.jpg Binary files differ diff --git a/resources/deck/image-19.jpg b/resources/deck/image-19.jpg new file mode 100755 index 0000000..e510df5 --- /dev/null +++ b/resources/deck/image-19.jpg Binary files differ diff --git a/resources/deck/image-2.jpg b/resources/deck/image-2.jpg new file mode 100755 index 0000000..feaec93 --- /dev/null +++ b/resources/deck/image-2.jpg Binary files differ diff --git a/resources/deck/image-20.jpg b/resources/deck/image-20.jpg new file mode 100755 index 0000000..77f1044 --- /dev/null +++ b/resources/deck/image-20.jpg Binary files differ diff --git a/resources/deck/image-22.jpg b/resources/deck/image-22.jpg new file mode 100755 index 0000000..9cd1fdb --- /dev/null +++ b/resources/deck/image-22.jpg Binary files differ diff --git a/resources/deck/image-23.jpg b/resources/deck/image-23.jpg new file mode 100755 index 0000000..73bef1a --- /dev/null +++ b/resources/deck/image-23.jpg Binary files differ diff --git a/resources/deck/image-24.jpg b/resources/deck/image-24.jpg new file mode 100755 index 0000000..758cb03 --- /dev/null +++ b/resources/deck/image-24.jpg Binary files differ diff --git a/resources/deck/image-25.jpg b/resources/deck/image-25.jpg new file mode 100755 index 0000000..ed75598 --- /dev/null +++ b/resources/deck/image-25.jpg Binary files differ diff --git a/resources/deck/image-26.jpg b/resources/deck/image-26.jpg new file mode 100755 index 0000000..cf66932 --- /dev/null +++ b/resources/deck/image-26.jpg Binary files differ diff --git a/resources/deck/image-27.jpg b/resources/deck/image-27.jpg new file mode 100755 index 0000000..ea26f40 --- /dev/null +++ b/resources/deck/image-27.jpg Binary files differ diff --git a/resources/deck/image-3.jpg b/resources/deck/image-3.jpg new file mode 100755 index 0000000..4edb0db --- /dev/null +++ b/resources/deck/image-3.jpg Binary files differ diff --git a/resources/deck/image-4.jpg b/resources/deck/image-4.jpg new file mode 100755 index 0000000..36a17f1 --- /dev/null +++ b/resources/deck/image-4.jpg Binary files differ diff --git a/resources/deck/image-5.jpg b/resources/deck/image-5.jpg new file mode 100755 index 0000000..a11f35d --- /dev/null +++ b/resources/deck/image-5.jpg Binary files differ diff --git a/resources/deck/image-6.jpg b/resources/deck/image-6.jpg new file mode 100755 index 0000000..fcfb1c6 --- /dev/null +++ b/resources/deck/image-6.jpg Binary files differ diff --git a/resources/deck/image-7.jpg b/resources/deck/image-7.jpg new file mode 100755 index 0000000..69e6d35 --- /dev/null +++ b/resources/deck/image-7.jpg Binary files differ diff --git a/resources/deck/image-9.jpg b/resources/deck/image-9.jpg new file mode 100755 index 0000000..603913b --- /dev/null +++ b/resources/deck/image-9.jpg Binary files differ diff --git a/resources/deck/slide1.ogg b/resources/deck/slide1.ogg new file mode 100755 index 0000000..571ac04 --- /dev/null +++ b/resources/deck/slide1.ogg Binary files differ diff --git a/resources/deck/slide10_thumb.png b/resources/deck/slide10_thumb.png new file mode 100755 index 0000000..eca82f2 --- /dev/null +++ b/resources/deck/slide10_thumb.png Binary files differ diff --git a/resources/deck/slide11_thumb.png b/resources/deck/slide11_thumb.png new file mode 100755 index 0000000..6bb18fa --- /dev/null +++ b/resources/deck/slide11_thumb.png Binary files differ diff --git a/resources/deck/slide12_thumb.png b/resources/deck/slide12_thumb.png new file mode 100755 index 0000000..2fa459c --- /dev/null +++ b/resources/deck/slide12_thumb.png Binary files differ diff --git a/resources/deck/slide13_thumb.png b/resources/deck/slide13_thumb.png new file mode 100755 index 0000000..5212ec9 --- /dev/null +++ b/resources/deck/slide13_thumb.png Binary files differ diff --git a/resources/deck/slide14_thumb.png b/resources/deck/slide14_thumb.png new file mode 100755 index 0000000..a00a8fe --- /dev/null +++ b/resources/deck/slide14_thumb.png Binary files differ diff --git a/resources/deck/slide15_thumb.png b/resources/deck/slide15_thumb.png new file mode 100755 index 0000000..4c886dd --- /dev/null +++ b/resources/deck/slide15_thumb.png Binary files differ diff --git a/resources/deck/slide16_thumb.png b/resources/deck/slide16_thumb.png new file mode 100755 index 0000000..f3a14fe --- /dev/null +++ b/resources/deck/slide16_thumb.png Binary files differ diff --git a/resources/deck/slide17_thumb.png b/resources/deck/slide17_thumb.png new file mode 100755 index 0000000..ed6a8f1 --- /dev/null +++ b/resources/deck/slide17_thumb.png Binary files differ diff --git a/resources/deck/slide18_thumb.png b/resources/deck/slide18_thumb.png new file mode 100755 index 0000000..56686de --- /dev/null +++ b/resources/deck/slide18_thumb.png Binary files differ diff --git a/resources/deck/slide19_thumb.png b/resources/deck/slide19_thumb.png new file mode 100755 index 0000000..d07294b --- /dev/null +++ b/resources/deck/slide19_thumb.png Binary files differ diff --git a/resources/deck/slide1_thumb.png b/resources/deck/slide1_thumb.png new file mode 100755 index 0000000..527dc21 --- /dev/null +++ b/resources/deck/slide1_thumb.png Binary files differ diff --git a/resources/deck/slide2.ogg b/resources/deck/slide2.ogg new file mode 100755 index 0000000..4592f89 --- /dev/null +++ b/resources/deck/slide2.ogg Binary files differ diff --git a/resources/deck/slide20_thumb.png b/resources/deck/slide20_thumb.png new file mode 100755 index 0000000..ce7e1ca --- /dev/null +++ b/resources/deck/slide20_thumb.png Binary files differ diff --git a/resources/deck/slide21_thumb.png b/resources/deck/slide21_thumb.png new file mode 100755 index 0000000..12a033a --- /dev/null +++ b/resources/deck/slide21_thumb.png Binary files differ diff --git a/resources/deck/slide22_thumb.png b/resources/deck/slide22_thumb.png new file mode 100755 index 0000000..7e2198d --- /dev/null +++ b/resources/deck/slide22_thumb.png Binary files differ diff --git a/resources/deck/slide23_thumb.png b/resources/deck/slide23_thumb.png new file mode 100755 index 0000000..4bf40af --- /dev/null +++ b/resources/deck/slide23_thumb.png Binary files differ diff --git a/resources/deck/slide24_thumb.png b/resources/deck/slide24_thumb.png new file mode 100755 index 0000000..ff5bd8e --- /dev/null +++ b/resources/deck/slide24_thumb.png Binary files differ diff --git a/resources/deck/slide2_thumb.png b/resources/deck/slide2_thumb.png new file mode 100755 index 0000000..48a0872 --- /dev/null +++ b/resources/deck/slide2_thumb.png Binary files differ diff --git a/resources/deck/slide3.ogg b/resources/deck/slide3.ogg new file mode 100755 index 0000000..74c6af0 --- /dev/null +++ b/resources/deck/slide3.ogg Binary files differ diff --git a/resources/deck/slide3_thumb.png b/resources/deck/slide3_thumb.png new file mode 100755 index 0000000..9966c00 --- /dev/null +++ b/resources/deck/slide3_thumb.png Binary files differ diff --git a/resources/deck/slide4.ogg b/resources/deck/slide4.ogg new file mode 100755 index 0000000..beb8d3c --- /dev/null +++ b/resources/deck/slide4.ogg Binary files differ diff --git a/resources/deck/slide4_thumb.png b/resources/deck/slide4_thumb.png new file mode 100755 index 0000000..09ea0f7 --- /dev/null +++ b/resources/deck/slide4_thumb.png Binary files differ diff --git a/resources/deck/slide5.ogg b/resources/deck/slide5.ogg new file mode 100755 index 0000000..ce5713a --- /dev/null +++ b/resources/deck/slide5.ogg Binary files differ diff --git a/resources/deck/slide5_thumb.png b/resources/deck/slide5_thumb.png new file mode 100755 index 0000000..bd19bb7 --- /dev/null +++ b/resources/deck/slide5_thumb.png Binary files differ diff --git a/resources/deck/slide6.ogg b/resources/deck/slide6.ogg new file mode 100755 index 0000000..89e8a3d --- /dev/null +++ b/resources/deck/slide6.ogg Binary files differ diff --git a/resources/deck/slide6_thumb.png b/resources/deck/slide6_thumb.png new file mode 100755 index 0000000..1c1b3c5 --- /dev/null +++ b/resources/deck/slide6_thumb.png Binary files differ diff --git a/resources/deck/slide7.ogg b/resources/deck/slide7.ogg new file mode 100755 index 0000000..6e1554e --- /dev/null +++ b/resources/deck/slide7.ogg Binary files differ diff --git a/resources/deck/slide7_thumb.png b/resources/deck/slide7_thumb.png new file mode 100755 index 0000000..3321f39 --- /dev/null +++ b/resources/deck/slide7_thumb.png Binary files differ diff --git a/resources/deck/slide8.ogg b/resources/deck/slide8.ogg new file mode 100755 index 0000000..e4af294 --- /dev/null +++ b/resources/deck/slide8.ogg Binary files differ diff --git a/resources/deck/slide8_thumb.png b/resources/deck/slide8_thumb.png new file mode 100755 index 0000000..1f29151 --- /dev/null +++ b/resources/deck/slide8_thumb.png Binary files differ diff --git a/resources/deck/slide9.ogg b/resources/deck/slide9.ogg new file mode 100755 index 0000000..27f26d9 --- /dev/null +++ b/resources/deck/slide9.ogg Binary files differ diff --git a/resources/deck/slide9_thumb.png b/resources/deck/slide9_thumb.png new file mode 100755 index 0000000..eb84f27 --- /dev/null +++ b/resources/deck/slide9_thumb.png Binary files differ diff --git a/resources/deck/title.html b/resources/deck/title.html new file mode 100755 index 0000000..fe261ae --- /dev/null +++ b/resources/deck/title.html @@ -0,0 +1,22 @@ + + + + +

 

+

 

+
+

OLENepal

+
+

 

+

 

+

 

+

 

+

 

+

 

+

 

+

 

+
+

Tue, Jun 23, 2009 21:11

+
+ + diff --git a/resources/deck/title_thumb.png b/resources/deck/title_thumb.png new file mode 100755 index 0000000..5d5361f --- /dev/null +++ b/resources/deck/title_thumb.png Binary files differ diff --git a/resources/help.cpxo b/resources/help.cpxo new file mode 100755 index 0000000..67ce1fe --- /dev/null +++ b/resources/help.cpxo Binary files differ diff --git a/resources/new.cpxo b/resources/new.cpxo index 1cefb2d..188fe22 100755 --- a/resources/new.cpxo +++ b/resources/new.cpxo Binary files differ diff --git a/resources/olenepal/9cef63ae-ec86-49a9-b7f0-904e9d1b4dc0.png b/resources/olenepal/9cef63ae-ec86-49a9-b7f0-904e9d1b4dc0.png new file mode 100755 index 0000000..b631f5a --- /dev/null +++ b/resources/olenepal/9cef63ae-ec86-49a9-b7f0-904e9d1b4dc0.png Binary files differ diff --git a/resources/olenepal/cdfebcc4-d9b4-441f-95a2-4140b12adcdb.png b/resources/olenepal/cdfebcc4-d9b4-441f-95a2-4140b12adcdb.png new file mode 100755 index 0000000..09dda15 --- /dev/null +++ b/resources/olenepal/cdfebcc4-d9b4-441f-95a2-4140b12adcdb.png Binary files differ diff --git a/resources/olenepal/deck.xml b/resources/olenepal/deck.xml new file mode 100755 index 0000000..f248f99 --- /dev/null +++ b/resources/olenepal/deck.xml @@ -0,0 +1,69 @@ + + OLENepal + + title.html + + title_thumb.png + slide0.ogg + + + image-2.jpg + + slide1_thumb.png + slide1.ogg + + + image-3.jpg + + slide2_thumb.png + slide2.ogg + + + image-4.jpg + + slide3_thumb.png + slide3.ogg + + + image-5.jpg + + slide4_thumb.png + slide4.ogg + + + image-6.jpg + + slide5_thumb.png + slide5.ogg + + + image-13.jpg + + slide6_thumb.png + slide6.ogg + + + image-17.jpg + + slide7_thumb.png + slide7.ogg + + + image-18.jpg + + slide8_thumb.png + slide8.ogg + + + image-19.jpg + + slide9_thumb.png + slide9.ogg + + + image-20.jpg + + slide10_thumb.png + slide10.ogg + + diff --git a/resources/olenepal/different2.png b/resources/olenepal/different2.png new file mode 100755 index 0000000..78411b3 --- /dev/null +++ b/resources/olenepal/different2.png Binary files differ diff --git a/resources/olenepal/different3.png b/resources/olenepal/different3.png new file mode 100755 index 0000000..4119605 --- /dev/null +++ b/resources/olenepal/different3.png Binary files differ diff --git a/resources/olenepal/image-1.jpg b/resources/olenepal/image-1.jpg new file mode 100755 index 0000000..b43236a --- /dev/null +++ b/resources/olenepal/image-1.jpg Binary files differ diff --git a/resources/olenepal/image-10.jpg b/resources/olenepal/image-10.jpg new file mode 100755 index 0000000..25fa453 --- /dev/null +++ b/resources/olenepal/image-10.jpg Binary files differ diff --git a/resources/olenepal/image-11.jpg b/resources/olenepal/image-11.jpg new file mode 100755 index 0000000..8abf93c --- /dev/null +++ b/resources/olenepal/image-11.jpg Binary files differ diff --git a/resources/olenepal/image-13.jpg b/resources/olenepal/image-13.jpg new file mode 100755 index 0000000..5844df8 --- /dev/null +++ b/resources/olenepal/image-13.jpg Binary files differ diff --git a/resources/olenepal/image-14.jpg b/resources/olenepal/image-14.jpg new file mode 100755 index 0000000..61b4245 --- /dev/null +++ b/resources/olenepal/image-14.jpg Binary files differ diff --git a/resources/olenepal/image-15.jpg b/resources/olenepal/image-15.jpg new file mode 100755 index 0000000..f438669 --- /dev/null +++ b/resources/olenepal/image-15.jpg Binary files differ diff --git a/resources/olenepal/image-16.jpg b/resources/olenepal/image-16.jpg new file mode 100755 index 0000000..5b8b7b7 --- /dev/null +++ b/resources/olenepal/image-16.jpg Binary files differ diff --git a/resources/olenepal/image-17.jpg b/resources/olenepal/image-17.jpg new file mode 100755 index 0000000..6efe4f6 --- /dev/null +++ b/resources/olenepal/image-17.jpg Binary files differ diff --git a/resources/olenepal/image-18.jpg b/resources/olenepal/image-18.jpg new file mode 100755 index 0000000..10eb6c1 --- /dev/null +++ b/resources/olenepal/image-18.jpg Binary files differ diff --git a/resources/olenepal/image-19.jpg b/resources/olenepal/image-19.jpg new file mode 100755 index 0000000..e510df5 --- /dev/null +++ b/resources/olenepal/image-19.jpg Binary files differ diff --git a/resources/olenepal/image-2.jpg b/resources/olenepal/image-2.jpg new file mode 100755 index 0000000..feaec93 --- /dev/null +++ b/resources/olenepal/image-2.jpg Binary files differ diff --git a/resources/olenepal/image-20.jpg b/resources/olenepal/image-20.jpg new file mode 100755 index 0000000..77f1044 --- /dev/null +++ b/resources/olenepal/image-20.jpg Binary files differ diff --git a/resources/olenepal/image-22.jpg b/resources/olenepal/image-22.jpg new file mode 100755 index 0000000..9cd1fdb --- /dev/null +++ b/resources/olenepal/image-22.jpg Binary files differ diff --git a/resources/olenepal/image-23.jpg b/resources/olenepal/image-23.jpg new file mode 100755 index 0000000..73bef1a --- /dev/null +++ b/resources/olenepal/image-23.jpg Binary files differ diff --git a/resources/olenepal/image-24.jpg b/resources/olenepal/image-24.jpg new file mode 100755 index 0000000..758cb03 --- /dev/null +++ b/resources/olenepal/image-24.jpg Binary files differ diff --git a/resources/olenepal/image-25.jpg b/resources/olenepal/image-25.jpg new file mode 100755 index 0000000..ed75598 --- /dev/null +++ b/resources/olenepal/image-25.jpg Binary files differ diff --git a/resources/olenepal/image-26.jpg b/resources/olenepal/image-26.jpg new file mode 100755 index 0000000..cf66932 --- /dev/null +++ b/resources/olenepal/image-26.jpg Binary files differ diff --git a/resources/olenepal/image-27.jpg b/resources/olenepal/image-27.jpg new file mode 100755 index 0000000..ea26f40 --- /dev/null +++ b/resources/olenepal/image-27.jpg Binary files differ diff --git a/resources/olenepal/image-3.jpg b/resources/olenepal/image-3.jpg new file mode 100755 index 0000000..4edb0db --- /dev/null +++ b/resources/olenepal/image-3.jpg Binary files differ diff --git a/resources/olenepal/image-4.jpg b/resources/olenepal/image-4.jpg new file mode 100755 index 0000000..36a17f1 --- /dev/null +++ b/resources/olenepal/image-4.jpg Binary files differ diff --git a/resources/olenepal/image-5.jpg b/resources/olenepal/image-5.jpg new file mode 100755 index 0000000..a11f35d --- /dev/null +++ b/resources/olenepal/image-5.jpg Binary files differ diff --git a/resources/olenepal/image-6.jpg b/resources/olenepal/image-6.jpg new file mode 100755 index 0000000..fcfb1c6 --- /dev/null +++ b/resources/olenepal/image-6.jpg Binary files differ diff --git a/resources/olenepal/image-7.jpg b/resources/olenepal/image-7.jpg new file mode 100755 index 0000000..69e6d35 --- /dev/null +++ b/resources/olenepal/image-7.jpg Binary files differ diff --git a/resources/olenepal/image-9.jpg b/resources/olenepal/image-9.jpg new file mode 100755 index 0000000..603913b --- /dev/null +++ b/resources/olenepal/image-9.jpg Binary files differ diff --git a/resources/olenepal/slide0.ogg b/resources/olenepal/slide0.ogg new file mode 100755 index 0000000..7104aeb --- /dev/null +++ b/resources/olenepal/slide0.ogg Binary files differ diff --git a/resources/olenepal/slide0_thumb.png b/resources/olenepal/slide0_thumb.png new file mode 100755 index 0000000..81533b9 --- /dev/null +++ b/resources/olenepal/slide0_thumb.png Binary files differ diff --git a/resources/olenepal/slide1.ogg b/resources/olenepal/slide1.ogg new file mode 100755 index 0000000..d3eb8ea --- /dev/null +++ b/resources/olenepal/slide1.ogg Binary files differ diff --git a/resources/olenepal/slide10_thumb.png b/resources/olenepal/slide10_thumb.png new file mode 100755 index 0000000..eca82f2 --- /dev/null +++ b/resources/olenepal/slide10_thumb.png Binary files differ diff --git a/resources/olenepal/slide11_thumb.png b/resources/olenepal/slide11_thumb.png new file mode 100755 index 0000000..6bb18fa --- /dev/null +++ b/resources/olenepal/slide11_thumb.png Binary files differ diff --git a/resources/olenepal/slide12_thumb.png b/resources/olenepal/slide12_thumb.png new file mode 100755 index 0000000..2fa459c --- /dev/null +++ b/resources/olenepal/slide12_thumb.png Binary files differ diff --git a/resources/olenepal/slide13_thumb.png b/resources/olenepal/slide13_thumb.png new file mode 100755 index 0000000..5212ec9 --- /dev/null +++ b/resources/olenepal/slide13_thumb.png Binary files differ diff --git a/resources/olenepal/slide14_thumb.png b/resources/olenepal/slide14_thumb.png new file mode 100755 index 0000000..a00a8fe --- /dev/null +++ b/resources/olenepal/slide14_thumb.png Binary files differ diff --git a/resources/olenepal/slide15_thumb.png b/resources/olenepal/slide15_thumb.png new file mode 100755 index 0000000..4c886dd --- /dev/null +++ b/resources/olenepal/slide15_thumb.png Binary files differ diff --git a/resources/olenepal/slide16_thumb.png b/resources/olenepal/slide16_thumb.png new file mode 100755 index 0000000..f3a14fe --- /dev/null +++ b/resources/olenepal/slide16_thumb.png Binary files differ diff --git a/resources/olenepal/slide17_thumb.png b/resources/olenepal/slide17_thumb.png new file mode 100755 index 0000000..ed6a8f1 --- /dev/null +++ b/resources/olenepal/slide17_thumb.png Binary files differ diff --git a/resources/olenepal/slide18_thumb.png b/resources/olenepal/slide18_thumb.png new file mode 100755 index 0000000..56686de --- /dev/null +++ b/resources/olenepal/slide18_thumb.png Binary files differ diff --git a/resources/olenepal/slide19_thumb.png b/resources/olenepal/slide19_thumb.png new file mode 100755 index 0000000..d07294b --- /dev/null +++ b/resources/olenepal/slide19_thumb.png Binary files differ diff --git a/resources/olenepal/slide1_thumb.png b/resources/olenepal/slide1_thumb.png new file mode 100755 index 0000000..527dc21 --- /dev/null +++ b/resources/olenepal/slide1_thumb.png Binary files differ diff --git a/resources/olenepal/slide2.ogg b/resources/olenepal/slide2.ogg new file mode 100755 index 0000000..828606a --- /dev/null +++ b/resources/olenepal/slide2.ogg Binary files differ diff --git a/resources/olenepal/slide20_thumb.png b/resources/olenepal/slide20_thumb.png new file mode 100755 index 0000000..ce7e1ca --- /dev/null +++ b/resources/olenepal/slide20_thumb.png Binary files differ diff --git a/resources/olenepal/slide21_thumb.png b/resources/olenepal/slide21_thumb.png new file mode 100755 index 0000000..12a033a --- /dev/null +++ b/resources/olenepal/slide21_thumb.png Binary files differ diff --git a/resources/olenepal/slide22_thumb.png b/resources/olenepal/slide22_thumb.png new file mode 100755 index 0000000..7e2198d --- /dev/null +++ b/resources/olenepal/slide22_thumb.png Binary files differ diff --git a/resources/olenepal/slide23_thumb.png b/resources/olenepal/slide23_thumb.png new file mode 100755 index 0000000..4bf40af --- /dev/null +++ b/resources/olenepal/slide23_thumb.png Binary files differ diff --git a/resources/olenepal/slide24_thumb.png b/resources/olenepal/slide24_thumb.png new file mode 100755 index 0000000..ff5bd8e --- /dev/null +++ b/resources/olenepal/slide24_thumb.png Binary files differ diff --git a/resources/olenepal/slide2_thumb.png b/resources/olenepal/slide2_thumb.png new file mode 100755 index 0000000..48a0872 --- /dev/null +++ b/resources/olenepal/slide2_thumb.png Binary files differ diff --git a/resources/olenepal/slide3_thumb.png b/resources/olenepal/slide3_thumb.png new file mode 100755 index 0000000..9966c00 --- /dev/null +++ b/resources/olenepal/slide3_thumb.png Binary files differ diff --git a/resources/olenepal/slide4_thumb.png b/resources/olenepal/slide4_thumb.png new file mode 100755 index 0000000..09ea0f7 --- /dev/null +++ b/resources/olenepal/slide4_thumb.png Binary files differ diff --git a/resources/olenepal/slide5_thumb.png b/resources/olenepal/slide5_thumb.png new file mode 100755 index 0000000..bd19bb7 --- /dev/null +++ b/resources/olenepal/slide5_thumb.png Binary files differ diff --git a/resources/olenepal/slide6_thumb.png b/resources/olenepal/slide6_thumb.png new file mode 100755 index 0000000..1c1b3c5 --- /dev/null +++ b/resources/olenepal/slide6_thumb.png Binary files differ diff --git a/resources/olenepal/slide7_thumb.png b/resources/olenepal/slide7_thumb.png new file mode 100755 index 0000000..3321f39 --- /dev/null +++ b/resources/olenepal/slide7_thumb.png Binary files differ diff --git a/resources/olenepal/slide8_thumb.png b/resources/olenepal/slide8_thumb.png new file mode 100755 index 0000000..1f29151 --- /dev/null +++ b/resources/olenepal/slide8_thumb.png Binary files differ diff --git a/resources/olenepal/slide9_thumb.png b/resources/olenepal/slide9_thumb.png new file mode 100755 index 0000000..eb84f27 --- /dev/null +++ b/resources/olenepal/slide9_thumb.png Binary files differ diff --git a/resources/olenepal/title.html b/resources/olenepal/title.html new file mode 100755 index 0000000..fe261ae --- /dev/null +++ b/resources/olenepal/title.html @@ -0,0 +1,22 @@ + + + + +

 

+

 

+
+

OLENepal

+
+

 

+

 

+

 

+

 

+

 

+

 

+

 

+

 

+
+

Tue, Jun 23, 2009 21:11

+
+ + diff --git a/resources/olenepal/title_thumb.png b/resources/olenepal/title_thumb.png new file mode 100755 index 0000000..5d5361f --- /dev/null +++ b/resources/olenepal/title_thumb.png Binary files differ diff --git a/resources/presentations/ShowNTell_1.cpxo b/resources/presentations/ShowNTell_1.cpxo new file mode 100755 index 0000000..67ce1fe --- /dev/null +++ b/resources/presentations/ShowNTell_1.cpxo Binary files differ diff --git a/resources/test.ogg b/resources/test.ogg new file mode 100755 index 0000000..bddfc30 --- /dev/null +++ b/resources/test.ogg Binary files differ diff --git a/resources/title.html b/resources/title.html index 843d52f..07c5709 100755 --- a/resources/title.html +++ b/resources/title.html @@ -2,6 +2,21 @@ -

slideshow.title

+

 

+

 

+
+

Title

+
+

 

+

 

+

 

+

 

+

 

+

 

+

 

+

 

+
+

Date

+
diff --git a/resources/title.jpg b/resources/title.jpg new file mode 100755 index 0000000..9806453 --- /dev/null +++ b/resources/title.jpg Binary files differ diff --git a/resources/title_thumb.png b/resources/title_thumb.png new file mode 100755 index 0000000..5d5361f --- /dev/null +++ b/resources/title_thumb.png Binary files differ diff --git a/shared.py b/shared.py index 19da1c8..361afa9 100755 --- a/shared.py +++ b/shared.py @@ -71,6 +71,7 @@ class Shared(ExportedGObject): """ Called when the activity is shared """ self.__logger.debug('The activity has been shared.') self.__is_initiating = True + print 'shared_cb call write_file', self.__cpxo.path self.__activity.write_file(self.__cpxo_path) self.__deck.set_is_initiating(is_init=True) self.shared_setup() diff --git a/showntell.py b/showntell.py index fb2678f..846f4d5 100755..100644 --- a/showntell.py +++ b/showntell.py @@ -1,4 +1,4 @@ -# -*- mode:python; tab-width:4; indent-tabs-mode:t; -*- +# -*- mode:python; tab-width:4; indent-tabs-mode:t; -*- # showntell.py # @@ -42,6 +42,7 @@ import utils import shared import time import pdb +from path import path import listview import cpxoview @@ -51,69 +52,48 @@ from sugar import env hulahop.startup(os.path.join(env.get_profile_path(), 'gecko')) from hulahop.webview import WebView +import xml.dom.minidom + SLIDESHOW_TOOLBAR = 1 NAVIGATION_TOOLBAR = 2 -TITLE_SLIDE = "title.html" class ShowNTell(activity.Activity): - + def __init__(self, handle): #pdb.set_trace() - atexit.register(self.report_exit, 'message') - signal.signal(signal.SIGINT, self.signal_exit) - signal.signal(signal.SIGABRT, self.signal_exit) - signal.signal(signal.SIGTERM, self.signal_exit) - signal.signal(signal.SIGSEGV, self.signal_exit) - signal.signal(signal.SIGQUIT, self.signal_exit) activity.Activity.__init__(self, handle) - self.__logger = logging.getLogger('ClassroomPresenter') logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s') - + self.__screens = [] # Find our instance path - self.__work_path = os.path.join(self.get_activity_root(), 'instance') - self.__deck_dir = os.path.join(self.__work_path, 'deck') - if '-o' not in sys.argv: - try: - os.mkdir(self.__deck_dir) - except Exception, e: - self.__logger.debug("Caught exception and continuing: %s", e) - print 'deck_dir exists' - subprocess.call("rm -rf " + self.__deck_dir + "/*", shell=True) - - self.__rsrc_dir = os.path.join(activity.get_bundle_path(), 'resources') - self.__logger.debug("Found deck directory: %s", self.__deck_dir) - - # Copy the splash screen to the working directory - self.__title_slide_name = TITLE_SLIDE - utils.copy_file(os.path.join(self.__rsrc_dir, self.__title_slide_name), - os.path.join(self.__deck_dir, self.__title_slide_name)) - - # Create a slide deck object - self.__deck = slideshow.Deck(self.__title_slide_name, self.__deck_dir) + self.__work_path = path(self.get_activity_root()) / 'instance' + self.__save_path = path(self.get_activity_root()) / 'data' + self.__deck_dir = self.__work_path / 'deck' + bpth = path(activity.get_bundle_path()) + self.__rsrc_dir = bpth / 'resources' + self.__handle = handle + # Set up the main canvas + self.__slide_view = gtk.HBox() + print 'enter set_canvas', self.__handle.object_id + self.set_canvas(self.__slide_view) + + self.__deck = slideshow.Deck(self, handle, self.__rsrc_dir, self.__deck_dir) # Set up activity sharing self.__shared = shared.Shared(self, self.__deck, self.__work_path) - + # Create a renderer for slides self.__renderer = sliderenderer.Renderer(self, self.__deck) - - # Set up the main canvas - self.__slide_view = gtk.HBox() - self.set_canvas(self.__slide_view) - + # Set up Main Viewer box self.__main_view_box = gtk.VBox() - #here enter a gtk widget in place of self.__slide - #pack this common widget to self.__main_view_box - #then render each 'screen' to this common widget as needed self.__slide = slideviewer.SlideViewer(self.__deck, self.__renderer) self.__text_area = textarea.TextArea(self.__deck) self.__image_chooser = listview.Listview(self, self.__deck) self.__slideshow_chooser = cpxoview.Cpxoview(self, self.__deck) self.__html_slide = gtk.EventBox() - self.__screens = [] + self.__html_slide.set_size_request(600,480) self.__main_view_box.pack_start(self.__slide, True, True, 5) self.__screens.append(self.__slide) self.__main_view_box.pack_start(self.__image_chooser, True, True, 5) @@ -123,15 +103,17 @@ class ShowNTell(activity.Activity): self.__main_view_box.pack_start(self.__html_slide, True, True, 5) self.__screens.append(self.__html_slide) self.__main_view_box.pack_start(self.__text_area, False, False, 0) - + # Create our toolbars makeTB = toolbars.MakeToolBar(self, self.__deck) + self.__makeTB = makeTB + self.__makeTB.decktitle_change_cb(None) navTB = toolbars.NavToolBar(self, self.__shared, self.__deck) inkTB = toolbars.InkToolBar(self.__slide, self.__deck) - + # Create the standard activity toolbox; add our toolbars toolbox = activity.ActivityToolbox(self) - toolbox.add_toolbar("Slideshow", makeTB) + toolbox.add_toolbar("Presentation", makeTB) toolbox.add_toolbar("Navigation",navTB) toolbox.add_toolbar("Ink", inkTB) self.set_toolbox(toolbox) @@ -140,19 +122,19 @@ class ShowNTell(activity.Activity): # Open with slideshow toolbar toolbox.set_current_toolbar(SLIDESHOW_TOOLBAR) - + # Set up the side scrollbar widget self.__side_bar = sidebar.SideBar(self.__deck, self.__renderer) self.__side_bar.set_size_request(225, 100) - + # Set up a separator for the two widgets separator = gtk.VSeparator() - + # Pack widgets into main window self.__slide_view.pack_start(self.__main_view_box, True, True, 0) self.__slide_view.pack_start(separator, False, False, 5) self.__slide_view.pack_start(self.__side_bar, False, False, 0) - + # Show all widgets self.__slide_view.show_all() self.__main_view_box.show() @@ -163,7 +145,7 @@ class ShowNTell(activity.Activity): #self.__html_viewer.hide() separator.show() self.__side_bar.show_all() - + # Set up the progress view self.__progress_max = 1.0 self.__progress_cur = 0.01 @@ -173,37 +155,32 @@ class ShowNTell(activity.Activity): self.__progress_view.pack_start(self.__progress_lbl, True, False, 5) #self.__progress_view.pack_start(self.__progress_bar, False, False, 5) self.__progress_bar.set_fraction(self.__progress_cur / self.__progress_max) - - self.__shared.connect('deck-download-complete', self.dl_complete_cb) - - def report_exit(self, message): - print 'activity exited', message - def signal_exit(signal, frame): - print 'activity exited', signal + self.__shared.connect('deck-download-complete', self.dl_complete_cb) def dl_complete_cb(self, widget): self.do_slideview_mode() - + def do_slideview_mode(self): self.set_canvas(self.__slide_view) self.__slide_view.show_all() - + def set_progress_max(self, maxval): self.__progress_max = maxval self.__progress_bar.set_fraction(float(self.__progress_cur) / float(self.__progress_max)) - + def do_progress_view(self): self.set_canvas(self.__progress_view) self.__progress_view.show_all() - + def set_progress(self, val): self.__progress_cur = val self.__progress_bar.set_fraction(float(self.__progress_cur) / float(self.__progress_max)) - - #resume from journal + + #resume from journal def read_file(self, file_path): self.__logger.debug("read_file " + str(file_path)) + print 'read_file:', file_path ftype = utils.getFileType(file_path) z = zipfile.ZipFile(file_path, "r") for i in z.infolist(): @@ -211,21 +188,23 @@ class ShowNTell(activity.Activity): f.write(z.read(i.filename)) f.close() z.close() - self.__deck.set_title(self.metadata['title']) + print 'read_file: reload()', len(z.infolist()) self.__deck.reload() + print 'read_file: before', self.__deck.get_title(), self.metadata['title'] + self.__deck.set_title(self.metadata['title']) + print 'read_file: after', self.__deck.get_title() self.__toolbox.set_current_toolbar(NAVIGATION_TOOLBAR) newindex = 0 if 'current_index' in self.metadata: newindex = int(self.metadata.get('current_index', '0')) self.__deck.goToIndex(newindex, is_local=False) - + #save state in journal for resume def write_file(self, file_path): print 'write_file', self.__toolbox.get_current_toolbar(), str(file_path) - if self.__toolbox.get_current_toolbar() > 0: - return self.__logger.debug("write_file " + str(file_path)) - self.metadata['title'] = self.__deck.get_title(2) + print 'title', self.__deck.get_title() + self.metadata['title'] = self.__deck.get_title() self.metadata['mime_type'] = "application/x-classroompresenter" self.metadata['current_index'] = str(self.__deck.getIndex()) self.__deck.save() @@ -234,21 +213,16 @@ class ShowNTell(activity.Activity): for f in files: z.write(os.path.join(root, f), f) z.close() - + def get_shared_activity(self): - return self._shared_activity - + return self._shared_activity + def set_screen(self,scrn): - print 'set_screen', scrn + if len(self.__screens) < 1: + return self.__screens[0].hide() - print 'screen 0 hidden' self.__screens[1].hide() - print 'screen 1 hidden' self.__screens[2].hide() - print 'screen 2 hidden' self.__screens[3].hide() - print 'screen 3 hidden' self.__screens[scrn].show() - print 'screen', scrn, 'shown' return self.__screens[scrn] - diff --git a/sliderenderer.py b/sliderenderer.py index 290250b..e572c46 100755 --- a/sliderenderer.py +++ b/sliderenderer.py @@ -27,6 +27,7 @@ import utils import time import logging import hulahop +import xml.dom.minidom from sugar import env hulahop.startup(os.path.join(env.get_profile_path(), 'gecko')) from hulahop.webview import WebView @@ -38,6 +39,9 @@ class Renderer(object): self.__logger.setLevel('error') self.__deck = deck self.__activity = activity + self.__wv = WebView() + self.__wv.show() + self.__htmlflag = True def getSlideDimensionsFromFirstLayer(self, n=None): """Returns the [width, height] of the first slide layer""" @@ -127,6 +131,7 @@ class Renderer(object): self.__logger.debug("Got layers at " + str(time.time() - timerstart)) for layer in layers: type = utils.getFileType(layer) + print 'Drawing layer ', type, layer self.__logger.debug("Drawing layer " + str(layer) +" " + str(scale) + " at " + str(time.time() - timerstart)) print 'drawing layer', type, str(layer) if type == "svg": @@ -149,11 +154,11 @@ class Renderer(object): ctx.fill() elif type == "html": #use hulahop to display - print 'html slide', layer + print 'html slide', self.__htmlflag, layer scrn4 = self.__activity.set_screen(3) - wv = WebView() - print 'uri', 'file://' + layer - wv.load_uri('file://' + layer) - wv.show() - scrn4.add(wv) + if self.__htmlflag: + scrn4.add(self.__wv) + self.__htmlflag = False + self.__wv.load_uri('file://' + layer) + self.__wv.show() self.__logger.debug("Finished drawing layer at "+ str(time.time() - timerstart)) diff --git a/slideshow.py b/slideshow.py index 5634ff1..78f4488 100755..100644 --- a/slideshow.py +++ b/slideshow.py @@ -20,19 +20,21 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import os +import os, sys, subprocess +from time import strftime import gtk import xml.dom.minidom import gobject import logging from path import path from sugar.activity import activity +from sugar.datastore import datastore class Deck(gobject.GObject): - + __gsignals__ = { 'slide-changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()), + 'decktitle-changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()), 'slide-redraw' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()), 'remove-path' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT,)), 'deck-changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()), @@ -41,30 +43,45 @@ class Deck(gobject.GObject): 'instr-state-propagate' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_BOOLEAN,)), 'lock-state-propagate' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_BOOLEAN,)), 'ink-submitted' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, gobject.TYPE_STRING)), - 'ink-broadcast' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, + 'ink-broadcast' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)), 'update-submissions' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT,)), 'instructor-ink-cleared' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT,)), 'instructor-ink-removed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT, gobject.TYPE_INT)), } - - def __init__(self, slidename, base="/nfs/show"): + + def __init__(self, sugaractivity, handle, rsrc, base="/nfs/show"): gobject.GObject.__init__(self) + self.__handle = handle + if self.__handle.object_id == None: + print 'slideshow - from home view' + else: + obj = datastore.get(self.__handle.object_id) + print 'object:', obj.get_file_path() self.__logger = logging.getLogger('Deck') self.__base = base + self.__rsrc = rsrc + self.__activity = sugaractivity self.__is_initiating = True self.__nav_locked = False self.__active_sub = -1 self.__self_text = "" self.__text_tag = None - self.__title_slide_name = slidename - - # Compute the path to the deck.xml file and read it if it exists; - # otherwise we'll create a new XML Document self.__xmlpath = os.path.join(base, "deck.xml") + #we always create a new presentation and copy over it on resume + if path(base).exists(): + #we can't have permissions.info for this to work + subprocess.call("cp -r " + base + " /home/olpc/save", shell=True) + subprocess.call("rm -rf " + base + '/*', shell=True) + else: + path.mkdir(base) + path.copy(self.__rsrc / 'deck.xml', base / 'deck.xml') + path.copy(self.__rsrc / 'title.html', base / 'title.html') + path.copy(self.__rsrc / 'title_thumb.png', base / 'title_thumb.png') self.reload() - + self.set_title('New') + def set_locked_mode(self, locked): """ Setter method for the navigation lock flag""" self.__logger.debug("Lock state: " +str(locked)) @@ -76,61 +93,70 @@ class Deck(gobject.GObject): self.__logger.debug("Instructor state: " +str(is_init)) self.__is_initiating = is_init self.emit('instr-state-propagate', is_init) - + def getIsInitiating(self): return self.__is_initiating + def make_title_slide(self, title): + #open and read title.html + self.__work_path = os.path.join(activity.get_activity_root(), 'instance') + deckpath = path(activity.get_activity_root()) / 'instance' / 'deck' + slide = open(deckpath / 'title.html', 'r') + txt = slide.read() + slide.close() + #here change title.html - change between

and

+ h1pos = txt.find('

') + h1end = txt.find('

') + txtmod = txt[:h1pos+4] + title + txt[h1end:] + #here change date - change between

and

+ h3pos = txtmod.find('

') + h3end = txtmod.find('

') + txt = txtmod[:h3pos+4] + strftime("%a, %b %d, %Y %H:%M") + txtmod[h3end:] + #save title.html and close + slide = open(deckpath / 'title.html', 'w') + slide.write(txt) + slide.close() + print 'title slide changed', title + def set_title(self, title): - self.__title = title + nodes = self.__dom.getElementsByTagName("title") + nodes[0].firstChild.data = title + self.make_title_slide(title) + self.save() + self.goToIndex(0, is_local=False) + self.emit('deck-changed') + print 'set_title', self.get_title() - def get_title(self, id): - print 'get_title', id, self.__title - if len(self.__title) > 0: - return self.__title - else: - return "no title" + def get_title(self): + nodes = self.__dom.getElementsByTagName("title") + return nodes[0].firstChild.data def reload(self): self.__logger.debug("Reading deck") + print 'reload:', self.__xmlpath if os.path.exists(self.__xmlpath): self.__dom = xml.dom.minidom.parse(self.__xmlpath) - else: - self.__dom = xml.dom.minidom.Document() - - # Look for the root deck element; create it if it's not there decks = self.__dom.getElementsByTagName("deck") - if len(decks) > 0: - self.__deck = decks[0] - nodes = self.__dom.getElementsByTagName("title") - if len(nodes) > 0: - self.__title = nodes[0].firstChild.data - else: - print 'no deck title', self.__dom.toprettyxml() - else: - self.__deck = self.__dom.createElement("deck") - self.__dom.appendChild(self.__deck) - self.__title = 'new' - title = self.__dom.createElement("title") - title.appendChild(self.__dom.createTextNode(self.__title)) - self.__deck.appendChild(title) - splash = self.__dom.createElement("slide") - layer = self.__dom.createElement("layer") - layer.appendChild(self.__dom.createTextNode(self.__title_slide_name)) - splash.appendChild(layer) - self.__deck.appendChild(splash) - print "Deck.__title=", self.__title - + self.__deck = decks[0] # Get the slides from the show self.__slides = self.__deck.getElementsByTagName("slide") self.__nslides = len(self.__slides) self.__logger.debug(str(self.__nslides) + " slides in show") self.goToIndex(0, is_local=False) - self.emit("deck-changed") - + print 'deck reloaded' + def save(self, path=None): """Writes the XML DOM in memory out to disk""" + print 'save:', path if not path: path = self.__xmlpath + + """ + print '***************save************************' + print self.__dom.toprettyxml() + print '***************save************************' + """ + outfile = open(path, "w") self.__dom.writexml(outfile) outfile.close() @@ -144,8 +170,11 @@ class Deck(gobject.GObject): for slide in slides: deck.appendChild(slide) dom.appendChild(deck) + print '*************rebuild**************************' + print dom.toprettyxml() + print '**********************************************' return dom - + def getDeckPath(self): """Returns the path to the folder that stores this slide deck""" return self.__base @@ -199,9 +228,11 @@ class Deck(gobject.GObject): newlayer.appendChild(txt) newslide.appendChild(newlayer) self.__deck.appendChild(newslide) - print 'added slide', self.__dom.toxml() + print '**************addSlide*************' + print self.__dom.toprettyxml() + print '***********************************' self.save() - + def removeSlide(self, n): del self.__slides[n] self.__dom = self.rebuild_dom("modified deck", self.__slides) @@ -226,7 +257,7 @@ class Deck(gobject.GObject): p = os.path.join(self.__base, l.firstChild.nodeValue) layers.append(p) return layers - + def getInstructorInk(self): self.__instructor_ink = [] instr = self.__slide.getElementsByTagName("instructor") @@ -236,7 +267,7 @@ class Deck(gobject.GObject): for pathstr in pathtags: self.__instructor_ink.append(pathstr.firstChild.nodeValue) return self.__instructor_ink - + def getSelfInkOrSubmission(self): if self.__active_sub == -1: return (self.__self_ink, self.__self_text) @@ -255,14 +286,14 @@ class Deck(gobject.GObject): pathlist.append(path.firstChild.nodeValue) return (pathlist, text) return None - + def setActiveSubmission(self, sub): self.__active_sub = sub self.emit('slide-redraw') - + def getActiveSubmission(self): return self.__active_sub - + def getSubmissionList(self, n=None): if n is None: n = self.__pos @@ -271,7 +302,7 @@ class Deck(gobject.GObject): for subtag in subtags: sublist.append(subtag.getAttribute("from")) return sublist - + def addSubmission(self, whofrom, inks, text="", n=None): if n is None: n = self.__pos @@ -298,7 +329,7 @@ class Deck(gobject.GObject): subs = slide.getElementsByTagName("submission") if n == self.__pos: self.emit('update-submissions', len(subs) - 1) - + def addInkToSlide(self, pathstr, islocal, n=None): """Adds ink to the current slide, or slide n if given. Instructor ink may be added to any slide; but it only makes sense to add student ink to the current slide (n will be ignored)""" @@ -338,7 +369,7 @@ class Deck(gobject.GObject): else: if n is None or n == self.__pos: self.emit("remote-ink-added", pathstr) - + def clearInk(self, n=None): if n is None: n = self.__pos @@ -351,7 +382,7 @@ class Deck(gobject.GObject): slide.removeChild(self_tag) self.__self_ink = [] self.__self_ink_tag = None - + def clearInstructorInk(self, n=None): if n is None: n = self.__pos @@ -363,7 +394,7 @@ class Deck(gobject.GObject): self.__instructor_ink = [] self.__instructor_tag = None self.emit('slide-redraw') - + def removeInstructorPathByUID(self, uid, n=None): if n is None: n = self.__pos @@ -380,7 +411,7 @@ class Deck(gobject.GObject): pathstr = path_tag.firstChild.nodeValue path_uid = 0 try: - path_uid = int(pathstr[0:pathstr.find(';')]) + path_uid = int(pathstr[0:pathstr.find(';')]) except Exception, e: pass if path_uid == uid: @@ -388,7 +419,7 @@ class Deck(gobject.GObject): needs_redraw = True if n == self.__pos and needs_redraw: self.emit('remove-path', uid) - + def removeLocalPathByUID(self, uid, n=None): if n is None: n = self.__pos @@ -408,21 +439,21 @@ class Deck(gobject.GObject): pathstr = path_tag.firstChild.nodeValue path_uid = 0 try: - path_uid = int(pathstr[0:pathstr.find(';')]) + path_uid = int(pathstr[0:pathstr.find(';')]) except Exception, e: pass if path_uid == uid: tag.removeChild(path_tag) - + def doSubmit(self): inks, text, whofrom = self.getSerializedInkSubmission() self.__logger.debug("Submitting ink: " + str(inks) + " text: " + text) self.emit('ink-submitted', inks, text) - + def doBroadcast(self): inks, text, whofrom = self.getSerializedInkSubmission() self.emit('ink-broadcast', whofrom, inks, text) - + def getSerializedInkSubmission(self): sub = "" text = "" @@ -454,17 +485,18 @@ class Deck(gobject.GObject): if path.firstChild: sub = sub + path.firstChild.nodeValue + "$" return sub, text, whofrom - + def getSlideThumb(self, n=-1): """Returns the full path to the thumbnail for this slide if it is defined; otherwise False""" if n == -1: n = self.__pos slide = self.__slides[n] + print slide.toprettyxml() thumbs = slide.getElementsByTagName("thumb") if len(thumbs) < 1: return False return os.path.join(self.__base, thumbs[0].firstChild.nodeValue) - + def setSlideThumb(self, filename, n=-1): """Sets the thumbnail for this slide to filename (provide a *relative* path!)""" if n == -1: @@ -476,7 +508,7 @@ class Deck(gobject.GObject): thumb = self.__dom.createElement("thumb") thumb.appendChild(self.__dom.createTextNode(filename)) slide.appendChild(thumb) - + def getSlideClip(self, n=-1): """Returns the full path to the audio clip for this slide if it is defined; otherwise False""" if n == -1: @@ -486,7 +518,7 @@ class Deck(gobject.GObject): if len(clip) < 1: return False return os.path.join(self.__base, clip[0].firstChild.nodeValue) - + def setSlideClip(self, filename, n=-1): """Sets the clip for this slide to filename (provide a *relative* path!)""" if n == -1: @@ -495,10 +527,10 @@ class Deck(gobject.GObject): clips = slide.getElementsByTagName("clip") for clip in clips: slide.removeChild(clip) - thumb = self.__dom.createElement("clip") - thumb.appendChild(self.__dom.createTextNode(filename)) - slide.appendChild(thumb) - + clip = self.__dom.createElement("clip") + clip.appendChild(self.__dom.createTextNode(filename)) + slide.appendChild(clip) + def setSlideText(self, textval): self.__self_text = textval if self.__text_tag: @@ -506,10 +538,13 @@ class Deck(gobject.GObject): self.__text_tag.firstChild.nodeValue = textval else: self.__text_tag.appendChild(self.__dom.createTextNode(textval)) - + def doNewIndex(self): """Updates any necessary state associated with moving to a new slide""" self.__slide = self.__slides[self.__pos] + #set slide title - entry text from xml + self.set_SlideTitle(self.__slide.getAttribute('title')) + self_ink = self.__slide.getElementsByTagName("self") self.__instructor_tag = None self.__self_ink_tag = None @@ -538,11 +573,12 @@ class Deck(gobject.GObject): self.__self_ink_tag.appendChild(self.__text_tag) if self.__text_tag.firstChild: self.__self_text = self.__text_tag.firstChild.nodeValue - + self.__activity.set_screen(0) + self.emit("slide-changed") self.emit("update-submissions", self.__active_sub) self.emit("slide-redraw") - + def goToIndex(self, index, is_local): """Jumps to the slide at the given index, if it's valid""" self.__logger.debug("Trying to change slides: locked? %u, instructor? %u, is_local? %u", @@ -557,39 +593,39 @@ class Deck(gobject.GObject): else: self.__pos = index print 'invalid index', index - + def getIndex(self): """Returns the index of the current slide""" return self.__pos - + def next(self): """Moves to the next slide""" self.goToIndex(self.__pos + 1, is_local=True) - + def previous(self): """Moves to the previous slide""" self.goToIndex(self.__pos - 1, is_local=True) - + def isAtBeginning(self): """Returns true if show is on the first slide in the deck""" if self.__nslides < 1: return True - + if self.__pos == 0: return True else: return False - + def isAtEnd(self): """Returns true if the show is at the last slide in the deck""" if self.__nslides < 1: return True - + if self.__pos == self.__nslides - 1: return True else: return False - + def getSlideDimensionsFromXML(self, n=-1): """Returns the dimensions for the slide at index n, if they're specified""" if n == -1: @@ -600,8 +636,8 @@ class Deck(gobject.GObject): if wstring != '' and hstring != '': return [float(wstring), float(hstring)] return False - + def getSlideCount(self): return self.__nslides - + gobject.type_register(Deck) diff --git a/slideviewer.py b/slideviewer.py index 5156bbf..ac6969a 100755 --- a/slideviewer.py +++ b/slideviewer.py @@ -276,6 +276,7 @@ class ThumbViewer(gtk.DrawingArea): # Load thumbnail from the PNG file, if it exists; otherwise draw from scratch timerstart = time.time() thumb = self.__deck.getSlideThumb(n) + print 'getSlideThumb', n, thumb if thumb and os.path.exists(thumb): self.__surface = cairo.ImageSurface.create_from_png(thumb) else: diff --git a/snippet.py b/snippet.py new file mode 100755 index 0000000..e3e5a2e --- /dev/null +++ b/snippet.py @@ -0,0 +1,42 @@ +#! /usr/bin/env python +import pygtk +pygtk.require('2.0') +import gtk, gobject, cairo + +# Create a GTK+ widget on which we will draw using Cairo +class Screen(gtk.DrawingArea): + + # Draw in response to an expose-event + __gsignals__ = { "expose-event": "override" } + + # Handle the expose-event by drawing + def do_expose_event(self, event): + + # Create the cairo context + cr = self.window.cairo_create() + + # Restrict Cairo to the exposed area; avoid extra work + cr.rectangle(event.area.x, event.area.y, + event.area.width, event.area.height) + cr.clip() + + self.draw(cr, *self.window.get_size()) + + def draw(self, cr, width, height): + # Fill the background with gray + cr.set_source_rgb(0.5, 0.5, 0.5) + cr.rectangle(0, 0, width, height) + cr.fill() + +# GTK mumbo-jumbo to show the widget in a window and quit when it's closed +def run(Widget): + window = gtk.Window() + window.connect("delete-event", gtk.main_quit) + widget = Widget() + widget.show() + window.add(widget) + window.present() + gtk.main() + +if __name__ == "__main__": + run(Screen) diff --git a/textarea.py b/textarea.py index 260c887..962677d 100755 --- a/textarea.py +++ b/textarea.py @@ -44,8 +44,6 @@ class TextArea(gtk.HBox): self.__deck = deck self.__text_area = gtk.Entry() self.render_text_area() - self.__record=False - self.__play=False self.__deck.connect('slide-redraw', self.update_text) self.__text_area.connect('changed', self.text_changed) self.__logger.debug("Constructed") @@ -72,6 +70,12 @@ class TextArea(gtk.HBox): self.__fileout = fileout """ + #initialize convert pipeline + p = "filesrc location=/tmp/temp.wav ! wavparse " + p = p + "! audioconvert ! vorbisenc ! oggmux " + p = p + "! filesink location=" + self.__pipeline = p + def update_text(self, widget): selfink, text = self.__deck.getSelfInkOrSubmission() self.__text_area.set_text(text) @@ -99,58 +103,44 @@ class TextArea(gtk.HBox): self.__text_area.set_text("") # Start Recording - def record(self, params): - if self.__record: + def record(self, button): + if not button.get_active(): #we are recording, stop and save clip subprocess.call("killall -q arecord", shell=True) + n = self.__deck.getIndex() + self.__audiofile = self.__deck.getSlideClip(n) + if path(self.__audiofile).exists(): + subprocess.call("rm -rf " + str(self.__audiofile), shell=True) #convert to ogg file - pipeline = "filesrc location=/tmp/temp.wav ! wavparse ! audioconvert ! vorbisenc ! oggmux ! filesink location=" + self.__audiofile - print 'pipeline', pipeline + pipeline = self.__pipeline + self.__audiofile subprocess.call("gst-launch-0.10 " + pipeline, shell=True) - #self.__player.set_state(gst.STATE_PLAYING) - #time.sleep(10) - #self.__player.set_state(gst.STATE_NULL) - self.__record = False - self.__deck.setSlideClip(self.__audiofile, n = self.__deck.getIndex()) - self.__deck.save() - self.__deck.reload() - #reset mic boost (xo) subprocess.call("amixer cset numid=11 off", shell = True) - print 'recording stopped' + #reset mic boost + print 'mic boost off', n, self.__audiofile, path(self.__audiofile).exists() else: - self.__record = True - #what is name of clip? If it exists, rm it - self.__audiofile = self.__deck.getSlideClip() - if path(self.__audiofile).exists(): - subprocess.call("rm -rf " + str(self.__audiofile), shell=True) - else: - self.__audiofile = path(self.__deck.getDeckPath()) / 'slide' + str(self.__deck.getIndex()) + '.ogg' #turn on mic boost (xo) print 'turn on mic boost' subprocess.call("amixer cset numid=11 on", shell=True) - print 'record clip:', self.__audiofile #self.__fileout.set_property("location", self.__audiofile) #self.__source.set_property("location", "/tmp/temp.wav") #self.__player.set_state(gst.STATE_PLAYING) print 'recording started' - subprocess.call("arecord -f cd -d 10 /tmp/temp.wav", shell=True) + self.__pid=subprocess.Popen("arecord -f cd /tmp/temp.wav", shell=True) # Play Audio Clip - def play(self, params): - if self.__play: - #we are playing and need to stop - subprocess.call("killall -q gst-launch-0.10", shell=True) - self.__play = False - else: + def play(self, button): + if button.get_active(): #play clip - self.__deck.save() clip = self.__deck.getSlideClip() - #clip = "/home/olpc/Activities/ShowNTell.activity/resources/test.ogg" print 'play clip:', clip if clip: - self.__play = True - subprocess.call("gst-launch-0.10 filesrc location=" + clip + " ! decodebin ! audioconvert ! alsasink", shell = True) - self.__play = False + cmd = "gst-launch-0.10 filesrc location=" + clip + cmd = cmd + " ! decodebin ! audioconvert ! alsasink" + self.__pid = subprocess.Popen(cmd, shell=True) + else: + #we are playing and need to stop + subprocess.call("killall -q gst-launch-0.10", shell=True) + # Create buttons for audio controls def create_bbox(self, title=None, spacing=0, layout=gtk.BUTTONBOX_SPREAD): @@ -160,11 +150,13 @@ class TextArea(gtk.HBox): bbox.set_layout(layout) bbox.set_spacing(spacing) - button = gtk.Button(stock='gtk-media-record') + button = gtk.ToggleButton('gtk-media-record') + button.set_use_stock(True) button.connect("clicked", self.record) bbox.pack_start(button, False, False, 0) - button = gtk.Button(stock='gtk-media-play') + button = gtk.ToggleButton('gtk-media-play') + button.set_use_stock(True) button.connect("clicked", self.play) bbox.pack_start(button, False, False, 0) diff --git a/toolbars.py b/toolbars.py index 8b21123..5f1a89a 100755 --- a/toolbars.py +++ b/toolbars.py @@ -28,7 +28,8 @@ import gobject import pango import logging import threading -import os, sys, time +import os, sys +from time import strftime import utils from path import path import slideshow @@ -383,10 +384,10 @@ class InkToolBar(gtk.Toolbar): self.__submit.set_sensitive(True) class MakeToolBar(gtk.Toolbar): - - def __init__(self, activity, deck): + + def __init__(self, this_activity, deck): gtk.Toolbar.__init__(self) - self.activity = activity + self.activity = this_activity self.deck = deck #get mount points @@ -400,13 +401,13 @@ class MakeToolBar(gtk.Toolbar): pendrive = i - self.__newbtn = ToolButton('new-slideshow') + self.__newbtn = ToolButton('new-transparency') self.__newbtn.set_tooltip("New slideshow") self.__newbtn.connect('clicked', self.new) self.insert(self.__newbtn, -1) self.__newbtn.show() - self.__openbtn = ToolButton('slideshow') + self.__openbtn = ToolButton('transparency') self.__openbtn.set_tooltip("Choose slideshow") self.__openbtn.connect('clicked', self.open) self.insert(self.__openbtn, -1) @@ -436,9 +437,15 @@ class MakeToolBar(gtk.Toolbar): self.__decktitle_item = gtk.ToolItem() self.__decktitle = gtk.Entry() - self.__decktitle.set_text(self.deck.get_title(1)) + try: + title = self.deck.get_title() + except: + title = "" + print 'self.__decktitle.set_text', title + self.__decktitle.set_text(title) self.__decktitle.set_alignment(0) self.__decktitle.connect('activate', self.decktitle_change_cb) + #self.deck.connect('decktitle_changed', self.decktitle_change_cb) self.__decktitle.set_width_chars(20) @@ -465,17 +472,35 @@ class MakeToolBar(gtk.Toolbar): self.insert(self.__slidetitle_item, -1) self.__slidetitle_item.show() + # separator between presentation buttons and help button + separator = gtk.SeparatorToolItem() + separator.set_draw(False) + separator.set_expand(True) + self.insert(separator, -1) + separator.show() + + self.__helpbtn = ToolButton('help-button') + self.__helpbtn.set_tooltip("Select help presentation") + self.__helpbtn.connect('clicked', self.help) + self.insert(self.__helpbtn, -1) + self.__helpbtn.show() + + self.__reloadbtn = ToolButton() + self.__reloadbtn.set_icon_name('green-button') + self.__reloadbtn.connect('clicked', self.reload) + self.insert(self.__reloadbtn, -1) + self.__reloadbtn.show() + self.show() def decktitle_change_cb(self, widget): - self.deck.set_title(self.__decktitle.get_text(3)) - print 'decktitle change', self.__decktitle.get_text(), self.deck.get_title() + self.deck.set_title(self.__decktitle.get_text()) def slidetitle_change_cb(self, widget): - self.deck.set_slideTitle(self.__slidetitle.get_text()) + self.deck.set_SlideTitle(self.__slidetitle.get_text()) def slidetitle_changed_cb(self, widget): - self.__slidetitle.set_text(self.deck.get_slideTitle()) + self.__slidetitle.set_text(self.deck.get_SlideTitle()) def new(self, widget): print 'New slideshow' @@ -489,18 +514,22 @@ class MakeToolBar(gtk.Toolbar): scrn3 = self.activity.set_screen(2) treeview = scrn3.get_treeView() print 'set_cpxo_store' - treeview.set_model(scrn3.set_store()) + treeview.set_model(scrn3.set_store("datastore")) print 'slideshow treeview model set' + def help(self, widget): + scrn3 = self.activity.set_screen(2) + #here select help.cpxo in resources + fn = path(activity.get_bundle_path()) / 'resources' / 'help.cpxo' + self.activity.read_file(fn) + def chooseimage(self, widget, source, pth): - print 'chooseimage', source, pth scrn2 = self.activity.set_screen(1) - time.sleep(30) - print 'sleep over' treeview = scrn2.get_treeView() - print 'set_store', source, pth treeview.set_model(scrn2.set_store(source, pth)) - print 'treeview model set' + + def reload(self, widget): + self.deck.reload() def showhtml(self, widget): self.activity.set_screen(4) -- cgit v0.9.1