PluginProjectPyramid.py

branch
eric7
changeset 159
d4e7f5a389e6
parent 157
ddbc0e38ea1b
child 160
41b23683d5a1
--- a/PluginProjectPyramid.py	Thu Dec 30 12:17:44 2021 +0100
+++ b/PluginProjectPyramid.py	Wed Sep 21 16:24:54 2022 +0200
@@ -30,9 +30,7 @@
 className = "ProjectPyramidPlugin"
 packageName = "ProjectPyramid"
 shortDescription = "Project support for Pyramid projects."
-longDescription = (
-    """This plugin implements project support for Pyramid projects."""
-)
+longDescription = """This plugin implements project support for Pyramid projects."""
 needsRestart = False
 pyqtApi = 2
 # End-of-Header
@@ -45,7 +43,7 @@
 def createPyramidPage(configDlg):
     """
     Module function to create the Pyramid configuration page.
-    
+
     @param configDlg reference to the configuration dialog
     @type ConfigurationWidget
     @return reference to the configuration page
@@ -53,41 +51,43 @@
     """
     global pyramidPluginObject
     from ProjectPyramid.ConfigurationPage.PyramidPage import PyramidPage
+
     return PyramidPage(pyramidPluginObject)
-    
+
 
 def getConfigData():
     """
     Module function returning data as required by the configuration dialog.
-    
+
     @return dictionary containing the relevant data
     @rtype dict
     """
     usesDarkPalette = ericApp().usesDarkPalette()
     iconSuffix = "dark" if usesDarkPalette else "light"
-    
+
     return {
         "pyramidPage": [
             QCoreApplication.translate("ProjectPyramidPlugin", "Pyramid"),
-            os.path.join("ProjectPyramid", "icons",
-                         "pyramid-{0}".format(iconSuffix)),
-            createPyramidPage, None, None],
+            os.path.join("ProjectPyramid", "icons", "pyramid-{0}".format(iconSuffix)),
+            createPyramidPage,
+            None,
+            None,
+        ],
     }
 
 
 def apiFiles(language):
     """
     Module function to return the API files made available by this plugin.
-    
+
     @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__),
-                               "ProjectPyramid", "APIs")
-        return glob.glob(os.path.join(apisDir, '*.api'))
+        apisDir = os.path.join(os.path.dirname(__file__), "ProjectPyramid", "APIs")
+        return glob.glob(os.path.join(apisDir, "*.api"))
     else:
         return []
 
@@ -104,8 +104,9 @@
     """
     Class implementing the Pyramid project plugin.
     """
+
     PreferencesKey = "Pyramid"
-    
+
     lexerAssociations = {
         "*.mako": "Pygments|HTML+Mako",
         "*.pt": "Pygments|HTML+Genshi",
@@ -113,28 +114,24 @@
         "*.html": "Pygments|HTML+Genshi",
         "*.htm": "Pygments|HTML+Genshi",
     }
-    
+
     def __init__(self, ui):
         """
         Constructor
-        
+
         @param ui reference to the user interface object
         @type UserInterface
         """
         QObject.__init__(self, ui)
         self.__ui = ui
         self.__initialize()
-        
+
         self.__defaults = {
             "VirtualEnvironmentNamePy3": "",
-            
             "Python3ConsoleType": "python",
-            
             "PyramidDocUrl": "http://docs.pylonsproject.org/projects/"
-                             "pyramid/en/latest/index.html",
-            
+            "pyramid/en/latest/index.html",
             "TranslationsEditor": "",
-            
             "UseExternalBrowser": False,
         }
         if isWindowsPlatform():
@@ -143,110 +140,117 @@
             self.__defaults["ConsoleCommand"] = "xterm -e"
         else:
             self.__defaults["ConsoleCommand"] = "konsole -e"
-        
+
         self.__translator = None
         self.__loadTranslator()
-    
+
     def __initialize(self):
         """
         Private slot to (re)initialize the plugin.
         """
         self.__object = None
-        
+
         self.__mainMenu = None
         self.__mainAct = None
         self.__separatorAct = None
-        
+
         self.__ericProject = ericApp().getObject("Project")
-        
+
         self.__supportedVariants = []
-    
+
     def activate(self):
         """
         Public method to activate this plugin.
