--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Preferences/ConfigurationPages/EditorPropertiesPage.py Thu Jul 07 11:23:56 2022 +0200 @@ -0,0 +1,554 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2006 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the Editor Properties configuration page. +""" + +from PyQt6.Qsci import QsciLexerPython + +from .ConfigurationPageBase import ConfigurationPageBase +from .Ui_EditorPropertiesPage import Ui_EditorPropertiesPage + +import Preferences + + +class EditorPropertiesPage(ConfigurationPageBase, Ui_EditorPropertiesPage): + """ + Class implementing the Editor Properties configuration page. + """ + def __init__(self, lexers): + """ + Constructor + + @param lexers reference to the lexers dictionary + """ + super().__init__() + self.setupUi(self) + self.setObjectName("EditorPropertiesPage") + + self.languages = sorted(list(lexers.keys())[:]) + + # set initial values + # All + self.allFoldCompactCheckBox.setChecked( + Preferences.getEditor("AllFoldCompact")) + + # Bash + self.foldBashCommentCheckBox.setChecked( + Preferences.getEditor("BashFoldComment")) + + # C++ + self.foldCppCommentCheckBox.setChecked( + Preferences.getEditor("CppFoldComment")) + self.foldCppPreprocessorCheckBox.setChecked( + Preferences.getEditor("CppFoldPreprocessor")) + self.foldCppAtElseCheckBox.setChecked( + Preferences.getEditor("CppFoldAtElse")) + self.cppIndentOpeningBraceCheckBox.setChecked( + Preferences.getEditor("CppIndentOpeningBrace")) + self.cppIndentClosingBraceCheckBox.setChecked( + Preferences.getEditor("CppIndentClosingBrace")) + self.cppCaseInsensitiveCheckBox.setChecked( + Preferences.getEditor("CppCaseInsensitiveKeywords")) + self.cppDollarAllowedCheckBox.setChecked( + Preferences.getEditor("CppDollarsAllowed")) + self.cppStylePreprocessorCheckBox.setChecked( + Preferences.getEditor("CppStylePreprocessor")) + self.cppHighlightTripleQuotedCheckBox.setChecked( + Preferences.getEditor("CppHighlightTripleQuotedStrings")) + self.cppHighlightHashQuotedCheckBox.setChecked( + Preferences.getEditor("CppHighlightHashQuotedStrings")) + self.cppHighlightBackQuotedCheckBox.setChecked( + Preferences.getEditor("CppHighlightBackQuotedStrings")) + self.cppHighlightEsacepSequencesCheckBox.setChecked( + Preferences.getEditor("CppHighlightEscapeSequences")) + self.cppVerbatimStringEscapeAllowedCheckBox.setChecked( + Preferences.getEditor( + "CppVerbatimStringEscapeSequencesAllowed")) + + # CMake + self.cmakeFoldAtElseCheckBox.setChecked( + Preferences.getEditor("CMakeFoldAtElse")) + + # CoffeeScript + if "CoffeeScript" in self.languages: + self.foldCoffeeScriptCommentCheckBox.setChecked( + Preferences.getEditor("CoffeScriptFoldComment")) + self.coffeeScriptDollarAllowedCheckBox.setChecked( + Preferences.getEditor("CoffeeScriptDollarsAllowed")) + self.coffeeScriptStylePreprocessorCheckBox.setChecked( + Preferences.getEditor("CoffeeScriptStylePreprocessor")) + else: + self.coffeeScriptGroup.setEnabled(False) + + # CSS + self.foldCssCommentCheckBox.setChecked( + Preferences.getEditor("CssFoldComment")) + self.cssHssCheckBox.setChecked( + Preferences.getEditor("CssHssSupport")) + self.cssLessCheckBox.setChecked( + Preferences.getEditor("CssLessSupport")) + self.cssSassyCheckBox.setChecked( + Preferences.getEditor("CssSassySupport")) + + # D + self.foldDCommentCheckBox.setChecked( + Preferences.getEditor("DFoldComment")) + self.foldDAtElseCheckBox.setChecked( + Preferences.getEditor("DFoldAtElse")) + self.dIndentOpeningBraceCheckBox.setChecked( + Preferences.getEditor("DIndentOpeningBrace")) + self.dIndentClosingBraceCheckBox.setChecked( + Preferences.getEditor("DIndentClosingBrace")) + + # Gettext + if "Gettext" in self.languages: + self.foldPoCommentCheckBox.setChecked( + Preferences.getEditor("PoFoldComment")) + else: + self.gettextGroup.setEnabled(False) + + # HTML + self.foldHtmlPreprocessorCheckBox.setChecked( + Preferences.getEditor("HtmlFoldPreprocessor")) + self.htmlCaseSensitiveTagsCheckBox.setChecked( + Preferences.getEditor("HtmlCaseSensitiveTags")) + self.foldHtmlScriptCommentsCheckBox.setChecked( + Preferences.getEditor("HtmlFoldScriptComments")) + self.foldHtmlScriptHereDocsCheckBox.setChecked( + Preferences.getEditor("HtmlFoldScriptHeredocs")) + self.htmlDjangoCheckBox.setChecked( + Preferences.getEditor("HtmlDjangoTemplates")) + self.htmlMakoCheckBox.setChecked( + Preferences.getEditor("HtmlMakoTemplates")) + + # JSON + if "JSON" in self.languages: + self.jsonHighlightCommentsCheckBox.setChecked( + Preferences.getEditor("JSONHightlightComments")) + self.jsonHighlightEscapeCheckBox.setChecked( + Preferences.getEditor("JSONHighlightEscapeSequences")) + else: + self.jsonGroup.setEnabled(False) + + # Pascal + self.pascalGroup.setEnabled(True) + self.foldPascalCommentCheckBox.setChecked( + Preferences.getEditor("PascalFoldComment")) + self.foldPascalPreprocessorCheckBox.setChecked( + Preferences.getEditor("PascalFoldPreprocessor")) + self.pascalSmartHighlightingCheckBox.setChecked( + Preferences.getEditor("PascalSmartHighlighting")) + + # Perl + self.foldPerlCommentCheckBox.setChecked( + Preferences.getEditor("PerlFoldComment")) + self.foldPerlPackagesCheckBox.setChecked( + Preferences.getEditor("PerlFoldPackages")) + self.foldPerlPODBlocksCheckBox.setChecked( + Preferences.getEditor("PerlFoldPODBlocks")) + self.foldPerlAtElseCheckBox.setChecked( + Preferences.getEditor("PerlFoldAtElse")) + + # PostScript + self.postscriptGroup.setEnabled(True) + self.psFoldAtElseCheckBox.setChecked( + Preferences.getEditor("PostScriptFoldAtElse")) + self.psMarkTokensCheckBox.setChecked( + Preferences.getEditor("PostScriptTokenize")) + self.psLevelSpinBox.setValue( + Preferences.getEditor("PostScriptLevel")) + + # Povray + self.foldPovrayCommentCheckBox.setChecked( + Preferences.getEditor("PovFoldComment")) + self.foldPovrayDirectivesCheckBox.setChecked( + Preferences.getEditor("PovFoldDirectives")) + + # Properties + self.propertiesInitialSpacesCheckBox.setChecked( + Preferences.getEditor("PropertiesInitialSpaces")) + + # Python + self.pythonBadIndentationComboBox.addItems([ + self.tr("No Warning"), + self.tr("Inconsistent"), + self.tr("Tabs after Spaces"), + self.tr("Spaces"), + self.tr("Tabs"), + ]) + self.pythonBadIndentationComboBox.setCurrentIndex( + Preferences.getEditor("PythonBadIndentation").value) + self.foldPythonCommentCheckBox.setChecked( + Preferences.getEditor("PythonFoldComment")) + self.foldPythonStringCheckBox.setChecked( + Preferences.getEditor("PythonFoldString")) + self.pythonAutoindentCheckBox.setChecked( + Preferences.getEditor("PythonAutoIndent")) + self.pythonV2UnicodeAllowedCheckBox.setChecked( + Preferences.getEditor("PythonAllowV2Unicode")) + self.pythonV3BinaryAllowedCheckBox.setChecked( + Preferences.getEditor("PythonAllowV3Binary")) + self.pythonV3BytesAllowedCheckBox.setChecked( + Preferences.getEditor("PythonAllowV3Bytes")) + self.foldPythonQuotesCheckBox.setChecked( + Preferences.getEditor("PythonFoldQuotes")) + self.pythonStringsOverNewlineCheckBox.setChecked( + Preferences.getEditor("PythonStringsOverNewLineAllowed")) + self.pythonHighlightSubidentifierCheckBox.setChecked( + Preferences.getEditor("PythonHighlightSubidentifier")) + + # Ruby + self.foldRubyCommentCheckBox.setChecked( + Preferences.getEditor("RubyFoldComment")) + + # SQL + self.foldSqlCommentCheckBox.setChecked( + Preferences.getEditor("SqlFoldComment")) + self.sqlBackslashEscapesCheckBox.setChecked( + Preferences.getEditor("SqlBackslashEscapes")) + self.sqlFoldAtElseCheckBox.setChecked( + Preferences.getEditor("SqlFoldAtElse")) + self.sqlFoldOnlyBeginCheckBox.setChecked( + Preferences.getEditor("SqlFoldOnlyBegin")) + self.sqlDottedWordsCheckBox.setChecked( + Preferences.getEditor("SqlDottedWords")) + self.sqlHashCommentsCheckBox.setChecked( + Preferences.getEditor("SqlHashComments")) + self.sqlQuotedIdentifiersCheckBox.setChecked( + Preferences.getEditor("SqlQuotedIdentifiers")) + + # TCL + self.foldTclCommentCheckBox.setChecked( + Preferences.getEditor("TclFoldComment")) + + # TeX + self.foldTexCommentCheckBox.setChecked( + Preferences.getEditor("TexFoldComment")) + self.texProcessCommentsCheckBox.setChecked( + Preferences.getEditor("TexProcessComments")) + self.texProcessIfCheckBox.setChecked( + Preferences.getEditor("TexProcessIf")) + + # VHDL + self.vhdlFoldCommentCheckBox.setChecked( + Preferences.getEditor("VHDLFoldComment")) + self.vhdlFoldAtElseCheckBox.setChecked( + Preferences.getEditor("VHDLFoldAtElse")) + self.vhdlFoldAtBeginCheckBox.setChecked( + Preferences.getEditor("VHDLFoldAtBegin")) + self.vhdlFoldAtParenthesisCheckBox.setChecked( + Preferences.getEditor("VHDLFoldAtParenthesis")) + + # XML + self.xmlSyleScriptsCheckBox.setChecked( + Preferences.getEditor("XMLStyleScripts")) + + # YAML + self.yamlGroup.setEnabled(True) + self.foldYamlCommentCheckBox.setChecked( + Preferences.getEditor("YAMLFoldComment")) + + def save(self): + """ + Public slot to save the Editor Properties (1) configuration. + """ + # All + Preferences.setEditor( + "AllFoldCompact", + self.allFoldCompactCheckBox.isChecked()) + + # Bash + Preferences.setEditor( + "BashFoldComment", + self.foldBashCommentCheckBox.isChecked()) + + # CMake + Preferences.setEditor( + "CMakeFoldAtElse", + self.cmakeFoldAtElseCheckBox.isChecked()) + + # C++ + Preferences.setEditor( + "CppFoldComment", + self.foldCppCommentCheckBox.isChecked()) + Preferences.setEditor( + "CppFoldPreprocessor", + self.foldCppPreprocessorCheckBox.isChecked()) + Preferences.setEditor( + "CppFoldAtElse", + self.foldCppAtElseCheckBox.isChecked()) + Preferences.setEditor( + "CppIndentOpeningBrace", + self.cppIndentOpeningBraceCheckBox.isChecked()) + Preferences.setEditor( + "CppIndentClosingBrace", + self.cppIndentClosingBraceCheckBox.isChecked()) + Preferences.setEditor( + "CppCaseInsensitiveKeywords", + self.cppCaseInsensitiveCheckBox.isChecked()) + Preferences.setEditor( + "CppDollarsAllowed", + self.cppDollarAllowedCheckBox.isChecked()) + Preferences.setEditor( + "CppStylePreprocessor", + self.cppStylePreprocessorCheckBox.isChecked()) + Preferences.setEditor( + "CppHighlightTripleQuotedStrings", + self.cppHighlightTripleQuotedCheckBox.isChecked()) + Preferences.setEditor( + "CppHighlightHashQuotedStrings", + self.cppHighlightHashQuotedCheckBox.isChecked()) + Preferences.setEditor( + "CppHighlightBackQuotedStrings", + self.cppHighlightBackQuotedCheckBox.isChecked()) + Preferences.setEditor( + "CppHighlightEscapeSequences", + self.cppHighlightEsacepSequencesCheckBox.isChecked()) + Preferences.setEditor( + "CppVerbatimStringEscapeSequencesAllowed", + self.cppVerbatimStringEscapeAllowedCheckBox.isChecked()) + + # CMake + Preferences.setEditor( + "CMakeFoldAtElse", + self.cmakeFoldAtElseCheckBox.isChecked()) + + # CoffeeScript + if "CoffeeScript" in self.languages: + Preferences.setEditor( + "CoffeScriptFoldComment", + self.foldCoffeeScriptCommentCheckBox.isChecked()) + Preferences.setEditor( + "CoffeeScriptDollarsAllowed", + self.coffeeScriptDollarAllowedCheckBox.isChecked()) + Preferences.setEditor( + "CoffeeScriptStylePreprocessor", + self.coffeeScriptStylePreprocessorCheckBox.isChecked()) + + # CSS + Preferences.setEditor( + "CssFoldComment", + self.foldCssCommentCheckBox.isChecked()) + Preferences.setEditor( + "CssHssSupport", + self.cssHssCheckBox.isChecked()) + Preferences.setEditor( + "CssLessSupport", + self.cssLessCheckBox.isChecked()) + Preferences.setEditor( + "CssSassySupport", + self.cssSassyCheckBox.isChecked()) + + # D + Preferences.setEditor( + "DFoldComment", + self.foldDCommentCheckBox.isChecked()) + Preferences.setEditor( + "DFoldAtElse", + self.foldDAtElseCheckBox.isChecked()) + Preferences.setEditor( + "DIndentOpeningBrace", + self.dIndentOpeningBraceCheckBox.isChecked()) + Preferences.setEditor( + "DIndentClosingBrace", + self.dIndentClosingBraceCheckBox.isChecked()) + + # Gettext + if "Gettext" in self.languages: + Preferences.setEditor( + "PoFoldComment", + self.foldPoCommentCheckBox.isChecked()) + + # HTML + Preferences.setEditor( + "HtmlFoldPreprocessor", + self.foldHtmlPreprocessorCheckBox.isChecked()) + Preferences.setEditor( + "HtmlCaseSensitiveTags", + self.htmlCaseSensitiveTagsCheckBox.isChecked()) + Preferences.setEditor( + "HtmlFoldScriptComments", + self.foldHtmlScriptCommentsCheckBox.isChecked()) + Preferences.setEditor( + "HtmlFoldScriptHeredocs", + self.foldHtmlScriptHereDocsCheckBox.isChecked()) + Preferences.setEditor( + "HtmlDjangoTemplates", + self.htmlDjangoCheckBox.isChecked()) + Preferences.setEditor( + "HtmlMakoTemplates", + self.htmlMakoCheckBox.isChecked()) + + # JSON + if "JSON" in self.languages: + Preferences.setEditor( + "JSONHightlightComments", + self.jsonHighlightCommentsCheckBox.isChecked()) + Preferences.setEditor( + "JSONHighlightEscapeSequences", + self.jsonHighlightEscapeCheckBox.isChecked()) + + # Pascal + Preferences.setEditor( + "PascalFoldComment", + self.foldPascalCommentCheckBox.isChecked()) + Preferences.setEditor( + "PascalFoldPreprocessor", + self.foldPascalPreprocessorCheckBox.isChecked()) + Preferences.setEditor( + "PascalSmartHighlighting", + self.pascalSmartHighlightingCheckBox.isChecked()) + + # Perl + Preferences.setEditor( + "PerlFoldComment", + self.foldPerlCommentCheckBox.isChecked()) + Preferences.setEditor( + "PerlFoldPackages", + self.foldPerlPackagesCheckBox.isChecked()) + Preferences.setEditor( + "PerlFoldPODBlocks", + self.foldPerlPODBlocksCheckBox.isChecked()) + Preferences.setEditor( + "PerlFoldAtElse", + self.foldPerlAtElseCheckBox.isChecked()) + + # PostScript + Preferences.setEditor( + "PostScriptFoldAtElse", + self.psFoldAtElseCheckBox.isChecked()) + Preferences.setEditor( + "PostScriptTokenize", + self.psMarkTokensCheckBox.isChecked()) + Preferences.setEditor( + "PostScriptLevel", + self.psLevelSpinBox.value()) + + # Povray + Preferences.setEditor( + "PovFoldComment", + self.foldPovrayCommentCheckBox.isChecked()) + Preferences.setEditor( + "PovFoldDirectives", + self.foldPovrayDirectivesCheckBox.isChecked()) + + # Properties + Preferences.setEditor( + "PropertiesInitialSpaces", + self.propertiesInitialSpacesCheckBox.isChecked()) + + # Python + Preferences.setEditor( + "PythonFoldComment", + self.foldPythonCommentCheckBox.isChecked()) + Preferences.setEditor( + "PythonFoldString", + self.foldPythonStringCheckBox.isChecked()) + Preferences.setEditor( + "PythonBadIndentation", + QsciLexerPython.IndentationWarning( + self.pythonBadIndentationComboBox.currentIndex())) + Preferences.setEditor( + "PythonAutoIndent", + self.pythonAutoindentCheckBox.isChecked()) + Preferences.setEditor( + "PythonAllowV2Unicode", + self.pythonV2UnicodeAllowedCheckBox.isChecked()) + Preferences.setEditor( + "PythonAllowV3Binary", + self.pythonV3BinaryAllowedCheckBox.isChecked()) + Preferences.setEditor( + "PythonAllowV3Bytes", + self.pythonV3BytesAllowedCheckBox.isChecked()) + Preferences.setEditor( + "PythonFoldQuotes", + self.foldPythonQuotesCheckBox.isChecked()) + Preferences.setEditor( + "PythonStringsOverNewLineAllowed", + self.pythonStringsOverNewlineCheckBox.isChecked()) + Preferences.setEditor( + "PythonHighlightSubidentifier", + self.pythonHighlightSubidentifierCheckBox.isChecked()) + + # Ruby + Preferences.setEditor( + "RubyFoldComment", + self.foldRubyCommentCheckBox.isChecked()) + + # SQL + Preferences.setEditor( + "SqlFoldComment", + self.foldSqlCommentCheckBox.isChecked()) + Preferences.setEditor( + "SqlBackslashEscapes", + self.sqlBackslashEscapesCheckBox.isChecked()) + Preferences.setEditor( + "SqlFoldAtElse", + self.sqlFoldAtElseCheckBox.isChecked()) + Preferences.setEditor( + "SqlFoldOnlyBegin", + self.sqlFoldOnlyBeginCheckBox.isChecked()) + Preferences.setEditor( + "SqlDottedWords", + self.sqlDottedWordsCheckBox.isChecked()) + Preferences.setEditor( + "SqlHashComments", + self.sqlHashCommentsCheckBox.isChecked()) + Preferences.setEditor( + "SqlQuotedIdentifiers", + self.sqlQuotedIdentifiersCheckBox.isChecked()) + + # TCL + Preferences.setEditor( + "TclFoldComment", + self.foldTclCommentCheckBox.isChecked()) + + # TeX + Preferences.setEditor( + "TexFoldComment", + self.foldTexCommentCheckBox.isChecked()) + Preferences.setEditor( + "TexProcessComments", + self.texProcessCommentsCheckBox.isChecked()) + Preferences.setEditor( + "TexProcessIf", + self.texProcessIfCheckBox.isChecked()) + + # VHDL + Preferences.setEditor( + "VHDLFoldComment", + self.vhdlFoldCommentCheckBox.isChecked()) + Preferences.setEditor( + "VHDLFoldAtElse", + self.vhdlFoldAtElseCheckBox.isChecked()) + Preferences.setEditor( + "VHDLFoldAtBegin", + self.vhdlFoldAtBeginCheckBox.isChecked()) + Preferences.setEditor( + "VHDLFoldAtParenthesis", + self.vhdlFoldAtParenthesisCheckBox.isChecked()) + + # XML + Preferences.setEditor( + "XMLStyleScripts", + self.xmlSyleScriptsCheckBox.isChecked()) + + # YAML + Preferences.setEditor( + "YAMLFoldComment", + self.foldYamlCommentCheckBox.isChecked()) + + +def create(dlg): + """ + Module function to create the configuration page. + + @param dlg reference to the configuration dialog + @return reference to the instantiated page (ConfigurationPageBase) + """ + page = EditorPropertiesPage(dlg.getLexers()) + return page