Changed the application shutdown code to use a signal to indicate the shutdown. eric7

Thu, 10 Apr 2025 18:39:29 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 10 Apr 2025 18:39:29 +0200
branch
eric7
changeset 11215
d07c71a34adf
parent 11214
8cb6b7651074
child 11216
a1471981ef18

Changed the application shutdown code to use a signal to indicate the shutdown.

src/eric7/APIs/Python3/eric7.api file | annotate | diff | comparison | revisions
src/eric7/Cooperation/ChatWidget.py file | annotate | diff | comparison | revisions
src/eric7/Debugger/DebugUI.py file | annotate | diff | comparison | revisions
src/eric7/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
src/eric7/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.Cooperation.ChatWidget.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.Debugger.DebugUI.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.HelpViewer.HelpViewerWidget.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWidget.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWindow.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.PipInterface.Pip.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.PipInterface.PipPackagesWindow.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.PluginManager.PluginManager.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.Templates.TemplateViewer.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.UI.CodeDocumentationViewer.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.UI.Previewer.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.UI.PythonAstViewer.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.UI.UserInterface.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.Utilities.BackgroundService.html file | annotate | diff | comparison | revisions
src/eric7/HelpViewer/HelpViewerWidget.py file | annotate | diff | comparison | revisions
src/eric7/MicroPython/MicroPythonWidget.py file | annotate | diff | comparison | revisions
src/eric7/MicroPython/MicroPythonWindow.py file | annotate | diff | comparison | revisions
src/eric7/PipInterface/Pip.py file | annotate | diff | comparison | revisions
src/eric7/PipInterface/PipPackagesWindow.py file | annotate | diff | comparison | revisions
src/eric7/PluginManager/PluginManager.py file | annotate | diff | comparison | revisions
src/eric7/Templates/TemplateViewer.py file | annotate | diff | comparison | revisions
src/eric7/UI/CodeDocumentationViewer.py file | annotate | diff | comparison | revisions
src/eric7/UI/Previewer.py file | annotate | diff | comparison | revisions
src/eric7/UI/PythonAstViewer.py file | annotate | diff | comparison | revisions
src/eric7/UI/UserInterface.py file | annotate | diff | comparison | revisions
src/eric7/Utilities/BackgroundService.py file | annotate | diff | comparison | revisions
--- a/src/eric7/APIs/Python3/eric7.api	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/APIs/Python3/eric7.api	Thu Apr 10 18:39:29 2025 +0200
@@ -160,7 +160,6 @@
 eric7.Cooperation.ChatWidget.ChatWidget.preferencesChanged?4()
 eric7.Cooperation.ChatWidget.ChatWidget.sendEdit?7
 eric7.Cooperation.ChatWidget.ChatWidget.shareEditor?7
-eric7.Cooperation.ChatWidget.ChatWidget.shutdown?4()
 eric7.Cooperation.ChatWidget.ChatWidget.startEdit?7
 eric7.Cooperation.ChatWidget.ChatWidget?1(ui, port=-1, parent=None)
 eric7.Cooperation.Connection.Connection.Editor?7
@@ -779,7 +778,6 @@
 eric7.Debugger.DebugUI.DebugUI.setTracePython?4(tracePython)
 eric7.Debugger.DebugUI.DebugUI.setWdHistory?4(wdStr, clearHistories=False, history=None)
 eric7.Debugger.DebugUI.DebugUI.showNotification?4(notification, kind=NotificationTypes.INFORMATION, timeout=None)
-eric7.Debugger.DebugUI.DebugUI.shutdown?4()
 eric7.Debugger.DebugUI.DebugUI.shutdownServer?4()
 eric7.Debugger.DebugUI.DebugUI.variablesFilter?4(scope)
 eric7.Debugger.DebugUI.DebugUI?1(ui, vm, debugServer, debugViewer, project)
@@ -2423,7 +2421,6 @@
 eric7.HelpViewer.HelpViewerWidget.HelpViewerWidget.searchPrev?4()
 eric7.HelpViewer.HelpViewerWidget.HelpViewerWidget.searchQtHelp?4(searchExpression)
 eric7.HelpViewer.HelpViewerWidget.HelpViewerWidget.showHideSearch?4(visible)
-eric7.HelpViewer.HelpViewerWidget.HelpViewerWidget.shutdown?4()
 eric7.HelpViewer.HelpViewerWidget.HelpViewerWidget.webProfile?4()
 eric7.HelpViewer.HelpViewerWidget.HelpViewerWidget.webSettings?4()
 eric7.HelpViewer.HelpViewerWidget.HelpViewerWidget?1(parent=None)
@@ -3370,7 +3367,6 @@
 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.on_runButton_clicked?4()
 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.setActionButtons?4(**kwargs)
 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.showError?4(method, error)
-eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.shutdown?4()
 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget?1(parent=None, forMPyWindow=False)
 eric7.MicroPython.MicroPythonWindow.MicroPythonWindow.activeWindow?4()
 eric7.MicroPython.MicroPythonWindow.MicroPythonWindow.addSideWidget?4(_side, widget, icon, label, )
@@ -3385,6 +3381,7 @@
 eric7.MicroPython.MicroPythonWindow.MicroPythonWindow.removeSideWidget?4(widget)
 eric7.MicroPython.MicroPythonWindow.MicroPythonWindow.showPreferences?4(pageName=None)
 eric7.MicroPython.MicroPythonWindow.MicroPythonWindow.showSideWidget?4(widget)
+eric7.MicroPython.MicroPythonWindow.MicroPythonWindow.shutdown?7
 eric7.MicroPython.MicroPythonWindow.MicroPythonWindow?1(parent=None)
 eric7.MicroPython.MicroPythonWindow.SSL_AVAILABLE?7
 eric7.MicroPython.MipLocalInstaller.MicroPythonPackageIndex?7
@@ -3889,7 +3886,6 @@
 eric7.PipInterface.Pip.Pip.runCleanup?4(envName)
 eric7.PipInterface.Pip.Pip.runProcess?4(args, interpreter)
 eric7.PipInterface.Pip.Pip.showCacheInfo?4(venvName)
-eric7.PipInterface.Pip.Pip.shutdown?4()
 eric7.PipInterface.Pip.Pip.uninstallPackages?4(packages, venvName)
 eric7.PipInterface.Pip.Pip.uninstallPyprojectDependencies?4(venvName)
 eric7.PipInterface.Pip.Pip.uninstallRequirements?4(venvName)
@@ -3985,6 +3981,7 @@
 eric7.PipInterface.PipPackagesWidget.PipPackagesWidget.setVulnerabilityEnabled?4(enable)
 eric7.PipInterface.PipPackagesWidget.PipPackagesWidget?1(pip, parent=None)
 eric7.PipInterface.PipPackagesWindow.PipPackagesWindow.closeEvent?4(evt)
+eric7.PipInterface.PipPackagesWindow.PipPackagesWindow.shutdown?7
 eric7.PipInterface.PipPackagesWindow.PipPackagesWindow?1(parent=None)
 eric7.PipInterface.PipVulnerabilityChecker.Package.name?7
 eric7.PipInterface.PipVulnerabilityChecker.Package.version?7
@@ -4100,7 +4097,6 @@
 eric7.PluginManager.PluginManager.PluginManager.clearPluginsPrivateData?4(type_)
 eric7.PluginManager.PluginManager.PluginManager.deactivatePlugin?4(name, onDemand=False)
 eric7.PluginManager.PluginManager.PluginManager.deactivateVcsPlugins?4()
-eric7.PluginManager.PluginManager.PluginManager.doShutdown?4()
 eric7.PluginManager.PluginManager.PluginManager.downLoadRepositoryFile?4(url=None)
 eric7.PluginManager.PluginManager.PluginManager.finalizeSetup?4()
 eric7.PluginManager.PluginManager.PluginManager.getPluginApiFiles?4(language)
@@ -10482,9 +10478,8 @@
 eric7.Templates.TemplateViewer.TemplateViewer.readTemplates?4(filename=None)
 eric7.Templates.TemplateViewer.TemplateViewer.removeEntry?4(itm)
 eric7.Templates.TemplateViewer.TemplateViewer.removeGroup?4(itm)
-eric7.Templates.TemplateViewer.TemplateViewer.save?4()
 eric7.Templates.TemplateViewer.TemplateViewer.writeTemplates?4(filename=None)
-eric7.Templates.TemplateViewer.TemplateViewer?1(parent, viewmanager)
+eric7.Templates.TemplateViewer.TemplateViewer?1(ui, viewmanager)
 eric7.Templates.TemplatesFile.TemplateViewer?7
 eric7.Templates.TemplatesFile.TemplatesFile.readFile?4(filename: str)
 eric7.Templates.TemplatesFile.TemplatesFile.writeFile?4(filename: str)
@@ -10961,7 +10956,6 @@
 eric7.UI.CodeDocumentationViewer.CodeDocumentationViewer.providerRemoved?7
 eric7.UI.CodeDocumentationViewer.CodeDocumentationViewer.registerProvider?4(providerName, providerDisplay, provider, supported)
 eric7.UI.CodeDocumentationViewer.CodeDocumentationViewer.showInfo?4(editor)
-eric7.UI.CodeDocumentationViewer.CodeDocumentationViewer.shutdown?4()
 eric7.UI.CodeDocumentationViewer.CodeDocumentationViewer.unregisterProvider?4(providerName)
 eric7.UI.CodeDocumentationViewer.CodeDocumentationViewer?1(parent=None)
 eric7.UI.CodeDocumentationViewer.DocumentationViewerWidget.EmpytDocument_Dark?7
@@ -11158,8 +11152,7 @@
 eric7.UI.Previewer.Previewer.preferencesChanged?4()
 eric7.UI.Previewer.Previewer.setSplitter?4(splitter)
 eric7.UI.Previewer.Previewer.show?4()
