Skip to content

Commit

Permalink
Migrate pylint, run and shortcuts to use the new teardown mechanism
Browse files Browse the repository at this point in the history
  • Loading branch information
andfoy committed Aug 30, 2021
1 parent 476d4a9 commit 6d1a7e6
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 6 deletions.
52 changes: 48 additions & 4 deletions spyder/plugins/pylint/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@

# Local imports
from spyder.api.plugins import Plugins, SpyderDockablePlugin
from spyder.api.plugin_registration.decorators import on_plugin_available
from spyder.api.plugin_registration.decorators import (
on_plugin_available, on_plugin_teardown)
from spyder.api.translations import get_translation
from spyder.utils.programs import is_module_installed
from spyder.plugins.mainmenu.api import ApplicationMenus
Expand Down Expand Up @@ -116,10 +117,13 @@ def on_projects_available(self):

# Connect to projects
projects = self.get_plugin(Plugins.Projects)
projects.sig_project_loaded.connect(
self._set_project_dir = (
lambda value: widget.set_conf("project_dir", value))
projects.sig_project_closed.connect(
lambda value: widget.set_conf("project_dir", None))
self._unset_project_dir = (
lambda value: widget.set_conf("project_dir", value))

projects.sig_project_loaded.connect(self._set_project_dir)
projects.sig_project_closed.connect(self._unset_project_dir)

@on_plugin_available(plugin=Plugins.MainMenu)
def on_main_menu_available(self):
Expand All @@ -129,6 +133,46 @@ def on_main_menu_available(self):
mainmenu.add_item_to_application_menu(
pylint_act, menu_id=ApplicationMenus.Source)

@on_plugin_teardown(plugin=Plugins.Editor)
def on_editor_teardown(self):
widget = self.get_widget()
editor = self.get_plugin(Plugins.Editor)

# Connect to Editor
widget.sig_edit_goto_requested.disconnect(editor.load)
editor.sig_editor_focus_changed.disconnect(self._set_filename)

pylint_act = self.get_action(PylintActions.AnalyzeCurrentFile)

# TODO: use new API when editor has migrated
editor.pythonfile_dependent_actions.remove(pylint_act)

@on_plugin_teardown(plugin=Plugins.Preferences)
def on_preferences_teardown(self):
preferences = self.get_plugin(Plugins.Preferences)
preferences.deregister_plugin_preferences(self)

@on_plugin_teardown(plugin=Plugins.Projects)
def on_projects_teardown(self):
widget = self.get_widget()

# Connect to projects
projects = self.get_plugin(Plugins.Projects)
projects.sig_project_loaded.disconnect(self._set_project_dir)
projects.sig_project_closed.disconnect(self._unset_project_dir)

self._set_project_dir = None
self._unset_project_dir = None

@on_plugin_teardown(plugin=Plugins.MainMenu)
def on_main_menu_teardown(self):
mainmenu = self.get_plugin(Plugins.MainMenu)

pylint_act = self.get_action(PylintActions.AnalyzeCurrentFile)
source_menu = mainmenu.get_application_menu(
ApplicationMenus.Source)
mainmenu.remove_item_from_application_menu(pylint_act, menu=source_menu)

# --- Private API
# ------------------------------------------------------------------------
@Slot()
Expand Down
8 changes: 7 additions & 1 deletion spyder/plugins/run/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@

# Local imports
from spyder.api.plugins import Plugins, SpyderPluginV2
from spyder.api.plugin_registration.decorators import on_plugin_available
from spyder.api.plugin_registration.decorators import (
on_plugin_available, on_plugin_teardown)
from spyder.api.translations import get_translation
from spyder.plugins.run.confpage import RunConfigPage

Expand Down Expand Up @@ -54,5 +55,10 @@ def on_preferences_available(self):
preferences = self.get_plugin(Plugins.Preferences)
preferences.register_plugin_preferences(self)

@on_plugin_teardown(plugin=Plugins.Preferences)
def on_preferences_teardown(self):
preferences = self.get_plugin(Plugins.Preferences)
preferences.deregister_plugin_preferences(self)

# --- Public API
# ------------------------------------------------------------------------
21 changes: 20 additions & 1 deletion spyder/plugins/shortcuts/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@

# Local imports
from spyder.api.plugins import Plugins, SpyderPluginV2
from spyder.api.plugin_registration.decorators import on_plugin_available
from spyder.api.plugin_registration.decorators import (
on_plugin_available, on_plugin_teardown)
from spyder.api.translations import get_translation
from spyder.plugins.mainmenu.api import ApplicationMenus, HelpMenuSections
from spyder.plugins.shortcuts.confpage import ShortcutsConfigPage
Expand Down Expand Up @@ -97,6 +98,24 @@ def on_main_menu_available(self):
section=HelpMenuSections.Documentation,
)

@on_plugin_teardown(plugin=Plugins.Preferences)
def on_preferences_teardown(self):
preferences = self.get_plugin(Plugins.Preferences)
preferences.deregister_plugin_preferences(self)

@on_plugin_teardown(plugin=Plugins.MainMenu)
def on_main_menu_teardown(self):
mainmenu = self.get_plugin(Plugins.MainMenu)
shortcuts_action = self.get_action(
ShortcutActions.ShortcutSummaryAction)

# Add to Help menu.
help_menu = mainmenu.get_application_menu(ApplicationMenus.Help)
mainmenu.remove_item_from_application_menu(
shortcuts_action,
menu=help_menu
)

def on_mainwindow_visible(self):
self.apply_shortcuts()

Expand Down

0 comments on commit 6d1a7e6

Please sign in to comment.