[orca] Call language logic in default script's sayLine()
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Call language logic in default script's sayLine()
- Date: Fri, 7 Jan 2022 15:46:03 +0000 (UTC)
commit 77b2c6aca5b9f57d9b7ebb64d313e2257452b301
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Fri Jan 7 16:43:34 2022 +0100
Call language logic in default script's sayLine()
This is another change that should not impact the end-user experience.
It is a precursor to implementing support for on-the-fly language
switching.
Also add a debugging line so we can identify any apps or toolkits for
which getting text attributes is non-performant.
src/orca/script_utilities.py | 4 ++++
src/orca/scripts/default.py | 20 +++++++++++++-------
2 files changed, 17 insertions(+), 7 deletions(-)
---
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index 881383a4e..3c84d4371 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -3158,6 +3158,7 @@ class Utilities:
msg = "INFO: Getting text attributes for %s (chars: %i-%i)" % (obj, startOffset, endOffset)
debug.println(debug.LEVEL_INFO, msg, True)
+ startTime = time.time()
rv = []
offset = startOffset
@@ -3170,6 +3171,9 @@ class Utilities:
rv.append((max(start, offset), end, attrDict))
offset = max(end, offset + 1)
+ endTime = time.time()
+ msg = "INFO: %i attribute ranges found in %.4fs" % (len(rv), endTime - startTime)
+ debug.println(debug.LEVEL_INFO, msg, True)
return rv
def textAttributes(self, acc, offset=None, get_defaults=False):
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index 4257505ba..d17b6cc82 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -3431,14 +3431,20 @@ class Script(script.Script):
endOffset = startOffset + len(line)
orca.emitRegionChanged(obj, startOffset, endOffset, orca.CARET_TRACKING)
- voice = self.speechGenerator.voice(obj=obj, string=line)
- line = self.utilities.adjustForLinks(obj, line, startOffset)
- line = self.utilities.adjustForRepeats(line)
- if self.utilities.shouldVerbalizeAllPunctuation(obj):
- line = self.utilities.verbalizeAllPunctuation(line)
+ utterance = []
+ split = self.utilities.splitSubstringByLanguage(obj, startOffset, endOffset)
+ for start, end, string, language, dialect in split:
+ if not string:
+ continue
- utterance = [line]
- utterance.extend(voice)
+ voice = self.speechGenerator.voice(obj=obj, string=string)
+ string = self.utilities.adjustForLinks(obj, string, start)
+ string = self.utilities.adjustForRepeats(string)
+ if self.utilities.shouldVerbalizeAllPunctuation(obj):
+ string = self.utilities.verbalizeAllPunctuation(string)
+ result = [string]
+ result.extend(voice)
+ utterance.append(result)
speech.speak(utterance)
else:
# Speak blank line if appropriate.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]