Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Sound.py
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-01-30 23:32:43 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-01-30 23:32:43 (GMT)
commitf3f438af59c69b584d84b27f103f9392fc8185f8 (patch)
tree808556779f0d70312625b6d50277371bbf19b880 /Sound.py
parent56cea3b5c6361c7958e1c27182fcf117470a1861 (diff)
...
Diffstat (limited to 'Sound.py')
-rw-r--r--Sound.py62
1 files changed, 48 insertions, 14 deletions
diff --git a/Sound.py b/Sound.py
index c678b95..86a59c5 100644
--- a/Sound.py
+++ b/Sound.py
@@ -15,44 +15,78 @@
import os
import gtk
import gst
+from glob import glob
from gettext import gettext as _
import Theme
from Utils import *
from sugar.activity.activity import get_bundle_path
+TYPE_PREISTALLED = 0
+TYPE_CUSTOM = 1
+TYPE_JOURNAL = 2
+
+def load():
+ sound = Document.sound()
+ custom = Sound(sound[0], 'images/sounds/speaker.png', sound[1])
+ THEMES.insert(-1, custom)
+
class Sound:
playing = False
current = None
player = None
- def __init__(self, name, file, sound):
+ def __init__(self, name, file, sound, type):
self.name = name
- self.pixbuf = Theme.pixbuf(file, THUMB_SIZE)
- self.sound = sound
+ self._thumb = Theme.pixbuf(file, THUMB_SIZE)
+ self._type = type
+
+ if type == TYPE_JOURNAL:
+ l = sorted(glob(os.path.join(Theme.SESSION_PATH, 'sound*')))
+ self._sound = os.path.join(Theme.SESSION_PATH,
+ 'sound.%03d' % (len(l)+1))
+ os.rename(sound, self._sound)
+ else:
+ self._sound = sound
def thumb(self):
- return self.pixbuf
+ return self._thumb
def change(self):
+ out = self
+
+ if self._type == TYPE_CUSTOM:
+ out = Theme.choose(
+ lambda title, file: Sound(title,
+ 'images/sounds/speaker.png', file, TYPE_JOURNAL))
+ if not out:
+ return None
+
Sound.current = self
- if not Sound.playing: return
+ if not Sound.playing: return out
Sound.player.set_state(gst.STATE_NULL)
- if not self.sound: return
+ if not out._sound: return out
- Sound.player.set_property('uri', 'file://' + Theme.path(self.sound))
+ Sound.player.set_property('uri', 'file://' + Theme.path(out._sound))
Sound.player.set_state(gst.STATE_NULL)
Sound.player.set_state(gst.STATE_PLAYING)
+ return out
+
THEMES = (
- Sound(_('Gobble'), 'images/sounds/speaker.png', 'sounds/gobble.wav'),
- Sound(_('Funk'), 'images/sounds/speaker.png', 'sounds/funk.wav'),
- Sound(_('Giggle'), 'images/sounds/speaker.png', 'sounds/giggle.wav'),
- Sound(_('Jungle'), 'images/sounds/speaker.png', 'sounds/jungle.wav'),
- Sound(_('Mute'), 'images/sounds/mute.png', None),
+ Sound(_('Gobble'), 'images/sounds/speaker.png', 'sounds/gobble.wav',
+ TYPE_PREISTALLED),
+ Sound(_('Funk'), 'images/sounds/speaker.png', 'sounds/funk.wav',
+ TYPE_PREISTALLED),
+ Sound(_('Giggle'), 'images/sounds/speaker.png', 'sounds/giggle.wav',
+ TYPE_PREISTALLED),
+ Sound(_('Jungle'), 'images/sounds/speaker.png', 'sounds/jungle.wav',
+ TYPE_PREISTALLED),
+ Sound(_('Mute'), 'images/sounds/mute.png', None,
+ TYPE_PREISTALLED),
None,
- Sound(_('Custom'), 'images/sounds/custom.png', None) )
-
+ Sound(_('Custom'), 'images/sounds/custom.png', None,
+ TYPE_CUSTOM) )
Sound.current = THEMES[0]
def play():