[orca] More work on progress bar beeps - they are now user-testable
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] More work on progress bar beeps - they are now user-testable
- Date: Tue, 16 Feb 2016 23:53:10 +0000 (UTC)
commit 19bcf95f1d8b20b5b907581381c67abbe013436d
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Tue Feb 16 18:48:58 2016 -0500
More work on progress bar beeps - they are now user-testable
src/orca/scripts/default.py | 16 ++++++++++++++++
src/orca/sound.py | 15 +++++++++++++--
src/orca/sound_generator.py | 9 ++++-----
3 files changed, 33 insertions(+), 7 deletions(-)
---
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index de2b95c..24a33dd 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -51,6 +51,7 @@ import orca.phonnames as phonnames
import orca.script as script
import orca.settings as settings
import orca.settings_manager as settings_manager
+import orca.sound as sound
import orca.speech as speech
import orca.speechserver as speechserver
import orca.mouse_review as mouse_review
@@ -2670,6 +2671,8 @@ class Script(script.Script):
self.updateBraille(obj, isProgressBarUpdate=isProgressBarUpdate)
speech.speak(self.speechGenerator.generateSpeech(
obj, alreadyFocused=True, isProgressBarUpdate=isProgressBarUpdate))
+ self.__play(self.soundGenerator.generateSound(
+ obj, alreadyFocused=True, isProgressBarUpdate=isProgressBarUpdate))
def onWindowActivated(self, event):
"""Called whenever a toplevel window is activated.
@@ -3806,6 +3809,19 @@ class Script(script.Script):
braille.displayMessage(message, flashTime=duration)
@staticmethod
+ def __play(sounds, interrupt=True):
+ if not sounds:
+ return
+
+ if not isinstance(sounds, list):
+ icon = [sounds]
+
+ _player = sound.getPlayer()
+ _player.play(sounds[0], interrupt)
+ for i in range(1, len(sounds)):
+ sound.play(sounds[i], interrupt=False)
+
+ @staticmethod
def addBrailleRegionToLine(region, line):
"""Adds the braille region to the line.
diff --git a/src/orca/sound.py b/src/orca/sound.py
index 7df0cb6..7a68837 100644
--- a/src/orca/sound.py
+++ b/src/orca/sound.py
@@ -44,6 +44,8 @@ class Player:
def __init__(self):
self._initialized = False
+ self._source = None
+ self._sink = None
if not _gstreamerAvailable:
msg = 'SOUND ERROR: Gstreamer is not available'
@@ -70,6 +72,11 @@ class Player:
msg = 'SOUND ERROR: %s' % error
debug.println(debug.LEVEL_INFO, msg, True)
+ def _onTimeout(self, element):
+ element.set_state(Gst.State.NULL)
+ self.stop(element)
+ return False
+
def _playIcon(self, icon, interrupt=True):
"""Plays a sound icon, interrupting the current play first unless specified."""
@@ -90,7 +97,7 @@ class Player:
self._source.set_property('wave', tone.wave)
self._pipeline.set_state(Gst.State.PLAYING)
duration = int(1000 * tone.duration)
- GLib.timeout_add(duration, self._pipeline.set_state, Gst.State.NULL)
+ GLib.timeout_add(duration, self._onTimeout, self._pipeline)
def init(self):
"""(Re)Initializes the Player."""
@@ -127,12 +134,16 @@ class Player:
msg = 'SOUND ERROR: %s is not an Icon or Tone' % item
debug.println(debug.LEVEL_INFO, msg, True)
- def stop(self):
+ def stop(self, element=None):
"""Stops play."""
if not _gstreamerAvailable:
return
+ if element:
+ element.set_state(Gst.State.NULL)
+ return
+
self._player.set_state(Gst.State.NULL)
self._pipeline.set_state(Gst.State.NULL)
diff --git a/src/orca/sound_generator.py b/src/orca/sound_generator.py
index f179496..b8a79df 100644
--- a/src/orca/sound_generator.py
+++ b/src/orca/sound_generator.py
@@ -288,11 +288,10 @@ class SoundGenerator(generator.Generator):
def _generateProgressBarValue(self, obj, **args):
"""Returns an array of sounds representing the progress bar value."""
- if args.get('isProgressBarUpdate') \
- and not _settingsManager.getSetting('beepProgressBarUpdates'):
- return []
-
- if not _settingsManager.getSetting('playSoundForValue'):
+ if args.get('isProgressBarUpdate'):
+ if not _settingsManager.getSetting('beepProgressBarUpdates'):
+ return []
+ elif not _settingsManager.getSetting('playSoundForValue'):
return []
percent = self._script.utilities.getValueAsPercent(obj)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]