Changeset 6969:9c0a3e0454c6 in orange


Ignore:
Timestamp:
09/03/10 15:29:53 (4 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
6b13779a0efe42c2ac303be17d10896d0d5fc72e
Message:
  • added multi line string highlighting
  • changed default font to Monaco
  • fixed console Enter press when cursor not at the end.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Prototypes/OWPythonScript.py

    r6940 r6969  
    2424        self.defFormat.setForeground(QBrush(Qt.black)) 
    2525        self.defFormat.setFontWeight(QFont.Bold) 
     26        self.commentFormat = QTextCharFormat() 
     27        self.commentFormat.setForeground(QBrush(Qt.lightGray)) 
    2628         
    2729        self.keywords = ["def", "if", "else", "elif", "for", "while", "with", "try", "except", 
    2830                         "finally", "not", "in", "lambda", "None", "import", "class", "return", "print", 
    29                          "yield", "break", "continue", "raise", "or", "and", "True", "False", "pass"] 
     31                         "yield", "break", "continue", "raise", "or", "and", "True", "False", "pass", 
     32                         "from", "as"] 
    3033        self.rules = [(QRegExp(r"\b%s\b" % keyword), self.keywordFormat) for keyword in self.keywords] + \ 
    3134                     [(QRegExp(r"\bclass|\bdef\s+([A-Za-z]+[A-Za-z0-9]+)\s*\("), self.defFormat), 
    3235                      (QRegExp(r"'.*'"), self.stringFormat), 
    33                       (QRegExp(r'".*"'), self.stringFormat)] 
     36                      (QRegExp(r'".*"'), self.stringFormat), 
     37                      (QRegExp(r"#.*"), self.commentFormat)] 
    3438                      
    3539        QSyntaxHighlighter.__init__(self, parent) 
     
    4852#                    print index, str(exp.cap(0)) 
    4953                index = exp.indexIn(text, index + length) 
     54                 
     55        ## Multi line strings 
     56        start = QRegExp(r"(''')|" + r'(""")') 
     57        end = QRegExp(r"(''')|" + r'(""")') 
     58        self.setCurrentBlockState(0) 
     59        startIndex = 0 
     60        if self.previousBlockState() != 1: 
     61            startIndex = start.indexIn(text) 
     62        while startIndex >= 0: 
     63            endIndex = end.indexIn(text, startIndex + 3) 
     64            if endIndex == -1: 
     65                self.setCurrentBlockState(1) 
     66                commentLen = len(text) - startIndex 
     67            else: 
     68                commentLen = endIndex - startIndex + 3 
     69            self.setFormat(startIndex, commentLen, self.stringFormat) 
     70            startIndex = start.indexIn(text, startIndex + commentLen + 3) 
    5071                 
    5172class PythonScriptEditor(QPlainTextEdit): 
     
    141162    def write(self, data): 
    142163        cursor = QTextCursor(self.document()) 
    143         cursor.movePosition(QTextCursor.End) 
     164        cursor.movePosition(QTextCursor.End, QTextCursor.MoveAnchor) 
    144165        cursor.insertText(data) 
     166        self.setTextCursor(cursor) 
    145167        self.ensureCursorVisible() 
    146168         
     
    248270        self.text = PythonScriptEditor(self) 
    249271        self.textBox.layout().addWidget(self.text) 
    250         self.text.setFont(QFont("Monospace")) 
     272        self.text.document().setDefaultFont(QFont("Monaco")) 
    251273        self.highlighter = PythonSyntaxHighlighter(self.text.document()) 
    252274        self.textBox.setAlignment(Qt.AlignVCenter) 
     
    257279        self.console = PythonConsole(self.__dict__, self) 
    258280        self.consoleBox.layout().addWidget(self.console) 
    259         self.console.setFont(QFont("Monospace")) 
     281        self.console.document().setDefaultFont(QFont("Monaco")) 
    260282        self.consoleBox.setAlignment(Qt.AlignBottom) 
    261283        self.console.setTabStopWidth(4) 
Note: See TracChangeset for help on using the changeset viewer.