-eric7.UI.Previewer.Previewer.shutdown?4()
-eric7.UI.Previewer.Previewer?1(viewmanager, parent=None)
+eric7.UI.Previewer.Previewer?1(viewmanager, ui)
 eric7.UI.Previewers.MarkdownExtensions.MermaidExtension.extendMarkdown?4(md)
 eric7.UI.Previewers.MarkdownExtensions.MermaidPreprocessor.run?4(lines)
 eric7.UI.Previewers.MarkdownExtensions.MermaidRegex?7
@@ -11197,8 +11190,7 @@
 eric7.UI.PythonAstViewer.PythonAstViewer.preferencesChanged?4()
 eric7.UI.PythonAstViewer.PythonAstViewer.resizeEvent?4(_evt)
 eric7.UI.PythonAstViewer.PythonAstViewer.show?4()
-eric7.UI.PythonAstViewer.PythonAstViewer.shutdown?4()
-eric7.UI.PythonAstViewer.PythonAstViewer?1(viewmanager, parent=None)
+eric7.UI.PythonAstViewer.PythonAstViewer?1(viewmanager, ui)
 eric7.UI.PythonDisViewer.PythonDisViewer.CodeInfoRole?7
 eric7.UI.PythonDisViewer.PythonDisViewer.EndLineRole?7
 eric7.UI.PythonDisViewer.PythonDisViewer.StartLineRole?7
@@ -11315,6 +11307,7 @@
 eric7.UI.UserInterface.UserInterface.showPreferences?4(pageName=None)
 eric7.UI.UserInterface.UserInterface.showReplaceFilesWidget?4(txt="", searchDir="", openFiles=False)
 eric7.UI.UserInterface.UserInterface.showSideWidget?4(widget)
+eric7.UI.UserInterface.UserInterface.shutdown?7
 eric7.UI.UserInterface.UserInterface.unregisterToolbar?4(name)
 eric7.UI.UserInterface.UserInterface.upgradeEric?4()
 eric7.UI.UserInterface.UserInterface.upgradeEricPyQt?4()
@@ -11349,7 +11342,6 @@
 eric7.Utilities.BackgroundService.BackgroundService.serviceConnect?4(fx, lang, modulepath, module, callback, onErrorCallback=None, onBatchDone=None, )
 eric7.Utilities.BackgroundService.BackgroundService.serviceDisconnect?4(fx, lang)
 eric7.Utilities.BackgroundService.BackgroundService.serviceNotAvailable?7
-eric7.Utilities.BackgroundService.BackgroundService.shutdown?4()
 eric7.Utilities.BackgroundService.BackgroundService?1(parent=None)
 eric7.Utilities.ClassBrowsers.ClassBrowserRegistry?7
 eric7.Utilities.ClassBrowsers.ClbrBaseClasses.Attribute.addAssignment?4(lineno)
--- a/src/eric7/Cooperation/ChatWidget.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Cooperation/ChatWidget.py	Thu Apr 10 18:39:29 2025 +0200
@@ -97,6 +97,8 @@
         self.recent = []
         self.__loadHostsHistory()
 
+        self.__ui.shutdown.connect(self.__shutdown)
+
     def __loadHostsHistory(self):
         """
         Private method to load the recently connected hosts.
@@ -720,9 +722,9 @@
         )
         self.chatEdit.setTextColor(color)
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to shut down the cooperation system.
+        Private method to shut down the cooperation system.
         """
         self.__client.disconnectConnections()
         self.__setConnected(False)
--- a/src/eric7/Debugger/DebugUI.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Debugger/DebugUI.py	Thu Apr 10 18:39:29 2025 +0200
@@ -185,6 +185,9 @@
         project.newProject.connect(self.__projectOpened)
         project.projectClosed.connect(self.__projectClosed)
 
+        # Connect the shutdown signal
+        ui.shutdown.connect(self.__shutdown)
+
         # Set a flag for the passive debug mode
         self.passive = Preferences.getDebugger("PassiveDbgEnabled")
 
