Preferences/ConfigurationPages/EditorKeywordsPage.py

changeset 6874
5a3a39442711
parent 6645
ad476851d7e0
child 6879
a862f60853f9
equal deleted inserted replaced
6873:47804e8cde27 6874:5a3a39442711
15 from .Ui_EditorKeywordsPage import Ui_EditorKeywordsPage 15 from .Ui_EditorKeywordsPage import Ui_EditorKeywordsPage
16 16
17 import Preferences 17 import Preferences
18 18
19 19
20 # TODO: add set to Default button to load the default kw set
20 class EditorKeywordsPage(ConfigurationPageBase, Ui_EditorKeywordsPage): 21 class EditorKeywordsPage(ConfigurationPageBase, Ui_EditorKeywordsPage):
21 """ 22 """
22 Class implementing the editor highlighter keywords configuration page. 23 Class implementing the editor highlighter keywords configuration page.
23 """ 24 """
25 MaxKeywordSets = 8 # max. 8 sets are allowed
26
24 def __init__(self): 27 def __init__(self):
25 """ 28 """
26 Constructor 29 Constructor
27 """ 30 """
28 super(EditorKeywordsPage, self).__init__() 31 super(EditorKeywordsPage, self).__init__()
32 # set initial values 35 # set initial values
33 import QScintilla.Lexers 36 import QScintilla.Lexers
34 from QScintilla.Lexers.LexerContainer import LexerContainer 37 from QScintilla.Lexers.LexerContainer import LexerContainer
35 38
36 self.__keywords = { 39 self.__keywords = {
37 "": ["", "", "", "", "", "", "", "", "", ""] 40 "": {
38 } 41 "Sets": [""] * (self.MaxKeywordSets + 1),
39 self.__maxKeywordSets = { 42 "Descriptions": [""] * (self.MaxKeywordSets + 1),
40 "": 0 43 "MaxSets": 0,
44 }
41 } 45 }
42 46
43 languages = sorted( 47 languages = sorted(
44 [''] + list(QScintilla.Lexers.getSupportedLanguages().keys())) 48 [''] + list(QScintilla.Lexers.getSupportedLanguages().keys()))
45 for lang in languages: 49 for lang in languages:
48 if isinstance(lex, LexerContainer): 52 if isinstance(lex, LexerContainer):
49 continue 53 continue
50 keywords = Preferences.getEditorKeywords(lang)[:] 54 keywords = Preferences.getEditorKeywords(lang)[:]
51 if not keywords: 55 if not keywords:
52 keywords = [""] 56 keywords = [""]
53 for kwSet in range(1, 10): 57 descriptions = [""]
58 for kwSet in range(1, self.MaxKeywordSets + 1):
54 kw = lex.keywords(kwSet) 59 kw = lex.keywords(kwSet)
55 if kw is None: 60 if kw is None:
56 kw = "" 61 kw = ""
57 keywords.append(kw) 62 keywords.append(kw)
58 self.__keywords[lang] = keywords 63 descriptions = [""]
59 self.__maxKeywordSets[lang] = lex.maximumKeywordSet() 64 for kwSet in range(1, self.MaxKeywordSets + 1):
65 desc = lex.keywordsDescription(kwSet)
66 descriptions.append(desc)
67 self.__keywords[lang] = {
68 "Sets": keywords,
69 "Descriptions": descriptions,
70 "MaxSets": lex.maximumKeywordSet(),
71 }
60 self.languageCombo.addItem( 72 self.languageCombo.addItem(
61 QScintilla.Lexers.getLanguageIcon(lang, False), 73 QScintilla.Lexers.getLanguageIcon(lang, False),
62 lang) 74 lang)
63 75
64 self.currentLanguage = '' 76 self.currentLanguage = ''
69 """ 81 """
70 Public slot to save the editor highlighter keywords configuration. 82 Public slot to save the editor highlighter keywords configuration.
71 """ 83 """
72 lang = self.languageCombo.currentText() 84 lang = self.languageCombo.currentText()
73 kwSet = self.setSpinBox.value() 85 kwSet = self.setSpinBox.value()
74 self.__keywords[lang][kwSet] = self.keywordsEdit.toPlainText() 86 self.__keywords[lang]["Sets"][kwSet] = self.keywordsEdit.toPlainText()
75 87
76 for lang, keywords in self.__keywords.items(): 88 for lang, keywords in self.__keywords.items():
77 Preferences.setEditorKeywords(lang, keywords) 89 Preferences.setEditorKeywords(lang, keywords["Sets"])
78 90
79 @pyqtSlot(str) 91 @pyqtSlot(str)
80 def on_languageCombo_activated(self, language): 92 def on_languageCombo_activated(self, language):
81 """ 93 """
82 Private slot to fill the keywords edit. 94 Private slot to fill the keywords edit.
86 if self.currentLanguage == language: 98 if self.currentLanguage == language:
87 return 99 return
88 100
89 if self.setSpinBox.value() == 1: 101 if self.setSpinBox.value() == 1:
90 self.on_setSpinBox_valueChanged(1) 102 self.on_setSpinBox_valueChanged(1)
91 if self.__maxKeywordSets[language]: 103 if self.__keywords[language]["MaxSets"]:
92 first = 1 104 first = 1
93 last = self.__maxKeywordSets[language] 105 last = self.__keywords[language]["MaxSets"]
94 else: 106 else:
95 first, last = 10, 0 107 first, last = self.MaxKeywordSets + 1, 0
96 for kwSet in range(1, 10): 108 for kwSet in range(1, self.MaxKeywordSets + 1):
97 if self.__keywords[language][kwSet] != "": 109 if self.__keywords[language]["Descriptions"][kwSet] != "":
98 first = min(first, kwSet) 110 first = min(first, kwSet)
99 last = max(last, kwSet) 111 last = max(last, kwSet)
100 self.setSpinBox.setEnabled(language != "" and first < 10) 112 self.setSpinBox.setEnabled(language != "" and
101 self.keywordsEdit.setEnabled(language != "" and first < 10) 113 first <= self.MaxKeywordSets)
102 if first < 10: 114 self.keywordsEdit.setEnabled(language != "" and
115 first <= self.MaxKeywordSets)
116 if first <= self.MaxKeywordSets:
103 self.setSpinBox.setMinimum(first) 117 self.setSpinBox.setMinimum(first)
104 self.setSpinBox.setMaximum(last) 118 self.setSpinBox.setMaximum(last)
105 self.setSpinBox.setValue(first) 119 self.setSpinBox.setValue(first)
106 else: 120 else:
107 self.setSpinBox.setMinimum(0) 121 self.setSpinBox.setMinimum(0)
117 """ 131 """
118 language = self.languageCombo.currentText() 132 language = self.languageCombo.currentText()
119 if self.currentLanguage == language and self.currentSet == kwSet: 133 if self.currentLanguage == language and self.currentSet == kwSet:
120 return 134 return
121 135
122 self.__keywords[self.currentLanguage][self.currentSet] = \ 136 self.__keywords[self.currentLanguage]["Sets"][self.currentSet] = \
123 self.keywordsEdit.toPlainText() 137 self.keywordsEdit.toPlainText()
124 138
125 self.currentLanguage = language 139 self.currentLanguage = language
126 self.currentSet = kwSet 140 self.currentSet = kwSet
127 self.keywordsEdit.setPlainText(self.__keywords[language][kwSet]) 141 self.setDescriptionLabel.setText(
142 self.__keywords[language]["Descriptions"][kwSet])
143 self.keywordsEdit.setPlainText(
144 self.__keywords[language]["Sets"][kwSet])
128 145
129 146
130 def create(dlg): 147 def create(dlg):
131 """ 148 """
132 Module function to create the configuration page. 149 Module function to create the configuration page.

eric ide

mercurial