ProjectFlask/FlaskBabelExtension/PyBabelProjectExtension.py

changeset 27
b73e9af0d496
parent 26
5aac667c4f0f
child 29
a8817ea36587
equal deleted inserted replaced
26:5aac667c4f0f 27:b73e9af0d496
66 )) 66 ))
67 self.pybabelConfigAct.triggered.connect( 67 self.pybabelConfigAct.triggered.connect(
68 self.__configurePyBabel) 68 self.__configurePyBabel)
69 self.actions.append(self.pybabelConfigAct) 69 self.actions.append(self.pybabelConfigAct)
70 70
71 # TODO: add action to install flask-babel 71 self.pybabelInstallAct = E5Action(
72 self.tr('Install flask-babel'),
73 self.tr('&Install flask-babel'),
74 0, 0,
75 self, 'flask_install_pybabel')
76 self.pybabelInstallAct.setStatusTip(self.tr(
77 'Installs the flask-babel extension into the configured'
78 ' environment'))
79 self.pybabelInstallAct.setWhatsThis(self.tr(
80 """<b>Install flask-babel</b>"""
81 """<p>Installs the flask-babel extension into the configured"""
82 """ environment using the pip interface.</p>"""
83 ))
84 self.pybabelInstallAct.triggered.connect(
85 self.__installFlaskBabel)
86 self.actions.append(self.pybabelInstallAct)
87
88 self.pybabelAvailabilityAct = E5Action(
89 self.tr('Check flask-babel Availability'),
90 self.tr('&Check flask-babel Availability'),
91 0, 0,
92 self, 'flask_check_pybabel')
93 self.pybabelAvailabilityAct.setStatusTip(self.tr(
94 'Check the availability of the flask-babel extension'))
95 self.pybabelAvailabilityAct.setWhatsThis(self.tr(
96 """<b>Check flask-babel Availability</b>"""
97 """<p>Check the availability of the flask-babel extension.</p>"""
98 ))
99 self.pybabelAvailabilityAct.triggered.connect(
100 self.__checkAvailability)
101 self.actions.append(self.pybabelAvailabilityAct)
72 102
73 def initMenu(self): 103 def initMenu(self):
74 """ 104 """
75 Public method to initialize the Flask menu. 105 Public method to initialize the Flask menu.
76 106
79 """ 109 """
80 menu = QMenu(self.tr("Translations")) 110 menu = QMenu(self.tr("Translations"))
81 menu.setTearOffEnabled(True) 111 menu.setTearOffEnabled(True)
82 112
83 menu.addAction(self.pybabelConfigAct) 113 menu.addAction(self.pybabelConfigAct)
114 menu.addSeparator()
115 menu.addAction(self.pybabelAvailabilityAct)
116 menu.addAction(self.pybabelInstallAct)
84 117
85 return menu 118 return menu
86 119
87 def registerOpenHook(self): 120 def registerOpenHook(self):
88 """ 121 """
169 """ 202 """
170 available = self.flaskBabelAvailable() 203 available = self.flaskBabelAvailable()
171 self.__project.setCapability("pybabel", available) 204 self.__project.setCapability("pybabel", available)
172 205
173 self.pybabelConfigAct.setEnabled(available) 206 self.pybabelConfigAct.setEnabled(available)
174 # TODO: disable install action, if flask-babel is available 207 self.pybabelInstallAct.setEnabled(not available)
175 208
176 ################################################################## 209 ##################################################################
177 ## slots and methods below implement general functionality 210 ## slots and methods below implement general functionality
178 ################################################################## 211 ##################################################################
179 212
300 self.tr("""<p>The PyBabel Configuration File could not be""" 333 self.tr("""<p>The PyBabel Configuration File could not be"""
301 """ generated.</p><p>Reason: {0}</p>""") 334 """ generated.</p><p>Reason: {0}</p>""")
302 .format(str(err)) 335 .format(str(err))
303 ) 336 )
304 return False 337 return False
338
339 @pyqtSlot()
340 def __installFlaskBabel(self):
341 """
342 Private slot to install the flask-babel extension into the configured
343 environment.
344 """
345 language = self.__e5project.getProjectLanguage()
346 if language == "Python3":
347 venvName = self.__plugin.getPreferences(
348 "VirtualEnvironmentNamePy3")
349 else:
350 venvName = ""
351 if venvName:
352 interpreter = self.__project.getFullCommand("python")
353 pip = e5App().getObject("Pip")
354 pip.installPackages(["flask-babel"], interpreter=interpreter)
355 self.determineCapability()
356 else:
357 E5MessageBox.critical(
358 None,
359 self.tr("Install flask-babel"),
360 self.tr("The 'flask-babel' extension could not be installed"
361 " because no virtual environment has been"
362 " configured."))
363
364 @pyqtSlot()
365 def __checkAvailability(self):
366 """
367 Private slot to check the availability of the 'flask-babel' extension.
368 """
369 self.determineCapability()
370 if self.__project.hasCapability("pybabel"):
371 msg = self.tr("The 'flask-babel' extension is installed.")
372 else:
373 msg = self.tr("The 'flask-babel' extension is not installed.")
374 E5MessageBox.information(
375 None,
376 self.tr("flask-babel Availability"),
377 msg)
305 378
306 def __getLocale(self, filename): 379 def __getLocale(self, filename):
307 """ 380 """
308 Private method to extract the locale out of a file name. 381 Private method to extract the locale out of a file name.
309 382

eric ide

mercurial