@@ -1172,9 +1175,9 @@
 
         self.debugViewer.breakpointViewer.clearHistories()
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to perform shutdown actions.
+        Private method to perform shutdown actions.
         """
         # Just save the 10 most recent entries
         del self.scriptsHistory[10:]
Binary file src/eric7/Documentation/Help/source.qch has changed
--- a/src/eric7/Documentation/Help/source.qhp	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Help/source.qhp	Thu Apr 10 18:39:29 2025 +0200
@@ -2184,6 +2184,7 @@
       <keyword name="BackgroundService.__processQueue" id="BackgroundService.__processQueue" ref="eric7.Utilities.BackgroundService.html#BackgroundService.__processQueue" />
       <keyword name="BackgroundService.__receive" id="BackgroundService.__receive" ref="eric7.Utilities.BackgroundService.html#BackgroundService.__receive" />
       <keyword name="BackgroundService.__send" id="BackgroundService.__send" ref="eric7.Utilities.BackgroundService.html#BackgroundService.__send" />
+      <keyword name="BackgroundService.__shutdown" id="BackgroundService.__shutdown" ref="eric7.Utilities.BackgroundService.html#BackgroundService.__shutdown" />
       <keyword name="BackgroundService.__startExternalClient" id="BackgroundService.__startExternalClient" ref="eric7.Utilities.BackgroundService.html#BackgroundService.__startExternalClient" />
       <keyword name="BackgroundService.enqueueRequest" id="BackgroundService.enqueueRequest" ref="eric7.Utilities.BackgroundService.html#BackgroundService.enqueueRequest" />
       <keyword name="BackgroundService.on_disconnectSocket" id="BackgroundService.on_disconnectSocket" ref="eric7.Utilities.BackgroundService.html#BackgroundService.on_disconnectSocket" />
@@ -2193,7 +2194,6 @@
       <keyword name="BackgroundService.restartService" id="BackgroundService.restartService" ref="eric7.Utilities.BackgroundService.html#BackgroundService.restartService" />
       <keyword name="BackgroundService.serviceConnect" id="BackgroundService.serviceConnect" ref="eric7.Utilities.BackgroundService.html#BackgroundService.serviceConnect" />
       <keyword name="BackgroundService.serviceDisconnect" id="BackgroundService.serviceDisconnect" ref="eric7.Utilities.BackgroundService.html#BackgroundService.serviceDisconnect" />
-      <keyword name="BackgroundService.shutdown" id="BackgroundService.shutdown" ref="eric7.Utilities.BackgroundService.html#BackgroundService.shutdown" />
       <keyword name="BaseDevice" id="BaseDevice" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice" />
       <keyword name="BaseDevice (Constructor)" id="BaseDevice (Constructor)" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.__init__" />
       <keyword name="BaseDevice.__getDeviceData" id="BaseDevice.__getDeviceData" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.__getDeviceData" />
@@ -3011,6 +3011,7 @@
       <keyword name="ChatWidget.__setConnected" id="ChatWidget.__setConnected" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.__setConnected" />
       <keyword name="ChatWidget.__setHostsHistory" id="ChatWidget.__setHostsHistory" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.__setHostsHistory" />
       <keyword name="ChatWidget.__showErrorMessage" id="ChatWidget.__showErrorMessage" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.__showErrorMessage" />
+      <keyword name="ChatWidget.__shutdown" id="ChatWidget.__shutdown" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.__shutdown" />
       <keyword name="ChatWidget.appendMessage" id="ChatWidget.appendMessage" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.appendMessage" />
       <keyword name="ChatWidget.checkEditorActions" id="ChatWidget.checkEditorActions" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.checkEditorActions" />
       <keyword name="ChatWidget.getClient" id="ChatWidget.getClient" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.getClient" />
@@ -3026,7 +3027,6 @@
       <keyword name="ChatWidget.on_startEditButton_clicked" id="ChatWidget.on_startEditButton_clicked" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.on_startEditButton_clicked" />
       <keyword name="ChatWidget.on_usersList_customContextMenuRequested" id="ChatWidget.on_usersList_customContextMenuRequested" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.on_usersList_customContextMenuRequested" />
       <keyword name="ChatWidget.preferencesChanged" id="ChatWidget.preferencesChanged" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.preferencesChanged" />
-      <keyword name="ChatWidget.shutdown" id="ChatWidget.shutdown" ref="eric7.Cooperation.ChatWidget.html#ChatWidget.shutdown" />
       <keyword name="Checker" id="Checker" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#Checker" />
       <keyword name="Checker (Constructor)" id="Checker (Constructor)" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#Checker.__init__" />
       <keyword name="Checker.build_tokens_line" id="Checker.build_tokens_line" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#Checker.build_tokens_line" />
@@ -3228,6 +3228,7 @@
       <keyword name="CodeDocumentationViewer.__selectProvider" id="CodeDocumentationViewer.__selectProvider" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.__selectProvider" />
       <keyword name="CodeDocumentationViewer.__setupUi" id="CodeDocumentationViewer.__setupUi" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.__setupUi" />
       <keyword name="CodeDocumentationViewer.__showDisabledMessage" id="CodeDocumentationViewer.__showDisabledMessage" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.__showDisabledMessage" />
+      <keyword name="CodeDocumentationViewer.__shutdown" id="CodeDocumentationViewer.__shutdown" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.__shutdown" />
       <keyword name="CodeDocumentationViewer.__unregisterTimerTimeout" id="CodeDocumentationViewer.__unregisterTimerTimeout" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.__unregisterTimerTimeout" />
       <keyword name="CodeDocumentationViewer.documentationReady" id="CodeDocumentationViewer.documentationReady" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.documentationReady" />
       <keyword name="CodeDocumentationViewer.finalizeSetup" id="CodeDocumentationViewer.finalizeSetup" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.finalizeSetup" />
@@ -3238,7 +3239,6 @@
       <keyword name="CodeDocumentationViewer.preferencesChanged" id="CodeDocumentationViewer.preferencesChanged" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.preferencesChanged" />
       <keyword name="CodeDocumentationViewer.registerProvider" id="CodeDocumentationViewer.registerProvider" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.registerProvider" />
       <keyword name="CodeDocumentationViewer.showInfo" id="CodeDocumentationViewer.showInfo" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.showInfo" />
-      <keyword name="CodeDocumentationViewer.shutdown" id="CodeDocumentationViewer.shutdown" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.shutdown" />
       <keyword name="CodeDocumentationViewer.unregisterProvider" id="CodeDocumentationViewer.unregisterProvider" ref="eric7.UI.CodeDocumentationViewer.html#CodeDocumentationViewer.unregisterProvider" />
       <keyword name="CodeDocumentationViewerTemplate (Module)" id="CodeDocumentationViewerTemplate (Module)" ref="eric7.UI.CodeDocumentationViewerTemplate.html" />
       <keyword name="CodeFormatting (Package)" id="CodeFormatting (Package)" ref="index-eric7.CodeFormatting.html" />
@@ -4174,6 +4174,7 @@
       <keyword name="DebugUI.__showBreakpointsMenu" id="DebugUI.__showBreakpointsMenu" ref="eric7.Debugger.DebugUI.html#DebugUI.__showBreakpointsMenu" />
       <keyword name="DebugUI.__showDebugMenu" id="DebugUI.__showDebugMenu" ref="eric7.Debugger.DebugUI.html#DebugUI.__showDebugMenu" />
       <keyword name="DebugUI.__showNotConnectedWarning" id="DebugUI.__showNotConnectedWarning" ref="eric7.Debugger.DebugUI.html#DebugUI.__showNotConnectedWarning" />
+      <keyword name="DebugUI.__shutdown" id="DebugUI.__shutdown" ref="eric7.Debugger.DebugUI.html#DebugUI.__shutdown" />
       <keyword name="DebugUI.__specialContinue" id="DebugUI.__specialContinue" ref="eric7.Debugger.DebugUI.html#DebugUI.__specialContinue" />
       <keyword name="DebugUI.__step" id="DebugUI.__step" ref="eric7.Debugger.DebugUI.html#DebugUI.__step" />
       <keyword name="DebugUI.__stepOut" id="DebugUI.__stepOut" ref="eric7.Debugger.DebugUI.html#DebugUI.__stepOut" />
@@ -4208,7 +4209,6 @@
       <keyword name="DebugUI.setTracePython" id="DebugUI.setTracePython" ref="eric7.Debugger.DebugUI.html#DebugUI.setTracePython" />
       <keyword name="DebugUI.setWdHistory" id="DebugUI.setWdHistory" ref="eric7.Debugger.DebugUI.html#DebugUI.setWdHistory" />
       <keyword name="DebugUI.showNotification" id="DebugUI.showNotification" ref="eric7.Debugger.DebugUI.html#DebugUI.showNotification" />
-      <keyword name="DebugUI.shutdown" id="DebugUI.shutdown" ref="eric7.Debugger.DebugUI.html#DebugUI.shutdown" />
       <keyword name="DebugUI.shutdownServer" id="DebugUI.shutdownServer" ref="eric7.Debugger.DebugUI.html#DebugUI.shutdownServer" />
       <keyword name="DebugUI.variablesFilter" id="DebugUI.variablesFilter" ref="eric7.Debugger.DebugUI.html#DebugUI.variablesFilter" />
       <keyword name="DebugUtilities (Module)" id="DebugUtilities (Module)" ref="eric7.DebugClients.Python.DebugUtilities.html" />
@@ -8761,6 +8761,7 @@
       <keyword name="HelpViewerWidget.__showBackMenu" id="HelpViewerWidget.__showBackMenu" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.__showBackMenu" />
       <keyword name="HelpViewerWidget.__showForwardMenu" id="HelpViewerWidget.__showForwardMenu" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.__showForwardMenu" />
       <keyword name="HelpViewerWidget.__showInstallationError" id="HelpViewerWidget.__showInstallationError" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.__showInstallationError" />
+      <keyword name="HelpViewerWidget.__shutdown" id="HelpViewerWidget.__shutdown" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.__shutdown" />
       <keyword name="HelpViewerWidget.__warning" id="HelpViewerWidget.__warning" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.__warning" />
       <keyword name="HelpViewerWidget.__zoomIn" id="HelpViewerWidget.__zoomIn" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.__zoomIn" />
       <keyword name="HelpViewerWidget.__zoomOut" id="HelpViewerWidget.__zoomOut" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.__zoomOut" />
@@ -8781,7 +8782,6 @@
       <keyword name="HelpViewerWidget.searchPrev" id="HelpViewerWidget.searchPrev" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.searchPrev" />
       <keyword name="HelpViewerWidget.searchQtHelp" id="HelpViewerWidget.searchQtHelp" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.searchQtHelp" />
       <keyword name="HelpViewerWidget.showHideSearch" id="HelpViewerWidget.showHideSearch" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.showHideSearch" />
-      <keyword name="HelpViewerWidget.shutdown" id="HelpViewerWidget.shutdown" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.shutdown" />
       <keyword name="HelpViewerWidget.webProfile" id="HelpViewerWidget.webProfile" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.webProfile" />
       <keyword name="HelpViewerWidget.webSettings" id="HelpViewerWidget.webSettings" ref="eric7.HelpViewer.HelpViewerWidget.html#HelpViewerWidget.webSettings" />
       <keyword name="HelpViewersPage" id="HelpViewersPage" ref="eric7.Preferences.ConfigurationPages.HelpViewersPage.html#HelpViewersPage" />
@@ -11835,6 +11835,7 @@
       <keyword name="MicroPythonWidget.__showLocalAndDeviceTime" id="MicroPythonWidget.__showLocalAndDeviceTime" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showLocalAndDeviceTime" />
       <keyword name="MicroPythonWidget.__showLocalTime" id="MicroPythonWidget.__showLocalTime" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showLocalTime" />
       <keyword name="MicroPythonWidget.__showNoDeviceMessage" id="MicroPythonWidget.__showNoDeviceMessage" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showNoDeviceMessage" />
+      <keyword name="MicroPythonWidget.__shutdown" id="MicroPythonWidget.__shutdown" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__shutdown" />
       <keyword name="MicroPythonWidget.__synchronizeTime" id="MicroPythonWidget.__synchronizeTime" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__synchronizeTime" />
       <keyword name="MicroPythonWidget.deviceInterface" id="MicroPythonWidget.deviceInterface" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.deviceInterface" />
       <keyword name="MicroPythonWidget.deviceSupportsLocalFileAccess" id="MicroPythonWidget.deviceSupportsLocalFileAccess" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.deviceSupportsLocalFileAccess" />
@@ -11855,7 +11856,6 @@
       <keyword name="MicroPythonWidget.on_runButton_clicked" id="MicroPythonWidget.on_runButton_clicked" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.on_runButton_clicked" />
       <keyword name="MicroPythonWidget.setActionButtons" id="MicroPythonWidget.setActionButtons" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.setActionButtons" />
       <keyword name="MicroPythonWidget.showError" id="MicroPythonWidget.showError" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.showError" />
-      <keyword name="MicroPythonWidget.shutdown" id="MicroPythonWidget.shutdown" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.shutdown" />
       <keyword name="MicroPythonWindow" id="MicroPythonWindow" ref="eric7.MicroPython.MicroPythonWindow.html#MicroPythonWindow" />
       <keyword name="MicroPythonWindow (Constructor)" id="MicroPythonWindow (Constructor)" ref="eric7.MicroPython.MicroPythonWindow.html#MicroPythonWindow.__init__" />
       <keyword name="MicroPythonWindow (Module)" id="MicroPythonWindow (Module)" ref="eric7.MicroPython.MicroPythonWindow.html" />
@@ -13035,6 +13035,7 @@
       <keyword name="Pip.__extractOutdatedPackages" id="Pip.__extractOutdatedPackages" ref="eric7.PipInterface.Pip.html#Pip.__extractOutdatedPackages" />
       <keyword name="Pip.__filterUpgradePackages" id="Pip.__filterUpgradePackages" ref="eric7.PipInterface.Pip.html#Pip.__filterUpgradePackages" />
       <keyword name="Pip.__outdatedFinished" id="Pip.__outdatedFinished" ref="eric7.PipInterface.Pip.html#Pip.__outdatedFinished" />
+      <keyword name="Pip.__shutdown" id="Pip.__shutdown" ref="eric7.PipInterface.Pip.html#Pip.__shutdown" />
       <keyword name="Pip.cacheList" id="Pip.cacheList" ref="eric7.PipInterface.Pip.html#Pip.cacheList" />
       <keyword name="Pip.cachePurge" id="Pip.cachePurge" ref="eric7.PipInterface.Pip.html#Pip.cachePurge" />
       <keyword name="Pip.cacheRemove" id="Pip.cacheRemove" ref="eric7.PipInterface.Pip.html#Pip.cacheRemove" />
@@ -13065,7 +13066,6 @@
       <keyword name="Pip.runCleanup" id="Pip.runCleanup" ref="eric7.PipInterface.Pip.html#Pip.runCleanup" />
       <keyword name="Pip.runProcess" id="Pip.runProcess" ref="eric7.PipInterface.Pip.html#Pip.runProcess" />
       <keyword name="Pip.showCacheInfo" id="Pip.showCacheInfo" ref="eric7.PipInterface.Pip.html#Pip.showCacheInfo" />
-      <keyword name="Pip.shutdown" id="Pip.shutdown" ref="eric7.PipInterface.Pip.html#Pip.shutdown" />
       <keyword name="Pip.uninstallPackages" id="Pip.uninstallPackages" ref="eric7.PipInterface.Pip.html#Pip.uninstallPackages" />
       <keyword name="Pip.uninstallPyprojectDependencies" id="Pip.uninstallPyprojectDependencies" ref="eric7.PipInterface.Pip.html#Pip.uninstallPyprojectDependencies" />
       <keyword name="Pip.uninstallRequirements" id="Pip.uninstallRequirements" ref="eric7.PipInterface.Pip.html#Pip.uninstallRequirements" />
@@ -13323,6 +13323,7 @@
       <keyword name="PluginManager.__loadPlugins" id="PluginManager.__loadPlugins" ref="eric7.PluginManager.PluginManager.html#PluginManager.__loadPlugins" />
       <keyword name="PluginManager.__pluginDirectoriesExist" id="PluginManager.__pluginDirectoriesExist" ref="eric7.PluginManager.PluginManager.html#PluginManager.__pluginDirectoriesExist" />
       <keyword name="PluginManager.__pluginModulesExist" id="PluginManager.__pluginModulesExist" ref="eric7.PluginManager.PluginManager.html#PluginManager.__pluginModulesExist" />
+      <keyword name="PluginManager.__shutdown" id="PluginManager.__shutdown" ref="eric7.PluginManager.PluginManager.html#PluginManager.__shutdown" />
       <keyword name="PluginManager.__sslErrors" id="PluginManager.__sslErrors" ref="eric7.PluginManager.PluginManager.html#PluginManager.__sslErrors" />
       <keyword name="PluginManager.activatePlugin" id="PluginManager.activatePlugin" ref="eric7.PluginManager.PluginManager.html#PluginManager.activatePlugin" />
       <keyword name="PluginManager.activatePlugins" id="PluginManager.activatePlugins" ref="eric7.PluginManager.PluginManager.html#PluginManager.activatePlugins" />
@@ -13331,7 +13332,6 @@
       <keyword name="PluginManager.clearPluginsPrivateData" id="PluginManager.clearPluginsPrivateData" ref="eric7.PluginManager.PluginManager.html#PluginManager.clearPluginsPrivateData" />
       <keyword name="PluginManager.deactivatePlugin" id="PluginManager.deactivatePlugin" ref="eric7.PluginManager.PluginManager.html#PluginManager.deactivatePlugin" />
       <keyword name="PluginManager.deactivateVcsPlugins" id="PluginManager.deactivateVcsPlugins" ref="eric7.PluginManager.PluginManager.html#PluginManager.deactivateVcsPlugins" />
-      <keyword name="PluginManager.doShutdown" id="PluginManager.doShutdown" ref="eric7.PluginManager.PluginManager.html#PluginManager.doShutdown" />
       <keyword name="PluginManager.downLoadRepositoryFile" id="PluginManager.downLoadRepositoryFile" ref="eric7.PluginManager.PluginManager.html#PluginManager.downLoadRepositoryFile" />
       <keyword name="PluginManager.finalizeSetup" id="PluginManager.finalizeSetup" ref="eric7.PluginManager.PluginManager.html#PluginManager.finalizeSetup" />
       <keyword name="PluginManager.getPluginApiFiles" id="PluginManager.getPluginApiFiles" ref="eric7.PluginManager.PluginManager.html#PluginManager.getPluginApiFiles" />
@@ -13533,12 +13533,12 @@
       <keyword name="Previewer.__isPreviewable" id="Previewer.__isPreviewable" ref="eric7.UI.Previewer.html#Previewer.__isPreviewable" />
       <keyword name="Previewer.__previewStateChanged" id="Previewer.__previewStateChanged" ref="eric7.UI.Previewer.html#Previewer.__previewStateChanged" />
       <keyword name="Previewer.__processEditor" id="Previewer.__processEditor" ref="eric7.UI.Previewer.html#Previewer.__processEditor" />
+      <keyword name="Previewer.__shutdown" id="Previewer.__shutdown" ref="eric7.UI.Previewer.html#Previewer.__shutdown" />
       <keyword name="Previewer.__splitterMoved" id="Previewer.__splitterMoved" ref="eric7.UI.Previewer.html#Previewer.__splitterMoved" />
       <keyword name="Previewer.hide" id="Previewer.hide" ref="eric7.UI.Previewer.html#Previewer.hide" />
       <keyword name="Previewer.preferencesChanged" id="Previewer.preferencesChanged" ref="eric7.UI.Previewer.html#Previewer.preferencesChanged" />
       <keyword name="Previewer.setSplitter" id="Previewer.setSplitter" ref="eric7.UI.Previewer.html#Previewer.setSplitter" />
       <keyword name="Previewer.show" id="Previewer.show" ref="eric7.UI.Previewer.html#Previewer.show" />
-      <keyword name="Previewer.shutdown" id="Previewer.shutdown" ref="eric7.UI.Previewer.html#Previewer.shutdown" />
       <keyword name="PreviewerHTML" id="PreviewerHTML" ref="eric7.UI.Previewers.PreviewerHTML.html#PreviewerHTML" />
       <keyword name="PreviewerHTML (Constructor)" id="PreviewerHTML (Constructor)" ref="eric7.UI.Previewers.PreviewerHTML.html#PreviewerHTML.__init__" />
       <keyword name="PreviewerHTML (Module)" id="PreviewerHTML (Module)" ref="eric7.UI.Previewers.PreviewerHTML.html" />
@@ -14486,11 +14486,11 @@
       <keyword name="PythonAstViewer.__rangeContainsSmallerOrEqual" id="PythonAstViewer.__rangeContainsSmallerOrEqual" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.__rangeContainsSmallerOrEqual" />
       <keyword name="PythonAstViewer.__resizeColumns" id="PythonAstViewer.__resizeColumns" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.__resizeColumns" />
       <keyword name="PythonAstViewer.__selectItemForEditorSelection" id="PythonAstViewer.__selectItemForEditorSelection" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.__selectItemForEditorSelection" />
+      <keyword name="PythonAstViewer.__shutdown" id="PythonAstViewer.__shutdown" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.__shutdown" />
       <keyword name="PythonAstViewer.hide" id="PythonAstViewer.hide" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.hide" />
       <keyword name="PythonAstViewer.preferencesChanged" id="PythonAstViewer.preferencesChanged" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.preferencesChanged" />
       <keyword name="PythonAstViewer.resizeEvent" id="PythonAstViewer.resizeEvent" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.resizeEvent" />
       <keyword name="PythonAstViewer.show" id="PythonAstViewer.show" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.show" />
-      <keyword name="PythonAstViewer.shutdown" id="PythonAstViewer.shutdown" ref="eric7.UI.PythonAstViewer.html#PythonAstViewer.shutdown" />
       <keyword name="PythonDisViewer" id="PythonDisViewer" ref="eric7.UI.PythonDisViewer.html#PythonDisViewer" />
       <keyword name="PythonDisViewer (Constructor)" id="PythonDisViewer (Constructor)" ref="eric7.UI.PythonDisViewer.html#PythonDisViewer.__init__" />
       <keyword name="PythonDisViewer (Module)" id="PythonDisViewer (Module)" ref="eric7.UI.PythonDisViewer.html" />
@@ -17652,6 +17652,7 @@
       <keyword name="TemplateViewer.__reload" id="TemplateViewer.__reload" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.__reload" />
       <keyword name="TemplateViewer.__remove" id="TemplateViewer.__remove" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.__remove" />
       <keyword name="TemplateViewer.__resort" id="TemplateViewer.__resort" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.__resort" />
+      <keyword name="TemplateViewer.__save" id="TemplateViewer.__save" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.__save" />
       <keyword name="TemplateViewer.__showContextMenu" id="TemplateViewer.__showContextMenu" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.__showContextMenu" />
       <keyword name="TemplateViewer.__showHelp" id="TemplateViewer.__showHelp" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.__showHelp" />
       <keyword name="TemplateViewer.__templateItemActivated" id="TemplateViewer.__templateItemActivated" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.__templateItemActivated" />
@@ -17669,7 +17670,6 @@
       <keyword name="TemplateViewer.readTemplates" id="TemplateViewer.readTemplates" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.readTemplates" />
       <keyword name="TemplateViewer.removeEntry" id="TemplateViewer.removeEntry" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.removeEntry" />
       <keyword name="TemplateViewer.removeGroup" id="TemplateViewer.removeGroup" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.removeGroup" />
-      <keyword name="TemplateViewer.save" id="TemplateViewer.save" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.save" />
       <keyword name="TemplateViewer.writeTemplates" id="TemplateViewer.writeTemplates" ref="eric7.Templates.TemplateViewer.html#TemplateViewer.writeTemplates" />
       <keyword name="Templates (Module)" id="Templates (Module)" ref="eric7.Plugins.WizardPlugins.EricPluginWizard.Templates.html" />
       <keyword name="Templates (Package)" id="Templates (Package)" ref="index-eric7.Templates.html" />
--- a/src/eric7/Documentation/Source/eric7.Cooperation.ChatWidget.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.Cooperation.ChatWidget.html	Thu Apr 10 18:39:29 2025 +0200
@@ -174,6 +174,10 @@
 <td>Private slot to show an error message.</td>
 </tr>
 <tr>
+<td><a href="#ChatWidget.__shutdown">__shutdown</a></td>
+<td>Private method to shut down the cooperation system.</td>
+</tr>
+<tr>
 <td><a href="#ChatWidget.appendMessage">appendMessage</a></td>
 <td>Public slot to append a message to the display.</td>
 </tr>
@@ -233,10 +237,6 @@
 <td><a href="#ChatWidget.preferencesChanged">preferencesChanged</a></td>
 <td>Public slot to handle a change of preferences.</td>
 </tr>
-<tr>
-<td><a href="#ChatWidget.shutdown">shutdown</a></td>
-<td>Public method to shut down the cooperation system.</td>
-</tr>
 </table>
 
 <h3>Static Methods</h3>
@@ -483,6 +483,13 @@
 error message to show
 </dd>
 </dl>
+<a NAME="ChatWidget.__shutdown" ID="ChatWidget.__shutdown"></a>
+<h4>ChatWidget.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to shut down the cooperation system.
+</p>
+
 <a NAME="ChatWidget.appendMessage" ID="ChatWidget.appendMessage"></a>
 <h4>ChatWidget.appendMessage</h4>
 <b>appendMessage</b>(<i>from_, message</i>)
@@ -660,13 +667,6 @@
         Public slot to handle a change of preferences.
 </p>
 
-<a NAME="ChatWidget.shutdown" ID="ChatWidget.shutdown"></a>
-<h4>ChatWidget.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to shut down the cooperation system.
-</p>
-
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
--- a/src/eric7/Documentation/Source/eric7.Debugger.DebugUI.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.Debugger.DebugUI.html	Thu Apr 10 18:39:29 2025 +0200
@@ -292,6 +292,10 @@
 <td>Private method to show a warning about a not connected eric-ide server.</td>
 </tr>
 <tr>
+<td><a href="#DebugUI.__shutdown">__shutdown</a></td>
+<td>Private method to perform shutdown actions.</td>
+</tr>
+<tr>
 <td><a href="#DebugUI.__specialContinue">__specialContinue</a></td>
 <td>Private method to handle the Special Continue action.</td>
 </tr>
@@ -428,10 +432,6 @@
 <td>Public method to show some notification message.</td>
 </tr>
 <tr>
-<td><a href="#DebugUI.shutdown">shutdown</a></td>
-<td>Public method to perform shutdown actions.</td>
-</tr>
-<tr>
 <td><a href="#DebugUI.shutdownServer">shutdownServer</a></td>
 <td>Public method to shut down the debug server.</td>
 </tr>
@@ -1163,6 +1163,13 @@
 name of the file (defaults to "")
 </dd>
 </dl>
+<a NAME="DebugUI.__shutdown" ID="DebugUI.__shutdown"></a>
+<h4>DebugUI.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to perform shutdown actions.
+</p>
+
 <a NAME="DebugUI.__specialContinue" ID="DebugUI.__specialContinue"></a>
 <h4>DebugUI.__specialContinue</h4>
 <b>__specialContinue</b>(<i>debuggerId=""</i>)
@@ -1744,13 +1751,6 @@
             default, 0 = indefinitely)
 </dd>
 </dl>
-<a NAME="DebugUI.shutdown" ID="DebugUI.shutdown"></a>
-<h4>DebugUI.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to perform shutdown actions.
-</p>
-
 <a NAME="DebugUI.shutdownServer" ID="DebugUI.shutdownServer"></a>
 <h4>DebugUI.shutdownServer</h4>
 <b>shutdownServer</b>(<i></i>)
--- a/src/eric7/Documentation/Source/eric7.HelpViewer.HelpViewerWidget.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.HelpViewer.HelpViewerWidget.html	Thu Apr 10 18:39:29 2025 +0200
@@ -209,6 +209,10 @@
 <td>Private slot to show installation errors.</td>
 </tr>
 <tr>
+<td><a href="#HelpViewerWidget.__shutdown">__shutdown</a></td>
+<td>Private method to perform shut down actions.</td>
+</tr>
+<tr>
 <td><a href="#HelpViewerWidget.__warning">__warning</a></td>
 <td>Private slot handling warnings of the help engine.</td>
 </tr>
@@ -285,10 +289,6 @@
 <td>Public slot to show or hide the search widget.</td>
 </tr>
 <tr>
-<td><a href="#HelpViewerWidget.shutdown">shutdown</a></td>
-<td>Public method to perform shut down actions.</td>
-</tr>
-<tr>
 <td><a href="#HelpViewerWidget.webProfile">webProfile</a></td>
 <td>Public method to get a reference to the global web profile object.</td>
 </tr>
@@ -712,6 +712,13 @@
 message to be shown
 </dd>
 </dl>
+<a NAME="HelpViewerWidget.__shutdown" ID="HelpViewerWidget.__shutdown"></a>
+<h4>HelpViewerWidget.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to perform shut down actions.
+</p>
+
 <a NAME="HelpViewerWidget.__warning" ID="HelpViewerWidget.__warning"></a>
 <h4>HelpViewerWidget.__warning</h4>
 <b>__warning</b>(<i>msg</i>)
@@ -957,13 +964,6 @@
 flag indicating to show or hide the search widget
 </dd>
 </dl>
-<a NAME="HelpViewerWidget.shutdown" ID="HelpViewerWidget.shutdown"></a>
-<h4>HelpViewerWidget.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to perform shut down actions.
-</p>
-
 <a NAME="HelpViewerWidget.webProfile" ID="HelpViewerWidget.webProfile"></a>
 <h4>HelpViewerWidget.webProfile</h4>
 <b>webProfile</b>(<i></i>)
--- a/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWidget.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWidget.html	Thu Apr 10 18:39:29 2025 +0200
@@ -207,6 +207,10 @@
 <td>Private method to show a message dialog indicating a missing device.</td>
 </tr>
 <tr>
+<td><a href="#MicroPythonWidget.__shutdown">__shutdown</a></td>
+<td>Private method to perform some shutdown actions.</td>
+</tr>
+<tr>
 <td><a href="#MicroPythonWidget.__synchronizeTime">__synchronizeTime</a></td>
 <td>Private slot to set the time of the connected device to the local computer's time.</td>
 </tr>
@@ -286,10 +290,6 @@
 <td><a href="#MicroPythonWidget.showError">showError</a></td>
 <td>Public method to show some error message.</td>
 </tr>
-<tr>
-<td><a href="#MicroPythonWidget.shutdown">shutdown</a></td>
-<td>Public method to perform some shutdown actions.</td>
-</tr>
 </table>
 
 <h3>Static Methods</h3>
@@ -623,6 +623,13 @@
         Private method to show a message dialog indicating a missing device.
 </p>
 
+<a NAME="MicroPythonWidget.__shutdown" ID="MicroPythonWidget.__shutdown"></a>
+<h4>MicroPythonWidget.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to perform some shutdown actions.
+</p>
+
 <a NAME="MicroPythonWidget.__synchronizeTime" ID="MicroPythonWidget.__synchronizeTime"></a>
 <h4>MicroPythonWidget.__synchronizeTime</h4>
 <b>__synchronizeTime</b>(<i>quiet=False</i>)
@@ -951,13 +958,6 @@
 error message
 </dd>
 </dl>
-<a NAME="MicroPythonWidget.shutdown" ID="MicroPythonWidget.shutdown"></a>
-<h4>MicroPythonWidget.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to perform some shutdown actions.
-</p>
-
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
--- a/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWindow.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWindow.html	Thu Apr 10 18:39:29 2025 +0200
@@ -49,6 +49,10 @@
 <dd>
 emitted after the preferences were changed
 </dd>
+<dt>shutdown()</dt>
+<dd>
+emitted to indicate a shutdown of the application
+</dd>
 </dl>
 <h3>Derived from</h3>
 EricMainWindow
--- a/src/eric7/Documentation/Source/eric7.PipInterface.Pip.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.PipInterface.Pip.html	Thu Apr 10 18:39:29 2025 +0200
@@ -79,6 +79,10 @@
 <td>Private method to handle the process finished signal.</td>
 </tr>
 <tr>
+<td><a href="#Pip.__shutdown">__shutdown</a></td>
+<td>Private method to perform shutdown actions.</td>
+</tr>
+<tr>
 <td><a href="#Pip.cacheList">cacheList</a></td>
 <td>Public method to list files contained in the pip cache.</td>
 </tr>
@@ -199,10 +203,6 @@
 <td>Public method to show some information about the pip cache.</td>
 </tr>
 <tr>
-<td><a href="#Pip.shutdown">shutdown</a></td>
-<td>Public method to perform shutdown actions.</td>
-</tr>
-<tr>
 <td><a href="#Pip.uninstallPackages">uninstallPackages</a></td>
 <td>Public method to uninstall the given list of packages.</td>
 </tr>
@@ -374,6 +374,13 @@
 exit status of the process
 </dd>
 </dl>
+<a NAME="Pip.__shutdown" ID="Pip.__shutdown"></a>
+<h4>Pip.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to perform shutdown actions.
+</p>
+
 <a NAME="Pip.cacheList" ID="Pip.cacheList"></a>
 <h4>Pip.cacheList</h4>
 <b>cacheList</b>(<i>venvName</i>)
@@ -1126,13 +1133,6 @@
 name of the virtual environment to be used
 </dd>
 </dl>
-<a NAME="Pip.shutdown" ID="Pip.shutdown"></a>
-<h4>Pip.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to perform shutdown actions.
-</p>
-
 <a NAME="Pip.uninstallPackages" ID="Pip.uninstallPackages"></a>
 <h4>Pip.uninstallPackages</h4>
 <b>uninstallPackages</b>(<i>packages, venvName</i>)
--- a/src/eric7/Documentation/Source/eric7.PipInterface.PipPackagesWindow.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.PipInterface.PipPackagesWindow.html	Thu Apr 10 18:39:29 2025 +0200
@@ -37,6 +37,14 @@
     Main window class for the standalone  pip packages manager.
 </p>
 
+<h3>Signals</h3>
+<dl>
+
+<dt>shutdown()</dt>
+<dd>
+emitted to indicate a shutdown of the application
+</dd>
+</dl>
 <h3>Derived from</h3>
 EricMainWindow
 <h3>Class Attributes</h3>
--- a/src/eric7/Documentation/Source/eric7.PluginManager.PluginManager.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.PluginManager.PluginManager.html	Thu Apr 10 18:39:29 2025 +0200
@@ -130,6 +130,10 @@
 <td>Private method to check, if there are plugins available.</td>
 </tr>
 <tr>
+<td><a href="#PluginManager.__shutdown">__shutdown</a></td>
+<td>Private method called to perform actions upon shutdown of the IDE.</td>
+</tr>
+<tr>
 <td><a href="#PluginManager.__sslErrors">__sslErrors</a></td>
 <td>Private slot to handle SSL errors.</td>
 </tr>
@@ -162,10 +166,6 @@
 <td>Public method to deactivated all activated VCS plugins.</td>
 </tr>
 <tr>
-<td><a href="#PluginManager.doShutdown">doShutdown</a></td>
-<td>Public method called to perform actions upon shutdown of the IDE.</td>
-</tr>
-<tr>
 <td><a href="#PluginManager.downLoadRepositoryFile">downLoadRepositoryFile</a></td>
 <td>Public method to download the plugin repository file.</td>
 </tr>
@@ -498,6 +498,13 @@
 bool
 </dd>
 </dl>
+<a NAME="PluginManager.__shutdown" ID="PluginManager.__shutdown"></a>
+<h4>PluginManager.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method called to perform actions upon shutdown of the IDE.
+</p>
+
 <a NAME="PluginManager.__sslErrors" ID="PluginManager.__sslErrors"></a>
 <h4>PluginManager.__sslErrors</h4>
 <b>__sslErrors</b>(<i>reply, errors</i>)
@@ -661,13 +668,6 @@
         Public method to deactivated all activated VCS plugins.
 </p>
 
-<a NAME="PluginManager.doShutdown" ID="PluginManager.doShutdown"></a>
-<h4>PluginManager.doShutdown</h4>
-<b>doShutdown</b>(<i></i>)
-<p>
-        Public method called to perform actions upon shutdown of the IDE.
-</p>
-
 <a NAME="PluginManager.downLoadRepositoryFile" ID="PluginManager.downLoadRepositoryFile"></a>
 <h4>PluginManager.downLoadRepositoryFile</h4>
 <b>downLoadRepositoryFile</b>(<i>url=None</i>)
--- a/src/eric7/Documentation/Source/eric7.Templates.TemplateViewer.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.Templates.TemplateViewer.html	Thu Apr 10 18:39:29 2025 +0200
@@ -755,6 +755,10 @@
 <td>Private method to resort the tree.</td>
 </tr>
 <tr>
+<td><a href="#TemplateViewer.__save">__save</a></td>
+<td>Private slot to save the templates.</td>
+</tr>
+<tr>
 <td><a href="#TemplateViewer.__showContextMenu">__showContextMenu</a></td>
 <td>Private slot to show the context menu of the list.</td>
 </tr>
@@ -823,10 +827,6 @@
 <td>Public method to remove a group.</td>
 </tr>
 <tr>
-<td><a href="#TemplateViewer.save">save</a></td>
-<td>Public slot to save the templates.</td>
-</tr>
-<tr>
 <td><a href="#TemplateViewer.writeTemplates">writeTemplates</a></td>
 <td>Public method to write the templates data to a JSON file (.ecj).</td>
 </tr>
@@ -840,16 +840,16 @@
 
 <a NAME="TemplateViewer.__init__" ID="TemplateViewer.__init__"></a>
 <h4>TemplateViewer (Constructor)</h4>
-<b>TemplateViewer</b>(<i>parent, viewmanager</i>)
+<b>TemplateViewer</b>(<i>ui, viewmanager</i>)
 <p>
         Constructor
 </p>
 
 <dl>
 
-<dt><i>parent</i> (QWidget)</dt>
+<dt><i>ui</i> (QWidget)</dt>
 <dd>
-the parent
+reference to the main ui object
 </dd>
 <dt><i>viewmanager</i> (ViewManager)</dt>
 <dd>
@@ -938,6 +938,13 @@
         Private method to resort the tree.
 </p>
 
+<a NAME="TemplateViewer.__save" ID="TemplateViewer.__save"></a>
+<h4>TemplateViewer.__save</h4>
+<b>__save</b>(<i></i>)
+<p>
+        Private slot to save the templates.
+</p>
+
 <a NAME="TemplateViewer.__showContextMenu" ID="TemplateViewer.__showContextMenu"></a>
 <h4>TemplateViewer.__showContextMenu</h4>
 <b>__showContextMenu</b>(<i>coord</i>)
@@ -1279,13 +1286,6 @@
 template group to be removed
 </dd>
 </dl>
-<a NAME="TemplateViewer.save" ID="TemplateViewer.save"></a>
-<h4>TemplateViewer.save</h4>
-<b>save</b>(<i></i>)
-<p>
-        Public slot to save the templates.
-</p>
-
 <a NAME="TemplateViewer.writeTemplates" ID="TemplateViewer.writeTemplates"></a>
 <h4>TemplateViewer.writeTemplates</h4>
 <b>writeTemplates</b>(<i>filename=None</i>)
--- a/src/eric7/Documentation/Source/eric7.UI.CodeDocumentationViewer.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.UI.CodeDocumentationViewer.html	Thu Apr 10 18:39:29 2025 +0200
@@ -87,6 +87,10 @@
 <td>Private method to show a message giving the reason for being disabled.</td>
 </tr>
 <tr>
+<td><a href="#CodeDocumentationViewer.__shutdown">__shutdown</a></td>
+<td>Private method to perform shutdown actions.</td>
+</tr>
+<tr>
 <td><a href="#CodeDocumentationViewer.__unregisterTimerTimeout">__unregisterTimerTimeout</a></td>
 <td>Private slot handling the timeout signal of the unregister timer.</td>
 </tr>
@@ -127,10 +131,6 @@
 <td>Public method to request code documentation data from a provider.</td>
 </tr>
 <tr>
-<td><a href="#CodeDocumentationViewer.shutdown">shutdown</a></td>
-<td>Public method to perform shutdown actions.</td>
-</tr>
-<tr>
 <td><a href="#CodeDocumentationViewer.unregisterProvider">unregisterProvider</a></td>
 <td>Public method register a source docu provider.</td>
 </tr>
@@ -184,6 +184,13 @@
         Private method to show a message giving the reason for being disabled.
 </p>
 
+<a NAME="CodeDocumentationViewer.__shutdown" ID="CodeDocumentationViewer.__shutdown"></a>
+<h4>CodeDocumentationViewer.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to perform shutdown actions.
+</p>
+
 <a NAME="CodeDocumentationViewer.__unregisterTimerTimeout" ID="CodeDocumentationViewer.__unregisterTimerTimeout"></a>
 <h4>CodeDocumentationViewer.__unregisterTimerTimeout</h4>
 <b>__unregisterTimerTimeout</b>(<i></i>)
@@ -367,13 +374,6 @@
 reference to the editor to request code docu for
 </dd>
 </dl>
-<a NAME="CodeDocumentationViewer.shutdown" ID="CodeDocumentationViewer.shutdown"></a>
-<h4>CodeDocumentationViewer.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to perform shutdown actions.
-</p>
-
 <a NAME="CodeDocumentationViewer.unregisterProvider" ID="CodeDocumentationViewer.unregisterProvider"></a>
 <h4>CodeDocumentationViewer.unregisterProvider</h4>
 <b>unregisterProvider</b>(<i>providerName</i>)
--- a/src/eric7/Documentation/Source/eric7.UI.Previewer.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.UI.Previewer.html	Thu Apr 10 18:39:29 2025 +0200
@@ -81,6 +81,10 @@
 <td>Private slot to schedule the processing of the current editor's text.</td>
 </tr>
 <tr>
+<td><a href="#Previewer.__shutdown">__shutdown</a></td>
+<td>Private method to perform shutdown actions.</td>
+</tr>
+<tr>
 <td><a href="#Previewer.__splitterMoved">__splitterMoved</a></td>
 <td>Private slot to handle the movement of the embedding splitter's handle.</td>
 </tr>
@@ -100,10 +104,6 @@
 <td><a href="#Previewer.show">show</a></td>
 <td>Public method to show the preview widget.</td>
 </tr>
-<tr>
-<td><a href="#Previewer.shutdown">shutdown</a></td>
-<td>Public method to perform shutdown actions.</td>
-</tr>
 </table>
 
 <h3>Static Methods</h3>
@@ -114,7 +114,7 @@
 
 <a NAME="Previewer.__init__" ID="Previewer.__init__"></a>
 <h4>Previewer (Constructor)</h4>
-<b>Previewer</b>(<i>viewmanager, parent=None</i>)
+<b>Previewer</b>(<i>viewmanager, ui</i>)
 <p>
         Constructor
 </p>
@@ -125,9 +125,9 @@
 <dd>
 reference to the viewmanager object
 </dd>
-<dt><i>parent</i> (QWidget)</dt>
+<dt><i>ui</i> (QWidget)</dt>
 <dd>
-reference to the parent widget
+reference to the main ui widget
 </dd>
 </dl>
 <a NAME="Previewer.__editorChanged" ID="Previewer.__editorChanged"></a>
@@ -220,6 +220,13 @@
         Private slot to schedule the processing of the current editor's text.
 </p>
 
+<a NAME="Previewer.__shutdown" ID="Previewer.__shutdown"></a>
+<h4>Previewer.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to perform shutdown actions.
+</p>
+
 <a NAME="Previewer.__splitterMoved" ID="Previewer.__splitterMoved"></a>
 <h4>Previewer.__splitterMoved</h4>
 <b>__splitterMoved</b>(<i></i>)
@@ -262,13 +269,6 @@
         Public method to show the preview widget.
 </p>
 
-<a NAME="Previewer.shutdown" ID="Previewer.shutdown"></a>
-<h4>Previewer.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to perform shutdown actions.
-</p>
-
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
--- a/src/eric7/Documentation/Source/eric7.UI.PythonAstViewer.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.UI.PythonAstViewer.html	Thu Apr 10 18:39:29 2025 +0200
@@ -137,6 +137,10 @@
 <td>Private slot to select the item corresponding to an editor selection.</td>
 </tr>
 <tr>
+<td><a href="#PythonAstViewer.__shutdown">__shutdown</a></td>
+<td>Private method to perform shutdown actions.</td>
+</tr>
+<tr>
 <td><a href="#PythonAstViewer.hide">hide</a></td>
 <td>Public slot to hide the AST viewer.</td>
 </tr>
@@ -152,10 +156,6 @@
 <td><a href="#PythonAstViewer.show">show</a></td>
 <td>Public slot to show the AST viewer.</td>
 </tr>
-<tr>
-<td><a href="#PythonAstViewer.shutdown">shutdown</a></td>
-<td>Public method to perform shutdown actions.</td>
-</tr>
 </table>
 
 <h3>Static Methods</h3>
@@ -166,7 +166,7 @@
 
 <a NAME="PythonAstViewer.__init__" ID="PythonAstViewer.__init__"></a>
 <h4>PythonAstViewer (Constructor)</h4>
-<b>PythonAstViewer</b>(<i>viewmanager, parent=None</i>)
+<b>PythonAstViewer</b>(<i>viewmanager, ui</i>)
 <p>
         Constructor
 </p>
@@ -177,9 +177,9 @@
 <dd>
 reference to the viewmanager object
 </dd>
-<dt><i>parent</i> (QWidget)</dt>
+<dt><i>ui</i> (QWidget)</dt>
 <dd>
-reference to the parent widget
+reference to the main ui widget
 </dd>
 </dl>
 <a NAME="PythonAstViewer.__astItemClicked" ID="PythonAstViewer.__astItemClicked"></a>
@@ -515,6 +515,13 @@
         Private slot to select the item corresponding to an editor selection.
 </p>
 
+<a NAME="PythonAstViewer.__shutdown" ID="PythonAstViewer.__shutdown"></a>
+<h4>PythonAstViewer.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to perform shutdown actions.
+</p>
+
 <a NAME="PythonAstViewer.hide" ID="PythonAstViewer.hide"></a>
 <h4>PythonAstViewer.hide</h4>
 <b>hide</b>(<i></i>)
@@ -550,13 +557,6 @@
         Public slot to show the AST viewer.
 </p>
 
-<a NAME="PythonAstViewer.shutdown" ID="PythonAstViewer.shutdown"></a>
-<h4>PythonAstViewer.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to perform shutdown actions.
-</p>
-
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
--- a/src/eric7/Documentation/Source/eric7.UI.UserInterface.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.UI.UserInterface.html	Thu Apr 10 18:39:29 2025 +0200
@@ -75,6 +75,10 @@
 emitted when a menu is about to be shown. The
         name of the menu and a reference to the menu are given.
 </dd>
+<dt>shutdown()</dt>
+<dd>
+emitted to indicate a shutdown of the application
+</dd>
 </dl>
 <h3>Derived from</h3>
 EricMainWindow
--- a/src/eric7/Documentation/Source/eric7.Utilities.BackgroundService.html	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Documentation/Source/eric7.Utilities.BackgroundService.html	Thu Apr 10 18:39:29 2025 +0200
@@ -87,6 +87,10 @@
 <td>Private method to send a job request to one of the clients.</td>
 </tr>
 <tr>
+<td><a href="#BackgroundService.__shutdown">__shutdown</a></td>
+<td>Private method to cleanup the connections and processes when eric is shutting down.</td>
+</tr>
+<tr>
 <td><a href="#BackgroundService.__startExternalClient">__startExternalClient</a></td>
 <td>Private method to start the background client as external process.</td>
 </tr>
@@ -122,10 +126,6 @@
 <td><a href="#BackgroundService.serviceDisconnect">serviceDisconnect</a></td>
 <td>Public method to remove the service from the service list.</td>
 </tr>
-<tr>
-<td><a href="#BackgroundService.shutdown">shutdown</a></td>
-<td>Public method to cleanup the connections and processes when eric is shutting down.</td>
-</tr>
 </table>
 
 <h3>Static Methods</h3>
@@ -223,6 +223,14 @@
 function argument(s)
 </dd>
 </dl>
+<a NAME="BackgroundService.__shutdown" ID="BackgroundService.__shutdown"></a>
+<h4>BackgroundService.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to cleanup the connections and processes when eric is
+        shutting down.
+</p>
+
 <a NAME="BackgroundService.__startExternalClient" ID="BackgroundService.__startExternalClient"></a>
 <h4>BackgroundService.__startExternalClient</h4>
 <b>__startExternalClient</b>(<i>interpreter, port</i>)
@@ -404,14 +412,6 @@
 language of the service
 </dd>
 </dl>
-<a NAME="BackgroundService.shutdown" ID="BackgroundService.shutdown"></a>
-<h4>BackgroundService.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to cleanup the connections and processes when eric is
-        shutting down.
-</p>
-
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
--- a/src/eric7/HelpViewer/HelpViewerWidget.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/HelpViewer/HelpViewerWidget.py	Thu Apr 10 18:39:29 2025 +0200
@@ -348,6 +348,8 @@
         if Preferences.getHelp("QtHelpSearchNewOnStart"):
             QTimer.singleShot(50, self.__lookForNewDocumentation)
 
+        self.__ui.shutdown.connect(self.__shutdown)
+
     def __addNavigationButton(self, iconName, toolTip):
         """
         Private method to create and add a navigation button.
