--- 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):