PluginProjectPyramid.py

branch
eric7
changeset 147
eb28b4b6f7f5
parent 144
5c3684ee818e
child 148
dcbd3a96f03c
diff -r 7d955b1995d5 -r eb28b4b6f7f5 PluginProjectPyramid.py
--- a/PluginProjectPyramid.py	Sat May 29 15:05:16 2021 +0200
+++ b/PluginProjectPyramid.py	Tue Jun 01 19:37:46 2021 +0200
@@ -11,9 +11,9 @@
 import glob
 import fnmatch
 
-from PyQt5.QtCore import QCoreApplication, QObject, QTranslator
+from PyQt6.QtCore import QCoreApplication, QObject, QTranslator
 
-from E5Gui.E5Application import e5App
+from EricWidgets.EricApplication import ericApp
 
 import Preferences
 
@@ -26,7 +26,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "4.0.0"
+version = "1.0.0"
 className = "ProjectPyramidPlugin"
 packageName = "ProjectPyramid"
 shortDescription = "Project support for Pyramid projects."
@@ -47,7 +47,9 @@
     Module function to create the Pyramid configuration page.
     
     @param configDlg reference to the configuration dialog
+    @type ConfigurationWidget
     @return reference to the configuration page
+    @rtype PyramidPage
     """
     global pyramidPluginObject
     from ProjectPyramid.ConfigurationPage.PyramidPage import PyramidPage
@@ -59,15 +61,9 @@
     Module function returning data as required by the configuration dialog.
     
     @return dictionary containing the relevant data
+    @rtype dict
     """
