--- 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,