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