@@ -493,9 +495,9 @@
             if searchWord:
                 self.searchQtHelp(searchWord)
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to perform shut down actions.
+        Private method to perform shut down actions.
         """
         self.__helpSearchEngine.cancelIndexing()
         self.__helpSearchEngine.cancelSearching()
--- a/src/eric7/MicroPython/MicroPythonWidget.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/MicroPython/MicroPythonWidget.py	Thu Apr 10 18:39:29 2025 +0200
@@ -173,6 +173,7 @@
         self.repopulateButton.clicked.connect(self.__populateDeviceTypeComboBox)
         self.webreplConfigButton.clicked.connect(self.__configureWebreplUrls)
         self.__ui.preferencesChanged.connect(self.__handlePreferencesChanged)
+        self.__ui.shutdown.connect(self.__shutdown)
 
         self.__handlePreferencesChanged()
 
@@ -961,9 +962,9 @@
         """
         return self.__fileManager
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to perform some shutdown actions.
+        Private method to perform some shutdown actions.
         """
         if self.__linkConnected:
             with EricOverrideCursor():
--- a/src/eric7/MicroPython/MicroPythonWindow.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/MicroPython/MicroPythonWindow.py	Thu Apr 10 18:39:29 2025 +0200
@@ -47,10 +47,12 @@
     @signal editorCountChanged(count) emitted whenever the count of open editors
         changed
     @signal preferencesChanged() emitted after the preferences were changed
+    @signal shutdown() emitted to indicate a shutdown of the application
     """
 
     editorCountChanged = pyqtSignal(int)
     preferencesChanged = pyqtSignal()
