def setup_menu( api: Api, parent: QWidget, root_item: MenuItem, context: HotkeyContext, ) -> Any: for action in parent.actions(): parent.removeAction(action) if hasattr(parent, "aboutToShow"): parent.aboutToShow.connect( partial(_on_menu_about_to_show, api.log, parent)) parent.aboutToHide.connect(partial(_on_menu_about_to_hide, parent)) menu_builder = MenuBuilder(api, context) for node in root_item.children or []: menu_builder.build(parent, node)