Preferences/PreferencesLexer.py

branch
sub_styles
changeset 6855
4d80c8cc99a1
parent 6854
f4dd76230eea
child 6858
9d962e654978
equal deleted inserted replaced
6854:f4dd76230eea 6855:4d80c8cc99a1
7 Module implementing a special QScintilla lexer to handle the preferences. 7 Module implementing a special QScintilla lexer to handle the preferences.
8 """ 8 """
9 9
10 from __future__ import unicode_literals 10 from __future__ import unicode_literals
11 11
12 from PyQt5.QtCore import QCoreApplication 12 from PyQt5.QtCore import QCoreApplication, QObject
13 from PyQt5.Qsci import QsciLexer, QsciScintillaBase 13 from PyQt5.Qsci import QsciScintillaBase
14 14
15 import Preferences 15 import Preferences
16 import Globals 16 import Globals
17 17
18 18
62 self._errorMessage = QCoreApplication.translate( 62 self._errorMessage = QCoreApplication.translate(
63 "PreferencesLexerError", 63 "PreferencesLexerError",
64 'Unsupported Lexer Language: {0}').format(language) 64 'Unsupported Lexer Language: {0}').format(language)
65 65
66 66
67 class PreferencesLexer(QsciLexer): 67 class PreferencesLexer(QObject):
68 """ 68 """
69 Subclass of QsciLexer to implement preferences specific lexer methods and 69 Class implementing a Lexer facade for the highlighting styles
70 delegate some methods to the real lexer object. 70 configuration.
71 """ 71 """
72 def __init__(self, language, parent=None): 72 def __init__(self, language, parent=None):
73 """ 73 """
74 Constructor 74 Constructor
75 75
95 if self.__lex is None: 95 if self.__lex is None:
96 raise PreferencesLexerLanguageError(language) 96 raise PreferencesLexerLanguageError(language)
97 97
98 # read the last stored values from preferences file 98 # read the last stored values from preferences file
99 self.__lex.readSettings(Preferences.Prefs.settings, "Scintilla") 99 self.__lex.readSettings(Preferences.Prefs.settings, "Scintilla")
100 # TODO: add substyles 100 if self.__lex.hasSubStyles():
101 self.__lex.loadSubstyles()
101 102
102 def writeSettings(self): 103 def writeSettings(self):
103 """ 104 """
104 Public method to write the lexer settings. 105 Public method to write the lexer settings.
105 """ 106 """
106 self.__lex.writeSettings(Preferences.Prefs.settings, "Scintilla") 107 self.__lex.writeSettings(Preferences.Prefs.settings, "Scintilla")
107 # TODO: add substyles 108 if self.__lex.hasSubStyles():
109 self.__lex.writeSubStyles()
108 110
109 def getStyles(self): 111 def getStyles(self):
110 """ 112 """
111 Public method to get a list of all supported styles. 113 Public method to get a list of all supported styles.
112 114
117 119
118 for i in range(QsciScintillaBase.STYLE_MAX): 120 for i in range(QsciScintillaBase.STYLE_MAX):
119 desc = self.__lex.description(i) 121 desc = self.__lex.description(i)
120 if desc: 122 if desc:
121 styles.append((desc, i, -1)) 123 styles.append((desc, i, -1))
122 # TODO: add substyles 124 if self.__lex.hasSubStyles():
125 for baseStyle in self.__lex.getBaseStyles():
126 for subStyle in range(self.__lex.substylesCount(baseStyle)):
127 desc = self.__lex.substyleDescription(baseStyle, subStyle)
128 styles.append((desc, baseStyle, subStyle))
123 129
124 return styles 130 return styles
125 131
126 def defaultColor(self, style): 132 def defaultColor(self, style, substyle=-1):
127 """ 133 """
128 Public method to get the default color of a style. 134 Public method to get the default color of a style.
129 135
130 @param style style number 136 @param style style number
137 @type int
138 @param substyle sub-style number
131 @type int 139 @type int
132 @return default color 140 @return default color
133 @rtype QColor 141 @rtype QColor
134 """ 142 """
135 return self.__lex.defaultColor(style) 143 if substyle >= 0:
136 144 color = self.__lex.substyleDefaultColor(style, substyle)
137 def color(self, style): 145 else:
146 color = self.__lex.defaultColor(style)
147
148 return color
149
150 def color(self, style, substyle=-1):
138 """ 151 """
139 Public method to get the color of a style. 152 Public method to get the color of a style.
140 153
141 @param style style number 154 @param style style number
155 @type int
156 @param substyle sub-style number
142 @type int 157 @type int
143 @return color 158 @return color
144 @rtype QColor 159 @rtype QColor
145 """ 160 """
146 return self.__lex.color(style) 161 if substyle >= 0:
147 162 color = self.__lex.substyleColor(style, substyle)
148 def setColor(self, c, style): 163 else:
164 color = self.__lex.color(style)
165
166 return color
167
168 def setColor(self, c, style, substyle=-1):
149 """ 169 """
150 Public method to set the color for a style. 170 Public method to set the color for a style.
151 171
152 @param c color 172 @param c color
153 @type QColor 173 @type QColor
154 @param style style number 174 @param style style number
155 @type int 175 @type int
156 """ 176 @param substyle sub-style number
157 self.__lex.setColor(c, style) 177 @type int
158 178 """
159 def defaultPaper(self, style): 179 if substyle >= 0:
180 self.__lex.setSubstyleColor(c, style, substyle)
181 else:
182 self.__lex.setColor(c, style)
183
184 def defaultPaper(self, style, substyle=-1):
160 """ 185 """
161 Public method to get the default background for a style. 186 Public method to get the default background for a style.
162 187
163 @param style style number 188 @param style style number
189 @type int
190 @param substyle sub-style number
164 @type int 191 @type int
165 @return default background color 192 @return default background color
166 @rtype QColor 193 @rtype QColor
167 """ 194 """
168 return self.__lex.defaultPaper(style) 195 if substyle >= 0:
169 196 color = self.__lex.substyleDefaultPaper(style, substyle)
170 def paper(self, style): 197 else:
198 color = self.__lex.defaultPaper(style)
199
200 return color
201
202 def paper(self, style, substyle=-1):
171 """ 203 """
172 Public method to get the background for a style. 204 Public method to get the background for a style.
173 205
174 @param style the style number 206 @param style the style number
207 @type int
208 @param substyle sub-style number
175 @type int 209 @type int
176 @return background color 210 @return background color
177 @rtype QColor 211 @rtype QColor
178 """ 212 """
179 return self.__lex.paper(style) 213 if substyle >= 0:
180 214 color = self.__lex.substylePaper(style, substyle)
181 def setPaper(self, c, style): 215 else:
216 color = self.__lex.paper(style)
217
218 return color
219
220 def setPaper(self, c, style, substyle=-1):
182 """ 221 """
183 Public method to set the background for a style. 222 Public method to set the background for a style.
184 223
185 @param c background color 224 @param c background color
186 @type QColor 225 @type QColor
187 @param style style number 226 @param style style number
188 @type int 227 @type int
189 """ 228 @param substyle sub-style number
190 self.__lex.setPaper(c, style) 229 @type int
191 230 """
192 def defaulEolFill(self, style): 231 if substyle >= 0:
232 self.__lex.setSubstylePaper(c, style, substyle)
233 else:
234 self.__lex.setPaper(c, style)
235
236 def defaulEolFill(self, style, substyle=-1):
193 """ 237 """
194 Public method to get the default eolFill flag for a style. 238 Public method to get the default eolFill flag for a style.
195 239
196 @param style style number 240 @param style style number
241 @type int
242 @param substyle sub-style number
197 @type int 243 @type int
198 @return default eolFill flag 244 @return default eolFill flag
199 @rtype bool 245 @rtype bool
200 """ 246 """
201 return self.__lex.defaultEolFill(style) 247 if substyle >= 0:
202 248 eolFill = self.__lex.substyleDefaultEolFill(style, substyle)
203 def eolFill(self, style): 249 else:
250 eolFill = self.__lex.defaultEolFill(style)
251
252 return eolFill
253
254 def eolFill(self, style, substyle=-1):
204 """ 255 """
205 Public method to get the eolFill flag for a style. 256 Public method to get the eolFill flag for a style.
206 257
207 @param style style number 258 @param style style number
259 @type int
260 @param substyle sub-style number
208 @type int 261 @type int
209 @return eolFill flag 262 @return eolFill flag
210 @rtype bool 263 @rtype bool
211 """ 264 """
212 return self.__lex.eolFill(style) 265 if substyle >= 0:
213 266 eolFill = self.__lex.substyleEolFill(style, substyle)
214 def setEolFill(self, eolfill, style): 267 else:
268 eolFill = self.__lex.eolFill(style)
269
270 return eolFill
271
272 def setEolFill(self, eolfill, style, substyle=-1):
215 """ 273 """
216 Public method to set the eolFill flag for a style. 274 Public method to set the eolFill flag for a style.
217 275
218 @param eolfill eolFill flag 276 @param eolfill eolFill flag
219 @type bool 277 @type bool
220 @param style style number 278 @param style style number
221 @type int 279 @type int
222 """ 280 @param substyle sub-style number
223 self.__lex.setEolFill(eolfill, style) 281 @type int
224 282 """
225 def defaultFont(self, style): 283 if substyle >= 0:
284 self.__lex.setSubstyleEolFill(eolfill, style, substyle)
285 else:
286 self.__lex.setEolFill(eolfill, style)
287
288 def defaultFont(self, style, substyle=-1):
226 """ 289 """
227 Public method to get the default font for a style. 290 Public method to get the default font for a style.
228 291
229 @param style style number 292 @param style style number
293 @type int
294 @param substyle sub-style number
230 @type int 295 @type int
231 @return default font 296 @return default font
232 @rtype QFont 297 @rtype QFont
233 """ 298 """
234 return self.__lex.defaultFont(style) 299 if substyle >= 0:
235 300 font = self.__lex.substyleDefaultFont(style, substyle)
236 def font(self, style): 301 else:
302 font = self.__lex.defaultFont(style)
303
304 return font
305
306 def font(self, style, substyle=-1):
237 """ 307 """
238 Public method to get the font for a style. 308 Public method to get the font for a style.
239 309
240 @param style style number 310 @param style style number
311 @type int
312 @param substyle sub-style number
241 @type int 313 @type int
242 @return font 314 @return font
243 @rtype QFont 315 @rtype QFont
244 """ 316 """
245 return self.__lex.font(style) 317 if substyle >= 0:
246 318 font = self.__lex.substyleFont(style, substyle)
247 def setFont(self, f, style): 319 else:
320 font = self.__lex.font(style)
321
322 return font
323
324 def setFont(self, f, style, substyle=-1):
248 """ 325 """
249 Public method to set the font for a style. 326 Public method to set the font for a style.
250 327
251 @param f font 328 @param f font
252 @type QFont 329 @type QFont
253 @param style style number 330 @param style style number
254 @type int 331 @type int
255 """ 332 @param substyle sub-style number
256 self.__lex.setFont(f, style) 333 @type int
334 """
335 if substyle >= 0:
336 self.__lex.setSubstyleFont(f, style, substyle)
337 else:
338 self.__lex.setFont(f, style)
339
340 def description(self, style, substyle=-1):
341 """
342 Public method to get a descriptive string for a style.
343
344 @param style style number
345 @type int
346 @param substyle sub-style number
347 @type int
348 @return description of the style
349 @rtype str
350 """
351 return self.__lex.description(style)
257 352
258 def language(self): 353 def language(self):
259 """ 354 """
260 Public method to get the lexers programming language. 355 Public method to get the lexers programming language.
261 356
262 @return lexer programming language 357 @return lexer programming language
263 @rtype str 358 @rtype str
264 """ 359 """
265 return self.__lex.language() 360 return self.__lex.language()
266
267 def description(self, style):
268 """
269 Public method to get a descriptive string for a style.
270
271 @param style style number
272 @type int
273 @return description of the style
274 @rtype str
275 """
276 return self.__lex.description(style)

eric ide

mercurial