src/eric7/Tools/TrayStarter.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9377
b9c8dc3b7da1
diff -r e9e7eca7efee -r bf71ee032bb4 src/eric7/Tools/TrayStarter.py
--- a/src/eric7/Tools/TrayStarter.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/Tools/TrayStarter.py	Wed Jul 13 14:55:47 2022 +0200
@@ -33,173 +33,208 @@
     """
     Class implementing a starter for the system tray.
     """
+
     def __init__(self, settingsDir):
         """
         Constructor
-        
+
         @param settingsDir directory to be used for the settings files
         @type str
         """
         super().__init__(
-            UI.PixmapCache.getIcon(
-                Preferences.getTrayStarter("TrayStarterIcon")))
-        
+            UI.PixmapCache.getIcon(Preferences.getTrayStarter("TrayStarterIcon"))
+        )
+
         self.settingsDir = settingsDir
-        
+
         self.maxMenuFilePathLen = 75
-        
+
         self.rsettings = QSettings(
             QSettings.Format.IniFormat,
             QSettings.Scope.UserScope,
             Globals.settingsNameOrganization,
-            Globals.settingsNameRecent)
-        
+            Globals.settingsNameRecent,
+        )
+
         self.recentProjects = []
         self.__loadRecentProjects()
         self.recentMultiProjects = []
         self.__loadRecentMultiProjects()
         self.recentFiles = []
         self.__loadRecentFiles()
-        
+
         self.activated.connect(self.__activated)
-        
+
         self.__menu = QMenu(self.tr("eric tray starter"))
-        
-        self.recentProjectsMenu = QMenu(
-            self.tr('Recent Projects'), self.__menu)
-        self.recentProjectsMenu.aboutToShow.connect(
-            self.__showRecentProjectsMenu)
+
+        self.recentProjectsMenu = QMenu(self.tr("Recent Projects"), self.__menu)
+        self.recentProjectsMenu.aboutToShow.connect(self.__showRecentProjectsMenu)
         self.recentProjectsMenu.triggered.connect(self.__openRecent)
-        
+
         self.recentMultiProjectsMenu = QMenu(
-            self.tr('Recent Multiprojects'), self.__menu)
+            self.tr("Recent Multiprojects"), self.__menu
+        )
         self.recentMultiProjectsMenu.aboutToShow.connect(
-            self.__showRecentMultiProjectsMenu)
+            self.__showRecentMultiProjectsMenu
+        )
         self.recentMultiProjectsMenu.triggered.connect(self.__openRecent)
-        
-        self.recentFilesMenu = QMenu(self.tr('Recent Files'), self.__menu)
+
+        self.recentFilesMenu = QMenu(self.tr("Recent Files"), self.__menu)
         self.recentFilesMenu.aboutToShow.connect(self.__showRecentFilesMenu)
         self.recentFilesMenu.triggered.connect(self.__openRecent)
-        
-        act = self.__menu.addAction(
-            self.tr("eric tray starter"), self.__about)
+
+        act = self.__menu.addAction(self.tr("eric tray starter"), self.__about)
         font = act.font()
         font.setBold(True)
         act.setFont(font)
         self.__menu.addSeparator()