+    shutdown = pyqtSignal()
 
     def __init__(self, parent=None):
         """
@@ -141,6 +143,8 @@
             with contextlib.suppress(RuntimeError):
                 editor.close()
 
+        self.shutdown.emit()
+
         evt.accept()
 
     def __sslErrors(self, reply, errors):
--- a/src/eric7/PipInterface/Pip.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/PipInterface/Pip.py	Thu Apr 10 18:39:29 2025 +0200
@@ -95,6 +95,8 @@
 
         self.__vulnerabilityChecker = PipVulnerabilityChecker(self, self)
 
+        self.__ui.shutdown.connect(self.__shutdown)
+
     def getNetworkAccessManager(self):
         """
         Public method to get a reference to the network access manager object.
@@ -113,9 +115,9 @@
         """
         return self.__vulnerabilityChecker
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to perform shutdown actions.
+        Private method to perform shutdown actions.
         """
         self.__shuttingDown = True
         if self.__outdatedProc is not None:
--- a/src/eric7/PipInterface/PipPackagesWindow.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/PipInterface/PipPackagesWindow.py	Thu Apr 10 18:39:29 2025 +0200
@@ -7,7 +7,7 @@
 Module implementing the standalone pip packages management window.
 """
 
-from PyQt6.QtCore import Qt
+from PyQt6.QtCore import Qt, pyqtSignal
 from PyQt6.QtWidgets import QDialogButtonBox, QVBoxLayout, QWidget
 
 from eric7.EricWidgets.EricApplication import ericApp
@@ -20,8 +20,12 @@
 class PipPackagesWindow(EricMainWindow):
     """
     Main window class for the standalone  pip packages manager.
