Preferences/ConfigurationPages/EditorKeywordsPage.py

changeset 6880
51f8a56f0b42
parent 6879
a862f60853f9
--- a/Preferences/ConfigurationPages/EditorKeywordsPage.py	Mon Mar 18 19:44:37 2019 +0100
+++ b/Preferences/ConfigurationPages/EditorKeywordsPage.py	Tue Mar 19 19:03:27 2019 +0100
@@ -11,15 +11,14 @@
 
 from PyQt5.QtCore import pyqtSlot
 
+from E5Gui import E5MessageBox
+
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_EditorKeywordsPage import Ui_EditorKeywordsPage
 
 import Preferences
 
 
-# TODO: add set to Default button to load the default kw set
-#       "Default" loads default values for current keyword set
-#       "All to Default" loads default values for all keyword sets
 class EditorKeywordsPage(ConfigurationPageBase, Ui_EditorKeywordsPage):
     """
     Class implementing the editor highlighter keywords configuration page.
@@ -74,9 +73,16 @@
                 for kwSet in range(1, self.MaxKeywordSets + 1):
                     desc = lex.keywordsDescription(kwSet)
                     descriptions.append(desc)
+                defaults = [""]
+                for kwSet in range(1, self.MaxKeywordSets + 1):
+                    dkw = lex.defaultKeywords(kwSet)
+                    if dkw is None:
+                        dkw = ""
+                    defaults.append(dkw)
                 self.__keywords[lang] = {
                     "Sets": keywords,
                     "Descriptions": descriptions,
+                    "DefaultSets": defaults,
                     "MaxSets": lex.maximumKeywordSet(),
                 }
             self.languageCombo.addItem(
@@ -106,6 +112,9 @@
         @param language selected language
         @type str
         """
+        self.defaultButton.setEnabled(bool(language))
+        self.allDefaultButton.setEnabled(bool(language))
+        
         if self.currentLanguage == language:
             return
         
@@ -154,6 +163,46 @@
             self.__keywords[language]["Descriptions"][kwSet]))
         self.keywordsEdit.setPlainText(
             self.__keywords[language]["Sets"][kwSet])
+    
+    @pyqtSlot()
+    def on_defaultButton_clicked(self):
+        """
+        Private slot to set the current keyword set to default values.
+        """
+        if bool(self.keywordsEdit.toPlainText()):
+            ok = E5MessageBox.yesNo(
+                self,
+                self.tr("Reset to Default"),
+                self.tr("Shall the current keyword set really be reset to"
+                        " default values?"))
+        else:
+            ok = True
+        if ok:
+            language = self.languageCombo.currentText()
+            kwSet = self.setSpinBox.value()
+            self.__keywords[language]["Sets"][kwSet] = \
+                self.__keywords[language]["DefaultSets"][kwSet]
+            self.keywordsEdit.setPlainText(
+                self.__keywords[language]["Sets"][kwSet])
+    
+    @pyqtSlot()
+    def on_allDefaultButton_clicked(self):
+        """
+        Private slot to set all keyword sets of the current language to default
+        values.
+        """
+        ok = E5MessageBox.yesNo(
+            self,
+            self.tr("Reset All to Default"),
+            self.tr("Shall all keyword sets of the current language really be"
+                    " reset to default values?"))
+        if ok:
+            language = self.languageCombo.currentText()
+            kwSet = self.setSpinBox.value()
+            self.__keywords[language]["Sets"] = \
+                self.__keywords[language]["DefaultSets"][:]
+            self.keywordsEdit.setPlainText(
+                self.__keywords[language]["Sets"][kwSet])
 
 
 def create(dlg):

eric ide

mercurial