-        
-        self.__menu.addAction(
-            self.tr("Show Versions"), self.__showVersions)
+
+        self.__menu.addAction(self.tr("Show Versions"), self.__showVersions)
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
-            self.tr("QRegularExpression editor"),
-            self.__startQRegularExpression)
-        self.__menu.addAction(
-            self.tr("Python re editor"), self.__startPyRe)
+            self.tr("QRegularExpression editor"), self.__startQRegularExpression
+        )
+        self.__menu.addAction(self.tr("Python re editor"), self.__startPyRe)
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("uiPreviewer"),
-            self.tr("UI Previewer"), self.__startUIPreviewer)
+            self.tr("UI Previewer"),
+            self.__startUIPreviewer,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("trPreviewer"),
-            self.tr("Translations Previewer"), self.__startTRPreviewer)
+            self.tr("Translations Previewer"),
+            self.__startTRPreviewer,
+        )
         self.__menu.addAction(
-            UI.PixmapCache.getIcon("unittest"),
-            self.tr("Testing"), self.__startTesting)
+            UI.PixmapCache.getIcon("unittest"), self.tr("Testing"), self.__startTesting
+        )
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("diffFiles"),
-            self.tr("Compare Files"), self.__startDiff)
+            self.tr("Compare Files"),
+            self.__startDiff,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("compareFiles"),
-            self.tr("Compare Files side by side"), self.__startCompare)
+            self.tr("Compare Files side by side"),
+            self.__startCompare,
+        )
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("sqlBrowser"),
-            self.tr("SQL Browser"), self.__startSqlBrowser)
+            self.tr("SQL Browser"),
+            self.__startSqlBrowser,
+        )
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("ericSnap"),
-            self.tr("Snapshot"), self.__startSnapshot)
+            self.tr("Snapshot"),
+            self.__startSnapshot,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("iconEditor"),
-            self.tr("Icon Editor"), self.__startIconEditor)
+            self.tr("Icon Editor"),
+            self.__startIconEditor,
+        )
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("pluginInstall"),
-            self.tr("Install Plugin"), self.__startPluginInstall)
+            self.tr("Install Plugin"),
+            self.__startPluginInstall,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("pluginUninstall"),
-            self.tr("Uninstall Plugin"), self.__startPluginUninstall)
+            self.tr("Uninstall Plugin"),
+            self.__startPluginUninstall,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("pluginRepository"),
-            self.tr("Plugin Repository"), self.__startPluginRepository)
+            self.tr("Plugin Repository"),
+            self.__startPluginRepository,
+        )
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("virtualenv"),
-            self.tr("Virtual Environments"), self.__startVirtualenvManager)
+            self.tr("Virtual Environments"),
+            self.__startVirtualenvManager,
+        )
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("configure"),
-            self.tr('Preferences'), self.__startPreferences)
+            self.tr("Preferences"),
+            self.__startPreferences,
+        )
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("editor"),
-            self.tr("eric Mini Editor"), self.__startMiniEditor)
+            self.tr("eric Mini Editor"),
+            self.__startMiniEditor,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("hexEditor"),
-            self.tr("eric Hex Editor"), self.__startHexEditor)
+            self.tr("eric Hex Editor"),
+            self.__startHexEditor,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("shell"),
-            self.tr("eric Shell Window"), self.__startShell)
+            self.tr("eric Shell Window"),
+            self.__startShell,
+        )
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("ericWeb"),
-            self.tr("eric Web Browser"), self.__startWebBrowser)
+            self.tr("eric Web Browser"),
+            self.__startWebBrowser,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("ericWeb"),
             self.tr("eric Web Browser (with QtHelp)"),
-            self.__startWebBrowserQtHelp)
+            self.__startWebBrowserQtHelp,
+        )
         self.__menu.addAction(
             UI.PixmapCache.getIcon("ericWeb"),
             self.tr("eric Web Browser (Private Mode)"),
-            self.__startWebBrowserPrivate)
+            self.__startWebBrowserPrivate,
+        )
         self.__menu.addSeparator()
-        
+
         # recent files
         self.menuRecentFilesAct = self.__menu.addMenu(self.recentFilesMenu)
         # recent multi projects
         self.menuRecentMultiProjectsAct = self.__menu.addMenu(
-            self.recentMultiProjectsMenu)
+            self.recentMultiProjectsMenu
+        )
         # recent projects
-        self.menuRecentProjectsAct = self.__menu.addMenu(
-            self.recentProjectsMenu)
+        self.menuRecentProjectsAct = self.__menu.addMenu(self.recentProjectsMenu)
         self.__menu.addSeparator()
-        
+
         self.__menu.addAction(
-            UI.PixmapCache.getIcon("erict"),
-            self.tr("eric IDE"), self.__startEric)
+            UI.PixmapCache.getIcon("erict"), self.tr("eric IDE"), self.__startEric
+        )
         self.__menu.addSeparator()
-         
+
         self.__menu.addAction(
             UI.PixmapCache.getIcon("configure"),
-            self.tr('Configure Tray Starter'), self.__showPreferences)
+            self.tr("Configure Tray Starter"),
+            self.__showPreferences,
+        )
         self.__menu.addSeparator()