-    try:
-        usesDarkPalette = e5App().usesDarkPalette()
-    except AttributeError:
-        # code for eric < 20.4
-        from PyQt5.QtGui import QPalette
-        palette = e5App().palette()
-        lightness = palette.color(QPalette.Window).lightness()
-        usesDarkPalette = lightness <= 128
+    usesDarkPalette = ericApp().usesDarkPalette()
     iconSuffix = "dark" if usesDarkPalette else "light"
     
     return {
@@ -83,8 +79,10 @@
     """
     Module function to return the API files made available by this plugin.
     
-    @param language language to get APIs for (string)
-    @return list of API filenames (list of string)
+    @param language language to get APIs for
+    @type str
+    @return list of API filenames
+    @rtype list of str
     """
     if language == "Python3":
         apisDir = os.path.join(os.path.dirname(__file__),
@@ -120,7 +118,8 @@
         """
         Constructor
         
-        @param ui reference to the user interface object (UI.UserInterface)
+        @param ui reference to the user interface object
+        @type UserInterface
         """
         QObject.__init__(self, ui)
         self.__ui = ui
@@ -158,7 +157,7 @@
         self.__mainAct = None
         self.__separatorAct = None
         
-        self.__e5project = e5App().getObject("Project")
+        self.__ericProject = ericApp().getObject("Project")
         
         self.__supportedVariants = []
     
@@ -166,31 +165,25 @@
         """
         Public method to activate this plugin.
         
-        @return tuple of None and activation status (boolean)
+        @return tuple of None and activation status
+        @rtype (None, bool)
         """
         global pyramidPluginObject
         pyramidPluginObject = self
         
-        try:
-            usesDarkPalette = e5App().usesDarkPalette()
-        except AttributeError:
-            # code for eric < 20.4
-            from PyQt5.QtGui import QPalette
-            palette = e5App().palette()
-            lightness = palette.color(QPalette.Window).lightness()
-            usesDarkPalette = lightness <= 128
+        usesDarkPalette = ericApp().usesDarkPalette()
         iconSuffix = "dark" if usesDarkPalette else "light"
         
         self.__object = Project(self, iconSuffix, self.__ui)
         self.__object.initActions()
-        e5App().registerPluginObject("ProjectPyramid", self.__object)
+        ericApp().registerPluginObject("ProjectPyramid", self.__object)
         
         self.__mainMenu = self.__object.initMenu()
         
         self.__supportedVariants = self.__object.supportedPythonVariants()
         
         if self.__supportedVariants:
-            self.__e5project.registerProjectType(
+            self.__ericProject.registerProjectType(
                 "Pyramid", self.tr("Pyramid"),
                 self.fileTypesCallback,
                 lexerAssociationCallback=self.lexerAssociationCallback,
@@ -207,22 +200,22 @@
             TranslationsBrowserFlag | OthersBrowserFlag,
         )
         
-        if self.__e5project.isOpen():
+        if self.__ericProject.isOpen():
             self.__projectOpened()
             self.__object.projectOpenedHooks()
         
-        e5App().getObject("Project").projectOpened.connect(
+        ericApp().getObject("Project").projectOpened.connect(
             self.__projectOpened)
-        e5App().getObject("Project").projectClosed.connect(
+        ericApp().getObject("Project").projectClosed.connect(
             self.__projectClosed)
-        e5App().getObject("Project").newProject.connect(
+        ericApp().getObject("Project").newProject.connect(
             self.__projectOpened)
         
-        e5App().getObject("Project").projectOpenedHooks.connect(
+        ericApp().getObject("Project").projectOpenedHooks.connect(
             self.__object.projectOpenedHooks)
-        e5App().getObject("Project").projectClosedHooks.connect(
+        ericApp().getObject("Project").projectClosedHooks.connect(
             self.__object.projectClosedHooks)
-        e5App().getObject("Project").newProjectHooks.connect(
+        ericApp().getObject("Project").newProjectHooks.connect(
             self.__object.projectOpenedHooks)
         
         return None, True
@@ -231,23 +224,23 @@
         """
         Public method to deactivate this plugin.
         """
-        e5App().unregisterPluginObject("ProjectPyramid")
+        ericApp().unregisterPluginObject("ProjectPyramid")
         
-        e5App().getObject("Project").projectOpened.disconnect(
+        ericApp().getObject("Project").projectOpened.disconnect(
             self.__projectOpened)
-        e5App().getObject("Project").projectClosed.disconnect(
+        ericApp().getObject("Project").projectClosed.disconnect(
             self.__projectClosed)
-        e5App().getObject("Project").newProject.disconnect(
+        ericApp().getObject("Project").newProject.disconnect(
             self.__projectOpened)
         
-        e5App().getObject("Project").projectOpenedHooks.disconnect(
+        ericApp().getObject("Project").projectOpenedHooks.disconnect(
             self.__object.projectOpenedHooks)
-        e5App().getObject("Project").projectClosedHooks.disconnect(
+        ericApp().getObject("Project").projectClosedHooks.disconnect(
             self.__object.projectClosedHooks)
-        e5App().getObject("Project").newProjectHooks.disconnect(
+        ericApp().getObject("Project").newProjectHooks.disconnect(
             self.__object.projectOpenedHooks)
         
-        self.__e5project.unregisterProjectType("Pyramid")
+        self.__ericProject.unregisterProjectType("Pyramid")
         
         self.__object.projectClosedHooks()
         self.__projectClosed()
@@ -268,7 +261,7 @@
                 loaded = translator.load(translation, locale_dir)
                 if loaded:
                     self.__translator = translator
-                    e5App().installTranslator(self.__translator)
+                    ericApp().installTranslator(self.__translator)
                 else:
                     print("Warning: translation file '{0}' could not be"    # __IGNORE_WARNING__
                           " loaded.".format(translation))
@@ -278,20 +271,13 @@
         """
         Private slot to handle the projectOpened signal.
         """
-        if self.__e5project.getProjectType() == "Pyramid":
+        if self.__ericProject.getProjectType() == "Pyramid":
             projectToolsMenu = self.__ui.getMenu("project_tools")
-            if projectToolsMenu is not None:
-                insertBeforeAct = projectToolsMenu.actions()[0]
-                self.__mainAct = projectToolsMenu.insertMenu(
-                    insertBeforeAct, self.__mainMenu)
-                self.__separatorAct = projectToolsMenu.insertSeparator(
-                    insertBeforeAct)
-            else:
-                projectAct = self.__ui.getMenuBarAction("project")
-                actions = self.__ui.menuBar().actions()
-                insertBeforeAct = actions[actions.index(projectAct) + 1]
-                self.__mainAct = self.__ui.menuBar().insertMenu(
-                    insertBeforeAct, self.__mainMenu)
+            insertBeforeAct = projectToolsMenu.actions()[0]
+            self.__mainAct = projectToolsMenu.insertMenu(
+                insertBeforeAct, self.__mainMenu)
+            self.__separatorAct = projectToolsMenu.insertSeparator(
+                insertBeforeAct)
     
     def __projectClosed(self):
         """
@@ -299,14 +285,10 @@
         """
         if self.__mainAct is not None:
             projectToolsMenu = self.__ui.getMenu("project_tools")
-            if projectToolsMenu is not None:
-                projectToolsMenu.removeAction(self.__separatorAct)
-                projectToolsMenu.removeAction(self.__mainAct)
-                self.__mainAct = None
-                self.__separatorAct = None
-            else:
-                self.__ui.menuBar().removeAction(self.__mainAct)
-                self.__mainAct = None
+            projectToolsMenu.removeAction(self.__separatorAct)
+            projectToolsMenu.removeAction(self.__mainAct)
+            self.__mainAct = None
+            self.__separatorAct = None
             self.__object.projectClosed()
     
     def fileTypesCallback(self):
@@ -315,8 +297,9 @@
         type.
         
         @return dictionary with file type associations
+        @rtype dict
         """
-        if self.__e5project.getProjectType() == "Pyramid":
+        if self.__ericProject.getProjectType() == "Pyramid":
             return {
                 "*.mako": "FORMS",
                 "*.mak": "FORMS",
@@ -336,9 +319,11 @@
         Public method to get the lexer association of the Pyramid project type
         for a file.
         
-        @param filename name of the file (string)
-        @return name of the lexer (string) (Pygments lexers are prefixed with
+        @param filename name of the file
+        @type str
+        @return name of the lexer (Pygments lexers are prefixed with
             'Pygments|')
+        @rtype str
         """
         for pattern, language in self.lexerAssociations.items():
             if fnmatch.fnmatch(filename, pattern):
@@ -351,8 +336,10 @@
         Public method to determine the filename of a compiled translation file
         given the translation source file.
         
-        @param filename name of the translation source file (string)
-        @return name of the binary translation file (string)
+        @param filename name of the translation source file
+        @type str
+        @return name of the binary translation file
+        @rtype str
         """
         if filename.endswith(".po"):
             return filename.replace(".po", ".mo")
@@ -363,8 +350,10 @@
         """
         Public method to get the default value for a setting.
         
-        @param key the key of the value to get
-        @return the requested setting
+        @param key key of the value to get
+        @type str
+        @return value of the requested setting
+        @rtype Any
         """
         return self.__defaults[key]
     
@@ -372,8 +361,10 @@
         """
         Public method to retrieve the various settings.
         
-        @param key the key of the value to get
-        @return the requested setting
+        @param key key of the value to get
+        @type str
+        @return value of the requested setting
+        @rtype Any
         """
         if key in ["UseExternalBrowser"]:
             return Preferences.toBool(Preferences.Prefs.settings.value(
@@ -386,8 +377,10 @@
         """
         Public method to store the various settings.
         
-        @param key the key of the setting to be set (string)
-        @param value the value to be set
+        @param key key of the setting to be set
+        @type str
+        @param value value to be set
+        @type Any
         """
         Preferences.Prefs.settings.setValue(
             self.PreferencesKey + "/" + key, value)
@@ -404,12 +397,12 @@
         supportedVariants = self.__object.supportedPythonVariants()
         if supportedVariants != self.__supportedVariants:
             # step 1: unregister
-            self.__e5project.unregisterProjectType("Pyramid")
+            self.__ericProject.unregisterProjectType("Pyramid")
             
             # step 2: register again with new language settings
             self.__supportedVariants = supportedVariants
             if self.__supportedVariants:
-                self.__e5project.registerProjectType(
+                self.__ericProject.registerProjectType(
                     "Pyramid",
                     self.tr("Pyramid"), self.fileTypesCallback,
                     lexerAssociationCallback=self.lexerAssociationCallback,
@@ -420,9 +413,11 @@
         """
         Public method to get a reference to the requested menu.
         
-        @param name name of the menu (string)
-        @return reference to the menu (QMenu) or None, if no
-            menu with the given name exists
+        @param name name of the menu
+        @type str
+        @return reference to the menu or None, if no menu with the given
+            name exists
+        @rtype QMenu
         """
         if self.__object is not None:
             return self.__object.getMenu(name)
@@ -433,7 +428,8 @@
         """
         Public method to get the names of all menus.
         
-        @return menu names (list of string)
+        @return menu names
+        @rtype list of str
         """
         if self.__object is not None:
             return list(self.__menus.keys())

eric ide

mercurial