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 |