-       
+
         self.__menu.addAction(
-            UI.PixmapCache.getIcon("exit"),
-            self.tr('Quit'), ericApp().quit)
-    
+            UI.PixmapCache.getIcon("exit"), self.tr("Quit"), ericApp().quit
+        )
+
     def __loadRecentProjects(self):
         """
         Private method to load the recently opened project filenames.
@@ -209,7 +244,7 @@
             for f in rp:
                 if pathlib.Path(f).exists():
                     self.recentProjects.append(f)
-    
+
     def __loadRecentMultiProjects(self):
         """
         Private method to load the recently opened multi project filenames.
@@ -219,7 +254,7 @@
             for f in rmp:
                 if pathlib.Path(f).exists():
                     self.recentMultiProjects.append(f)
-    
+
     def __loadRecentFiles(self):
         """
         Private method to load the recently opened filenames.
@@ -229,48 +264,47 @@
             for f in rf:
                 if pathlib.Path(f).exists():
                     self.recentFiles.append(f)
-    
+
     def __activated(self, reason):
         """
         Private slot to handle the activated signal.
-        
+
         @param reason reason code of the signal
             (QSystemTrayIcon.ActivationReason)
         """
         if reason in (
             QSystemTrayIcon.ActivationReason.Context,
-            QSystemTrayIcon.ActivationReason.MiddleClick
+            QSystemTrayIcon.ActivationReason.MiddleClick,
         ):
             self.__showContextMenu()
         elif reason == QSystemTrayIcon.ActivationReason.DoubleClick:
             self.__startEric()
-    
+
     def __showContextMenu(self):
         """
         Private slot to show the context menu.
         """
         self.menuRecentProjectsAct.setEnabled(len(self.recentProjects) > 0)
-        self.menuRecentMultiProjectsAct.setEnabled(
-            len(self.recentMultiProjects) > 0)
+        self.menuRecentMultiProjectsAct.setEnabled(len(self.recentMultiProjects) > 0)
         self.menuRecentFilesAct.setEnabled(len(self.recentFiles) > 0)
-        
+
         pos = QCursor.pos()
         x = pos.x() - self.__menu.sizeHint().width()
         pos.setX(x > 0 and x or 0)
         y = pos.y() - self.__menu.sizeHint().height()
         pos.setY(y > 0 and y or 0)
         self.__menu.popup(pos)
-    
+
     def __startProc(self, applName, *applArgs):
         """
         Private method to start an eric application.
-        
+
         @param applName name of the eric application script (string)
         @param *applArgs variable list of application arguments
         """
         proc = QProcess()
         applPath = os.path.join(getConfig("ericDir"), applName)
-        
+
         args = []
         args.append(applPath)
         args.append("--config={0}".format(Utilities.getConfigDir()))
@@ -278,26 +312,26 @@
             args.append("--settings={0}".format(self.settingsDir))
         for arg in applArgs:
             args.append(arg)
-        
-        if (
-            not os.path.isfile(applPath) or
-            not proc.startDetached(Globals.getPythonExecutable(), args)
+
+        if not os.path.isfile(applPath) or not proc.startDetached(
+            Globals.getPythonExecutable(), args
         ):
             EricMessageBox.critical(
                 self,
-                self.tr('Process Generation Error'),
+                self.tr("Process Generation Error"),
                 self.tr(
-                    '<p>Could not start the process.<br>'
-                    'Ensure that it is available as <b>{0}</b>.</p>'
+                    "<p>Could not start the process.<br>"
+                    "Ensure that it is available as <b>{0}</b>.</p>"
                 ).format(applPath),
-                self.tr('OK'))
-    
+                self.tr("OK"),
+            )
+
     def __startMiniEditor(self):
         """
         Private slot to start the eric Mini Editor.
         """
         self.__startProc("eric7_editor.py")
-    
+
     def __startEric(self):
         """
         Private slot to start the eric IDE.
@@ -387,7 +421,7 @@
         Private slot to start the eric compare dialog.
         """
         self.__startProc("eric7_compare.py")
-    
+
     def __startSqlBrowser(self):
         """
         Private slot to start the eric sql browser dialog.
@@ -417,13 +451,13 @@
         Private slot to start the eric Python re editor dialog.
         """
         self.__startProc("eric7_re.py")
-    
+
     def __startHexEditor(self):
         """
         Private slot to start the eric hex editor dialog.
         """
         self.__startProc("eric7_hexeditor.py")
-    
+
     def __startShell(self):
         """
         Private slot to start the eric Shell window.
@@ -437,16 +471,18 @@
         self.recentProjects = []
         self.rsettings.sync()
         self.__loadRecentProjects()
