[orca] Remove more direct calls to speech.speak()
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Remove more direct calls to speech.speak()
- Date: Fri, 14 Jan 2022 16:40:15 +0000 (UTC)
commit 62c539d11197360255eec6eda32bb60c1f4b147f
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Fri Jan 14 17:38:00 2022 +0100
Remove more direct calls to speech.speak()
The default script already has methods which make it possible for
messages to be spoken. Using these methods will facilitate on-the-fly
language switching.
Also set the interrupt argument to True when using presentObject()
to present updates in state change or the new structural navigation
object.
src/orca/mouse_review.py | 2 +-
src/orca/scripts/apps/soffice/script.py | 2 +-
src/orca/scripts/default.py | 64 +++++++++++++++-----------------
src/orca/scripts/toolkits/GAIL/script.py | 2 +-
src/orca/scripts/toolkits/gtk/script.py | 6 +--
src/orca/scripts/web/script.py | 12 ++++--
src/orca/structural_navigation.py | 2 +-
7 files changed, 44 insertions(+), 46 deletions(-)
---
diff --git a/src/orca/mouse_review.py b/src/orca/mouse_review.py
index 77d463b99..fd2ae975d 100644
--- a/src/orca/mouse_review.py
+++ b/src/orca/mouse_review.py
@@ -289,7 +289,7 @@ class _ItemContext:
self._script.presentationInterrupt()
if self._frame and self._frame != prior._frame:
- self._script.presentObject(self._frame, alreadyFocused=True, inMouseReview=True)
+ self._script.presentObject(self._frame, alreadyFocused=True, inMouseReview=True, interrupt=True)
if self._script.utilities.containsOnlyEOCs(self._obj):
msg = "MOUSE REVIEW: Not presenting object which contains only EOCs"
diff --git a/src/orca/scripts/apps/soffice/script.py b/src/orca/scripts/apps/soffice/script.py
index 2912c4717..4e0b72d5a 100644
--- a/src/orca/scripts/apps/soffice/script.py
+++ b/src/orca/scripts/apps/soffice/script.py
@@ -851,7 +851,7 @@ class Script(default.Script):
wasCommand = mods & keybindings.COMMAND_MODIFIER_MASK
weToggledIt = wasCommand and keyString not in navKeys
if weToggledIt:
- self.presentObject(obj, alreadyFocused=True)
+ self.presentObject(obj, alreadyFocused=True, interrupt=True)
def onSelectedChanged(self, event):
"""Callback for object:state-changed:selected accessibility events."""
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index 1a555967f..f9f90126f 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -1325,7 +1325,7 @@ class Script(script.Script):
debug.println(debug.LEVEL_INFO, msg, True)
if statusbar:
self.pointOfReference['statusBarItems'] = None
- self.presentObject(statusbar)
+ self.presentObject(statusbar, interrupt=True)
self.pointOfReference['statusBarItems'] = None
else:
full = messages.STATUS_BAR_NOT_FOUND_FULL
@@ -1460,26 +1460,24 @@ class Script(script.Script):
# the Braille display as an input device.
#
if not isinstance(inputEvent, input_event.BrailleEvent):
- if (not wordString) \
- or (not len(wordString)) \
- or (wordString == "\n"):
- speech.speak(messages.BLANK)
+ if not wordString or wordString == "\n":
+ self.speakMessage(messages.BLANK)
else:
[lineString, x, y, width, height] = \
context.getCurrent(flat_review.Context.LINE)
if lineString == "\n":
- speech.speak(messages.BLANK)
+ self.speakMessage(messages.BLANK)
elif wordString.isspace():
- speech.speak(messages.WHITE_SPACE)
+ self.speakMessage(messages.WHITE_SPACE)
elif wordString.isupper() and speechType == 1:
- speech.speak(wordString, voice)
+ self.speakMessage(wordString, voice)
elif speechType == 2:
self.spellCurrentItem(wordString)
elif speechType == 3:
self.phoneticSpellCurrentItem(wordString)
elif speechType == 1:
wordString = self.utilities.adjustForRepeats(wordString)
- speech.speak(wordString, voice)
+ self.speakMessage(wordString, voice)
self.updateBrailleReview(targetCursorCell)
self.currentReviewContents = wordString
@@ -1578,12 +1576,12 @@ class Script(script.Script):
#
if not isinstance(inputEvent, input_event.BrailleEvent):
if (not charString) or (not len(charString)):
- speech.speak(messages.BLANK)
+ self.speakMessage(messages.BLANK)
else:
[lineString, x, y, width, height] = \
context.getCurrent(flat_review.Context.LINE)
if lineString == "\n" and speechType != 3:
- speech.speak(messages.BLANK)
+ self.speakMessage(messages.BLANK)
elif speechType == 3:
self.speakUnicodeCharacter(charString)
elif speechType == 2:
@@ -1709,21 +1707,19 @@ class Script(script.Script):
# the Braille display as an input device.
#
if not isinstance(inputEvent, input_event.BrailleEvent):
- if (not lineString) \
- or (not len(lineString)) \
- or (lineString == "\n"):
- speech.speak(messages.BLANK)
+ if not lineString or lineString == "\n":
+ self.speakMessage(messages.BLANK)
elif lineString.isspace():
- speech.speak(messages.WHITE_SPACE)
+ self.speakMessage(messages.WHITE_SPACE)
elif lineString.isupper() and (speechType < 2 or speechType > 3):
- speech.speak(lineString, voice)
+ self.speakMessage(lineString, voice)
elif speechType == 2:
self.spellCurrentItem(lineString)
elif speechType == 3:
self.phoneticSpellCurrentItem(lineString)
else:
lineString = self.utilities.adjustForRepeats(lineString)
- speech.speak(lineString, voice)
+ self.speakMessage(lineString, voice)
self.updateBrailleReview()
self.currentReviewContents = lineString
@@ -2322,7 +2318,7 @@ class Script(script.Script):
if hash(oldObj) == hash(obj) and oldState == event.detail1:
return
- self.presentObject(obj, alreadyFocused=True)
+ self.presentObject(obj, alreadyFocused=True, interrupt=True)
self.pointOfReference['checkedChange'] = hash(obj), event.detail1
def onChildrenAdded(self, event):
@@ -2445,8 +2441,7 @@ class Script(script.Script):
if hash(oldObj) == hash(obj) and oldState == event.detail1:
return
- self.updateBraille(obj)
- speech.speak(self.speechGenerator.generateSpeech(obj, alreadyFocused=True))
+ self.presentObject(obj, alreadyFocused=True, interrupt=True)
self.pointOfReference['expandedChange'] = hash(obj), event.detail1
details = self.utilities.detailsContentForObject(obj)
@@ -2471,8 +2466,7 @@ class Script(script.Script):
if hash(oldObj) == hash(obj) and oldState == event.detail1:
return
- self.updateBraille(obj)
- speech.speak(self.speechGenerator.generateSpeech(obj, alreadyFocused=True))
+ self.presentObject(obj, alreadyFocused=True, interrupt=True)
self.pointOfReference['indeterminateChange'] = hash(obj), event.detail1
def onMouseButton(self, event):
@@ -2522,8 +2516,7 @@ class Script(script.Script):
names[hash(obj)] = event.any_data
self.pointOfReference['names'] = names
- self.updateBraille(obj)
- speech.speak(self.speechGenerator.generateSpeech(obj, alreadyFocused=True))
+ self.presentObject(obj, alreadyFocused=True, interrupt=True)
def onPressedChanged(self, event):
"""Callback for object:state-changed:pressed accessibility events."""
@@ -2536,8 +2529,7 @@ class Script(script.Script):
if hash(oldObj) == hash(obj) and oldState == event.detail1:
return
- self.updateBraille(obj)
- speech.speak(self.speechGenerator.generateSpeech(obj, alreadyFocused=True))
+ self.presentObject(obj, alreadyFocused=True, interrupt=True)
self.pointOfReference['pressedChange'] = hash(obj), event.detail1
def onSelectedChanged(self, event):
@@ -2711,13 +2703,12 @@ class Script(script.Script):
and not _settingsManager.getSetting('presentToolTips'):
return
if event.detail1:
- self.presentObject(obj)
+ self.presentObject(obj, interrupt=True)
return
if orca_state.locusOfFocus and keyString == "F1":
obj = orca_state.locusOfFocus
- self.updateBraille(obj)
- speech.speak(self.speechGenerator.generateSpeech(obj, priorObj=event.source))
+ self.presentObject(obj, priorObj=event.source, interrupt=True)
return
def onTextAttributesChanged(self, event):
@@ -2784,7 +2775,7 @@ class Script(script.Script):
else:
voice = self.speechGenerator.voice(string=string)
string = self.utilities.adjustForRepeats(string)
- speech.speak(string, voice)
+ self.speakMessage(string, voice)
def onTextInserted(self, event):
"""Callback for object:text-changed:insert accessibility events."""
@@ -2849,7 +2840,7 @@ class Script(script.Script):
else:
voice = self.speechGenerator.voice(obj=event.source, string=string)
string = self.utilities.adjustForRepeats(string)
- speech.speak(string, voice)
+ self.speakMessage(string, voice)
if len(string) != 1:
return
@@ -3284,7 +3275,7 @@ class Script(script.Script):
voice = self.speechGenerator.voice(obj=obj, string=sentence)
sentence = self.utilities.adjustForRepeats(sentence)
- speech.speak(sentence, voice)
+ self.speakMessage(sentence, voice)
return True
def echoPreviousWord(self, obj, offset=None):
@@ -3360,7 +3351,7 @@ class Script(script.Script):
voice = self.speechGenerator.voice(obj=obj, string=word)
word = self.utilities.adjustForRepeats(word)
- speech.speak(word, voice)
+ self.speakMessage(word, voice)
return True
def sayCharacter(self, obj):
@@ -3528,6 +3519,9 @@ class Script(script.Script):
def presentObject(self, obj, **args):
interrupt = args.get("interrupt", False)
+ msg = "DEFAULT: Presenting object %s. Interrupt: %s" % (obj, interrupt)
+ debug.println(debug.LEVEL_INFO, msg, True)
+
self.updateBraille(obj, **args)
utterances = self.speechGenerator.generateSpeech(obj, **args)
speech.speak(utterances, interrupt=interrupt)
@@ -3900,7 +3894,7 @@ class Script(script.Script):
for (charIndex, character) in enumerate(itemString):
voice = self.speechGenerator.voice(string=character)
phoneticString = phonnames.getPhoneticName(character.lower())
- speech.speak(phoneticString, voice)
+ self.speakMessage(phoneticString, voice)
def _saveLastCursorPosition(self, obj, caretOffset):
"""Save away the current text cursor position for next time.
diff --git a/src/orca/scripts/toolkits/GAIL/script.py b/src/orca/scripts/toolkits/GAIL/script.py
index e870dd7e3..edd2d1389 100644
--- a/src/orca/scripts/toolkits/GAIL/script.py
+++ b/src/orca/scripts/toolkits/GAIL/script.py
@@ -64,7 +64,7 @@ class Script(default.Script):
msg = "GAIL: locusOfFocus believed to be typeahead. Presenting change."
debug.println(debug.LEVEL_INFO, msg, True)
- self.presentObject(event.any_data)
+ self.presentObject(event.any_data, interrupt=True)
def onFocus(self, event):
"""Callback for focus: accessibility events."""
diff --git a/src/orca/scripts/toolkits/gtk/script.py b/src/orca/scripts/toolkits/gtk/script.py
index 2cfeaa70a..2ef60fe69 100644
--- a/src/orca/scripts/toolkits/gtk/script.py
+++ b/src/orca/scripts/toolkits/gtk/script.py
@@ -75,7 +75,7 @@ class Script(default.Script):
msg = "GTK: locusOfFocus believed to be typeahead. Presenting change."
debug.println(debug.LEVEL_INFO, msg, True)
- self.presentObject(event.any_data)
+ self.presentObject(event.any_data, interrupt=True)
def onCheckedChanged(self, event):
"""Callback for object:state-changed:checked accessibility events."""
@@ -90,7 +90,7 @@ class Script(default.Script):
if not pyatspi.findAncestor(obj, isListBox):
return
- self.presentObject(obj, alreadyFocused=True)
+ self.presentObject(obj, alreadyFocused=True, interrupt=True)
def onFocus(self, event):
"""Callback for focus: accessibility events."""
@@ -204,7 +204,7 @@ class Script(default.Script):
or obj.getRole() in [pyatspi.ROLE_ALERT, pyatspi.ROLE_INFO_BAR]:
if obj.parent and obj.parent.getRole() == pyatspi.ROLE_APPLICATION:
return
- self.presentObject(event.source)
+ self.presentObject(event.source, interrupt=True)
return
super().onShowingChanged(event)
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index c8e2e2d59..fc24e232d 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -996,6 +996,10 @@ class Script(default.Script):
super().presentObject(obj, **args)
return
+ interrupt = args.get("interrupt", False)
+ msg = "WEB: Presenting object %s. Interrupt: %s" % (obj, interrupt)
+ debug.println(debug.LEVEL_INFO, msg, True)
+
# We shouldn't use cache in this method, because if the last thing we presented
# included this object and offset (e.g. a Say All or Mouse Review), we're in
# danger of presented irrelevant context.
@@ -1755,7 +1759,7 @@ class Script(default.Script):
debug.println(debug.LEVEL_INFO, msg, True)
return False
- self.presentObject(obj, alreadyFocused=True)
+ self.presentObject(obj, alreadyFocused=True, interrupt=True)
self.pointOfReference['checkedChange'] = hash(obj), event.detail1
return True
@@ -1841,7 +1845,7 @@ class Script(default.Script):
msg = "WEB: Presenting event.any_data"
debug.println(debug.LEVEL_INFO, msg, True)
- self.presentObject(event.any_data)
+ self.presentObject(event.any_data, interrupt=True)
focused = self.utilities.focusedObject(event.any_data)
if focused:
@@ -2188,7 +2192,7 @@ class Script(default.Script):
msg = "WEB: Event believed to be browser UI page switch"
debug.println(debug.LEVEL_INFO, msg, True)
if event.detail1:
- self.presentObject(event.source, priorObj=orca_state.locusOfFocus)
+ self.presentObject(event.source, priorObj=orca_state.locusOfFocus, interrupt=True)
return True
if not self.utilities.inDocumentContent(event.source):
@@ -2257,7 +2261,7 @@ class Script(default.Script):
if event.detail1 and self.utilities.isTopLevelBrowserUIAlert(event.source):
msg = "WEB: Event handled: Presenting event source"
debug.println(debug.LEVEL_INFO, msg, True)
- self.presentObject(event.source)
+ self.presentObject(event.source, interrupt=True)
return True
if not self.utilities.inDocumentContent(event.source):
diff --git a/src/orca/structural_navigation.py b/src/orca/structural_navigation.py
index 4c93521ca..bb78ed650 100644
--- a/src/orca/structural_navigation.py
+++ b/src/orca/structural_navigation.py
@@ -1278,7 +1278,7 @@ class StructuralNavigation:
return
eventsynthesizer.scrollToTopEdge(obj)
- self._script.presentObject(obj, offset=offset, priorObj=priorObj)
+ self._script.presentObject(obj, offset=offset, priorObj=priorObj, interrupt=True)
def _presentWithSayAll(self, obj, offset):
if self._script.inSayAll() \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]