QScintilla/MarkupProviders/HtmlProvider.py

changeset 5404
6b19ad5470a3
parent 5402
ce21a78a5fcf
child 5407
f833f89571b8
--- a/QScintilla/MarkupProviders/HtmlProvider.py	Sat Jan 07 19:00:58 2017 +0100
+++ b/QScintilla/MarkupProviders/HtmlProvider.py	Sat Jan 07 19:35:40 2017 +0100
@@ -9,6 +9,8 @@
 
 from __future__ import unicode_literals
 
+from PyQt5.QtWidgets import QDialog
+
 from .MarkupBase import MarkupBase
 
 
@@ -124,6 +126,38 @@
         """
         self.__insertMarkup("code", editor)
     
+    def hasCodeBlock(self):
+        """
+        Public method to indicate the availability of code block markup.
+        
+        @return flag indicating the availability of code block markup
+        @rtype bool
+        """
+        return True
+    
+    def codeBlock(self, editor):
+        """
+        Public method to generate code block text.
+        
+        @param editor reference to the editor to work on
+        @type Editor
+        """
+        if editor is None:
+            return
+        
+        lineSeparator = editor.getLineSeparator()
+        editor.beginUndoAction()
+        if editor.hasSelectedText():
+            newText = "<pre><code>{0}{1}</code></pre>{0}".format(
+                lineSeparator, editor.selectedText())
+            editor.replaceSelectedText(newText)
+        else:
+            editor.insert("<pre><code>{0}{0}</code></pre>{0}".format(
+                lineSeparator))
+            cline, cindex = editor.getCursorPosition()
+            editor.setCursorPosition(cline + 1, 0)
+        editor.endUndoAction()
+    
     def __insertMarkup(self, markup, editor):
         """
         Private method to insert the specified markup.
@@ -149,3 +183,64 @@
             cline, cindex = editor.getCursorPosition()
             editor.setCursorPosition(cline, cindex + len(markup) + 2)
         editor.endUndoAction()
+    
+    def hasHyperlink(self):
+        """
+        Public method to indicate the availability of hyperlink markup.
+        
+        @return flag indicating the availability of hyperlink markup
+        @rtype bool
+        """
+        return True
+    
+    def hyperlink(self, editor):
+        """
+        Public method to generate hyperlink text.
+        
+        @param editor reference to the editor to work on
+        @type Editor
+        """
+        from .HyperlinkMarkupDialog import HyperlinkMarkupDialog
+        dlg = HyperlinkMarkupDialog(True, False)
+        if dlg.exec_() == QDialog.Accepted:
+            text,  target, title = dlg.getData()
+            if not text:
+                text = target
+            
+            if title:
+                link = '<a href="{0}" title="{2}">{1}</a>'.format(
+                    target, text, title)
+            else:
+                link = '<a href="{0}">{1}</a>'.format(target, text)
+            
+            editor.beginUndoAction()
+            cline, cindex = editor.getCursorPosition()
+            editor.insert(link)
+            editor.setCursorPosition(cline, cindex + len(link))
+            editor.endUndoAction()
+    
+    def hasLine(self):
+        """
+        Public method to indicate the availability of a horizontal line markup.
+        
+        @return flag indicating the availability of a horizontal line markup
+        @rtype bool
+        """
+        return True
+    
+    def line(self, editor):
+        """
+        Public method to generate a horizontal line text.
+        
+        @param editor reference to the editor to work on
+        @type Editor
+        """
+        if editor is None:
+            return
+        
+        editor.beginUndoAction()
+        markup = "<hr />"
+        editor.insert(markup)
+        cline, cindex = editor.getCursorPosition()
+        editor.setCursorPosition(cline, cindex + len(markup))
+        editor.endUndoAction()

eric ide

mercurial