From b0375faa45fecba9eb726220d0df2784a51245a5 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Tue, 30 Dec 2025 05:27:59 -0500 Subject: [PATCH] Major sound fixes and more added. Fixed a bug where switch items were being silently ignored. --- sounds/default/switch_off.wav | Bin 0 -> 38444 bytes sounds/default/switch_on.wav | Bin 0 -> 38444 bytes src/cthulhu/cthulhu-setup.ui | 21 ++------------------ src/cthulhu/cthulhu_gui_prefs.py | 19 ------------------ src/cthulhu/formatting.py | 12 +++++------ src/cthulhu/guilabels.py | 5 ----- src/cthulhu/scripts/web/script.py | 2 ++ src/cthulhu/scripts/web/script_utilities.py | 3 +++ src/cthulhu/scripts/web/speech_generator.py | 17 ++++++++++++---- src/cthulhu/settings.py | 2 -- src/cthulhu/sound_generator.py | 5 +++++ src/cthulhu/sound_theme_manager.py | 21 ++++++++++++++------ src/cthulhu/speech_generator.py | 14 +++++++++++-- 13 files changed, 58 insertions(+), 63 deletions(-) create mode 100644 sounds/default/switch_off.wav create mode 100644 sounds/default/switch_on.wav diff --git a/sounds/default/switch_off.wav b/sounds/default/switch_off.wav new file mode 100644 index 0000000000000000000000000000000000000000..956175c210ad6abc260673041dfa4576fea96acf GIT binary patch literal 38444 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�g8e!ckxT6-MH62r2RV=0Farx<4!TPNE*=Gn||m_9Kzv(&IOvv#xIXSvRz z!KBZ0@!#ox1^-I^tzlTru$gHC(_QAr%nO)iG9~>_|F8c~_utEZFaACK|NKAbu1C-r z2cUIPpmQnvnfjSbSj||^v7KVu!LpYnhB1QClEIo`J;PdtuZ%w#nV9}CGX3ZLU;4Y? zcjeEjpKE_^_&Mj#^gpiuz5ajx_x|7CKmY$!{I2+Y@AsYGhW||efyUUT{h$4R*WYb_ z<^L%DS@~zhAJhM){}Y*#m>OB?SvXmEShATin2sFDM*UU$ zrTWX}r`^wKzoz{P{~Pibv_J6f-PX0al*O$Q?yrva&P8jHXr>}p1 z{oVS1{eL57b7pB)3Dzwv+gKEt<(V59TNo9YWSP2H`dOy1_Oh;H-o`xTfA9ag-_5_- zf3f{y{>|`v(VrE6CjagEtNB;&@4-L&{>=J2_iyX}rvJf=p^Wm33XI489s1Y$r|VDH zpWr{;|GNH7Wt_#hhiNNQA!8XM=={F(f6xAn`WN#LwD;-kztjJo{(kYh z@+0L}{4dwv-oLAVm;UDYBlySSugPD~9z1Ji3+DUG51HREy=IDF3}<9z;9xk*aDw3; z<6}l;Mmfe8|K9vN`TO{9=3mUebbssr7X2&ySLL6|zpH<*|GoPA;_vgnuKwEiXU(7O z|9Aag$+Vp5BJ*YD4NPm9J~Dn~Ok$2_29?FCT5ONY&oRrgNwev)>$87k{m9C}%*uR);TFT!|8K$fT7k~*DgIaV zkLM5npQ>MFzxMq){OiJ>(|?}+d-ZSe|M}p1Zcj6uVQ6D&VUlH4V7b0KpIODYRLGcWU9 zh6fB4|4aX?{a635%An5B$I!)~_+RzE%3r0w-M_nj`~D92z39(^KNf#2{;vPC@z43+ zr+=UPb>^4WZ>`_Pe+~bF)|YK(*v`<-*uuDsaW&%!ro&9nnO`w8voNt7U_QW{#FWTX z!%)uvI;(Hp{|)~^_fFXUxA?!{@6x{+e^UQU`ZM`Y_TTKkU;lmm2U^1d8lQad@7_O- z|J?sS{(t-b1>;-BKxQ9iduA8rM@;vbmNPA9Drc@_c4u{Ad%HhtNvL3wf}qh@5R4L|CIi<{cZm%@mCyt zMx*~f|9_tU-N7@6H)|D*qx|10>H{kQP1%wO@p z5B@&+%kz)pU+&+czdQbH{KNl8{LigFm;TKExAY(A{>S5tM;QZ|!kDfyUSNE~_>M7{ zDU7Lysg>y~(_f~yOfQ&bGtFVT#&nZOnpvDVl{t;MjJbk2iYc5)icyx)n!$nrbdJ^Y ze-Hna{;U31{V+tBWNwRB9k(cJCifh6~-HkvW!xUFBx7l%ww3t06Gf| zbkC;Te}(@={|f*0{pAj`|DXT;{09mb*?%hk7XF?4*Ws`I-z$G^{jvIE^ylO6AHP5Ue)oI*?=8Q(ez*Ki z`JMH9@$dP+SNvJ|=j7ire;5Co_s{2l!2fOkxBds6jcdbb%gDsU#59v>22(3jJJV#w zen!wK9H8?VL2Eid>$XGx1^)Z~_t)QPf2aKgwMi=e*8b)E$NUepmk@Lo=cNDBzrG&&z!)Nzyvzm?JUD7@O`08|7-uV{pb3B>EHQ( z3;r$q_u=2CfA0TX{x|$@0^hNk&ydTogJBPYE2AUh62@hW!c3w}eM}up%}iZPzD({+ z{~1}BLKy=YCo@cAkY|tupQj8uV@348$bZP*@jd_g{`LF=l?UtpZTQFWpY=cJP9V@- ei@c12j66(SOkB)d%rBW=F?+FivRr1q!VCZvjjaO! literal 0 HcmV?d00001 diff --git a/src/cthulhu/cthulhu-setup.ui b/src/cthulhu/cthulhu-setup.ui index f12d146..34abfcd 100644 --- a/src/cthulhu/cthulhu-setup.ui +++ b/src/cthulhu/cthulhu-setup.ui @@ -1035,23 +1035,6 @@ False vertical 6 - - - Play sounds when switching between _browse and focus modes - True - True - False - True - 0 - True - - - - False - True - 0 - - True @@ -1094,7 +1077,7 @@ False True - 1 + 0 @@ -1139,7 +1122,7 @@ False True - 2 + 1 diff --git a/src/cthulhu/cthulhu_gui_prefs.py b/src/cthulhu/cthulhu_gui_prefs.py index ff9e7e5..f2dec26 100644 --- a/src/cthulhu/cthulhu_gui_prefs.py +++ b/src/cthulhu/cthulhu_gui_prefs.py @@ -2004,15 +2004,9 @@ class CthulhuSetupGUI(cthulhu_gtkbuilder.GtkBuilderWrapper): prefs = self.prefsDict # Get widget references - self.enableModeChangeSoundCheckButton = self.get_widget( - "enableModeChangeSoundCheckButton") self.soundThemeCombo = self.get_widget("soundThemeCombo") self.roleSoundPresentationCombo = self.get_widget("roleSoundPresentationCombo") - # Set enable mode change sound checkbox - enabled = prefs.get("enableModeChangeSound", settings.enableModeChangeSound) - self.enableModeChangeSoundCheckButton.set_active(enabled) - # Populate sound theme combo box themeManager = sound_theme_manager.getManager() availableThemes = themeManager.getAvailableThemes() @@ -2055,19 +2049,6 @@ class CthulhuSetupGUI(cthulhu_gtkbuilder.GtkBuilderWrapper): break self.roleSoundPresentationCombo.set_active(presentationIndex) - # Update sensitivity based on checkbox - self._updateSoundThemeWidgetSensitivity() - - def _updateSoundThemeWidgetSensitivity(self): - """Update sound theme combo sensitivity based on enable checkbox.""" - enabled = self.enableModeChangeSoundCheckButton.get_active() - self.soundThemeCombo.set_sensitive(enabled) - - def enableModeChangeSoundCheckButtonToggled(self, widget): - """Signal handler for the enable mode change sound checkbox.""" - self.prefsDict["enableModeChangeSound"] = widget.get_active() - self._updateSoundThemeWidgetSensitivity() - def soundThemeComboChanged(self, widget): """Signal handler for the sound theme combo box.""" activeText = widget.get_active_text() diff --git a/src/cthulhu/formatting.py b/src/cthulhu/formatting.py index 0d42196..929c4a1 100644 --- a/src/cthulhu/formatting.py +++ b/src/cthulhu/formatting.py @@ -915,11 +915,11 @@ formatting = { }, Atspi.Role.CHECK_BOX: { 'focused': 'checkedState', - 'unfocused': 'roleName + checkedState + required + invalid + availability', + 'unfocused': 'checkedState + required + invalid + availability', }, Atspi.Role.CHECK_MENU_ITEM: { 'focused': 'checkedState', - 'unfocused': 'roleName + checkedState + availability + positionInSet', + 'unfocused': 'checkedState + availability + positionInSet', }, Atspi.Role.COMBO_BOX: { 'focused': 'expandableState', @@ -970,11 +970,11 @@ formatting = { }, Atspi.Role.RADIO_BUTTON: { 'focused': 'radioState', - 'unfocused': 'roleName + radioState + availability + positionInSet', + 'unfocused': 'radioState + availability + positionInSet', }, Atspi.Role.RADIO_MENU_ITEM: { 'focused': 'radioState', - 'unfocused': 'roleName + checkedState + availability + positionInSet', + 'unfocused': 'checkedState + availability + positionInSet', }, Atspi.Role.SCROLL_BAR: { 'focused': 'percentage', @@ -994,7 +994,7 @@ formatting = { }, 'ROLE_SWITCH': { 'focused': 'switchState', - 'unfocused': 'roleName + switchState + availability', + 'unfocused': 'switchState + availability', }, Atspi.Role.TABLE_CELL: { 'focused': 'expandableState', @@ -1008,7 +1008,7 @@ formatting = { }, Atspi.Role.TOGGLE_BUTTON: { 'focused': 'expandableState or toggleState', - 'unfocused': 'roleName + (expandableState or toggleState) + availability', + 'unfocused': '(expandableState or toggleState) + availability', }, Atspi.Role.TREE_ITEM: { 'focused': 'expandableState', diff --git a/src/cthulhu/guilabels.py b/src/cthulhu/guilabels.py index 730e0fb..a057472 100644 --- a/src/cthulhu/guilabels.py +++ b/src/cthulhu/guilabels.py @@ -929,11 +929,6 @@ USE_CARET_NAVIGATION = _("Control caret navigation") # of a checkbox in which users can indicate their default preference. USE_STRUCTURAL_NAVIGATION = _("Enable _structural navigation") -# Translators: This is the label for a checkbox in the preferences dialog. -# When enabled, Cthulhu will play sounds when switching between browse mode -# and focus mode in web content. -ENABLE_MODE_CHANGE_SOUND = _("Play sounds when switching between _browse and focus modes") - # Translators: This is the label for a combo box in the preferences dialog # where users can select a sound theme. A sound theme is a collection of # audio files that Cthulhu plays for various events. diff --git a/src/cthulhu/scripts/web/script.py b/src/cthulhu/scripts/web/script.py index c12c94c..a9f4341 100644 --- a/src/cthulhu/scripts/web/script.py +++ b/src/cthulhu/scripts/web/script.py @@ -1429,6 +1429,8 @@ class Script(default.Script): return None role = AXObject.get_role(obj) + if self.utilities.isSwitch(obj): + role = Atspi.Role.SWITCH manager = sound_theme_manager.getManager() icon = manager.getRoleSoundIcon(role) if icon: diff --git a/src/cthulhu/scripts/web/script_utilities.py b/src/cthulhu/scripts/web/script_utilities.py index 466b3d1..3ab47ae 100644 --- a/src/cthulhu/scripts/web/script_utilities.py +++ b/src/cthulhu/scripts/web/script_utilities.py @@ -4009,6 +4009,9 @@ class Utilities(script_utilities.Utilities): if not (obj and self.inDocumentContent(obj)): return super().isSwitch(obj) + if AXObject.get_role(obj) == Atspi.Role.SWITCH: + return True + return 'switch' in self._getXMLRoles(obj) def isNonNavigableEmbeddedDocument(self, obj): diff --git a/src/cthulhu/scripts/web/speech_generator.py b/src/cthulhu/scripts/web/speech_generator.py index fcf95c7..deb6eb9 100644 --- a/src/cthulhu/scripts/web/speech_generator.py +++ b/src/cthulhu/scripts/web/speech_generator.py @@ -553,6 +553,16 @@ class SpeechGenerator(speech_generator.SpeechGenerator): result.extend(self.voice(speech_generator.SYSTEM, obj=obj, **args)) role = args.get('role', AXObject.get_role(obj)) + roleSoundPresentation = _settingsManager.getSetting('roleSoundPresentation') + if roleSoundPresentation == settings.ROLE_SOUND_PRESENTATION_SOUND_ONLY \ + and _settingsManager.getSetting('enableSound'): + if AXUtilities.is_check_box(obj) \ + or AXUtilities.is_check_menu_item(obj) \ + or AXUtilities.is_radio_button(obj) \ + or AXUtilities.is_radio_menu_item(obj) \ + or AXUtilities.is_toggle_button(obj) \ + or AXUtilities.is_switch(obj): + return [] enabled, disabled = self._getEnabledAndDisabledContextRoles() if role in disabled: return [] @@ -659,19 +669,18 @@ class SpeechGenerator(speech_generator.SpeechGenerator): if not result: return result - roleSoundPresentation = _settingsManager.getSetting('roleSoundPresentation') if roleSoundPresentation == settings.ROLE_SOUND_PRESENTATION_SPEECH_ONLY: return result if not _settingsManager.getSetting('enableSound'): return result roleSoundIcon = sound_theme_manager.getManager().getRoleSoundIcon(role) + if roleSoundPresentation == settings.ROLE_SOUND_PRESENTATION_SOUND_ONLY: + return [roleSoundIcon] if roleSoundIcon else [] + if not roleSoundIcon: return result - if roleSoundPresentation == settings.ROLE_SOUND_PRESENTATION_SOUND_ONLY: - return [roleSoundIcon] - return [roleSoundIcon] + result def _generatePageSummary(self, obj, **args): diff --git a/src/cthulhu/settings.py b/src/cthulhu/settings.py index 5a2cad0..d4ea97d 100644 --- a/src/cthulhu/settings.py +++ b/src/cthulhu/settings.py @@ -80,7 +80,6 @@ userCustomizableSettings = [ "playSoundForValue", "roleSoundPresentation", "soundTheme", - "enableModeChangeSound", "verbalizePunctuationStyle", "presentToolTips", "sayAllStyle", @@ -322,7 +321,6 @@ playSoundForPositionInSet = False playSoundForValue = False roleSoundPresentation = ROLE_SOUND_PRESENTATION_SOUND_AND_SPEECH soundTheme = "default" -enableModeChangeSound = True # Keyboard and Echo keyboardLayout = GENERAL_KEYBOARD_LAYOUT_DESKTOP diff --git a/src/cthulhu/sound_generator.py b/src/cthulhu/sound_generator.py index 0b0246b..cba7b22 100644 --- a/src/cthulhu/sound_generator.py +++ b/src/cthulhu/sound_generator.py @@ -371,6 +371,11 @@ class SoundGenerator(generator.Generator): return [] role = args.get('role', AXObject.get_role(obj)) + if isinstance(role, str): + if role == "ROLE_SWITCH": + role = Atspi.Role.SWITCH + else: + return [] filename = Atspi.role_get_name(role).replace(' ', '_') result = self._convertFilenameToIcon(filename) if result: diff --git a/src/cthulhu/sound_theme_manager.py b/src/cthulhu/sound_theme_manager.py index dda047c..0759cc1 100644 --- a/src/cthulhu/sound_theme_manager.py +++ b/src/cthulhu/sound_theme_manager.py @@ -172,6 +172,9 @@ class SoundThemeManager: def _getRoleSoundCandidates(self, role): """Return candidate sound names for a given role.""" + role = self._normalizeRole(role) + if role is None: + return [] candidates = ROLE_SOUND_ALIASES.get(role, []) if candidates: return candidates @@ -182,8 +185,18 @@ class SoundThemeManager: return [] + def _normalizeRole(self, role): + if isinstance(role, str): + if role == "ROLE_SWITCH": + return Atspi.Role.SWITCH + return None + return role + def _getRoleStateSoundCandidates(self, role, stateKey): """Return candidate sound names for a given role/state pair.""" + role = self._normalizeRole(role) + if role is None: + return [] bases = ROLE_STATE_SOUND_BASES.get(role, []) if not bases: return [] @@ -225,21 +238,18 @@ class SoundThemeManager: return None def _playThemeSound(self, soundName, interrupt=True, wait=False, - requireModeChangeSetting=False, requireSoundSetting=False): + requireSoundSetting=False): """Play a themed sound with optional gating and blocking. Args: soundName: The name of the sound file (without extension) interrupt: Whether to interrupt currently playing sounds wait: Whether to block until the sound finishes playing - requireModeChangeSetting: Honor enableModeChangeSound setting requireSoundSetting: Honor enableSound setting Returns: True if sound was played, False otherwise """ - if requireModeChangeSetting and not _settingsManager.getSetting('enableModeChangeSound'): - return False if requireSoundSetting and not _settingsManager.getSetting('enableSound'): return False @@ -285,8 +295,7 @@ class SoundThemeManager: return self._playThemeSound( soundName, interrupt=interrupt, - wait=wait, - requireModeChangeSetting=True + wait=wait ) def playFocusModeSound(self): diff --git a/src/cthulhu/speech_generator.py b/src/cthulhu/speech_generator.py index 6cfd3ec..8bc1473 100644 --- a/src/cthulhu/speech_generator.py +++ b/src/cthulhu/speech_generator.py @@ -581,6 +581,15 @@ class SpeechGenerator(generator.Generator): result = [] role = args.get('role', AXObject.get_role(obj)) roleSoundPresentation = _settingsManager.getSetting('roleSoundPresentation') + if roleSoundPresentation == settings.ROLE_SOUND_PRESENTATION_SOUND_ONLY \ + and _settingsManager.getSetting('enableSound'): + if AXUtilities.is_check_box(obj) \ + or AXUtilities.is_check_menu_item(obj) \ + or AXUtilities.is_radio_button(obj) \ + or AXUtilities.is_radio_menu_item(obj) \ + or AXUtilities.is_toggle_button(obj) \ + or AXUtilities.is_switch(obj): + return [] roleSoundIcon = None if roleSoundPresentation != settings.ROLE_SOUND_PRESENTATION_SPEECH_ONLY \ and _settingsManager.getSetting('enableSound'): @@ -627,9 +636,10 @@ class SpeechGenerator(generator.Generator): result.append(self.getLocalizedRoleName(obj, **args)) result.extend(self.voice(SYSTEM, obj=obj, **args)) + if roleSoundPresentation == settings.ROLE_SOUND_PRESENTATION_SOUND_ONLY: + return [roleSoundIcon] if roleSoundIcon else [] + if result and roleSoundIcon: - if roleSoundPresentation == settings.ROLE_SOUND_PRESENTATION_SOUND_ONLY: - return [roleSoundIcon] if roleSoundPresentation == settings.ROLE_SOUND_PRESENTATION_SOUND_AND_SPEECH: return [roleSoundIcon] + result