def __init__(self, parent=None): super(Highlighter, self).__init__(parent) keywordFormat = QTextCharFormat() keywordFormat.setForeground(QColor("#00CCFF")) keywordFormat.setFontCapitalization(QFont.AllUppercase) keywordPatterns = ["\\bSELECT\\b", "\\bFROM\\b", "\\bWHERE\\b", "\\bselect\\b", "\\bfrom\\b", "\\bwhere\\b", "\\bTABLE\\b", "\\btable\\b", "\\bON\\b", "\\bon\\b", "\\bORDER\\b", "\\border\\b", "\\bBY\\b", "\\bby\\b", "\\bLIMIT\\b", "\\blimit\\b", "\\bBETWEEN\\b", "\\bbetween\\b", "\\bLIKE\\b", "\\blike\\b", "\\bTO\\b", "\\bto\\b", "\\bINNER\\b", "\\inner\\b", "\\bJOIN\\b", "\\bjoin\\b", "\\bAND\\b", "\\and\\b", "\\bOR\\b", "\\bor\\b", ] self.highlightingRules = [(QRegExp(pattern), keywordFormat) for pattern in keywordPatterns] keyword2Format = QTextCharFormat() keyword2Format.setForeground(QColor("#DE0000")) keyword2Format.setFontCapitalization(QFont.AllUppercase) keyword2Patterns = ["\\bCREATE\\b", "\\bcreate\\b", "\\bINSERT\\b", "\\binsert\\b", "\\bUPDATE\\b", "\\bupdate\\b", "\\bDELETE\\b","\\bdelete\\b", "\\bREPLACE\\b", "\\breplace\\b", "\\bDROP\\b", "\\bdrop\\b", "\\bRENAME\\b", "\\rename\\b", "\\bALTER\\b", "\\alter\\b", "\\bSET\\b", "\\bset\\b" ] self.highlightingRules.extend([(QRegExp(pattern), keyword2Format) for pattern in keyword2Patterns]) table_name_format = QTextCharFormat() table_name_format.setForeground(QColor("#00FF7F")) table_name_format.setFontWeight(QFont.Bold) table_name_patterns = ["\\b{tn}\\b".format(tn=table.name) for table in Tables] ex_tables = ["\\b{tn}\\b".format(tn=table.name) for table in ExclusiveDbTables] table_name_patterns.extend(ex_tables) self.highlightingRules.extend([(QRegExp(pattern), table_name_format) for pattern in table_name_patterns]) field_name_format = QTextCharFormat() field_name_format.setForeground(QColor("#00FF7F")) field_names = [] for table in Tables: field_names.extend(getFieldNames(table.name)) for table in ExclusiveDbTables: field_names.extend(getAllFieldNames(table.name, False)) field_name_patterns = ["\\b{fn}\\b".format(fn=field_name) for field_name in field_names] self.highlightingRules.extend([(QRegExp(pattern), field_name_format) for pattern in field_name_patterns])
def make_formats(self): self.formats = {} for kind, color in ( (Syntax.NORMAL, Qt.black), (Syntax.CONSTANT, Qt.darkCyan), (Syntax.FUNCTION, Qt.blue), (Syntax.KEYWORD, Qt.darkBlue), (Syntax.NUMBER, Qt.darkRed), (Syntax.OPERATOR, Qt.darkMagenta), (Syntax.STRING, Qt.darkYellow), (Syntax.COMMENT, Qt.darkGreen)): fmt = QTextCharFormat() fmt.setFontFamily('Consolas' if WIN else 'Monospace') fmt.setFontFixedPitch(True) fmt.setFontStyleHint(QFont.Monospace) fmt.setForeground(QColor(color)) if kind in {Syntax.CONSTANT, Syntax.FUNCTION, Syntax.KEYWORD, Syntax.OPERATOR}: fmt.setFontCapitalization(QFont.AllUppercase) if kind is Syntax.KEYWORD: fmt.setFontWeight(QFont.DemiBold) elif kind is Syntax.COMMENT: fmt.setFontItalic(True) self.formats[kind] = fmt