+
+    @signal shutdown() emitted to indicate a shutdown of the application
     """
 
+    shutdown = pyqtSignal()
+
     def __init__(self, parent=None):
         """
         Constructor
@@ -65,4 +69,4 @@
         @param evt reference to the close event object
         @type QCloseEvent
         """
-        self.__pip.shutdown()
+        self.shutdown.emit()
--- a/src/eric7/PluginManager/PluginManager.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/PluginManager/PluginManager.py	Thu Apr 10 18:39:29 2025 +0200
@@ -179,6 +179,8 @@
             self.__networkManager.sslErrors.connect(self.__sslErrors)
         self.__replies = []
 
+        self.__ui.shutdown.connect(self.__shutdown)
+
     def finalizeSetup(self):
         """
         Public method to finalize the setup of the plugin manager.
@@ -967,9 +969,9 @@
 
         return details
 
-    def doShutdown(self):
+    def __shutdown(self):
         """
-        Public method called to perform actions upon shutdown of the IDE.
+        Private method called to perform actions upon shutdown of the IDE.
         """
         names = []
         for name in self.__inactiveModules:
--- a/src/eric7/Templates/TemplateViewer.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Templates/TemplateViewer.py	Thu Apr 10 18:39:29 2025 +0200
@@ -413,16 +413,16 @@
     Class implementing the template viewer.
     """
 
-    def __init__(self, parent, viewmanager):
+    def __init__(self, ui, viewmanager):
         """
         Constructor
 
