Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/readtoolbar.py
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-02-20 02:41:29 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-02-20 02:41:29 (GMT)
commit8433dd156c9a840271df560a3dddc9332c3a221c (patch)
treed2ce6323ab7e3e0f5b1082b22e52ff09f266e239 /readtoolbar.py
parent6083496794da2b4d5d39c3528143dc08ce4b92c0 (diff)
Add Play/Pause button
Diffstat (limited to 'readtoolbar.py')
-rw-r--r--readtoolbar.py42
1 files changed, 36 insertions, 6 deletions
diff --git a/readtoolbar.py b/readtoolbar.py
index 43296f7..6c87e17 100644
--- a/readtoolbar.py
+++ b/readtoolbar.py
@@ -28,11 +28,12 @@ from sugar.graphics.menuitem import MenuItem
from sugar.graphics.toolcombobox import ToolComboBox
from sugar.graphics.combobox import ComboBox
from sugar.activity import activity
+from sugar.graphics.toggletoolbutton import ToggleToolButton
-try:
+import speech
+
+if speech.supported:
import speechd
-except:
- print "Speech not supported"
class ReadToolbar(gtk.Toolbar):
__gtype_name__ = 'ReadToolbar'
@@ -259,6 +260,25 @@ class SpeechToolbar(gtk.Toolbar):
break
default = default + 1
+ # Play button Image
+ play_img = gtk.Image()
+ play_img.show()
+ play_img.set_from_icon_name('media-playback-start',
+ gtk.ICON_SIZE_LARGE_TOOLBAR)
+
+ # Pause button Image
+ pause_img = gtk.Image()
+ pause_img.show()
+ pause_img.set_from_icon_name('media-playback-pause',
+ gtk.ICON_SIZE_LARGE_TOOLBAR)
+
+ # Play button
+ self.play_btn = ToggleToolButton('media-playback-start')
+ self.play_btn.show()
+ self.play_btn.connect('toggled', self._play_cb, [play_img, pause_img])
+ self.insert(self.play_btn, -1)
+ self.play_btn.set_tooltip(_('Play / Pause'))
+
self.voice_combo = ComboBox()
self.voice_combo.connect('changed', self.voice_changed_cb)
for voice in self.sorted_voices:
@@ -304,11 +324,9 @@ class SpeechToolbar(gtk.Toolbar):
def voice_changed_cb(self, combo):
self.selected_voice = combo.props.value
if self.activity != None:
- self.activity.set_speech_voice(self.selected_voice)
self.say(self.selected_voice[0])
def pitch_adjusted_cb(self, get, data=None):
- self.activity.set_speech_pitch(int(self.pitchadj.value))
self.say(_("pitch adjusted"))
def rate_adjusted_cb(self, get, data=None):
@@ -317,7 +335,6 @@ class SpeechToolbar(gtk.Toolbar):
def set_activity(self, activity):
self.activity = activity
- self.activity.set_speech_voice(self.selected_voice)
def say(self, words):
try:
@@ -330,3 +347,16 @@ class SpeechToolbar(gtk.Toolbar):
except:
print 'speech dispatcher not running'
+ def _play_cb(self, widget, images):
+ widget.set_icon_widget(images[int(widget.get_active())])
+
+ if (speech.done):
+ self.et = speech.EspeakThread()
+ words_on_page = self.activity.add_word_marks()
+ self.et.set_words_on_page(words_on_page)
+ self.et.set_activity(self.activity)
+ self.et.set_speech_options(self.selected_voice,
+ int(self.rateadj.value), int(self.pitchadj.value))
+ self.et.start()
+ else:
+ speech.done = True