93 if settings.contains(key): |
93 if settings.contains(key): |
94 subStyleLength = int(settings.value(key)) |
94 subStyleLength = int(settings.value(key)) |
95 if subStyleLength: |
95 if subStyleLength: |
96 self.__subStyles[baseStyle] = {} |
96 self.__subStyles[baseStyle] = {} |
97 for subStyle in range(subStyleLength): |
97 for subStyle in range(subStyleLength): |
98 substyleKey = \ |
98 substyleKey = ( |
99 "Scintilla/{0}/style{1}/substyle{2}/"\ |
99 "Scintilla/{0}/style{1}/substyle{2}/" |
100 .format(self.language(), baseStyle, subStyle) |
100 ).format(self.language(), baseStyle, subStyle) |
101 if settings.contains(substyleKey + "Description"): |
101 if settings.contains(substyleKey + "Description"): |
102 subStyleData = {} |
102 subStyleData = {} |
103 subStyleData["Description"] = settings.value( |
103 subStyleData["Description"] = settings.value( |
104 substyleKey + "Description", "") |
104 substyleKey + "Description", "") |
105 subStyleData["Words"] = settings.value( |
105 subStyleData["Words"] = settings.value( |
119 key = substyleKey + "font_family" |
119 key = substyleKey + "font_family" |
120 if settings.contains(key): |
120 if settings.contains(key): |
121 style["font_family"] = settings.value(key) |
121 style["font_family"] = settings.value(key) |
122 key = substyleKey + "font_size" |
122 key = substyleKey + "font_size" |
123 if settings.contains(key): |
123 if settings.contains(key): |
124 style["font_size"] = \ |
124 style["font_size"] = ( |
125 int(settings.value(key)) |
125 int(settings.value(key)) |
|
126 ) |
126 key = substyleKey + "font_bold" |
127 key = substyleKey + "font_bold" |
127 if settings.contains(key): |
128 if settings.contains(key): |
128 style["font_bold"] = Preferences.toBool( |
129 style["font_bold"] = Preferences.toBool( |
129 settings.value(key)) |
130 settings.value(key)) |
130 key = substyleKey + "font_italic" |
131 key = substyleKey + "font_italic" |
131 if settings.contains(key): |
132 if settings.contains(key): |
132 style["font_italic"] = Preferences.toBool( |
133 style["font_italic"] = Preferences.toBool( |
133 settings.value(key)) |
134 settings.value(key)) |
134 key = substyleKey + "font_underline" |
135 key = substyleKey + "font_underline" |
135 if settings.contains(key): |
136 if settings.contains(key): |
136 style["font_underline"] = \ |
137 style["font_underline"] = ( |
137 Preferences.toBool(settings.value(key)) |
138 Preferences.toBool(settings.value(key)) |
|
139 ) |
138 |
140 |
139 subStyleData["Style"] = style |
141 subStyleData["Style"] = style |
140 |
142 |
141 self.__subStyles[baseStyle][subStyle] = \ |
143 self.__subStyles[baseStyle][subStyle] = ( |
142 subStyleData |
144 subStyleData |
|
145 ) |
143 |
146 |
144 else: |
147 else: |
145 # initialize with default |
148 # initialize with default |
146 self.__subStyles[baseStyle][subStyle] = \ |
149 self.__subStyles[baseStyle][subStyle] = ( |
147 copy.deepcopy(self.defaultSubStyles |
150 copy.deepcopy(self.defaultSubStyles |
148 [baseStyle][subStyle]) |
151 [baseStyle][subStyle]) |
|
152 ) |
149 |
153 |
150 self.__subStylesInitialized = True |
154 self.__subStylesInitialized = True |
151 |
155 |
152 def readSubstyles(self, editor): |
156 def readSubstyles(self, editor): |
153 """ |
157 """ |
251 self.language(), baseStyle) |
255 self.language(), baseStyle) |
252 if settings.contains(key): |
256 if settings.contains(key): |
253 subStyleLength = int(settings.value(key)) |
257 subStyleLength = int(settings.value(key)) |
254 if subStyleLength: |
258 if subStyleLength: |
255 for subStyle in range(subStyleLength): |
259 for subStyle in range(subStyleLength): |
256 substyleKey = "Scintilla/{0}/style{1}/substyle{2}/"\ |
260 substyleKey = ( |
257 .format(self.language(), baseStyle, subStyle) |
261 "Scintilla/{0}/style{1}/substyle{2}/" |
|
262 ).format(self.language(), baseStyle, subStyle) |
258 settings.remove(substyleKey) |
263 settings.remove(substyleKey) |
259 |
264 |
260 # Step 2: save the defined sub-styles |
265 # Step 2: save the defined sub-styles |
261 for baseStyle in self.baseStyles: |
266 for baseStyle in self.baseStyles: |
262 key = "Scintilla/{0}/style{1}/SubStyleLength".format( |
267 key = "Scintilla/{0}/style{1}/SubStyleLength".format( |
267 subStyleIndex += 1 |
272 subStyleIndex += 1 |
268 substyleKey = "Scintilla/{0}/style{1}/substyle{2}/".format( |
273 substyleKey = "Scintilla/{0}/style{1}/substyle{2}/".format( |
269 self.language(), baseStyle, subStyleIndex) |
274 self.language(), baseStyle, subStyleIndex) |
270 subStyleData = self.__subStyles[baseStyle][subStyle] |
275 subStyleData = self.__subStyles[baseStyle][subStyle] |
271 |
276 |
272 if not subStyleData["Description"] and \ |
277 if ( |
273 not subStyleData["Words"]: |
278 not subStyleData["Description"] and |
|
279 not subStyleData["Words"] |
|
280 ): |
274 # invalid or incomplete sub-style definition |
281 # invalid or incomplete sub-style definition |
275 continue |
282 continue |
276 |
283 |
277 settings.setValue(substyleKey + "Description", |
284 settings.setValue(substyleKey + "Description", |
278 subStyleData["Description"]) |
285 subStyleData["Description"]) |
368 @type int |
375 @type int |
369 @param substyle sub-style number |
376 @param substyle sub-style number |
370 @type int |
377 @type int |
371 """ |
378 """ |
372 if style in self.__subStyles and substyle in self.__subStyles[style]: |
379 if style in self.__subStyles and substyle in self.__subStyles[style]: |
373 self.__subStyles[style][substyle]["Description"] = \ |
380 self.__subStyles[style][substyle]["Description"] = ( |
374 description.strip() |
381 description.strip() |
|
382 ) |
375 |
383 |
376 def substyleDescription(self, style, substyle): |
384 def substyleDescription(self, style, substyle): |
377 """ |
385 """ |
378 Public method to get the description of a sub-style. |
386 Public method to get the description of a sub-style. |
379 |
387 |
433 @type int |
441 @type int |
434 @param substyle sub-style number |
442 @param substyle sub-style number |
435 @type int |
443 @type int |
436 """ |
444 """ |
437 if style in self.__subStyles and substyle in self.__subStyles[style]: |
445 if style in self.__subStyles and substyle in self.__subStyles[style]: |
438 self.__subStyles[style][substyle]["Style"]["fore"] = \ |
446 self.__subStyles[style][substyle]["Style"]["fore"] = ( |
439 color.red() << 16 | color.green() << 8 | color.blue() |
447 color.red() << 16 | color.green() << 8 | color.blue() |
|
448 ) |
440 |
449 |
441 def substyleColor(self, style, substyle): |
450 def substyleColor(self, style, substyle): |
442 """ |
451 """ |
443 Public method to get the sub-style foreground color. |
452 Public method to get the sub-style foreground color. |
444 |
453 |
472 @type int |
481 @type int |
473 @param substyle sub-style number |
482 @param substyle sub-style number |
474 @type int |
483 @type int |
475 """ |
484 """ |
476 if style in self.__subStyles and substyle in self.__subStyles[style]: |
485 if style in self.__subStyles and substyle in self.__subStyles[style]: |
477 self.__subStyles[style][substyle]["Style"]["paper"] = \ |
486 self.__subStyles[style][substyle]["Style"]["paper"] = ( |
478 color.red() << 16 | color.green() << 8 | color.blue() |
487 color.red() << 16 | color.green() << 8 | color.blue() |
|
488 ) |
479 |
489 |
480 def substylePaper(self, style, substyle): |
490 def substylePaper(self, style, substyle): |
481 """ |
491 """ |
482 Public method to get the sub-style background color. |
492 Public method to get the sub-style background color. |
483 |
493 |
511 @type int |
521 @type int |
512 @param substyle sub-style number |
522 @param substyle sub-style number |
513 @type int |
523 @type int |
514 """ |
524 """ |
515 if style in self.__subStyles and substyle in self.__subStyles[style]: |
525 if style in self.__subStyles and substyle in self.__subStyles[style]: |
516 self.__subStyles[style][substyle]["Style"]["eolfill"] = \ |
526 self.__subStyles[style][substyle]["Style"]["eolfill"] = ( |
517 eolFill |
527 eolFill |
|
528 ) |
518 |
529 |
519 def substyleEolFill(self, style, substyle): |
530 def substyleEolFill(self, style, substyle): |
520 """ |
531 """ |
521 Public method to get the eolfill flag. |
532 Public method to get the eolfill flag. |
522 |
533 |
546 @type int |
557 @type int |
547 @param substyle sub-style number |
558 @param substyle sub-style number |
548 @type int |
559 @type int |
549 """ |
560 """ |
550 if style in self.__subStyles and substyle in self.__subStyles[style]: |
561 if style in self.__subStyles and substyle in self.__subStyles[style]: |
551 self.__subStyles[style][substyle]["Style"]["font_family"] = \ |
562 self.__subStyles[style][substyle]["Style"]["font_family"] = ( |
552 font.family() |
563 font.family() |
553 self.__subStyles[style][substyle]["Style"]["font_size"] = \ |
564 ) |
|
565 self.__subStyles[style][substyle]["Style"]["font_size"] = ( |
554 font.pointSize() |
566 font.pointSize() |
555 self.__subStyles[style][substyle]["Style"]["font_bold"] = \ |
567 ) |
|
568 self.__subStyles[style][substyle]["Style"]["font_bold"] = ( |
556 font.bold() |
569 font.bold() |
557 self.__subStyles[style][substyle]["Style"]["font_italic"] = \ |
570 ) |
|
571 self.__subStyles[style][substyle]["Style"]["font_italic"] = ( |
558 font.italic() |
572 font.italic() |
559 self.__subStyles[style][substyle]["Style"]["font_underline"] = \ |
573 ) |
|
574 self.__subStyles[style][substyle]["Style"]["font_underline"] = ( |
560 font.underline() |
575 font.underline() |
|
576 ) |
561 |
577 |
562 def substyleFont(self, style, substyle): |
578 def substyleFont(self, style, substyle): |
563 """ |
579 """ |
564 Public method to get the sub-style font. |
580 Public method to get the sub-style font. |
565 |
581 |
598 @return sub-style default description |
614 @return sub-style default description |
599 @rtype str |
615 @rtype str |
600 """ |
616 """ |
601 description = "" |
617 description = "" |
602 |
618 |
603 if style in self.defaultSubStyles and \ |
619 if ( |
604 substyle in self.defaultSubStyles[style]: |
620 style in self.defaultSubStyles and |
|
621 substyle in self.defaultSubStyles[style] |
|
622 ): |
605 substyleData = self.defaultSubStyles[style][substyle] |
623 substyleData = self.defaultSubStyles[style][substyle] |
606 description = substyleData["Description"].strip() |
624 description = substyleData["Description"].strip() |
607 |
625 |
608 return description |
626 return description |
609 |
627 |
618 @return white-space separated default word list |
636 @return white-space separated default word list |
619 @rtype str |
637 @rtype str |
620 """ |
638 """ |
621 words = "" |
639 words = "" |
622 |
640 |
623 if style in self.defaultSubStyles and \ |
641 if ( |
624 substyle in self.defaultSubStyles[style]: |
642 style in self.defaultSubStyles and |
|
643 substyle in self.defaultSubStyles[style] |
|
644 ): |
625 substyleData = self.defaultSubStyles[style][substyle] |
645 substyleData = self.defaultSubStyles[style][substyle] |
626 words = substyleData["Words"].strip() |
646 words = substyleData["Words"].strip() |
627 |
647 |
628 return words |
648 return words |
629 |
649 |
638 @return default foreground color |
658 @return default foreground color |
639 @rtype QColor |
659 @rtype QColor |
640 """ |
660 """ |
641 color = self.defaultColor(style) |
661 color = self.defaultColor(style) |
642 |
662 |
643 if style in self.defaultSubStyles and \ |
663 if ( |
644 substyle in self.defaultSubStyles[style]: |
664 style in self.defaultSubStyles and |
|
665 substyle in self.defaultSubStyles[style] |
|
666 ): |
645 styleData = self.defaultSubStyles[style][substyle]["Style"] |
667 styleData = self.defaultSubStyles[style][substyle]["Style"] |
646 if "fore" in styleData: |
668 if "fore" in styleData: |
647 color = QColor( |
669 color = QColor( |
648 styleData["fore"] >> 16 & 0xff, |
670 styleData["fore"] >> 16 & 0xff, |
649 styleData["fore"] >> 8 & 0xff, |
671 styleData["fore"] >> 8 & 0xff, |
663 @return default background color |
685 @return default background color |
664 @rtype QColor |
686 @rtype QColor |
665 """ |
687 """ |
666 color = self.defaultPaper(style) |
688 color = self.defaultPaper(style) |
667 |
689 |
668 if style in self.defaultSubStyles and \ |
690 if ( |
669 substyle in self.defaultSubStyles[style]: |
691 style in self.defaultSubStyles and |
|
692 substyle in self.defaultSubStyles[style] |
|
693 ): |
670 styleData = self.defaultSubStyles[style][substyle]["Style"] |
694 styleData = self.defaultSubStyles[style][substyle]["Style"] |
671 if "paper" in styleData: |
695 if "paper" in styleData: |
672 color = QColor( |
696 color = QColor( |
673 styleData["paper"] >> 16 & 0xff, |
697 styleData["paper"] >> 16 & 0xff, |
674 styleData["paper"] >> 8 & 0xff, |
698 styleData["paper"] >> 8 & 0xff, |
688 @return default eolfill flag |
712 @return default eolfill flag |
689 @rtype bool |
713 @rtype bool |
690 """ |
714 """ |
691 eolFill = self.defaultEolFill(style) |
715 eolFill = self.defaultEolFill(style) |
692 |
716 |
693 if style in self.defaultSubStyles and \ |
717 if ( |
694 substyle in self.defaultSubStyles[style]: |
718 style in self.defaultSubStyles and |
|
719 substyle in self.defaultSubStyles[style] |
|
720 ): |
695 styleData = self.defaultSubStyles[style][substyle]["Style"] |
721 styleData = self.defaultSubStyles[style][substyle]["Style"] |
696 if "eolfill" in styleData: |
722 if "eolfill" in styleData: |
697 eolFill = styleData["eolfill"] |
723 eolFill = styleData["eolfill"] |
698 |
724 |
699 return eolFill |
725 return eolFill |
709 @return default font |
735 @return default font |
710 @rtype QFont |
736 @rtype QFont |
711 """ |
737 """ |
712 font = self.defaultFont(style) |
738 font = self.defaultFont(style) |
713 |
739 |
714 if style in self.defaultSubStyles and \ |
740 if ( |
715 substyle in self.defaultSubStyles[style]: |
741 style in self.defaultSubStyles and |
|
742 substyle in self.defaultSubStyles[style] |
|
743 ): |
716 styleData = self.defaultSubStyles[style][substyle]["Style"] |
744 styleData = self.defaultSubStyles[style][substyle]["Style"] |
717 if "font_family" in styleData: |
745 if "font_family" in styleData: |
718 font.setFamily(styleData["font_family"]) |
746 font.setFamily(styleData["font_family"]) |
719 if "font_size" in styleData: |
747 if "font_size" in styleData: |
720 font.setPointSize(styleData["font_size"]) |
748 font.setPointSize(styleData["font_size"]) |