-        
+
         self.recentProjectsMenu.clear()
-        
+
         for idx, rp in enumerate(self.recentProjects, start=1):
-            formatStr = '&{0:d}. {1}' if idx < 10 else '{0:d}. {1}'
+            formatStr = "&{0:d}. {1}" if idx < 10 else "{0:d}. {1}"
             act = self.recentProjectsMenu.addAction(
                 formatStr.format(
-                    idx, Utilities.compactPath(rp, self.maxMenuFilePathLen)))
+                    idx, Utilities.compactPath(rp, self.maxMenuFilePathLen)
+                )
+            )
             act.setData(rp)
-    
+
     def __showRecentMultiProjectsMenu(self):
         """
         Private method to set up the recent multi projects menu.
@@ -454,16 +490,18 @@
         self.recentMultiProjects = []
         self.rsettings.sync()
         self.__loadRecentMultiProjects()
-        
+
         self.recentMultiProjectsMenu.clear()
-        
+
         for idx, rmp in enumerate(self.recentMultiProjects, start=1):
-            formatStr = '&{0:d}. {1}' if idx < 10 else '{0:d}. {1}'
+            formatStr = "&{0:d}. {1}" if idx < 10 else "{0:d}. {1}"
             act = self.recentMultiProjectsMenu.addAction(
                 formatStr.format(
-                    idx, Utilities.compactPath(rmp, self.maxMenuFilePathLen)))
+                    idx, Utilities.compactPath(rmp, self.maxMenuFilePathLen)
+                )
+            )
             act.setData(rmp)
-    
+
     def __showRecentFilesMenu(self):
         """
         Private method to set up the recent files menu.
@@ -471,39 +509,45 @@
         self.recentFiles = []
         self.rsettings.sync()
         self.__loadRecentFiles()
-        
+
         self.recentFilesMenu.clear()
-        
+
         for idx, rf in enumerate(self.recentFiles, start=1):
-            formatStr = '&{0:d}. {1}' if idx < 10 else '{0:d}. {1}'
+            formatStr = "&{0:d}. {1}" if idx < 10 else "{0:d}. {1}"
             act = self.recentFilesMenu.addAction(
                 formatStr.format(
-                    idx, Utilities.compactPath(rf, self.maxMenuFilePathLen)))
+                    idx, Utilities.compactPath(rf, self.maxMenuFilePathLen)
+                )
+            )
             act.setData(rf)
-    
+
     def __openRecent(self, act):
         """
         Private method to open a project or file from the list of recently
         opened projects or files.
-        
+
         @param act reference to the action that triggered (QAction)
         """
         filename = act.data()
         if filename:
-            self.__startProc(
-                "eric7.py",
-                filename)
-    
+            self.__startProc("eric7.py", filename)
+
     def __showPreferences(self):
         """
         Private slot to set the preferences.
         """
         from Preferences.ConfigurationDialog import (
-            ConfigurationDialog, ConfigurationMode
+            ConfigurationDialog,
+            ConfigurationMode,
         )
+
         dlg = ConfigurationDialog(
-            None, 'Configuration', True, fromEric=True,
-            displayMode=ConfigurationMode.TRAYSTARTERMODE)
+            None,
+            "Configuration",
+            True,
+            fromEric=True,
+            displayMode=ConfigurationMode.TRAYSTARTERMODE,
+        )
         dlg.preferencesChanged.connect(self.preferencesChanged)
         dlg.show()
         dlg.showConfigurationPageByName("trayStarterPage")
@@ -513,30 +557,31 @@
             dlg.setPreferences()
             Preferences.syncPreferences()
             self.preferencesChanged()
-    
+
     def preferencesChanged(self):
         """
         Public slot to handle a change of preferences.
         """
         self.setIcon(
-            UI.PixmapCache.getIcon(
-                Preferences.getTrayStarter("TrayStarterIcon")))
+            UI.PixmapCache.getIcon(Preferences.getTrayStarter("TrayStarterIcon"))
+        )
 
     def __about(self):
         """
         Private slot to handle the About dialog.
         """
         from Plugins.AboutPlugin.AboutDialog import AboutDialog
+
         dlg = AboutDialog()
         dlg.exec()
