9 |
9 |
10 from __future__ import unicode_literals |
10 from __future__ import unicode_literals |
11 |
11 |
12 from PyQt5.QtCore import pyqtSlot |
12 from PyQt5.QtCore import pyqtSlot |
13 |
13 |
|
14 from E5Gui import E5MessageBox |
|
15 |
14 from .ConfigurationPageBase import ConfigurationPageBase |
16 from .ConfigurationPageBase import ConfigurationPageBase |
15 from .Ui_EditorKeywordsPage import Ui_EditorKeywordsPage |
17 from .Ui_EditorKeywordsPage import Ui_EditorKeywordsPage |
16 |
18 |
17 import Preferences |
19 import Preferences |
18 |
20 |
19 |
21 |
20 # TODO: add set to Default button to load the default kw set |
|
21 # "Default" loads default values for current keyword set |
|
22 # "All to Default" loads default values for all keyword sets |
|
23 class EditorKeywordsPage(ConfigurationPageBase, Ui_EditorKeywordsPage): |
22 class EditorKeywordsPage(ConfigurationPageBase, Ui_EditorKeywordsPage): |
24 """ |
23 """ |
25 Class implementing the editor highlighter keywords configuration page. |
24 Class implementing the editor highlighter keywords configuration page. |
26 """ |
25 """ |
27 MaxKeywordSets = 8 # max. 8 sets are allowed |
26 MaxKeywordSets = 8 # max. 8 sets are allowed |
72 keywords.append(kw) |
71 keywords.append(kw) |
73 descriptions = [""] |
72 descriptions = [""] |
74 for kwSet in range(1, self.MaxKeywordSets + 1): |
73 for kwSet in range(1, self.MaxKeywordSets + 1): |
75 desc = lex.keywordsDescription(kwSet) |
74 desc = lex.keywordsDescription(kwSet) |
76 descriptions.append(desc) |
75 descriptions.append(desc) |
|
76 defaults = [""] |
|
77 for kwSet in range(1, self.MaxKeywordSets + 1): |
|
78 dkw = lex.defaultKeywords(kwSet) |
|
79 if dkw is None: |
|
80 dkw = "" |
|
81 defaults.append(dkw) |
77 self.__keywords[lang] = { |
82 self.__keywords[lang] = { |
78 "Sets": keywords, |
83 "Sets": keywords, |
79 "Descriptions": descriptions, |
84 "Descriptions": descriptions, |
|
85 "DefaultSets": defaults, |
80 "MaxSets": lex.maximumKeywordSet(), |
86 "MaxSets": lex.maximumKeywordSet(), |
81 } |
87 } |
82 self.languageCombo.addItem( |
88 self.languageCombo.addItem( |
83 QScintilla.Lexers.getLanguageIcon(lang, False), |
89 QScintilla.Lexers.getLanguageIcon(lang, False), |
84 lang) |
90 lang) |
104 Private slot to fill the keywords edit. |
110 Private slot to fill the keywords edit. |
105 |
111 |
106 @param language selected language |
112 @param language selected language |
107 @type str |
113 @type str |
108 """ |
114 """ |
|
115 self.defaultButton.setEnabled(bool(language)) |
|
116 self.allDefaultButton.setEnabled(bool(language)) |
|
117 |
109 if self.currentLanguage == language: |
118 if self.currentLanguage == language: |
110 return |
119 return |
111 |
120 |
112 if self.setSpinBox.value() == 1: |
121 if self.setSpinBox.value() == 1: |
113 self.on_setSpinBox_valueChanged(1) |
122 self.on_setSpinBox_valueChanged(1) |
152 self.currentSet = kwSet |
161 self.currentSet = kwSet |
153 self.setDescriptionLabel.setText("<b>{0}</b>".format( |
162 self.setDescriptionLabel.setText("<b>{0}</b>".format( |
154 self.__keywords[language]["Descriptions"][kwSet])) |
163 self.__keywords[language]["Descriptions"][kwSet])) |
155 self.keywordsEdit.setPlainText( |
164 self.keywordsEdit.setPlainText( |
156 self.__keywords[language]["Sets"][kwSet]) |
165 self.__keywords[language]["Sets"][kwSet]) |
|
166 |
|
167 @pyqtSlot() |
|
168 def on_defaultButton_clicked(self): |
|
169 """ |
|
170 Private slot to set the current keyword set to default values. |
|
171 """ |
|
172 if bool(self.keywordsEdit.toPlainText()): |
|
173 ok = E5MessageBox.yesNo( |
|
174 self, |
|
175 self.tr("Reset to Default"), |
|
176 self.tr("Shall the current keyword set really be reset to" |
|
177 " default values?")) |
|
178 else: |
|
179 ok = True |
|
180 if ok: |
|
181 language = self.languageCombo.currentText() |
|
182 kwSet = self.setSpinBox.value() |
|
183 self.__keywords[language]["Sets"][kwSet] = \ |
|
184 self.__keywords[language]["DefaultSets"][kwSet] |
|
185 self.keywordsEdit.setPlainText( |
|
186 self.__keywords[language]["Sets"][kwSet]) |
|
187 |
|
188 @pyqtSlot() |
|
189 def on_allDefaultButton_clicked(self): |
|
190 """ |
|
191 Private slot to set all keyword sets of the current language to default |
|
192 values. |
|
193 """ |
|
194 ok = E5MessageBox.yesNo( |
|
195 self, |
|
196 self.tr("Reset All to Default"), |
|
197 self.tr("Shall all keyword sets of the current language really be" |
|
198 " reset to default values?")) |
|
199 if ok: |
|
200 language = self.languageCombo.currentText() |
|
201 kwSet = self.setSpinBox.value() |
|
202 self.__keywords[language]["Sets"] = \ |
|
203 self.__keywords[language]["DefaultSets"][:] |
|
204 self.keywordsEdit.setPlainText( |
|
205 self.__keywords[language]["Sets"][kwSet]) |
157 |
206 |
158 |
207 |
159 def create(dlg): |
208 def create(dlg): |
160 """ |
209 """ |
161 Module function to create the configuration page. |
210 Module function to create the configuration page. |