Preferences/ConfigurationPages/EditorKeywordsPage.py

changeset 6874
5a3a39442711
parent 6645
ad476851d7e0
child 6879
a862f60853f9
diff -r 47804e8cde27 -r 5a3a39442711 Preferences/ConfigurationPages/EditorKeywordsPage.py
--- 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):

eric ide

mercurial