-        @param parent the parent
+        @param ui reference to the main ui object
         @type QWidget
         @param viewmanager reference to the viewmanager object
         @type ViewManager
         """
-        super().__init__(parent)
+        super().__init__(None)
 
         self.viewmanager = viewmanager
         self.groups = {}
@@ -443,7 +443,7 @@
         self.__menu.addAction(self.tr("Edit..."), self.__edit)
         self.__menu.addAction(self.tr("Remove"), self.__remove)
         self.__menu.addSeparator()
-        self.saveAct = self.__menu.addAction(self.tr("Save"), self.save)
+        self.saveAct = self.__menu.addAction(self.tr("Save"), self.__save)
         self.__menu.addAction(self.tr("Import..."), self.__import)
         self.__menu.addAction(self.tr("Export..."), self.__export)
         self.__menu.addAction(self.tr("Reload"), self.__reload)
@@ -455,7 +455,7 @@
         self.__backMenu = QMenu(self)
         self.__backMenu.addAction(self.tr("Add group..."), self.__addGroup)
         self.__backMenu.addSeparator()
-        self.bmSaveAct = self.__backMenu.addAction(self.tr("Save"), self.save)
+        self.bmSaveAct = self.__backMenu.addAction(self.tr("Save"), self.__save)
         self.__backMenu.addAction(self.tr("Import..."), self.__import)
         self.bmExportAct = self.__backMenu.addAction(
             self.tr("Export..."), self.__export
@@ -477,6 +477,8 @@
 
         self.setWindowIcon(EricPixmapCache.getIcon("eric"))
 
+        ui.shutdown.connect(self.__save)
+
     def __resort(self):
         """
         Private method to resort the tree.
