88from typing import List , Tuple , Optional
99import wx .lib .newevent
1010
11- from nvda_controller import set_app_focus_status
11+ from nvda_controller import set_app_focus_status , cancel_speech
1212from database import db_manager
1313from i18n import _
1414from utils import SleepTimer
1919 dialog_manager ,
2020 info ,
2121 event_handlers ,
22- hotkey_manager ,
22+ global_media_keys ,
2323 playback_logic ,
2424 volume_logic ,
2525 seek_logic ,
2626 book_loader ,
2727 equalizer_frame
2828)
29- from .player .hotkey_manager import (
29+ from .player .global_media_keys import (
3030 VK_MEDIA_PLAY_PAUSE , VK_MEDIA_NEXT_TRACK , VK_MEDIA_PREV_TRACK ,
3131 VK_VOLUME_UP , VK_VOLUME_DOWN , VK_VOLUME_MUTE ,
3232 VK_BROWSER_BACK , VK_BROWSER_FORWARD
@@ -95,7 +95,7 @@ def __init__(self,
9595 # Managers
9696 self .equalizer_frame_instance : Optional [wx .Frame ] = None
9797 self .sleep_timer_manager : Optional [SleepTimer ] = None
98- self .hotkey_manager : Optional [hotkey_manager . HotkeyManager ] = None
98+ self .global_keys_manager : Optional [global_media_keys . GlobalMediaKeysManager ] = None
9999 self .book_loader : Optional [book_loader .BookLoader ] = None
100100 self .DurationUpdateEvent = DurationUpdateEvent
101101
@@ -164,6 +164,10 @@ def _init_managers(self):
164164
165165 self .book_loader = book_loader .BookLoader (self )
166166
167+ def _do_global (self , func ):
168+ cancel_speech ()
169+ func ()
170+
167171 def _bind_events (self ):
168172 """Binds all events (UI, Engine, Hotkeys)."""
169173 self .nvda_focus_label .Bind (wx .EVT_CHAR_HOOK , lambda event : controls .on_key_down (self , event ))
@@ -178,19 +182,21 @@ def _bind_events(self):
178182 self .Bind (wx .EVT_CLOSE , lambda event : event_handlers .on_escape (self , event ))
179183
180184 # Setup Global Hotkeys
181- self .hotkey_manager = hotkey_manager .HotkeyManager (self )
185+ self .global_keys_manager = global_media_keys .GlobalMediaKeysManager (self )
186+
182187 key_function_map = {
183- VK_MEDIA_PLAY_PAUSE : lambda : playback_logic .toggle_play_pause (self ),
184- VK_MEDIA_NEXT_TRACK : lambda : playback_logic .play_next_file (self , manual = True ),
185- VK_MEDIA_PREV_TRACK : lambda : playback_logic .play_prev_file (self ),
186- VK_VOLUME_UP : lambda : volume_logic .change_volume (self , 5 ),
187- VK_VOLUME_DOWN : lambda : volume_logic .change_volume (self , - 5 ),
188- VK_VOLUME_MUTE : lambda : volume_logic .toggle_mute (self ),
189- VK_BROWSER_BACK : lambda : seek_logic .seek_backward_setting (self ),
190- VK_BROWSER_FORWARD : lambda : seek_logic .seek_forward_setting (self ),
188+ VK_MEDIA_PLAY_PAUSE : lambda : self . _do_global ( lambda : playback_logic .toggle_play_pause (self ) ),
189+ VK_MEDIA_NEXT_TRACK : lambda : self . _do_global ( lambda : playback_logic .play_next_file (self , manual = True ) ),
190+ VK_MEDIA_PREV_TRACK : lambda : self . _do_global ( lambda : playback_logic .play_prev_file (self ) ),
191+ VK_VOLUME_UP : lambda : self . _do_global ( lambda : volume_logic .change_volume (self , 5 ) ),
192+ VK_VOLUME_DOWN : lambda : self . _do_global ( lambda : volume_logic .change_volume (self , - 5 ) ),
193+ VK_VOLUME_MUTE : lambda : self . _do_global ( lambda : volume_logic .toggle_mute (self ) ),
194+ VK_BROWSER_BACK : lambda : self . _do_global ( lambda : seek_logic .seek_backward_setting (self ) ),
195+ VK_BROWSER_FORWARD : lambda : self . _do_global ( lambda : seek_logic .seek_forward_setting (self ) ),
191196 }
192- self .hotkey_manager .setup_hotkeys (key_function_map )
193- self .Bind (wx .EVT_HOTKEY , self .hotkey_manager .on_hotkey_pressed )
197+
198+ self .global_keys_manager .setup_hotkeys (key_function_map )
199+ self .Bind (wx .EVT_HOTKEY , self .global_keys_manager .on_hotkey_pressed )
194200
195201 self .ui_timer = wx .Timer (self )
196202 self .Bind (wx .EVT_TIMER , lambda event : event_handlers .on_ui_timer (self , event ), self .ui_timer )
@@ -282,3 +288,9 @@ def on_eq_enabled_changed(self, new_enabled: bool):
282288 """Toggles the Equalizer on/off."""
283289 self .is_eq_enabled = new_enabled
284290 self ._update_audio_filters ()
291+
292+ def update_file_display (self , filename : str ):
293+ self .nvda_focus_label .SetLabel (filename )
294+ if not self .IsActive ():
295+ from nvda_controller import speak , LEVEL_MINIMAL
296+ speak (filename , LEVEL_MINIMAL )
0 commit comments