Tue, 19 Mar 2019 19:03:27 +0100
EditorKeywordsPage: added the "Default" and "All to Default" buttons to reset one or all keyword sets of a language lexer.
--- 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):
--- a/Preferences/ConfigurationPages/EditorKeywordsPage.ui Mon Mar 18 19:44:37 2019 +0100 +++ b/Preferences/ConfigurationPages/EditorKeywordsPage.ui Tue Mar 19 19:03:27 2019 +0100 @@ -92,6 +92,30 @@ </property> </widget> </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QPushButton" name="defaultButton"> + <property name="toolTip"> + <string>Press to set the current keyword set to the default value</string> + </property> + <property name="text"> + <string>Default</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="allDefaultButton"> + <property name="toolTip"> + <string>Press to set the all keyword sets of the selected language to default values</string> + </property> + <property name="text"> + <string>All to Defaults</string> + </property> + </widget> + </item> + </layout> + </item> </layout> </widget> <tabstops>
--- a/changelog Mon Mar 18 19:44:37 2019 +0100 +++ b/changelog Tue Mar 19 19:03:27 2019 +0100 @@ -11,6 +11,8 @@ -- added support for sub-styling (user definable words and their style) (see Editor->Highlighters->Styles configuration page) (only C++ and Python2/3 lexers support this feature) + -- extended the support for keyword sets (see Editor->Highlighters->Keywords + configuration page) - Email -- changed the Google Mail interface to not use obsoleted packages anymore - Multi Project