Skip to content

Commit

Permalink
Migrate Outline explorer, plots, preferences and profiler to use the …
Browse files Browse the repository at this point in the history
…new teardown mechanism
  • Loading branch information
andfoy committed Jul 16, 2021
1 parent 883600a commit ca7fb38
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 10 deletions.
16 changes: 15 additions & 1 deletion spyder/plugins/maininterpreter/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,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.maininterpreter.confpage import MainInterpreterConfigPage
from spyder.plugins.maininterpreter.container import MainInterpreterContainer
Expand Down Expand Up @@ -90,6 +91,19 @@ def on_statusbar_available(self):
if statusbar:
statusbar.add_status_widget(self.interpreter_status)

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

@on_plugin_teardown(plugin=Plugins.StatusBar)
def on_statusbar_teardown(self):
# Add status widget
statusbar = self.get_plugin(Plugins.StatusBar)
if statusbar:
statusbar.remove_status_widget(self.interpreter_status.ID)

# ---- Public API
def get_interpreter(self):
"""Get current interpreter."""
Expand Down
12 changes: 11 additions & 1 deletion spyder/plugins/outlineexplorer/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
from qtpy.QtWidgets import QVBoxLayout

# Local imports
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.api.plugins import SpyderDockablePlugin, Plugins
from spyder.py3compat import is_text_string
Expand Down Expand Up @@ -59,6 +60,15 @@ def on_completions_available(self):
completions.sig_stop_completions.connect(
self.stop_symbol_services)

@on_plugin_teardown(plugin=Plugins.Completions)
def on_completions_teardown(self):
completions = self.get_plugin(Plugins.Completions)

completions.sig_language_completions_available.disconnect(
self.start_symbol_services)
completions.sig_stop_completions.disconnect(
self.stop_symbol_services)

#------ Public API ---------------------------------------------------------
def restore_scrollbar_position(self):
"""Restoring scrollbar position after main window is visible"""
Expand Down
9 changes: 6 additions & 3 deletions spyder/plugins/plots/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,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.plugins.plots.widgets.main_widget import PlotsWidget

Expand Down Expand Up @@ -62,14 +63,16 @@ def on_ipython_console_available(self):
ipyconsole.sig_shellwidget_deleted.connect(
self.remove_shellwidget)

def unregister(self):
@on_plugin_teardown(plugin=Plugins.IPythonConsole)
def on_ipython_console_teardown(self):
# Plugins
ipyconsole = self.get_plugin(Plugins.IPythonConsole)

# Signals
ipyconsole.sig_shellwidget_changed.disconnect(self.set_shellwidget)
ipyconsole.sig_shellwidget_created.disconnect(
self.add_shellwidget)
ipyconsole.sig_shellwidget_deleted.connect(
ipyconsole.sig_shellwidget_deleted.disconnect(
self.remove_shellwidget)

def switch_to_plugin(self, force_focus=False):
Expand Down
30 changes: 26 additions & 4 deletions spyder/plugins/preferences/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@

# Local imports
from spyder.api.plugins import Plugins, SpyderPluginV2, SpyderPlugin
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.config.base import _
from spyder.config.main import CONF_VERSION
from spyder.config.user import NoDefault
Expand Down Expand Up @@ -295,9 +296,30 @@ def on_toolbar_available(self):
section=MainToolbarSections.ApplicationSection
)

def unregister(self):
pass
@on_plugin_teardown(plugin=Plugins.MainMenu)
def on_main_menu_teardown(self):
container = self.get_container()
main_menu = self.get_plugin(Plugins.MainMenu)

main_menu.remove_item_from_application_menu(
container.show_action,
menu_id=ApplicationMenus.Tools,
)

main_menu.remove_item_from_application_menu(
container.reset_action,
menu_id=ApplicationMenus.Tools,
)

@on_plugin_teardown(plugin=Plugins.Toolbar)
def on_toolbar_teardown(self):
container = self.get_container()
toolbar = self.get_plugin(Plugins.Toolbar)
toolbar.remove_item_from_application_toolbar(
container.show_action,
toolbar_id=ApplicationToolbars.Main
)

def on_close(self, cancelable=False) -> bool:
def can_close(self) -> bool:
container = self.get_container()
return not container.is_dialog_open()
22 changes: 21 additions & 1 deletion spyder/plugins/profiler/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.plugins.mainmenu.api import ApplicationMenus
from spyder.plugins.profiler.confpage import ProfilerConfigPage
Expand Down Expand Up @@ -105,6 +106,25 @@ def on_main_menu_available(self):
run_menu = mainmenu.get_application_menu(ApplicationMenus.Run)
mainmenu.add_item_to_application_menu(run_action, menu=run_menu)

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

@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)
run_action = self.get_action(ProfilerActions.ProfileCurrentFile)

run_menu = mainmenu.get_application_menu(ApplicationMenus.Run)
mainmenu.remove_item_from_application_menu(run_action, menu=run_menu)

# --- Public API
# ------------------------------------------------------------------------
def run_profiler(self):
Expand Down

0 comments on commit ca7fb38

Please sign in to comment.