Beispiel #1
0
 def focus_line(self, line_no):
     """ highlight the line"""
     line_no -= 1
     cursor = QTextCursor(self.document().findBlockByLineNumber(line_no))
     cursor.clearSelection()
     highlight = QTextEdit.ExtraSelection()
     highlight.cursor = cursor
     highlight.format.setProperty(QTextFormat.FullWidthSelection, True)
     highlight.format.setBackground(QBrush(QColor("#657b83")))
     self.setExtraSelections([highlight])
     self.setTextCursor(cursor)
Beispiel #2
0
 def write(self, s):
     if self.echo:
         sys.__stdout__.write(s)
     doc = self.document()
     cursor = QTextCursor(doc)
     cursor.clearSelection()
     cursor.movePosition(QTextCursor.End, QTextCursor.MoveAnchor)
     cursor.insertText(s)
     cursor.movePosition(QTextCursor.End, QTextCursor.MoveAnchor)
     cursor.clearSelection()
     self.ensureCursorVisible()
     qApp.processEvents()
Beispiel #3
0
 def write(self, s):
     if self.echo:
         sys.__stdout__.write(s)
     doc = self.document()
     cursor = QTextCursor(doc)
     cursor.clearSelection()
     cursor.movePosition(QTextCursor.End, QTextCursor.MoveAnchor)
     cursor.insertText(s)
     cursor.movePosition(QTextCursor.End, QTextCursor.MoveAnchor)
     cursor.clearSelection()
     self.ensureCursorVisible()
     qApp.processEvents()
Beispiel #4
0
 def __highlight(self, positions, color=None, cancel=False):
     cursor =  QTextCursor(self.document())
     modified = self.document().isModified()
     for position in positions:
         if position > self.get_position('eof'):
             return
         cursor.setPosition(position)
         cursor.movePosition( QTextCursor.NextCharacter,
                              QTextCursor.KeepAnchor)
         charformat = cursor.charFormat()
         pen =  QPen(Qt.NoPen) if cancel else  QPen(color)
         charformat.setTextOutline(pen)
         cursor.setCharFormat(charformat)
     if cancel:
         charformat =  QTextCharFormat()
         cursor.movePosition( QTextCursor.NextCharacter,
                              QTextCursor.KeepAnchor)
         cursor.setCharFormat(charformat)
         cursor.clearSelection()
         self.setCurrentCharFormat(charformat)
     self.document().setModified(modified)
Beispiel #5
0
 def __highlight(self, positions, color=None, cancel=False):
     cursor = QTextCursor(self.document())
     modified = self.document().isModified()
     for position in positions:
         if position > self.get_position('eof'):
             return
         cursor.setPosition(position)
         cursor.movePosition(QTextCursor.NextCharacter,
                             QTextCursor.KeepAnchor)
         charformat = cursor.charFormat()
         pen = QPen(Qt.NoPen) if cancel else QPen(color)
         charformat.setTextOutline(pen)
         cursor.setCharFormat(charformat)
     if cancel:
         charformat = QTextCharFormat()
         cursor.movePosition(QTextCursor.NextCharacter,
                             QTextCursor.KeepAnchor)
         cursor.setCharFormat(charformat)
         cursor.clearSelection()
         self.setCurrentCharFormat(charformat)
     self.document().setModified(modified)
Beispiel #6
0
    def __duplicate_line_or_selection(self, after_current_line=True):
        """Duplicate current line or selected text"""
        cursor = self.textCursor()
        cursor.beginEditBlock()
        start_pos, end_pos = self.__save_selection()
        if to_text_string(cursor.selectedText()):
            cursor.setPosition(end_pos)
            # Check if end_pos is at the start of a block: if so, starting
            # changes from the previous block
            cursor.movePosition(QTextCursor.StartOfBlock,
                                QTextCursor.KeepAnchor)
            if not to_text_string(cursor.selectedText()):
                cursor.movePosition(QTextCursor.PreviousBlock)
                end_pos = cursor.position()

        cursor.setPosition(start_pos)
        cursor.movePosition(QTextCursor.StartOfBlock)
        while cursor.position() <= end_pos:
            cursor.movePosition(QTextCursor.EndOfBlock, QTextCursor.KeepAnchor)
            if cursor.atEnd():
                cursor_temp = QTextCursor(cursor)
                cursor_temp.clearSelection()
                cursor_temp.insertText(self.get_line_separator())
                break
            cursor.movePosition(QTextCursor.NextBlock, QTextCursor.KeepAnchor)
        text = cursor.selectedText()
        cursor.clearSelection()

        if not after_current_line:
            # Moving cursor before current line/selected text
            cursor.setPosition(start_pos)
            cursor.movePosition(QTextCursor.StartOfBlock)
            start_pos += len(text)
            end_pos += len(text)

        cursor.insertText(text)
        cursor.endEditBlock()
        self.setTextCursor(cursor)
        self.__restore_selection(start_pos, end_pos)
Beispiel #7
0
 def __duplicate_line_or_selection(self, after_current_line=True):
     """Duplicate current line or selected text"""
     cursor = self.textCursor()
     cursor.beginEditBlock()
     start_pos, end_pos = self.__save_selection()
     if to_text_string(cursor.selectedText()):
         cursor.setPosition(end_pos)
         # Check if end_pos is at the start of a block: if so, starting
         # changes from the previous block
         cursor.movePosition(QTextCursor.StartOfBlock,
                             QTextCursor.KeepAnchor)
         if not to_text_string(cursor.selectedText()):
             cursor.movePosition(QTextCursor.PreviousBlock)
             end_pos = cursor.position()
         
     cursor.setPosition(start_pos)
     cursor.movePosition(QTextCursor.StartOfBlock)
     while cursor.position() <= end_pos:
         cursor.movePosition(QTextCursor.EndOfBlock, QTextCursor.KeepAnchor)
         if cursor.atEnd():
             cursor_temp = QTextCursor(cursor)
             cursor_temp.clearSelection()
             cursor_temp.insertText(self.get_line_separator())
             break
         cursor.movePosition(QTextCursor.NextBlock, QTextCursor.KeepAnchor)            
     text = cursor.selectedText()
     cursor.clearSelection()
     
     if not after_current_line:
         # Moving cursor before current line/selected text
         cursor.setPosition(start_pos)
         cursor.movePosition(QTextCursor.StartOfBlock)
         start_pos += len(text)
         end_pos += len(text)
     
     cursor.insertText(text)
     cursor.endEditBlock()
     self.setTextCursor(cursor)
     self.__restore_selection(start_pos, end_pos)