eric6/QScintilla/Lexers/SubstyledLexer.py

changeset 7267
aedc309827c7
parent 7229
53054eb5b15a
child 7360
9190402e4505
equal deleted inserted replaced
7266:d001bc703c29 7267:aedc309827c7
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"])

eric ide

mercurial