@@ -586,9 +588,9 @@
             self.removeEntry(itm)
         self.__dirty = True
 
-    def save(self):
+    def __save(self):
         """
-        Public slot to save the templates.
+        Private slot to save the templates.
         """
         if self.__dirty:
             ok = self.writeTemplates()
--- a/src/eric7/UI/CodeDocumentationViewer.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/UI/CodeDocumentationViewer.py	Thu Apr 10 18:39:29 2025 +0200
@@ -201,6 +201,8 @@
         self.__unregisterTimer.timeout.connect(self.__unregisterTimerTimeout)
         self.__mostRecentlyUnregisteredProvider = None
 
+        self.__ui.shutdown.connect(self.__shutdown)
+
     def __setupUi(self):
         """
         Private method to generate the UI layout.
@@ -470,9 +472,9 @@
             Preferences.setDocuViewer("Provider", provider)
             self.__selectedProvider = provider
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to perform shutdown actions.
+        Private method to perform shutdown actions.
         """
         self.__shuttingDown = True
         Preferences.setDocuViewer("Provider", self.__selectedProvider)
--- a/src/eric7/UI/Previewer.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/UI/Previewer.py	Thu Apr 10 18:39:29 2025 +0200
@@ -21,16 +21,16 @@
     specialized previewers.
     """
 
-    def __init__(self, viewmanager, parent=None):
+    def __init__(self, viewmanager, ui):
         """
         Constructor
 
         @param viewmanager reference to the viewmanager object
         @type ViewManager
-        @param parent reference to the parent widget
+        @param ui reference to the main ui widget
         @type QWidget
         """
-        super().__init__(parent)
+        super().__init__(None)
 
         self.__vm = viewmanager
 
@@ -52,6 +52,8 @@
 
         self.__vm.previewStateChanged.connect(self.__previewStateChanged)
 
+        ui.shutdown.connect(self.__shutdown)
+
         self.hide()
 
     def setSplitter(self, splitter):
@@ -88,9 +90,9 @@
         super().hide()
         self.__typingTimer.stop()
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to perform shutdown actions.
+        Private method to perform shutdown actions.
         """
         self.__typingTimer.stop()
         self.__htmlPreviewer and self.__htmlPreviewer.shutdown()
--- a/src/eric7/UI/PythonAstViewer.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/UI/PythonAstViewer.py	Thu Apr 10 18:39:29 2025 +0200
@@ -36,16 +36,16 @@
     EndLineRole = Qt.ItemDataRole.UserRole + 2
     EndIndexRole = Qt.ItemDataRole.UserRole + 3
 
-    def __init__(self, viewmanager, parent=None):
+    def __init__(self, viewmanager, ui):
         """
         Constructor
 
         @param viewmanager reference to the viewmanager object
         @type ViewManager
-        @param parent reference to the parent widget
+        @param ui reference to the main ui widget
         @type QWidget
         """
-        super().__init__(parent)
+        super().__init__(None)
 
         self.__layout = QVBoxLayout(self)
         self.setLayout(self.__layout)
@@ -76,6 +76,8 @@
 
         self.__vm.astViewerStateChanged.connect(self.__astViewerStateChanged)
 
+        ui.shutdown.connect(self.__shutdown)
+
         self.hide()
 
     def __editorChanged(self, editor):
@@ -168,9 +170,9 @@
             self.__vm.editorLanguageChanged.disconnect(self.__editorLanguageChanged)
             self.__vmConnected = False
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to perform shutdown actions.
+        Private method to perform shutdown actions.
         """
         self.__editor = None
 
--- a/src/eric7/UI/UserInterface.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/UI/UserInterface.py	Thu Apr 10 18:39:29 2025 +0200
@@ -144,6 +144,7 @@
         password has been changed with the old and the new password
     @signal onlineStateChanged(online) emitted to indicate a change of the
         network state
+    @signal shutdown() emitted to indicate a shutdown of the application
     """
 
     appendStderr = pyqtSignal(str)
@@ -153,6 +154,7 @@
     showMenu = pyqtSignal(str, QMenu)
     mainPasswordChanged = pyqtSignal(str, str)
     onlineStateChanged = pyqtSignal(bool)
+    shutdown = pyqtSignal()
 
     maxFilePathLen = 100
     maxMenuFilePathLen = 75
@@ -664,7 +666,7 @@
 
         self.currentProfile = None
 
-        self.shutdownCalled = False
+        self.__shutdownCalled = False
         self.inCloseEvent = False
 
         # now fire up the single application server
@@ -809,11 +811,11 @@
 
         # Create previewer
         logging.getLogger(__name__).debug("Creating Previewer...")
-        self.__previewer = Previewer(self.viewmanager)
+        self.__previewer = Previewer(viewmanager=self.viewmanager, ui=self)
 
         # Create AST viewer
         logging.getLogger(__name__).debug("Creating Python AST Viewer")
-        self.__astViewer = PythonAstViewer(self.viewmanager)
+        self.__astViewer = PythonAstViewer(viewmanager=self.viewmanager, ui=self)
 
         # Create DIS viewer
         logging.getLogger(__name__).debug("Creating Python Disassembly Viewer")
@@ -851,7 +853,7 @@
             logging.getLogger(__name__).debug("Creating Template Viewer...")
             from eric7.Templates.TemplateViewer import TemplateViewer  # noqa: I-101
 
-            self.templateViewer = TemplateViewer(None, self.viewmanager)
+            self.templateViewer = TemplateViewer(self, self.viewmanager)
         else:
             logging.getLogger(__name__).debug("Template Viewer disabled")
             self.templateViewer = None
@@ -8433,7 +8435,7 @@
         @return flag indicating success
         @rtype bool
         """
-        if self.shutdownCalled:
+        if self.__shutdownCalled:
             return True
 
         if not self.viewmanager.checkAllDirty():
@@ -8447,8 +8449,6 @@
 
         sessionCreated = self.__writeSession()
 
-        self.__astViewer.hide()
-
         self.shell.closeShell()
 
         if not self.project.closeProject(shutdown=True):
@@ -8467,37 +8467,12 @@
         if sessionCreated and not self.__disableCrashSession:
             self.__deleteCrashSession()
 
-        if self.codeDocumentationViewer is not None:
-            self.codeDocumentationViewer.shutdown()
-
-        self.__previewer.shutdown()
-
-        self.__astViewer.shutdown()
-
         self.__writeTasks()
 
-        if self.templateViewer is not None:
-            self.templateViewer.save()
-
         if not self.debuggerUI.shutdownServer():
             return False
-        self.debuggerUI.shutdown()
-
-        self.backgroundService.shutdown()
-
-        if self.cooperation is not None:
-            self.cooperation.shutdown()
-
-        if self.__helpViewerWidget is not None:
-            self.__helpViewerWidget.shutdown()
-
-        if self.microPythonWidget is not None:
-            self.microPythonWidget.shutdown()
-
-        self.pipInterface.shutdown()
-
-        self.pluginManager.doShutdown()
-
+
+        # stop the single application server
         if self.SAServer is not None:
             self.SAServer.shutdown()
             self.SAServer = None
@@ -8516,7 +8491,10 @@
         self.__saveCurrentViewProfile(True)
         Preferences.saveToolGroups(self.toolGroups, self.currentToolGroup)
         Preferences.syncPreferences()
-        self.shutdownCalled = True
+
+        # emit the shutdown() signal to allow connected parts to perform their
+        # individual shutdown actions
+        self.shutdown.emit()
 
         # shut down the global file system watcher
         EricFileSystemWatcher.instance().shutdown()
@@ -8525,6 +8503,8 @@
         sys.stdout = sys.__stdout__
         sys.stderr = sys.__stderr__
 
+        self.__shutdownCalled = True
+
         return True
 
     def isOnline(self):
--- a/src/eric7/Utilities/BackgroundService.py	Thu Apr 10 18:36:24 2025 +0200
+++ b/src/eric7/Utilities/BackgroundService.py	Thu Apr 10 18:39:29 2025 +0200
@@ -68,6 +68,7 @@
         self.listen(QHostAddress(self.__hostAddress))
 
         self.newConnection.connect(self.on_newConnection)
+        parent.shutdown.connect(self.__shutdown)
 
         ## Note: Need the address and port if started external in debugger:
         port = self.serverPort()
@@ -531,9 +532,9 @@
             if res:
                 self.restartService(lang)
 
-    def shutdown(self):
+    def __shutdown(self):
         """
-        Public method to cleanup the connections and processes when eric is
+        Private method to cleanup the connections and processes when eric is
         shutting down.
         """
         self.close()

eric ide

mercurial