PluginProjectDjango.py

branch
eric7
changeset 172
ea7980ded4f3
parent 169
b8f263e05c39
child 175
30cb5e553e7e
--- a/PluginProjectDjango.py	Sat May 29 15:03:26 2021 +0200
+++ b/PluginProjectDjango.py	Sat May 29 18:33:03 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 = "6.2.0"
+version = "1.0.0"
 className = "ProjectDjangoPlugin"
 packageName = "ProjectDjango"
 shortDescription = "Project support for Django projects."
@@ -46,8 +46,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 in ["Python3"]:
         apisDir = os.path.join(os.path.dirname(__file__),
@@ -63,7 +65,9 @@
     Module function to create the Django configuration page.
     
     @param configDlg reference to the configuration dialog
+    @type ConfigurationWidget
     @return reference to the configuration page
+    @rtype DjangoPage
     """
     global djangoPluginObject
     from ProjectDjango.ConfigurationPage.DjangoPage import DjangoPage
@@ -76,14 +80,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:
-        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 {
@@ -119,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
@@ -128,9 +128,6 @@
         self.__defaults = {
             "VirtualEnvironmentNamePy3": "",
             
-            # these are obsolete and kept for use with eric <18.07
-            "VirtualEnvironmentPy3": "",
-            
             "Python3ConsoleType": "ipython",
             
             "ServerAddress": "",
@@ -174,7 +171,7 @@
         self.__mainAct = None
         self.__separatorAct = None
         
-        self.__e5project = e5App().getObject("Project")
+        self.__ericProject = ericApp().getObject("Project")
         
         self.__supportedVariants = []
     
@@ -182,30 +179,25 @@
         """
         Public method to activate this plugin.
         
-        @return tuple of None and activation status (boolean)
+        @return tuple of None and activation status
+        @rtype bool
         """
         global djangoPluginObject
         djangoPluginObject = self
         
-        try:
-            usesDarkPalette = e5App().usesDarkPalette()
-        except AttributeError:
-            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("ProjectDjango", self.__object)
+        ericApp().registerPluginObject("ProjectDjango", self.__object)
         
         self.__mainMenu = self.__object.initMenu()
         
         self.__supportedVariants = self.__object.supportedPythonVariants()
         
         if self.__supportedVariants:
-            self.__e5project.registerProjectType(
+            self.__ericProject.registerProjectType(
                 "Django", self.tr("Django"),
                 self.fileTypesCallback,
                 lexerAssociationCallback=self.lexerAssociationCallback,
@@ -222,27 +214,27 @@
             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)
         
-        e5App().getObject("Project").projectAboutToBeCreated.connect(
+        ericApp().getObject("Project").projectAboutToBeCreated.connect(
             self.__object.startProjectOrApplication)
-        e5App().getObject("Project").newProject.connect(
+        ericApp().getObject("Project").newProject.connect(
             self.__object.newProjectCreated)
         
         return None, True
@@ -251,28 +243,28 @@
         """
         Public method to deactivate this plugin.
         """
-        e5App().unregisterPluginObject("ProjectDjango")
+        ericApp().unregisterPluginObject("ProjectDjango")
         
-        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)
         
-        e5App().getObject("Project").projectAboutToBeCreated.disconnect(
+        ericApp().getObject("Project").projectAboutToBeCreated.disconnect(
             self.__object.startProjectOrApplication)
-        e5App().getObject("Project").newProject.disconnect(
+        ericApp().getObject("Project").newProject.disconnect(
             self.__object.newProjectCreated)
         
-        self.__e5project.unregisterProjectType("Django")
+        self.__ericProject.unregisterProjectType("Django")
         
         self.__object.projectClosedHooks()
         self.__projectClosed()
@@ -293,7 +285,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"
                           " loaded.".format(translation))
@@ -303,20 +295,13 @@
         """
         Private slot to handle the projectOpened signal.
         """
-        if self.__e5project.getProjectType() == "Django":
+        if self.__ericProject.getProjectType() == "Django":
             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):
         """
@@ -324,14 +309,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):
@@ -339,6 +320,7 @@
         Public method get the filetype associations of the Django project type.
         
         @return dictionary with file type associations
+        @rtype dict
         """
         fileTypes = (
             {
@@ -350,7 +332,7 @@
                 "*.mo": "TRANSLATIONS",
                 "*.py": "SOURCES",
             }
-            if self.__e5project.getProjectType() == "Django" else
+            if self.__ericProject.getProjectType() == "Django" else
             {}
         )
         return fileTypes
@@ -360,9 +342,11 @@
         Public method to get the lexer association of the Django 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):
@@ -375,8 +359,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"):
             filename = filename.replace(".po", ".mo")
@@ -387,7 +373,9 @@
         Public method to retrieve the various settings.
         
         @param key the key of the value to get
-        @return the requested setting
+        @type str
+        @return value of the requested setting
+        @rtype Any
         """
         if key in ["RecentNumberApps", "RecentNumberTestData"]:
             return int(Preferences.Prefs.settings.value(
@@ -405,13 +393,15 @@
         """
         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 the 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)
         
-        if key in ["VirtualEnvironmentPy3", "VirtualEnvironmentNamePy3"]:
+        if key in ["VirtualEnvironmentNamePy3"]:
             self.__reregisterProjectType()
         elif key == "TranslationsEditor" and self.__object:
             self.__object.registerOpenHook()
@@ -423,12 +413,12 @@
         supportedVariants = self.__object.supportedPythonVariants()
         if supportedVariants != self.__supportedVariants:
             # step 1: unregister
-            self.__e5project.unregisterProjectType("Django")
+            self.__ericProject.unregisterProjectType("Django")
             
             # step 2: register again with new language settings
             self.__supportedVariants = supportedVariants
             if self.__supportedVariants:
-                self.__e5project.registerProjectType(
+                self.__ericProject.registerProjectType(
                     "Django", self.tr("Django"),
                     self.fileTypesCallback,
                     lexerAssociationCallback=self.lexerAssociationCallback,

eric ide

mercurial