Preferences/ConfigurationPages/EditorKeywordsPage.py

changeset 6880
51f8a56f0b42
parent 6879
a862f60853f9
equal deleted inserted replaced
6879:a862f60853f9 6880:51f8a56f0b42
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.

eric ide

mercurial