ProjectFlask/FlaskBabelExtension/PyBabelProjectExtension.py

changeset 26
5aac667c4f0f
parent 18
d76a0939be6a
child 27
b73e9af0d496
diff -r 04803a0e2297 -r 5aac667c4f0f ProjectFlask/FlaskBabelExtension/PyBabelProjectExtension.py
--- a/ProjectFlask/FlaskBabelExtension/PyBabelProjectExtension.py	Mon Nov 23 17:35:10 2020 +0100
+++ b/ProjectFlask/FlaskBabelExtension/PyBabelProjectExtension.py	Mon Nov 23 18:11:28 2020 +0100
@@ -11,10 +11,11 @@
 import re
 
 from PyQt5.QtCore import pyqtSlot, QObject, QProcess
-from PyQt5.QtWidgets import QDialog
+from PyQt5.QtWidgets import QDialog, QMenu
 
 from E5Gui import E5MessageBox
 from E5Gui.E5Application import e5App
+from E5Gui.E5Action import E5Action
 
 from .PyBabelCommandDialog import PyBabelCommandDialog
 
@@ -46,6 +47,43 @@
         
         self.__hooksInstalled = False
     
+    def initActions(self):
+        """
+        Public method to define the Flask actions.
+        """
+        self.actions = []
+        
+        self.pybabelConfigAct = E5Action(
+            self.tr('Configure PyBabel'),
+            self.tr('Configure Py&Babel'),
+            0, 0,
+            self, 'flask_config_pybabel')
+        self.pybabelConfigAct.setStatusTip(self.tr(
+            'Shows a dialog to edit the configuration for pybabel'))
+        self.pybabelConfigAct.setWhatsThis(self.tr(
+            """<b>Configure PyBabel</b>"""
+            """<p>Shows a dialog to edit the configuration for pybabel.</p>"""
+        ))
+        self.pybabelConfigAct.triggered.connect(
+            self.__configurePyBabel)
+        self.actions.append(self.pybabelConfigAct)
+        
+        # TODO: add action to install flask-babel
+    
+    def initMenu(self):
+        """
+        Public method to initialize the Flask menu.
+        
+        @return the menu generated
+        @rtype QMenu
+        """
+        menu = QMenu(self.tr("Translations"))
+        menu.setTearOffEnabled(True)
+        
+        menu.addAction(self.pybabelConfigAct)
+        
+        return menu
+    
     def registerOpenHook(self):
         """
         Public method to register the open hook to open a translations file
@@ -129,8 +167,12 @@
         """
         Public method to determine the availability of flask-babel.
         """
-        self.__project.setCapability("pybabel", self.flaskBabelAvailable())
+        available = self.flaskBabelAvailable()
+        self.__project.setCapability("pybabel", available)
         
+        self.pybabelConfigAct.setEnabled(available)
+        # TODO: disable install action, if flask-babel is available
+    
     ##################################################################
     ## slots and methods below implement general functionality
     ##################################################################
@@ -171,9 +213,9 @@
         return False
     
     @pyqtSlot()
-    def configurePyBabel(self):
+    def __configurePyBabel(self):
         """
-        Public slot to show a dialog to edit the pybabel configuration.
+        Private slot to show a dialog to edit the pybabel configuration.
         """
         from .PyBabelConfigDialog import PyBabelConfigDialog
         
@@ -226,7 +268,7 @@
         @return flag indicating successful configuration file creation
         @rtype bool
         """
-        _, app = self.getApplication()
+        _, app = self.__project.getApplication()
         if app.endswith(".py"):
             template = (
                 "[python: {0}]\n"

eric ide

mercurial