-    
+
     def __showVersions(self):
         """
         Private slot to handle the Versions dialog.
         """
         from PyQt6.QtCore import qVersion, PYQT_VERSION_STR
         from PyQt6.Qsci import QSCINTILLA_VERSION_STR
-        
+
         try:
             try:
                 from PyQt6 import sip
@@ -545,71 +590,64 @@
             sip_version_str = sip.SIP_VERSION_STR
         except (ImportError, AttributeError):
             sip_version_str = "sip version not available"
-        
-        versionText = self.tr(
-            """<h3>Version Numbers</h3>"""
-            """<table>""")
-        
+
+        versionText = self.tr("""<h3>Version Numbers</h3>""" """<table>""")
+
         # Python version
-        versionText += (
-            """<tr><td><b>Python</b></td><td>{0}</td></tr>"""
-            .format(sys.version.split()[0])
-        )
-        
-        # Qt version
-        versionText += (
-            """<tr><td><b>Qt</b></td><td>{0}</td></tr>"""
-            .format(qVersion())
+        versionText += """<tr><td><b>Python</b></td><td>{0}</td></tr>""".format(
+            sys.version.split()[0]
         )
-        
+
+        # Qt version
+        versionText += """<tr><td><b>Qt</b></td><td>{0}</td></tr>""".format(qVersion())
+
         # PyQt versions
-        versionText += (
-            """<tr><td><b>PyQt</b></td><td>{0}</td></tr>"""
-            .format(PYQT_VERSION_STR)
+        versionText += """<tr><td><b>PyQt</b></td><td>{0}</td></tr>""".format(
+            PYQT_VERSION_STR
         )
-        versionText += (
-            """<tr><td><b>sip</b></td><td>{0}</td></tr>"""
-            .format(sip_version_str)
+        versionText += """<tr><td><b>sip</b></td><td>{0}</td></tr>""".format(
+            sip_version_str
         )
-        versionText += (
-            """<tr><td><b>QScintilla</b></td><td>{0}</td></tr>"""
-            .format(QSCINTILLA_VERSION_STR)
+        versionText += """<tr><td><b>QScintilla</b></td><td>{0}</td></tr>""".format(
+            QSCINTILLA_VERSION_STR
         )
-        
+
         # webengine (chromium) version
         with contextlib.suppress(ImportError):
             from WebBrowser.Tools import WebBrowserTools
-            chromiumVersion, chromiumSecurityVersion = (
-                WebBrowserTools.getWebEngineVersions()[0:2]
-            )
-            versionText += (
-                """<tr><td><b>WebEngine</b></td><td>{0}</td></tr>"""
-                .format(chromiumVersion)
+
+            (
+                chromiumVersion,
+                chromiumSecurityVersion,
+            ) = WebBrowserTools.getWebEngineVersions()[0:2]
+            versionText += """<tr><td><b>WebEngine</b></td><td>{0}</td></tr>""".format(
+                chromiumVersion
             )
             if chromiumSecurityVersion:
                 versionText += self.tr(
                     """<tr><td><b>WebEngine (Security)</b></td>"""
                     """<td>{0}</td></tr>"""
                 ).format(chromiumSecurityVersion)
-        
+
         # eric7 version
-        versionText += (
-            """<tr><td><b>{0}</b></td><td>{1}</td></tr>"""
-            .format(Program, Version)
+        versionText += """<tr><td><b>{0}</b></td><td>{1}</td></tr>""".format(
+            Program, Version
         )
-        
+
         # desktop and session type
         desktop = Globals.desktopName()
         session = Globals.sessionType()
         if desktop or session:
             versionText += "<tr><td></td><td></td></tr>"
             if desktop:
-                versionText += ("<tr><td><b>{0}</b></td><td>{1}</td></tr>"
-                                ).format(self.tr("Desktop"), desktop)
+                versionText += ("<tr><td><b>{0}</b></td><td>{1}</td></tr>").format(
+                    self.tr("Desktop"), desktop
+                )
             if session:
-                versionText += ("<tr><td><b>{0}</b></td><td>{1}</td></tr>"
-                                ).format(self.tr("Session Type"), session)
-        
+                versionText += ("<tr><td><b>{0}</b></td><td>{1}</td></tr>").format(
+                    self.tr("Session Type"), session
+                )
+
         versionText += self.tr("""</table>""")
-        
+
         EricMessageBox.about(None, Program, versionText)

eric ide

mercurial