diff -r f4dd76230eea -r 4d80c8cc99a1 Preferences/PreferencesLexer.py --- a/Preferences/PreferencesLexer.py Mon Mar 11 19:50:50 2019 +0100 +++ b/Preferences/PreferencesLexer.py Tue Mar 12 20:00:30 2019 +0100 @@ -9,8 +9,8 @@ from __future__ import unicode_literals -from PyQt5.QtCore import QCoreApplication -from PyQt5.Qsci import QsciLexer, QsciScintillaBase +from PyQt5.QtCore import QCoreApplication, QObject +from PyQt5.Qsci import QsciScintillaBase import Preferences import Globals @@ -64,10 +64,10 @@ 'Unsupported Lexer Language: {0}').format(language) -class PreferencesLexer(QsciLexer): +class PreferencesLexer(QObject): """ - Subclass of QsciLexer to implement preferences specific lexer methods and - delegate some methods to the real lexer object. + Class implementing a Lexer facade for the highlighting styles + configuration. """ def __init__(self, language, parent=None): """ @@ -97,14 +97,16 @@ # read the last stored values from preferences file self.__lex.readSettings(Preferences.Prefs.settings, "Scintilla") - # TODO: add substyles + if self.__lex.hasSubStyles(): + self.__lex.loadSubstyles() def writeSettings(self): """ Public method to write the lexer settings. """ self.__lex.writeSettings(Preferences.Prefs.settings, "Scintilla") - # TODO: add substyles + if self.__lex.hasSubStyles(): + self.__lex.writeSubStyles() def getStyles(self): """ @@ -119,33 +121,51 @@ desc = self.__lex.description(i) if desc: styles.append((desc, i, -1)) - # TODO: add substyles + if self.__lex.hasSubStyles(): + for baseStyle in self.__lex.getBaseStyles(): + for subStyle in range(self.__lex.substylesCount(baseStyle)): + desc = self.__lex.substyleDescription(baseStyle, subStyle) + styles.append((desc, baseStyle, subStyle)) return styles - def defaultColor(self, style): + def defaultColor(self, style, substyle=-1): """ Public method to get the default color of a style. @param style style number @type int + @param substyle sub-style number + @type int @return default color @rtype QColor """ - return self.__lex.defaultColor(style) + if substyle >= 0: + color = self.__lex.substyleDefaultColor(style, substyle) + else: + color = self.__lex.defaultColor(style) + + return color - def color(self, style): + def color(self, style, substyle=-1): """ Public method to get the color of a style. @param style style number @type int + @param substyle sub-style number + @type int @return color @rtype QColor """ - return self.__lex.color(style) + if substyle >= 0: + color = self.__lex.substyleColor(style, substyle) + else: + color = self.__lex.color(style) + + return color - def setColor(self, c, style): + def setColor(self, c, style, substyle=-1): """ Public method to set the color for a style. @@ -153,32 +173,51 @@ @type QColor @param style style number @type int + @param substyle sub-style number + @type int """ - self.__lex.setColor(c, style) + if substyle >= 0: + self.__lex.setSubstyleColor(c, style, substyle) + else: + self.__lex.setColor(c, style) - def defaultPaper(self, style): + def defaultPaper(self, style, substyle=-1): """ Public method to get the default background for a style. @param style style number @type int + @param substyle sub-style number + @type int @return default background color @rtype QColor """ - return self.__lex.defaultPaper(style) + if substyle >= 0: + color = self.__lex.substyleDefaultPaper(style, substyle) + else: + color = self.__lex.defaultPaper(style) + + return color - def paper(self, style): + def paper(self, style, substyle=-1): """ Public method to get the background for a style. @param style the style number @type int + @param substyle sub-style number + @type int @return background color @rtype QColor """ - return self.__lex.paper(style) + if substyle >= 0: + color = self.__lex.substylePaper(style, substyle) + else: + color = self.__lex.paper(style) + + return color - def setPaper(self, c, style): + def setPaper(self, c, style, substyle=-1): """ Public method to set the background for a style. @@ -186,32 +225,51 @@ @type QColor @param style style number @type int + @param substyle sub-style number + @type int """ - self.__lex.setPaper(c, style) + if substyle >= 0: + self.__lex.setSubstylePaper(c, style, substyle) + else: + self.__lex.setPaper(c, style) - def defaulEolFill(self, style): + def defaulEolFill(self, style, substyle=-1): """ Public method to get the default eolFill flag for a style. @param style style number @type int + @param substyle sub-style number + @type int @return default eolFill flag @rtype bool """ - return self.__lex.defaultEolFill(style) + if substyle >= 0: + eolFill = self.__lex.substyleDefaultEolFill(style, substyle) + else: + eolFill = self.__lex.defaultEolFill(style) + + return eolFill - def eolFill(self, style): + def eolFill(self, style, substyle=-1): """ Public method to get the eolFill flag for a style. @param style style number @type int + @param substyle sub-style number + @type int @return eolFill flag @rtype bool """ - return self.__lex.eolFill(style) + if substyle >= 0: + eolFill = self.__lex.substyleEolFill(style, substyle) + else: + eolFill = self.__lex.eolFill(style) + + return eolFill - def setEolFill(self, eolfill, style): + def setEolFill(self, eolfill, style, substyle=-1): """ Public method to set the eolFill flag for a style. @@ -219,32 +277,51 @@ @type bool @param style style number @type int + @param substyle sub-style number + @type int """ - self.__lex.setEolFill(eolfill, style) + if substyle >= 0: + self.__lex.setSubstyleEolFill(eolfill, style, substyle) + else: + self.__lex.setEolFill(eolfill, style) - def defaultFont(self, style): + def defaultFont(self, style, substyle=-1): """ Public method to get the default font for a style. @param style style number @type int + @param substyle sub-style number + @type int @return default font @rtype QFont """ - return self.__lex.defaultFont(style) + if substyle >= 0: + font = self.__lex.substyleDefaultFont(style, substyle) + else: + font = self.__lex.defaultFont(style) + + return font - def font(self, style): + def font(self, style, substyle=-1): """ Public method to get the font for a style. @param style style number @type int + @param substyle sub-style number + @type int @return font @rtype QFont """ - return self.__lex.font(style) + if substyle >= 0: + font = self.__lex.substyleFont(style, substyle) + else: + font = self.__lex.font(style) + + return font - def setFont(self, f, style): + def setFont(self, f, style, substyle=-1): """ Public method to set the font for a style. @@ -252,8 +329,26 @@ @type QFont @param style style number @type int + @param substyle sub-style number + @type int """ - self.__lex.setFont(f, style) + if substyle >= 0: + self.__lex.setSubstyleFont(f, style, substyle) + else: + self.__lex.setFont(f, style) + + def description(self, style, substyle=-1): + """ + Public method to get a descriptive string for a style. + + @param style style number + @type int + @param substyle sub-style number + @type int + @return description of the style + @rtype str + """ + return self.__lex.description(style) def language(self): """ @@ -263,14 +358,3 @@ @rtype str """ return self.__lex.language() - - def description(self, style): - """ - Public method to get a descriptive string for a style. - - @param style style number - @type int - @return description of the style - @rtype str - """ - return self.__lex.description(style)