--- a/Preferences/ConfigurationPages/EditorKeywordsPage.py Sun Mar 17 14:12:00 2019 +0100 +++ b/Preferences/ConfigurationPages/EditorKeywordsPage.py Sun Mar 17 18:43:46 2019 +0100 @@ -17,10 +17,13 @@ import Preferences +# TODO: add set to Default button to load the default kw set class EditorKeywordsPage(ConfigurationPageBase, Ui_EditorKeywordsPage): """ Class implementing the editor highlighter keywords configuration page. """ + MaxKeywordSets = 8 # max. 8 sets are allowed + def __init__(self): """ Constructor @@ -34,10 +37,11 @@ from QScintilla.Lexers.LexerContainer import LexerContainer self.__keywords = { - "": ["", "", "", "", "", "", "", "", "", ""] - } - self.__maxKeywordSets = { - "": 0 + "": { + "Sets": [""] * (self.MaxKeywordSets + 1), + "Descriptions": [""] * (self.MaxKeywordSets + 1), + "MaxSets": 0, + } } languages = sorted( @@ -50,13 +54,21 @@ keywords = Preferences.getEditorKeywords(lang)[:] if not keywords: keywords = [""] - for kwSet in range(1, 10): + descriptions = [""] + for kwSet in range(1, self.MaxKeywordSets + 1): kw = lex.keywords(kwSet) if kw is None: kw = "" keywords.append(kw) - self.__keywords[lang] = keywords - self.__maxKeywordSets[lang] = lex.maximumKeywordSet() + descriptions = [""] + for kwSet in range(1, self.MaxKeywordSets + 1): + desc = lex.keywordsDescription(kwSet) + descriptions.append(desc) + self.__keywords[lang] = { + "Sets": keywords, + "Descriptions": descriptions, + "MaxSets": lex.maximumKeywordSet(), + } self.languageCombo.addItem( QScintilla.Lexers.getLanguageIcon(lang, False), lang) @@ -71,10 +83,10 @@ """ lang = self.languageCombo.currentText() kwSet = self.setSpinBox.value() - self.__keywords[lang][kwSet] = self.keywordsEdit.toPlainText() + self.__keywords[lang]["Sets"][kwSet] = self.keywordsEdit.toPlainText() for lang, keywords in self.__keywords.items(): - Preferences.setEditorKeywords(lang, keywords) + Preferences.setEditorKeywords(lang, keywords["Sets"]) @pyqtSlot(str) def on_languageCombo_activated(self, language): @@ -88,18 +100,20 @@ if self.setSpinBox.value() == 1: self.on_setSpinBox_valueChanged(1) - if self.__maxKeywordSets[language]: + if self.__keywords[language]["MaxSets"]: first = 1 - last = self.__maxKeywordSets[language] + last = self.__keywords[language]["MaxSets"] else: - first, last = 10, 0 - for kwSet in range(1, 10): - if self.__keywords[language][kwSet] != "": + first, last = self.MaxKeywordSets + 1, 0 + for kwSet in range(1, self.MaxKeywordSets + 1): + if self.__keywords[language]["Descriptions"][kwSet] != "": first = min(first, kwSet) last = max(last, kwSet) - self.setSpinBox.setEnabled(language != "" and first < 10) - self.keywordsEdit.setEnabled(language != "" and first < 10) - if first < 10: + self.setSpinBox.setEnabled(language != "" and + first <= self.MaxKeywordSets) + self.keywordsEdit.setEnabled(language != "" and + first <= self.MaxKeywordSets) + if first <= self.MaxKeywordSets: self.setSpinBox.setMinimum(first) self.setSpinBox.setMaximum(last) self.setSpinBox.setValue(first) @@ -119,12 +133,15 @@ if self.currentLanguage == language and self.currentSet == kwSet: return - self.__keywords[self.currentLanguage][self.currentSet] = \ + self.__keywords[self.currentLanguage]["Sets"][self.currentSet] = \ self.keywordsEdit.toPlainText() self.currentLanguage = language self.currentSet = kwSet - self.keywordsEdit.setPlainText(self.__keywords[language][kwSet]) + self.setDescriptionLabel.setText( + self.__keywords[language]["Descriptions"][kwSet]) + self.keywordsEdit.setPlainText( + self.__keywords[language]["Sets"][kwSet]) def create(dlg):