ProjectDjangoTagsMenu/DjangoTagsMenuHandler.py

changeset 2
4be31b0908c7
child 3
6d10c1249cb8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectDjangoTagsMenu/DjangoTagsMenuHandler.py	Sun Feb 02 20:02:23 2014 +0100
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2014 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Django tags menu handler.
+"""
+
+from PyQt4.QtCore import QObject
+
+from E5Gui.E5Application import e5App
+
+class DjangoTagsMenuHandler(QObject):
+    """
+    Class implementing the Django tags menu handler.
+    """
+    def __init__(self, ui, parent=None):
+        """
+        Constructor
+        
+        @param ui reference to the user interface object (UI.UserInterface)
+        @param parent reference to the parent object (QObject)
+        """
+        super(DjangoTagsMenuHandler, self).__init__(parent)
+        self.__ui = ui
+        
+        self.__findDialog = None
+    
+    def initMenus(self, mainMenu):
+        """
+        Public method to initialize the various menus.
+        
+        @param mainMenu reference to the main tags menu (QMenu)
+        """
+        mainMenu.addAction(self.tr("Django Template Tags Locator"),
+                           self.__findTemplateTag)
+    
+    def __findTemplateTag(self):
+        """
+        Private slot to find a template tag and insert its text.
+        """
+        if self.__findDialog is None:
+            from .FindTemplateTagDialog import FindTemplateTagDialog
+            self.__findDialog = FindTemplateTagDialog(self.__ui)
+            self.__findDialog.tag.connect(self.__applyTemplate)
+        self.__findDialog.show()
+    
+    def __applyTemplate(self, tag):
+        """
+        Private slot to generate and insert the template text.
+        
+        @param tag name of the tag to insert (string)
+        """
+        editor = e5App().getObject("ViewManager").activeWindow()
+        if editor is None:
+            return
+        
+        templateText = self.__generateTemplateText(tag)
+        
+        editor.beginUndoAction()
+        editor.replaceSelectedText(templateText)
+        editor.endUndoAction()
+    
+    def __generateTemplateText(self, tag):
+        """
+        Private slot to generate the template text.
+        
+        @param tag name of the tag to insert (string)
+        """
+        # TODO: implement the tag generation logic
+        return "needs real tags"

eric ide

mercurial