PluginProjectPyramid.py

changeset 44
989c961c33ab
parent 39
94e448a362b2
child 48
c313efdb01de
equal deleted inserted replaced
43:14e0bd707f16 44:989c961c33ab
24 # Start-of-Header 24 # Start-of-Header
25 name = "Pyramid Project Plugin" 25 name = "Pyramid Project Plugin"
26 author = "Detlev Offenbach <detlev@die-offenbachs.de>" 26 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
27 autoactivate = True 27 autoactivate = True
28 deactivateable = True 28 deactivateable = True
29 version = "1.1.1" 29 version = "1.2.0"
30 className = "ProjectPyramidPlugin" 30 className = "ProjectPyramidPlugin"
31 packageName = "ProjectPyramid" 31 packageName = "ProjectPyramid"
32 shortDescription = "Project support for Pyramid projects." 32 shortDescription = "Project support for Pyramid projects."
33 longDescription = """This plugin implements project support for Pyramid projects.""" 33 longDescription = """This plugin implements project support for Pyramid projects."""
34 needsRestart = False 34 needsRestart = False
142 142
143 self.__mainAct = None 143 self.__mainAct = None
144 self.__mainMenu = None 144 self.__mainMenu = None
145 145
146 self.__e5project = e5App().getObject("Project") 146 self.__e5project = e5App().getObject("Project")
147
148 self.__supportedVariants = []
147 149
148 def __checkVersions(self): 150 def __checkVersions(self):
149 """ 151 """
150 Private function to check that the eric5 version is ok. 152 Private function to check that the eric5 version is ok.
151 153
178 self.__object.initActions() 180 self.__object.initActions()
179 e5App().registerPluginObject("ProjectPyramid", self.__object) 181 e5App().registerPluginObject("ProjectPyramid", self.__object)
180 182
181 self.__mainMenu = self.__object.initMenu() 183 self.__mainMenu = self.__object.initMenu()
182 184
183 try: 185 self.__supportedVariants = self.__object.supportedPythonVariants()
184 self.__e5project.registerProjectType("Pyramid", self.trUtf8("Pyramid"), 186
185 self.fileTypesCallback, 187 if self.__supportedVariants:
186 lexerAssociationCallback=self.lexerAssociationCallback, 188 try:
187 binaryTranslationsCallback=self.binaryTranslationsCallback, 189 self.__e5project.registerProjectType("Pyramid", self.trUtf8("Pyramid"),
188 progLanguages=["Python2", "Python3"]) 190 self.fileTypesCallback,
189 except TypeError: 191 lexerAssociationCallback=self.lexerAssociationCallback,
190 # for backward compatibility 192 binaryTranslationsCallback=self.binaryTranslationsCallback,
191 self.__e5project.registerProjectType("Pyramid", self.trUtf8("Pyramid"), 193 progLanguages=self.__supportedVariants[:])
192 self.fileTypesCallback, 194 except TypeError:
193 lexerAssociationCallback=self.lexerAssociationCallback, 195 # for backward compatibility
194 binaryTranslationsCallback=self.binaryTranslationsCallback) 196 self.__e5project.registerProjectType("Pyramid", self.trUtf8("Pyramid"),
197 self.fileTypesCallback,
198 lexerAssociationCallback=self.lexerAssociationCallback,
199 binaryTranslationsCallback=self.binaryTranslationsCallback)
195 200
196 from Project.ProjectBrowser import SourcesBrowserFlag, FormsBrowserFlag, \ 201 from Project.ProjectBrowser import SourcesBrowserFlag, FormsBrowserFlag, \
197 TranslationsBrowserFlag, OthersBrowserFlag 202 TranslationsBrowserFlag, OthersBrowserFlag
198 Preferences.setProjectBrowserFlagsDefault("Pyramid", 203 Preferences.setProjectBrowserFlagsDefault("Pyramid",
199 SourcesBrowserFlag | \ 204 SourcesBrowserFlag | \
348 @param key the key of the setting to be set (string) 353 @param key the key of the setting to be set (string)
349 @param value the value to be set 354 @param value the value to be set
350 @param prefClass preferences class used as the storage area 355 @param prefClass preferences class used as the storage area
351 """ 356 """
352 Preferences.Prefs.settings.setValue(self.PreferencesKey + "/" + key, value) 357 Preferences.Prefs.settings.setValue(self.PreferencesKey + "/" + key, value)
358
359 if key in ["VirtualEnvironmentPy2", "VirtualEnvironmentPy3"]:
360 self.__reregisterProjectType()
361
362 def __reregisterProjectType(self):
363 """
364 Private method to re-register the project type.
365 """
366 supportedVariants = self.__object.supportedPythonVariants()
367 if supportedVariants != self.__supportedVariants:
368 # step 1: unregister
369 self.__e5project.unregisterProjectType("Pyramid")
370
371 # step 2: register again with new language settings
372 self.__supportedVariants = supportedVariants
373 if self.__supportedVariants:
374 try:
375 self.__e5project.registerProjectType("Pyramid",
376 self.trUtf8("Pyramid"), self.fileTypesCallback,
377 lexerAssociationCallback=self.lexerAssociationCallback,
378 binaryTranslationsCallback=self.binaryTranslationsCallback,
379 progLanguages=self.__supportedVariants[:])
380 except TypeError:
381 # for backward compatibility
382 self.__e5project.registerProjectType("Pyramid",
383 self.trUtf8("Pyramid"), self.fileTypesCallback,
384 lexerAssociationCallback=self.lexerAssociationCallback,
385 binaryTranslationsCallback=self.binaryTranslationsCallback)

eric ide

mercurial