-        
+
         @return tuple of None and activation status
         @rtype (None, bool)
         """
         global pyramidPluginObject
         pyramidPluginObject = self
-        
+
         usesDarkPalette = ericApp().usesDarkPalette()
         iconSuffix = "dark" if usesDarkPalette else "light"
-        
+
         self.__object = Project(self, iconSuffix, self.__ui)
         self.__object.initActions()
         ericApp().registerPluginObject("ProjectPyramid", self.__object)
-        
+
         self.__mainMenu = self.__object.initMenu()
-        
+
         self.__supportedVariants = self.__object.supportedPythonVariants()
-        
+
         if self.__supportedVariants:
             self.__ericProject.registerProjectType(
-                "Pyramid", self.tr("Pyramid"),
+                "Pyramid",
+                self.tr("Pyramid"),
                 self.fileTypesCallback,
                 lexerAssociationCallback=self.lexerAssociationCallback,
                 binaryTranslationsCallback=self.binaryTranslationsCallback,
-                progLanguages=self.__supportedVariants[:])
-        
+                progLanguages=self.__supportedVariants[:],
+            )
+
         from Project.ProjectBrowser import (
-            SourcesBrowserFlag, FormsBrowserFlag, TranslationsBrowserFlag,
-            OthersBrowserFlag
+            SourcesBrowserFlag,
+            FormsBrowserFlag,
+            TranslationsBrowserFlag,
+            OthersBrowserFlag,
         )
+
         Preferences.setProjectBrowserFlagsDefault(
             "Pyramid",
-            SourcesBrowserFlag | FormsBrowserFlag |
-            TranslationsBrowserFlag | OthersBrowserFlag,
+            SourcesBrowserFlag
+            | FormsBrowserFlag
+            | TranslationsBrowserFlag
+            | OthersBrowserFlag,
         )
-        
+
         if self.__ericProject.isOpen():
             self.__projectOpened()
             self.__object.projectOpenedHooks()
-        
-        ericApp().getObject("Project").projectOpened.connect(
-            self.__projectOpened)
-        ericApp().getObject("Project").projectClosed.connect(
-            self.__projectClosed)
-        ericApp().getObject("Project").newProject.connect(
-            self.__projectOpened)
-        
+
+        ericApp().getObject("Project").projectOpened.connect(self.__projectOpened)
+        ericApp().getObject("Project").projectClosed.connect(self.__projectClosed)
+        ericApp().getObject("Project").newProject.connect(self.__projectOpened)
+
         ericApp().getObject("Project").projectOpenedHooks.connect(
-            self.__object.projectOpenedHooks)
+            self.__object.projectOpenedHooks
+        )
         ericApp().getObject("Project").projectClosedHooks.connect(
-            self.__object.projectClosedHooks)
+            self.__object.projectClosedHooks
+        )
         ericApp().getObject("Project").newProjectHooks.connect(
-            self.__object.projectOpenedHooks)
-        
+            self.__object.projectOpenedHooks
+        )
+
         return None, True
-    
+
     def deactivate(self):
         """
         Public method to deactivate this plugin.
         """
         ericApp().unregisterPluginObject("ProjectPyramid")
-        
-        ericApp().getObject("Project").projectOpened.disconnect(
-            self.__projectOpened)
-        ericApp().getObject("Project").projectClosed.disconnect(
-            self.__projectClosed)
-        ericApp().getObject("Project").newProject.disconnect(
-            self.__projectOpened)
-        
+
+        ericApp().getObject("Project").projectOpened.disconnect(self.__projectOpened)
+        ericApp().getObject("Project").projectClosed.disconnect(self.__projectClosed)
+        ericApp().getObject("Project").newProject.disconnect(self.__projectOpened)
+
         ericApp().getObject("Project").projectOpenedHooks.disconnect(
-            self.__object.projectOpenedHooks)
+            self.__object.projectOpenedHooks
+        )
         ericApp().getObject("Project").projectClosedHooks.disconnect(
-            self.__object.projectClosedHooks)
+            self.__object.projectClosedHooks
+        )
         ericApp().getObject("Project").newProjectHooks.disconnect(
-            self.__object.projectOpenedHooks)
-        
+            self.__object.projectOpenedHooks
+        )
+
         self.__ericProject.unregisterProjectType("Pyramid")
-        
+
         self.__object.projectClosedHooks()
         self.__projectClosed()
-        
+
         self.__initialize()
-    
+
     def __loadTranslator(self):
         """
         Private method to load the translation file.
@@ -255,7 +259,8 @@
             loc = self.__ui.getLocale()
             if loc and loc != "C":
                 locale_dir = os.path.join(
-                    os.path.dirname(__file__), "ProjectPyramid", "i18n")
+                    os.path.dirname(__file__), "ProjectPyramid", "i18n"
+                )
                 translation = "pyramid_{0}".format(loc)
                 translator = QTranslator(None)
                 loaded = translator.load(translation, locale_dir)
@@ -263,10 +268,13 @@
                     self.__translator = translator
                     ericApp().installTranslator(self.__translator)
                 else:
