def register_menu(self, menu: wx.Menu): def _get_callback(plugin): return lambda _: self.callbacks[plugin]() sorted_plugins = sorted(self.plugins, key=lambda p: p.metadata.name) for plugin in sorted_plugins: item = menu.Append(wx.ID_ANY, plugin.metadata.name) menu.Bind(wx.EVT_MENU, _get_callback(plugin), item)
def register_menu(self, menu: wx.Menu, parent: wx.Window): commands = [cast(CommandPlugin, p) for p in self.plugins if p.ptype == PluginType.COMMAND] windowed = [cast(WindowedPlugin, p) for p in self.plugins if p.ptype == PluginType.WINDOWED] if len(self.plugins) != 0: menu.AppendSeparator() for plugin in commands: id_ = wx.NewIdRef(count=1) item = menu.Append(id_, plugin.metadata.name) menu.Bind(wx.EVT_MENU, self.make_command_callback(plugin), item) if len(commands) != 0 and len(windowed) != 0: menu.AppendSeparator() for plugin in windowed: id_ = wx.NewIdRef(count=1) item = menu.Append(id_, plugin.metadata.name) menu.Bind(wx.EVT_MENU, self.make_windowed_callback(plugin, parent), item)
def create_menubar(self, language_list, style=0): modifier = 'Ctrl' if name == 'nt' else 'Opt' menubar = MenuBar() menubar_file = Menu() menubar_file.Append(ID_FILE_EXPORT, '&Export\t' + modifier + 'E') menubar_file.AppendSeparator() menubar_file.Append(ID_FILE_EXIT, 'E&xit\t' + modifier + 'W') menubar_edit = Menu() menubar_edit_timer = Menu() menubar_edit.AppendSubMenu(menubar_edit_timer, '&Timer') menubar_edit_timer.Append(ID_EDIT_TIMER_START, '&Start\t' + modifier + 'S') menubar_edit_timer.Append(ID_EDIT_TIMER_PAUSE, '&Pause\t' + modifier + 'P') menubar_edit_timer.Append(ID_EDIT_TIMER_RESET, '&Reset\t' + modifier + 'R') menubar_edit_time_stamp = Menu() menubar_edit.AppendSubMenu(menubar_edit_time_stamp, 'Time &Stamp') menubar_edit_time_stamp.Append(ID_EDIT_TIME_STAMP_NEW, '&New\t' + modifier + 'N') menubar_view = Menu() menubar_view.AppendCheckItem(ID_VIEW_SHOW_PREVIEW, 'Show &Preview\t' + modifier + 'Shift+P') menubar_view_language = Menu() language_menu_item_list = [] if language_list is not None: menubar_view_language.Bind(EVT_MENU, lambda x: self.change_language()) menubar_view.AppendSubMenu(menubar_view_language, '&Language') for n in range(len(language_list)): language_menu_item_list.append( menubar_view_language.AppendRadioItem( ID_ANY, language_list[n]['Language Setting'])) menubar_help = Menu() menubar_help.Append(ID_HELP_WELCOME, '&Welcome\t' + modifier + 'Shift+H') menubar_help.AppendSeparator() menubar_help.Append(ID_HELP_VISIT_GITHUB, 'Visit &Github') menubar_help.AppendSeparator() menubar_help.Append(ID_HELP_ABOUT, '&About') menubar.Append(menubar_file, '&File') menubar.Append(menubar_edit, '&Edit') menubar.Append(menubar_view, '&View') menubar.Append(menubar_help, '&Help') return menubar, language_menu_item_list
def add_item(menu: wx.Menu, menu_name, callback): id_ = menu.Append(-1, menu_name).Id menu.Bind(wx.EVT_MENU, lambda _: callback(), id=id_)