diff --git a/spyder/api/widgets/menus.py b/spyder/api/widgets/menus.py index 219e4faf5f2..0cc59dc52f0 100644 --- a/spyder/api/widgets/menus.py +++ b/spyder/api/widgets/menus.py @@ -108,7 +108,11 @@ def add_action(self, action, section=None, before=None, self._ordered_actions = [] def remove_action(self, item): - self._actions.remove(item) + try: + self._actions.remove(item) + except ValueError: + # Skip if the item is not in the menu + pass def get_title(self): """ diff --git a/spyder/plugins/application/plugin.py b/spyder/plugins/application/plugin.py index 3b36f027633..b194e2e4c5b 100644 --- a/spyder/plugins/application/plugin.py +++ b/spyder/plugins/application/plugin.py @@ -130,8 +130,20 @@ def on_console_teardown(self): @on_plugin_teardown(plugin=Plugins.Shortcuts) def on_shortcuts_teardown(self): self.shortcuts_available = False - if self.main_menu_available: - self._depopulate_help_menu() + + @on_plugin_teardown(plugin=Plugins.MainMenu) + def on_main_menu_teardown(self): + main_menu = self.get_plugin(Plugins.MainMenu) + self.main_menu_available = False + + self._depopulate_file_menu() + self._depopulate_tools_menu() + self._depopulate_help_menu() + + report_action = self.get_action(ConsoleActions.SpyderReportAction) + main_menu.remove_item_from_application_menu( + report_action, + menu_id=ApplicationMenus.Help) def on_close(self, _unused=True): self.get_container().on_close() @@ -176,12 +188,6 @@ def _populate_help_menu(self): self._populate_help_menu_support_section(mainmenu) self._populate_help_menu_about_section(mainmenu) - def _depopulate_help_menu(self): - mainmenu = self.get_plugin(Plugins.MainMenu) - self._depopulate_help_menu_documentation_section(mainmenu) - self._depopulate_help_menu_support_section(mainmenu) - self._populate_help_menu_about_section(mainmenu) - def _populate_help_menu_documentation_section(self, mainmenu): """Add base Spyder documentation actions to the Help main menu.""" if mainmenu: @@ -220,6 +226,28 @@ def _populate_help_menu_about_section(self, mainmenu): menu_id=ApplicationMenus.Help, section=HelpMenuSections.About) + def _depopulate_file_menu(self): + mainmenu = self.get_plugin(Plugins.MainMenu) + if mainmenu: + mainmenu.remove_item_from_application_menu( + self.restart_action, + menu_id=ApplicationMenus.File) + + def _depopulate_tools_menu(self): + """Add base actions and menus to the Tools menu.""" + mainmenu = self.get_plugin(Plugins.MainMenu) + if mainmenu: + if WinUserEnvDialog is not None: + mainmenu.remove_item_from_application_menu( + self.winenv_action, + menu_id=ApplicationMenus.Tools) + + def _depopulate_help_menu(self): + mainmenu = self.get_plugin(Plugins.MainMenu) + self._depopulate_help_menu_documentation_section(mainmenu) + self._depopulate_help_menu_support_section(mainmenu) + self._depopulate_help_menu_about_section(mainmenu) + def _depopulate_help_menu_documentation_section(self, mainmenu): if mainmenu: for documentation_action in [