-                    print("Warning: translation file '{0}' could not be"    # __IGNORE_WARNING__
-                          " loaded.".format(translation))
-                    print("Using default.")                                 # __IGNORE_WARNING__
-    
+                    print(  # __IGNORE_WARNING__
+                        "Warning: translation file '{0}' could not be loaded.".format(
+                            translation
+                        )
+                    )
+                    print("Using default.")  # __IGNORE_WARNING__
+
     def __projectOpened(self):
         """
         Private slot to handle the projectOpened signal.
@@ -275,10 +283,10 @@
             projectToolsMenu = self.__ui.getMenu("project_tools")
             insertBeforeAct = projectToolsMenu.actions()[0]
             self.__mainAct = projectToolsMenu.insertMenu(
-                insertBeforeAct, self.__mainMenu)
-            self.__separatorAct = projectToolsMenu.insertSeparator(
-                insertBeforeAct)
-    
+                insertBeforeAct, self.__mainMenu
+            )
+            self.__separatorAct = projectToolsMenu.insertSeparator(insertBeforeAct)
+
     def __projectClosed(self):
         """
         Private slot to handle the projectClosed signal.
@@ -290,12 +298,12 @@
             self.__mainAct = None
             self.__separatorAct = None
             self.__object.projectClosed()
-    
+
     def fileTypesCallback(self):
         """
         Public method get the filetype associations of the Pyramid project
         type.
-        
+
         @return dictionary with file type associations
         @rtype dict
         """
@@ -313,12 +321,12 @@
             }
         else:
             return {}
-    
+
     def lexerAssociationCallback(self, filename):
         """
         Public method to get the lexer association of the Pyramid project type
         for a file.
-        
+
         @param filename name of the file
         @type str
         @return name of the lexer (Pygments lexers are prefixed with
@@ -328,14 +336,14 @@
         for pattern, language in self.lexerAssociations.items():
             if fnmatch.fnmatch(filename, pattern):
                 return language
-        
+
         return ""
-    
+
     def binaryTranslationsCallback(self, filename):
         """
         Public method to determine the filename of a compiled translation file
         given the translation source file.
-        
+
         @param filename name of the translation source file
         @type str
         @return name of the binary translation file
@@ -343,53 +351,56 @@
         """
         if filename.endswith(".po"):
             return filename.replace(".po", ".mo")
-        
+
         return filename
-    
+
     def getDefaultPreference(self, key):
         """
         Public method to get the default value for a setting.
-        
+
         @param key key of the value to get
         @type str
         @return value of the requested setting
         @rtype Any
         """
         return self.__defaults[key]
-    
+
     def getPreferences(self, key):
         """
         Public method to retrieve the various settings.
-        
+
         @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(
-                self.PreferencesKey + "/" + key, self.__defaults[key]))
+            return Preferences.toBool(
+                Preferences.Prefs.settings.value(
+                    self.PreferencesKey + "/" + key, self.__defaults[key]
+                )
+            )
         else:
             return Preferences.Prefs.settings.value(
-                self.PreferencesKey + "/" + key, self.__defaults[key])
-    
+                self.PreferencesKey + "/" + key, self.__defaults[key]
+            )
+
     def setPreferences(self, key, value):
         """
         Public method to store the various settings.
-        
+
         @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)
-        
+        Preferences.Prefs.settings.setValue(self.PreferencesKey + "/" + key, value)
+
         if key in ["VirtualEnvironmentNamePy3"]:
             self.__reregisterProjectType()
         elif key == "TranslationsEditor" and self.__object:
             self.__object.registerOpenHook()
-    
+
     def __reregisterProjectType(self):
         """
         Private method to re-register the project type.
@@ -398,21 +409,23 @@
         if supportedVariants != self.__supportedVariants:
             # step 1: unregister
             self.__ericProject.unregisterProjectType("Pyramid")
-            
+
             # step 2: register again with new language settings
             self.__supportedVariants = supportedVariants
             if self.__supportedVariants:
                 self.__ericProject.registerProjectType(
                     "Pyramid",
-                    self.tr("Pyramid"), self.fileTypesCallback,
+                    self.tr("Pyramid"),
+                    self.fileTypesCallback,
                     lexerAssociationCallback=self.lexerAssociationCallback,
                     binaryTranslationsCallback=self.binaryTranslationsCallback,
-                    progLanguages=self.__supportedVariants[:])
-    
+                    progLanguages=self.__supportedVariants[:],
+                )
+
     def getMenu(self, name):
         """
         Public method to get a reference to the requested menu.
-        
+
         @param name name of the menu
         @type str
         @return reference to the menu or None, if no menu with the given
@@ -423,11 +436,11 @@
             return self.__object.getMenu(name)
         else:
             return None
-    
+
     def getMenuNames(self):
         """
         Public method to get the names of all menus.
-        
+
         @return menu names
         @rtype list of str
         """
@@ -440,11 +453,11 @@
 def installDependencies(pipInstall):
     """
     Function to install dependencies of this plug-in.
-    
+
     @param pipInstall function to be called with a list of package names.
     @type function
     """
     try:
-        import cookiecutter         # __IGNORE_WARNING__
+        import cookiecutter  # __IGNORE_WARNING__
     except ImportError:
         pipInstall(["cookiecutter"])

eric ide

mercurial