From 874e1f1b3021c43ae30d05c5b390226b45c8fb82 Mon Sep 17 00:00:00 2001 From: Spiros Georgaras Date: Mon, 2 Dec 2024 20:00:07 +0200 Subject: [PATCH] removing keys.json from the package - instead of reading a second file, self._keys_to_classes will be dynamically populayed --- pyradio/config_window.py | 31 ++++++++++++++++++++++++++++++- pyradio/keyboard/keys.json | 1 - 2 files changed, 30 insertions(+), 2 deletions(-) delete mode 100644 pyradio/keyboard/keys.json diff --git a/pyradio/config_window.py b/pyradio/config_window.py index 90e0605..d7c4c63 100644 --- a/pyradio/config_window.py +++ b/pyradio/config_window.py @@ -3444,17 +3444,46 @@ def __init__( self._list[i][-2] = header_index for n in self._list: logger.error(f'{n}') + ''' + + # do not read keys.json to self._keys_to_classes + # use self._precompute_context_map to populate it dynamically + # keys.json will not be part of the package + keys_file = path.join(path.dirname(__file__), 'keyboard', 'keys.json') logger.error(f'{keys_file = }') with open(keys_file, 'r', encoding='utf-8') as f: self._keys_to_classes = json.load(f) + + ''' keys_file = path.join(path.dirname(__file__), 'keyboard', 'classes.json') - logger.error(f'{keys_file = }') + # logger.error(f'{keys_file = }') with open(keys_file, 'r', encoding='utf-8') as f: self._classes = json.load(f) + # logger.error(f'{self._classes = }') + self._keys_to_classes = self._precompute_context_map(self._classes) + # logger.error(f'{self._keys_to_classes = }') self._needs_update = False + def _precompute_context_map(self, results): + """ + Precompute a map of keys to the classes or contexts they belong to. + + Args: + results (dict): The `results` dictionary mapping class names to their keys. + + Returns: + dict: A map of keys to their associated contexts. + """ + context_map = {} + for class_name, keys in results.items(): + for key in keys: + if key not in context_map: + context_map[key] = [] + context_map[key].append(class_name) + return context_map + def item(self, an_item_id=None): logger.debug(f'{an_item_id = }') if an_item_id is None: diff --git a/pyradio/keyboard/keys.json b/pyradio/keyboard/keys.json deleted file mode 100644 index 351f172..0000000 --- a/pyradio/keyboard/keys.json +++ /dev/null @@ -1 +0,0 @@ -{"pause": ["SimpleCursesString", "SimpleCursesTime", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioKeyboardConfig", "PyRadioRecordingDir", "PyRadioRenameFile", "PyRadioConnectionType", "PyRadioServerWindow"], "l": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioKeyboardConfig", "PyRadioRecordingDir", "PyRadioRenameFile", "PyRadioConnectionType", "PyRadioServerWindow"], "tag": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "t_tag": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "transp": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "v_up1": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "v_up2": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "v_up3": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "v_dn1": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "v_dn2": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "mute": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "s_vol": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "t_calc_col": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "repaint": ["SimpleCursesString", "SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesCheckBox", "SimpleCursesPushButton", "SimpleCursesLineEdit", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow", "InfoWindow"], "t": ["SimpleCursesDate", "SimpleCursesTime", "PyRadio"], "q": ["SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServersSelect", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioSimpleScheduleWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType"], "tab": ["SimpleCursesDate", "SimpleCursesTime", "SimpleCursesLineEdit", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "PyRadioSimpleScheduleWindow", "ExtraParametersEditor", "PyRadioSelectPlayer", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile"], "?": ["SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesLineEdit", "SimpleCursesBoolean", "PyRadio", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioSimpleScheduleWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioKeyboardConfig", "PyRadioRecordingDir", "PyRadioResourceOpener"], "stab": ["SimpleCursesDate", "SimpleCursesTime", "SimpleCursesLineEdit", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "PyRadioSimpleScheduleWindow", "ExtraParametersEditor", "PyRadioKeyboardConfig", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile"], "h": ["SimpleCursesDate", "SimpleCursesTime", "SimpleCursesCounter", "SimpleCursesWidgetColumns", "SimpleCursesMenu", "SimpleCursesBoolean", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioSimpleScheduleWindow", "PyRadioConfigWindow", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioKeyboardConfig", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow"], "g": ["SimpleCursesWidgetColumns", "SimpleCursesMenu", "PyRadio", "PyRadioThemeSelector", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioKeyboardConfig"], "j": ["SimpleCursesWidgetColumns", "SimpleCursesMenu", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServers", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioKeyboardConfig", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow"], "k": ["SimpleCursesWidgetColumns", "SimpleCursesMenu", "SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServers", "PyRadioMessagesSystem", "PyRadioSimpleScheduleWindow", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioKeyboardConfig", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow"], "G": ["SimpleCursesWidgetColumns", "SimpleCursesMenu", "PyRadio", "PyRadioThemeSelector", "RadioBrowserSearchWindow", "RadioBrowserSort", "RadioBrowserServers", "RadioBrowserTermNavigator", "PyRadioMessagesSystem", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioKeyboardConfig"], "edit": ["SimpleCursesMenu", "PyRadio", "PyRadioThemeSelector"], "goto_playing": ["SimpleCursesMenu", "PyRadio"], "add": ["SimpleCursesMenu", "PyRadio", "PyRadioThemeSelector"], "del": ["SimpleCursesMenu", "PyRadio", "RadioBrowserTermNavigator"], "screen_middle": ["SimpleCursesMenu", "PyRadio", "PyRadioSelectPlaylist"], "paste": ["SimpleCursesLineEdit", "PyRadio"], "s": ["SelectPlayer", "PyRadio", "PyRadioThemeSelector", "RadioBrowserConfigWindow", "RadioBrowserSearchWindow", "ExtraParametersEditor", "ExtraParameters", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioEditor", "PyRadioRecordingDir", "PyRadioResourceOpener", "PyRadioRenameFile", "PyRadioBuffering", "PyRadioConnectionType", "PyRadioServerWindow"], "F8": ["PyRadio"], "https": ["PyRadio"], "rb_vote": ["PyRadio"], "open_enc": ["PyRadio"], "extra_p_pamars": ["PyRadio"], "F9": ["PyRadio"], "F7": ["PyRadio"], "open_online": ["PyRadio"], "jump": ["PyRadio"], "gr_prev": ["PyRadio"], "search": ["PyRadio"], "random": ["PyRadio"], "revert_def": ["PyRadio", "RadioBrowserConfigWindow", "PyRadioSelectEncodings", "PyRadioResourceOpener", "PyRadioServerWindow"], "open_extra": ["PyRadio"], "add_to_reg": ["PyRadio"], "rec": ["PyRadio"], "search_next": ["PyRadio"], "open_config": ["PyRadio"], "rb_sort": ["PyRadio"], "search_prev": ["PyRadio"], "ext_player": ["PyRadio"], "append": ["PyRadio"], "screen_top": ["PyRadio"], "Y": ["PyRadio"], "info": ["PyRadio", "PyRadioSimpleScheduleWindow"], "gr": ["PyRadio"], "st_dn": ["PyRadio"], "no_show": ["PyRadio"], "n": ["PyRadio"], "revert_saved": ["PyRadio", "PyRadioSelectPlayer", "PyRadioSelectEncodings", "PyRadioSelectPlaylist", "PyRadioSelectStation", "PyRadioEditor", "PyRadioBuffering", "PyRadioServerWindow"], "gr_next": ["PyRadio"], "F10": ["PyRadio"], "st_up": ["PyRadio"], "Reload": ["PyRadio"], "fav": ["PyRadio"], "rb_info": ["PyRadio"], "reload": ["PyRadio", "PyRadioThemeSelector"], "y": ["PyRadio"], "rb_server": ["PyRadio"], "screen_bottom": ["PyRadio"], "open_playlist": ["PyRadio"], "open_regs": ["PyRadio"], "hist_prev": ["PyRadio"], "hist_next": ["PyRadio"], "p_prev": ["PyRadio"], "p_next": ["PyRadio"], "rb_p_first": ["PyRadio"], "rb_p_next": ["PyRadio"], "rb_p_prev": ["PyRadio"], "watch_theme": ["PyRadioThemeSelector"], "rb_h_add": ["RadioBrowserSearchWindow"], "rb_h_next": ["RadioBrowserSearchWindow"], "rb_h_def": ["RadioBrowserSearchWindow"], "rb_h_save": ["RadioBrowserSearchWindow"], "rb_h_0": ["RadioBrowserSearchWindow"], "rb_h_prev": ["RadioBrowserSearchWindow"], "rb_h_del": ["RadioBrowserSearchWindow"], "next": ["RadioBrowserTermNavigator"], "prev": ["RadioBrowserTermNavigator"], "no_buffer": ["PyRadioBuffering"], "info_rename": ["InfoWindow"], "last_playlist": ["ExtraKeys"], "open_buffer": ["ExtraKeys"], "clear_all_reg": ["ExtraKeys"], "clear_reg": ["ExtraKeys"], "buffer": ["ExtraKeys"], "open_dirs": ["ExtraKeys"], "open_remote_control": ["ExtraKeys"], "new_playlist": ["ExtraKeys"], "hist_top": ["ExtraKeys"], "unnamed": ["ExtraKeys"], "html_help": ["ExtraKeys"], "rename_playlist": ["ExtraKeys"], "change_player": ["ExtraKeys"]} \ No newline at end of file