'Replace selected text by *text*
If *pattern* is not None, replacing selected text using regular
expression text substitution'

def replace(self, text, pattern=None):

    cursor = self.textCursor()
    cursor.beginEditBlock()
    if (pattern is not None):
        seltxt = to_text_string(cursor.selectedText())
    cursor.removeSelectedText()
    if (pattern is not None):
        text = re.sub(to_text_string(pattern), to_text_string(text), to_text_string(seltxt))
    cursor.insertText(text)
    cursor.endEditBlock()
