--- a/src/eric7/Preferences/ConfigurationDialog.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/Preferences/ConfigurationDialog.py Wed Jul 13 14:55:47 2022 +0200 @@ -16,9 +16,22 @@ from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QMetaObject, QRect from PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import ( - QSizePolicy, QSpacerItem, QWidget, QTreeWidget, QStackedWidget, QDialog, - QSplitter, QScrollArea, QApplication, QDialogButtonBox, QFrame, - QVBoxLayout, QTreeWidgetItem, QLabel, QAbstractScrollArea, QLineEdit + QSizePolicy, + QSpacerItem, + QWidget, + QTreeWidget, + QStackedWidget, + QDialog, + QSplitter, + QScrollArea, + QApplication, + QDialogButtonBox, + QFrame, + QVBoxLayout, + QTreeWidgetItem, + QLabel, + QAbstractScrollArea, + QLineEdit, ) from EricWidgets.EricApplication import ericApp @@ -38,10 +51,11 @@ """ Class implementing a QTreeWidgetItem holding the configuration page data. """ + def __init__(self, parent, text, pageName, iconFile): """ Constructor - + @param parent parent widget of the item (QTreeWidget or QTreeWidgetItem) @param text text to be displayed (string) @@ -50,13 +64,13 @@ """ super().__init__(parent, [text]) self.setIcon(0, UI.PixmapCache.getIcon(iconFile)) - + self.__pageName = pageName - + def getPageName(self): """ Public method to get the name of the associated configuration page. - + @return name of the configuration page (string) """ return self.__pageName @@ -66,6 +80,7 @@ """ Class defining the various modes of the configuration widget. """ + DEFAULTMODE = 0 TRAYSTARTERMODE = 1 HEXEDITORMODE = 2 @@ -76,24 +91,29 @@ class ConfigurationWidget(QWidget): """ Class implementing a dialog for the configuration of eric. - + @signal preferencesChanged() emitted after settings have been changed @signal masterPasswordChanged(str, str) emitted after the master password has been changed with the old and the new password @signal accepted() emitted to indicate acceptance of the changes @signal rejected() emitted to indicate rejection of the changes """ + preferencesChanged = pyqtSignal() masterPasswordChanged = pyqtSignal(str, str) accepted = pyqtSignal() rejected = pyqtSignal() - - def __init__(self, parent=None, fromEric=True, - displayMode=ConfigurationMode.DEFAULTMODE, - expandedEntries=None): + + def __init__( + self, + parent=None, + fromEric=True, + displayMode=ConfigurationMode.DEFAULTMODE, + expandedEntries=None, + ): """ Constructor - + @param parent reference to the parent widget @type QWidget @param fromEric flag indicating a dialog generation from within the @@ -105,33 +125,33 @@ @type list of str """ super().__init__(parent) - + self.fromEric = fromEric self.displayMode = displayMode self.__webEngine = getWebBrowserSupport() == "QtWebEngine" expandedEntries = [] if expandedEntries is None else expandedEntries[:] - + self.__setupUi() - + self.itmDict = {} - + if not fromEric: from PluginManager.PluginManager import PluginManager + try: self.pluginManager = ericApp().getObject("PluginManager") except KeyError: self.pluginManager = PluginManager(self) ericApp().registerObject("PluginManager", self.pluginManager) - + from VirtualEnv.VirtualenvManager import VirtualenvManager + try: - self.virtualenvManager = ericApp().getObject( - "VirtualEnvManager") + self.virtualenvManager = ericApp().getObject("VirtualEnvManager") except KeyError: self.virtualenvManager = VirtualenvManager(self) - ericApp().registerObject("VirtualEnvManager", - self.virtualenvManager) - + ericApp().registerObject("VirtualEnvManager", self.virtualenvManager) + if displayMode == ConfigurationMode.DEFAULTMODE: self.configItems = { # key : [display string, pixmap name, dialog module name or @@ -140,248 +160,470 @@ # The dialog module must have the module function 'create' to # create the configuration page. This must have the method # 'save' to save the settings. - "applicationPage": - [self.tr("Application"), "preferences-application", - "ApplicationPage", None, None], - "condaPage": - [self.tr("Conda"), "miniconda", - "CondaPage", None, None], - "cooperationPage": - [self.tr("Cooperation"), "preferences-cooperation", - "CooperationPage", None, None], - "corbaPage": - [self.tr("CORBA"), "preferences-orbit", - "CorbaPage", None, None], - "diffPage": - [self.tr("Diff"), "diffFiles", - "DiffColoursPage", None, None], - "emailPage": - [self.tr("Email"), "preferences-mail_generic", - "EmailPage", None, None], - "graphicsPage": - [self.tr("Graphics"), "preferences-graphics", - "GraphicsPage", None, None], - "hexEditorPage": - [self.tr("Hex Editor"), "hexEditor", - "HexEditorPage", None, None], - "iconsPage": - [self.tr("Icons"), "preferences-icons", - "IconsPage", None, None], - "ircPage": - [self.tr("IRC"), "irc", - "IrcPage", None, None], - "logViewerPage": - [self.tr("Log-Viewer"), "preferences-logviewer", - "LogViewerPage", None, None], - "microPythonPage": - [self.tr("MicroPython"), "micropython", - "MicroPythonPage", None, None], - "mimeTypesPage": - [self.tr("Mimetypes"), "preferences-mimetypes", - "MimeTypesPage", None, None], - "networkPage": - [self.tr("Network"), "preferences-network", - "NetworkPage", None, None], - "notificationsPage": - [self.tr("Notifications"), - "preferences-notifications", - "NotificationsPage", None, None], - "pipPage": - [self.tr("Python Package Management"), "pypi", - "PipPage", None, None], - "pluginManagerPage": - [self.tr("Plugin Manager"), - "preferences-pluginmanager", - "PluginManagerPage", None, None], - "printerPage": - [self.tr("Printer"), "preferences-printer", - "PrinterPage", None, None], - "protobufPage": - [self.tr("Protobuf"), "protobuf", - "ProtobufPage", None, None], - "pythonPage": - [self.tr("Python"), "preferences-python", - "PythonPage", None, None], - "qtPage": - [self.tr("Qt"), "preferences-qtlogo", - "QtPage", None, None], - "securityPage": - [self.tr("Security"), "preferences-security", - "SecurityPage", None, None], - "shellPage": - [self.tr("Shell"), "preferences-shell", - "ShellPage", None, None], - "tasksPage": - [self.tr("Tasks"), "task", - "TasksPage", None, None], - "templatesPage": - [self.tr("Templates"), "preferences-template", - "TemplatesPage", None, None], - "trayStarterPage": - [self.tr("Tray Starter"), "erict", - "TrayStarterPage", None, None], - "vcsPage": - [self.tr("Version Control Systems"), - "preferences-vcs", - "VcsPage", None, None], - - "0debuggerPage": - [self.tr("Debugger"), "preferences-debugger", - None, None, None], - "debuggerGeneralPage": - [self.tr("General"), "preferences-debugger", - "DebuggerGeneralPage", "0debuggerPage", None], - "debuggerPython3Page": - [self.tr("Python3"), "preferences-pyDebugger", - "DebuggerPython3Page", "0debuggerPage", None], - - "0editorPage": - [self.tr("Editor"), "preferences-editor", - None, None, None], - "editorAPIsPage": - [self.tr("APIs"), "preferences-api", - "EditorAPIsPage", "0editorPage", None], - "editorDocViewerPage": - [self.tr("Documentation Viewer"), "codeDocuViewer", - "EditorDocViewerPage", "0editorPage", None], - "editorGeneralPage": - [self.tr("General"), "preferences-general", - "EditorGeneralPage", "0editorPage", None], - "editorFilePage": - [self.tr("Filehandling"), - "preferences-filehandling", - "EditorFilePage", "0editorPage", None], - "editorSearchPage": - [self.tr("Searching"), "preferences-search", - "EditorSearchPage", "0editorPage", None], - "editorSpellCheckingPage": - [self.tr("Spell checking"), - "preferences-spellchecking", - "EditorSpellCheckingPage", "0editorPage", None], - "editorStylesPage": - [self.tr("Style"), "preferences-styles", - "EditorStylesPage", "0editorPage", None], - "editorSyntaxPage": - [self.tr("Code Checkers"), "preferences-debugger", - "EditorSyntaxPage", "0editorPage", None], - "editorTypingPage": - [self.tr("Typing"), "preferences-typing", - "EditorTypingPage", "0editorPage", None], - "editorExportersPage": - [self.tr("Exporters"), "preferences-exporters", - "EditorExportersPage", "0editorPage", None], - - "1editorAutocompletionPage": - [self.tr("Autocompletion"), - "preferences-autocompletion", - "EditorAutocompletionPage", "0editorPage", None], - "editorAutocompletionQScintillaPage": - [self.tr("QScintilla"), "qscintilla", - "EditorAutocompletionQScintillaPage", - "1editorAutocompletionPage", None], - "editorAutocompletionJediPage": - [self.tr("Jedi"), "jedi", - "EditorAutoCompletionJediPage", - "1editorAutocompletionPage", None], - - "1editorCalltipsPage": - [self.tr("Calltips"), "preferences-calltips", - "EditorCalltipsPage", "0editorPage", None], - "editorCalltipsQScintillaPage": - [self.tr("QScintilla"), "qscintilla", - "EditorCalltipsQScintillaPage", "1editorCalltipsPage", None], - "editorCalltipsJediPage": - [self.tr("Jedi"), "jedi", - "EditorCallTipsJediPage", "1editorCalltipsPage", None], - - "1editorLexerPage": - [self.tr("Highlighters"), - "preferences-highlighting-styles", - None, "0editorPage", None], - "editorHighlightersPage": - [self.tr("Filetype Associations"), - "preferences-highlighter-association", - "EditorHighlightersPage", "1editorLexerPage", None], - "editorHighlightingStylesPage": - [self.tr("Styles"), - "preferences-highlighting-styles", - "EditorHighlightingStylesPage", "1editorLexerPage", None], - "editorKeywordsPage": - [self.tr("Keywords"), "preferences-keywords", - "EditorKeywordsPage", "1editorLexerPage", None], - "editorPropertiesPage": - [self.tr("Properties"), "preferences-properties", - "EditorPropertiesPage", "1editorLexerPage", None], - - "1editorMouseClickHandlers": - [self.tr("Mouse Click Handlers"), - "preferences-mouse-click-handler", - "EditorMouseClickHandlerPage", "0editorPage", None], - "editorMouseClickHandlerJediPage": - [self.tr("Jedi"), "jedi", - "EditorMouseClickHandlerJediPage", - "1editorMouseClickHandlers", None], - - "0helpPage": - [self.tr("Help"), "preferences-help", - None, None, None], - "helpDocumentationPage": - [self.tr("Help Documentation"), - "preferences-helpdocumentation", - "HelpDocumentationPage", "0helpPage", None], - "helpViewersPage": - [self.tr("Help Viewers"), - "preferences-helpviewers", - "HelpViewersPage", "0helpPage", None], - - "0projectPage": - [self.tr("Project"), "preferences-project", - None, None, None], - "projectBrowserPage": - [self.tr("Project Viewer"), "preferences-project", - "ProjectBrowserPage", "0projectPage", None], - "projectPage": - [self.tr("Project"), "preferences-project", - "ProjectPage", "0projectPage", None], - "multiProjectPage": - [self.tr("Multiproject"), - "preferences-multiproject", - "MultiProjectPage", "0projectPage", None], - - "0interfacePage": - [self.tr("Interface"), "preferences-interface", - None, None, None], - "interfacePage": - [self.tr("Interface"), "preferences-interface", - "InterfacePage", "0interfacePage", None], - "viewmanagerPage": - [self.tr("Viewmanager"), "preferences-viewmanager", - "ViewmanagerPage", "0interfacePage", None], + "applicationPage": [ + self.tr("Application"), + "preferences-application", + "ApplicationPage", + None, + None, + ], + "condaPage": [self.tr("Conda"), "miniconda", "CondaPage", None, None], + "cooperationPage": [ + self.tr("Cooperation"), + "preferences-cooperation", + "CooperationPage", + None, + None, + ], + "corbaPage": [ + self.tr("CORBA"), + "preferences-orbit", + "CorbaPage", + None, + None, + ], + "diffPage": [ + self.tr("Diff"), + "diffFiles", + "DiffColoursPage", + None, + None, + ], + "emailPage": [ + self.tr("Email"), + "preferences-mail_generic", + "EmailPage", + None, + None, + ], + "graphicsPage": [ + self.tr("Graphics"), + "preferences-graphics", + "GraphicsPage", + None, + None, + ], + "hexEditorPage": [ + self.tr("Hex Editor"), + "hexEditor", + "HexEditorPage", + None, + None, + ], + "iconsPage": [ + self.tr("Icons"), + "preferences-icons", + "IconsPage", + None, + None, + ], + "ircPage": [self.tr("IRC"), "irc", "IrcPage", None, None], + "logViewerPage": [ + self.tr("Log-Viewer"), + "preferences-logviewer", + "LogViewerPage", + None, + None, + ], + "microPythonPage": [ + self.tr("MicroPython"), + "micropython", + "MicroPythonPage", + None, + None, + ], + "mimeTypesPage": [ + self.tr("Mimetypes"), + "preferences-mimetypes", + "MimeTypesPage", + None, + None, + ], + "networkPage": [ + self.tr("Network"), + "preferences-network", + "NetworkPage", + None, + None, + ], + "notificationsPage": [ + self.tr("Notifications"), + "preferences-notifications", + "NotificationsPage", + None, + None, + ], + "pipPage": [ + self.tr("Python Package Management"), + "pypi", + "PipPage", + None, + None, + ], + "pluginManagerPage": [ + self.tr("Plugin Manager"), + "preferences-pluginmanager", + "PluginManagerPage", + None, + None, + ], + "printerPage": [ + self.tr("Printer"), + "preferences-printer", + "PrinterPage", + None, + None, + ], + "protobufPage": [ + self.tr("Protobuf"), + "protobuf", + "ProtobufPage", + None, + None, + ], + "pythonPage": [ + self.tr("Python"), + "preferences-python", + "PythonPage", + None, + None, + ], + "qtPage": [self.tr("Qt"), "preferences-qtlogo", "QtPage", None, None], + "securityPage": [ + self.tr("Security"), + "preferences-security", + "SecurityPage", + None, + None, + ], + "shellPage": [ + self.tr("Shell"), + "preferences-shell", + "ShellPage", + None, + None, + ], + "tasksPage": [self.tr("Tasks"), "task", "TasksPage", None, None], + "templatesPage": [ + self.tr("Templates"), + "preferences-template", + "TemplatesPage", + None, + None, + ], + "trayStarterPage": [ + self.tr("Tray Starter"), + "erict", + "TrayStarterPage", + None, + None, + ], + "vcsPage": [ + self.tr("Version Control Systems"), + "preferences-vcs", + "VcsPage", + None, + None, + ], + "0debuggerPage": [ + self.tr("Debugger"), + "preferences-debugger", + None, + None, + None, + ], + "debuggerGeneralPage": [ + self.tr("General"), + "preferences-debugger", + "DebuggerGeneralPage", + "0debuggerPage", + None, + ], + "debuggerPython3Page": [ + self.tr("Python3"), + "preferences-pyDebugger", + "DebuggerPython3Page", + "0debuggerPage", + None, + ], + "0editorPage": [ + self.tr("Editor"), + "preferences-editor", + None, + None, + None, + ], + "editorAPIsPage": [ + self.tr("APIs"), + "preferences-api", + "EditorAPIsPage", + "0editorPage", + None, + ], + "editorDocViewerPage": [ + self.tr("Documentation Viewer"), + "codeDocuViewer", + "EditorDocViewerPage", + "0editorPage", + None, + ], + "editorGeneralPage": [ + self.tr("General"), + "preferences-general", + "EditorGeneralPage", + "0editorPage", + None, + ], + "editorFilePage": [ + self.tr("Filehandling"), + "preferences-filehandling", + "EditorFilePage", + "0editorPage", + None, + ], + "editorSearchPage": [ + self.tr("Searching"), + "preferences-search", + "EditorSearchPage", + "0editorPage", + None, + ], + "editorSpellCheckingPage": [ + self.tr("Spell checking"), + "preferences-spellchecking", + "EditorSpellCheckingPage", + "0editorPage", + None, + ], + "editorStylesPage": [ + self.tr("Style"), + "preferences-styles", + "EditorStylesPage", + "0editorPage", + None, + ], + "editorSyntaxPage": [ + self.tr("Code Checkers"), + "preferences-debugger", + "EditorSyntaxPage", + "0editorPage", + None, + ], + "editorTypingPage": [ + self.tr("Typing"), + "preferences-typing", + "EditorTypingPage", + "0editorPage", + None, + ], + "editorExportersPage": [ + self.tr("Exporters"), + "preferences-exporters", + "EditorExportersPage", + "0editorPage", + None, + ], + "1editorAutocompletionPage": [ + self.tr("Autocompletion"), + "preferences-autocompletion", + "EditorAutocompletionPage", + "0editorPage", + None, + ], + "editorAutocompletionQScintillaPage": [ + self.tr("QScintilla"), + "qscintilla", + "EditorAutocompletionQScintillaPage", + "1editorAutocompletionPage", + None, + ], + "editorAutocompletionJediPage": [ + self.tr("Jedi"), + "jedi", + "EditorAutoCompletionJediPage", + "1editorAutocompletionPage", + None, + ], + "1editorCalltipsPage": [ + self.tr("Calltips"), + "preferences-calltips", + "EditorCalltipsPage", + "0editorPage", + None, + ], + "editorCalltipsQScintillaPage": [ + self.tr("QScintilla"), + "qscintilla", + "EditorCalltipsQScintillaPage", + "1editorCalltipsPage", + None, + ], + "editorCalltipsJediPage": [ + self.tr("Jedi"), + "jedi", + "EditorCallTipsJediPage", + "1editorCalltipsPage", + None, + ], + "1editorLexerPage": [ + self.tr("Highlighters"), + "preferences-highlighting-styles", + None, + "0editorPage", + None, + ], + "editorHighlightersPage": [ + self.tr("Filetype Associations"), + "preferences-highlighter-association", + "EditorHighlightersPage", + "1editorLexerPage", + None, + ], + "editorHighlightingStylesPage": [ + self.tr("Styles"), + "preferences-highlighting-styles", + "EditorHighlightingStylesPage", + "1editorLexerPage", + None, + ], + "editorKeywordsPage": [ + self.tr("Keywords"), + "preferences-keywords", + "EditorKeywordsPage", + "1editorLexerPage", + None, + ], + "editorPropertiesPage": [ + self.tr("Properties"), + "preferences-properties", + "EditorPropertiesPage", + "1editorLexerPage", + None, + ], + "1editorMouseClickHandlers": [ + self.tr("Mouse Click Handlers"), + "preferences-mouse-click-handler", + "EditorMouseClickHandlerPage", + "0editorPage", + None, + ], + "editorMouseClickHandlerJediPage": [ + self.tr("Jedi"), + "jedi", + "EditorMouseClickHandlerJediPage", + "1editorMouseClickHandlers", + None, + ], + "0helpPage": [self.tr("Help"), "preferences-help", None, None, None], + "helpDocumentationPage": [ + self.tr("Help Documentation"), + "preferences-helpdocumentation", + "HelpDocumentationPage", + "0helpPage", + None, + ], + "helpViewersPage": [ + self.tr("Help Viewers"), + "preferences-helpviewers", + "HelpViewersPage", + "0helpPage", + None, + ], + "0projectPage": [ + self.tr("Project"), + "preferences-project", + None, + None, + None, + ], + "projectBrowserPage": [ + self.tr("Project Viewer"), + "preferences-project", + "ProjectBrowserPage", + "0projectPage", + None, + ], + "projectPage": [ + self.tr("Project"), + "preferences-project", + "ProjectPage", + "0projectPage", + None, + ], + "multiProjectPage": [ + self.tr("Multiproject"), + "preferences-multiproject", + "MultiProjectPage", + "0projectPage", + None, + ], + "0interfacePage": [ + self.tr("Interface"), + "preferences-interface", + None, + None, + None, + ], + "interfacePage": [ + self.tr("Interface"), + "preferences-interface", + "InterfacePage", + "0interfacePage", + None, + ], + "viewmanagerPage": [ + self.tr("Viewmanager"), + "preferences-viewmanager", + "ViewmanagerPage", + "0interfacePage", + None, + ], } if self.__webEngine: - self.configItems.update({ - "0webBrowserPage": - [self.tr("Web Browser"), "ericWeb", - None, None, None], - "webBrowserAppearancePage": - [self.tr("Appearance"), "preferences-styles", - "WebBrowserAppearancePage", "0webBrowserPage", None], - "webBrowserPage": - [self.tr("eric Web Browser"), "ericWeb", - "WebBrowserPage", "0webBrowserPage", None], - "webBrowserVirusTotalPage": - [self.tr("VirusTotal Interface"), "virustotal", - "WebBrowserVirusTotalPage", "0webBrowserPage", None], - "webBrowserSpellCheckingPage": - [self.tr("Spell checking"), - "preferences-spellchecking", - "WebBrowserSpellCheckingPage", "0webBrowserPage", - None], - }) - + self.configItems.update( + { + "0webBrowserPage": [ + self.tr("Web Browser"), + "ericWeb", + None, + None, + None, + ], + "webBrowserAppearancePage": [ + self.tr("Appearance"), + "preferences-styles", + "WebBrowserAppearancePage", + "0webBrowserPage", + None, + ], + "webBrowserPage": [ + self.tr("eric Web Browser"), + "ericWeb", + "WebBrowserPage", + "0webBrowserPage", + None, + ], + "webBrowserVirusTotalPage": [ + self.tr("VirusTotal Interface"), + "virustotal", + "WebBrowserVirusTotalPage", + "0webBrowserPage", + None, + ], + "webBrowserSpellCheckingPage": [ + self.tr("Spell checking"), + "preferences-spellchecking", + "WebBrowserSpellCheckingPage", + "0webBrowserPage", + None, + ], + } + ) + self.configItems.update( - ericApp().getObject("PluginManager").getPluginConfigData()) - + ericApp().getObject("PluginManager").getPluginConfigData() + ) + elif displayMode == ConfigurationMode.EDITORMODE: self.configItems = { # key : [display string, pixmap name, dialog module name or @@ -390,60 +632,113 @@ # The dialog module must have the module function 'create' to # create the configuration page. This must have the method # 'save' to save the settings. - "iconsPage": - [self.tr("Icons"), "preferences-icons", - "IconsPage", None, None], - "interfacePage": - [self.tr("Interface"), "preferences-interface", - "InterfaceLightPage", None, None], - "printerPage": - [self.tr("Printer"), "preferences-printer", - "PrinterPage", None, None], - - "0editorPage": - [self.tr("Editor"), "preferences-editor", - None, None, None], - "editorGeneralPage": - [self.tr("General"), "preferences-general", - "EditorGeneralPage", "0editorPage", None], - "editorFilePage": - [self.tr("Filehandling"), - "preferences-filehandling", - "EditorFilePage", "0editorPage", None], - "editorSearchPage": - [self.tr("Searching"), "preferences-search", - "EditorSearchPage", "0editorPage", None], - "editorSpellCheckingPage": - [self.tr("Spell checking"), - "preferences-spellchecking", - "EditorSpellCheckingPage", "0editorPage", None], - "editorStylesPage": - [self.tr("Style"), "preferences-styles", - "EditorStylesPage", "0editorPage", None], - "editorTypingPage": - [self.tr("Typing"), "preferences-typing", - "EditorTypingPage", "0editorPage", None], - - "1editorLexerPage": - [self.tr("Highlighters"), - "preferences-highlighting-styles", - None, "0editorPage", None], - "editorHighlightersPage": - [self.tr("Filetype Associations"), - "preferences-highlighter-association", - "EditorHighlightersPage", "1editorLexerPage", None], - "editorHighlightingStylesPage": - [self.tr("Styles"), - "preferences-highlighting-styles", - "EditorHighlightingStylesPage", "1editorLexerPage", None], - "editorKeywordsPage": - [self.tr("Keywords"), "preferences-keywords", - "EditorKeywordsPage", "1editorLexerPage", None], - "editorPropertiesPage": - [self.tr("Properties"), "preferences-properties", - "EditorPropertiesPage", "1editorLexerPage", None], + "iconsPage": [ + self.tr("Icons"), + "preferences-icons", + "IconsPage", + None, + None, + ], + "interfacePage": [ + self.tr("Interface"), + "preferences-interface", + "InterfaceLightPage", + None, + None, + ], + "printerPage": [ + self.tr("Printer"), + "preferences-printer", + "PrinterPage", + None, + None, + ], + "0editorPage": [ + self.tr("Editor"), + "preferences-editor", + None, + None, + None, + ], + "editorGeneralPage": [ + self.tr("General"), + "preferences-general", + "EditorGeneralPage", + "0editorPage", + None, + ], + "editorFilePage": [ + self.tr("Filehandling"), + "preferences-filehandling", + "EditorFilePage", + "0editorPage", + None, + ], + "editorSearchPage": [ + self.tr("Searching"), + "preferences-search", + "EditorSearchPage", + "0editorPage", + None, + ], + "editorSpellCheckingPage": [ + self.tr("Spell checking"), + "preferences-spellchecking", + "EditorSpellCheckingPage", + "0editorPage", + None, + ], + "editorStylesPage": [ + self.tr("Style"), + "preferences-styles", + "EditorStylesPage", + "0editorPage", + None, + ], + "editorTypingPage": [ + self.tr("Typing"), + "preferences-typing", + "EditorTypingPage", + "0editorPage", + None, + ], + "1editorLexerPage": [ + self.tr("Highlighters"), + "preferences-highlighting-styles", + None, + "0editorPage", + None, + ], + "editorHighlightersPage": [ + self.tr("Filetype Associations"), + "preferences-highlighter-association", + "EditorHighlightersPage", + "1editorLexerPage", + None, + ], + "editorHighlightingStylesPage": [ + self.tr("Styles"), + "preferences-highlighting-styles", + "EditorHighlightingStylesPage", + "1editorLexerPage", + None, + ], + "editorKeywordsPage": [ + self.tr("Keywords"), + "preferences-keywords", + "EditorKeywordsPage", + "1editorLexerPage", + None, + ], + "editorPropertiesPage": [ + self.tr("Properties"), + "preferences-properties", + "EditorPropertiesPage", + "1editorLexerPage", + None, + ], } - + elif displayMode == ConfigurationMode.WEBBROWSERMODE: self.configItems = { # key : [display string, pixmap name, dialog module name or @@ -452,44 +747,78 @@ # The dialog module must have the module function 'create' to # create the configuration page. This must have the method # 'save' to save the settings. - "iconsPage": - [self.tr("Icons"), "preferences-icons", - "IconsPage", None, None], - "interfacePage": - [self.tr("Interface"), "preferences-interface", - "InterfaceLightPage", None, None], - "networkPage": - [self.tr("Network"), "preferences-network", - "NetworkPage", None, None], - "printerPage": - [self.tr("Printer"), "preferences-printer", - "PrinterPage", None, None], - "securityPage": - [self.tr("Security"), "preferences-security", - "SecurityPage", None, None], - - "helpDocumentationPage": - [self.tr("Help Documentation"), - "preferences-helpdocumentation", - "HelpDocumentationPage", None, None], - - "webBrowserAppearancePage": - [self.tr("Appearance"), "preferences-styles", - "WebBrowserAppearancePage", None, None], - "webBrowserPage": - [self.tr("eric Web Browser"), "ericWeb", - "WebBrowserPage", None, None], - - "webBrowserVirusTotalPage": - [self.tr("VirusTotal Interface"), "virustotal", - "WebBrowserVirusTotalPage", None, None], - - "webBrowserSpellCheckingPage": - [self.tr("Spell checking"), - "preferences-spellchecking", - "WebBrowserSpellCheckingPage", None, None], + "iconsPage": [ + self.tr("Icons"), + "preferences-icons", + "IconsPage", + None, + None, + ], + "interfacePage": [ + self.tr("Interface"), + "preferences-interface", + "InterfaceLightPage", + None, + None, + ], + "networkPage": [ + self.tr("Network"), + "preferences-network", + "NetworkPage", + None, + None, + ], + "printerPage": [ + self.tr("Printer"), + "preferences-printer", + "PrinterPage", + None, + None, + ], + "securityPage": [ + self.tr("Security"), + "preferences-security", + "SecurityPage", + None, + None, + ], + "helpDocumentationPage": [ + self.tr("Help Documentation"), + "preferences-helpdocumentation", + "HelpDocumentationPage", + None, + None, + ], + "webBrowserAppearancePage": [ + self.tr("Appearance"), + "preferences-styles", + "WebBrowserAppearancePage", + None, + None, + ], + "webBrowserPage": [ + self.tr("eric Web Browser"), + "ericWeb", + "WebBrowserPage", + None, + None, + ], + "webBrowserVirusTotalPage": [ + self.tr("VirusTotal Interface"), + "virustotal", + "WebBrowserVirusTotalPage", + None, + None, + ], + "webBrowserSpellCheckingPage": [ + self.tr("Spell checking"), + "preferences-spellchecking", + "WebBrowserSpellCheckingPage", + None, + None, + ], } - + elif displayMode == ConfigurationMode.TRAYSTARTERMODE: self.configItems = { # key : [display string, pixmap name, dialog module name or @@ -498,11 +827,15 @@ # The dialog module must have the module function 'create' to # create the configuration page. This must have the method # 'save' to save the settings. - "trayStarterPage": - [self.tr("Tray Starter"), "erict", - "TrayStarterPage", None, None], + "trayStarterPage": [ + self.tr("Tray Starter"), + "erict", + "TrayStarterPage", + None, + None, + ], } - + elif displayMode == ConfigurationMode.HEXEDITORMODE: self.configItems = { # key : [display string, pixmap name, dialog module name or @@ -511,17 +844,29 @@ # The dialog module must have the module function 'create' to # create the configuration page. This must have the method # 'save' to save the settings. - "iconsPage": - [self.tr("Icons"), "preferences-icons", - "IconsPage", None, None], - "interfacePage": - [self.tr("Interface"), "preferences-interface", - "InterfaceLightPage", None, None], - "hexEditorPage": - [self.tr("Hex Editor"), "hexEditor", - "HexEditorPage", None, None], + "iconsPage": [ + self.tr("Icons"), + "preferences-icons", + "IconsPage", + None, + None, + ], + "interfacePage": [ + self.tr("Interface"), + "preferences-interface", + "InterfaceLightPage", + None, + None, + ], + "hexEditorPage": [ + self.tr("Hex Editor"), + "hexEditor", + "HexEditorPage", + None, + None, + ], } - + else: # display mode for generic use self.configItems = { @@ -531,14 +876,22 @@ # The dialog module must have the module function 'create' to # create the configuration page. This must have the method # 'save' to save the settings. - "iconsPage": - [self.tr("Icons"), "preferences-icons", - "IconsPage", None, None], - "interfacePage": - [self.tr("Interface"), "preferences-interface", - "InterfaceLightPage", None, None], + "iconsPage": [ + self.tr("Icons"), + "preferences-icons", + "IconsPage", + None, + None, + ], + "interfacePage": [ + self.tr("Interface"), + "preferences-interface", + "InterfaceLightPage", + None, + None, + ], } - + # generate the list entries self.__expandedEntries = [] for key in sorted(self.configItems.keys()): @@ -550,35 +903,40 @@ continue else: pitm = self.configList - self.itmDict[key] = ConfigurationPageItem(pitm, pageData[0], key, - pageData[1]) + self.itmDict[key] = ConfigurationPageItem( + pitm, pageData[0], key, pageData[1] + ) self.itmDict[key].setData(0, Qt.ItemDataRole.UserRole, key) if ( - not self.fromEric or - displayMode != ConfigurationMode.DEFAULTMODE or - key in expandedEntries + not self.fromEric + or displayMode != ConfigurationMode.DEFAULTMODE + or key in expandedEntries ): self.itmDict[key].setExpanded(True) self.configList.sortByColumn(0, Qt.SortOrder.AscendingOrder) - + # set the initial size of the splitter self.configSplitter.setSizes([200, 600]) self.configSplitter.splitterMoved.connect(self.__resizeConfigStack) - + self.configList.itemActivated.connect(self.__showConfigurationPage) self.configList.itemClicked.connect(self.__showConfigurationPage) self.buttonBox.accepted.connect(self.accept) self.buttonBox.rejected.connect(self.rejected) - - if displayMode in [ConfigurationMode.TRAYSTARTERMODE, - ConfigurationMode.HEXEDITORMODE, - ConfigurationMode.WEBBROWSERMODE]: + + if displayMode in [ + ConfigurationMode.TRAYSTARTERMODE, + ConfigurationMode.HEXEDITORMODE, + ConfigurationMode.WEBBROWSERMODE, + ]: self.configListSearch.hide() - - if displayMode not in [ConfigurationMode.TRAYSTARTERMODE, - ConfigurationMode.HEXEDITORMODE]: + + if displayMode not in [ + ConfigurationMode.TRAYSTARTERMODE, + ConfigurationMode.HEXEDITORMODE, + ]: self.__initLexers() - + def accept(self): """ Public slot to accept the buttonBox accept signal. @@ -587,9 +945,9 @@ wdg = self.focusWidget() if wdg == self.configList: return - + self.accepted.emit() - + def __setupUi(self): """ Private method to perform the general setup of the configuration @@ -601,19 +959,18 @@ self.verticalLayout_2.setSpacing(6) self.verticalLayout_2.setContentsMargins(6, 6, 6, 6) self.verticalLayout_2.setObjectName("verticalLayout_2") - + self.configSplitter = QSplitter(self) self.configSplitter.setOrientation(Qt.Orientation.Horizontal) self.configSplitter.setObjectName("configSplitter") - + self.configListWidget = QWidget(self.configSplitter) self.leftVBoxLayout = QVBoxLayout(self.configListWidget) self.leftVBoxLayout.setContentsMargins(0, 0, 0, 0) self.leftVBoxLayout.setSpacing(0) self.leftVBoxLayout.setObjectName("leftVBoxLayout") self.configListSearch = QLineEdit(self) - self.configListSearch.setPlaceholderText( - self.tr("Enter search text...")) + self.configListSearch.setPlaceholderText(self.tr("Enter search text...")) self.configListSearch.setClearButtonEnabled(True) self.configListSearch.setObjectName("configListSearch") self.configListSearch.setClearButtonEnabled(True) @@ -622,24 +979,25 @@ self.configList.setObjectName("configList") self.leftVBoxLayout.addWidget(self.configList) self.configListSearch.textChanged.connect(self.__searchTextChanged) - + self.scrollArea = QScrollArea(self.configSplitter) self.scrollArea.setFrameShape(QFrame.Shape.NoFrame) - self.scrollArea.setVerticalScrollBarPolicy( - Qt.ScrollBarPolicy.ScrollBarAlwaysOn) + self.scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn) self.scrollArea.setHorizontalScrollBarPolicy( - Qt.ScrollBarPolicy.ScrollBarAlwaysOn) + Qt.ScrollBarPolicy.ScrollBarAlwaysOn + ) self.scrollArea.setWidgetResizable(False) self.scrollArea.setSizeAdjustPolicy( - QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents) + QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents + ) self.scrollArea.setObjectName("scrollArea") - + self.configStack = QStackedWidget() self.configStack.setFrameShape(QFrame.Shape.Box) self.configStack.setFrameShadow(QFrame.Shadow.Sunken) self.configStack.setObjectName("configStack") self.scrollArea.setWidget(self.configStack) - + self.emptyPage = QWidget() self.emptyPage.setGeometry(QRect(0, 0, 372, 591)) self.emptyPage.setObjectName("emptyPage") @@ -648,74 +1006,74 @@ self.vboxlayout.setContentsMargins(6, 6, 6, 6) self.vboxlayout.setObjectName("vboxlayout") spacerItem = QSpacerItem( - 20, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) + 20, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding + ) self.vboxlayout.addItem(spacerItem) self.emptyPagePixmap = QLabel(self.emptyPage) self.emptyPagePixmap.setAlignment(Qt.AlignmentFlag.AlignCenter) self.emptyPagePixmap.setObjectName("emptyPagePixmap") self.emptyPagePixmap.setPixmap( - QPixmap(os.path.join(getConfig('ericPixDir'), 'eric.png'))) + QPixmap(os.path.join(getConfig("ericPixDir"), "eric.png")) + ) self.vboxlayout.addWidget(self.emptyPagePixmap) self.textLabel1 = QLabel(self.emptyPage) self.textLabel1.setAlignment(Qt.AlignmentFlag.AlignCenter) self.textLabel1.setObjectName("textLabel1") self.vboxlayout.addWidget(self.textLabel1) spacerItem1 = QSpacerItem( - 20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) + 20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding + ) self.vboxlayout.addItem(spacerItem1) self.configStack.addWidget(self.emptyPage) - + self.verticalLayout_2.addWidget(self.configSplitter) - + self.buttonBox = QDialogButtonBox(self) self.buttonBox.setOrientation(Qt.Orientation.Horizontal) self.buttonBox.setStandardButtons( - QDialogButtonBox.StandardButton.Apply | - QDialogButtonBox.StandardButton.Cancel | - QDialogButtonBox.StandardButton.Ok | - QDialogButtonBox.StandardButton.Reset + QDialogButtonBox.StandardButton.Apply + | QDialogButtonBox.StandardButton.Cancel + | QDialogButtonBox.StandardButton.Ok + | QDialogButtonBox.StandardButton.Reset ) self.buttonBox.setObjectName("buttonBox") - if ( - not self.fromEric and - self.displayMode == ConfigurationMode.DEFAULTMODE - ): + if not self.fromEric and self.displayMode == ConfigurationMode.DEFAULTMODE: self.buttonBox.button(QDialogButtonBox.StandardButton.Apply).hide() - self.buttonBox.button( - QDialogButtonBox.StandardButton.Apply).setEnabled(False) - self.buttonBox.button( - QDialogButtonBox.StandardButton.Reset).setEnabled(False) + self.buttonBox.button(QDialogButtonBox.StandardButton.Apply).setEnabled(False) + self.buttonBox.button(QDialogButtonBox.StandardButton.Reset).setEnabled(False) self.verticalLayout_2.addWidget(self.buttonBox) self.setWindowTitle(self.tr("Preferences")) - + self.configList.header().hide() - self.configList.header().setSortIndicator( - 0, Qt.SortOrder.AscendingOrder) + self.configList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder) self.configList.setSortingEnabled(True) self.textLabel1.setText( - self.tr("Please select an entry of the list \n" - "to display the configuration page.")) - + self.tr( + "Please select an entry of the list \n" + "to display the configuration page." + ) + ) + QMetaObject.connectSlotsByName(self) self.setTabOrder(self.configList, self.configStack) - + self.configStack.setCurrentWidget(self.emptyPage) - + self.configList.setFocus() - + def __searchTextChanged(self, text): """ Private slot to handle a change of the search text. - + @param text text to search for (string) """ self.__searchChildItems(self.configList.invisibleRootItem(), text) - + def __searchChildItems(self, parent, text): """ Private method to enable child items based on a search string. - + @param parent reference to the parent item (QTreeWidgetItem) @param text text to search for (string) @return flag indicating an enabled child item (boolean) @@ -725,44 +1083,44 @@ for index in range(parent.childCount()): itm = parent.child(index) enable = ( - (self.__searchChildItems(itm, text) or - text == "" or - text in itm.text(0).lower()) - if itm.childCount() > 0 else - (text == "" or text in itm.text(0).lower()) + ( + self.__searchChildItems(itm, text) + or text == "" + or text in itm.text(0).lower() + ) + if itm.childCount() > 0 + else (text == "" or text in itm.text(0).lower()) ) if enable: childEnabled = True itm.setDisabled(not enable) - + return childEnabled - + def __initLexers(self): """ Private method to initialize the dictionary of preferences lexers. """ import QScintilla.Lexers - from .PreferencesLexer import ( - PreferencesLexer, PreferencesLexerLanguageError - ) - + from .PreferencesLexer import PreferencesLexer, PreferencesLexerLanguageError + self.lexers = {} for language in QScintilla.Lexers.getSupportedLanguages(): if language not in self.lexers: with contextlib.suppress(PreferencesLexerLanguageError): self.lexers[language] = PreferencesLexer(language, self) - + def __importConfigurationPage(self, name): """ Private method to import a configuration page module. - + @param name name of the configuration page module (string) @return reference to the configuration page module """ modName = "Preferences.ConfigurationPages.{0}".format(name) try: mod = __import__(modName) - components = modName.split('.') + components = modName.split(".") for comp in components[1:]: mod = getattr(mod, comp) return mod @@ -770,24 +1128,27 @@ EricMessageBox.critical( self, self.tr("Configuration Page Error"), - self.tr("""<p>The configuration page <b>{0}</b>""" - """ could not be loaded.</p>""").format(name)) + self.tr( + """<p>The configuration page <b>{0}</b>""" + """ could not be loaded.</p>""" + ).format(name), + ) return None - + def __showConfigurationPage(self, itm, column): """ Private slot to show a selected configuration page. - + @param itm reference to the selected item (QTreeWidgetItem) @param column column that was selected (integer) (ignored) """ pageName = itm.getPageName() self.showConfigurationPageByName(pageName, setCurrent=False) - + def __initPage(self, pageData): """ Private method to initialize a configuration page. - + @param pageData data structure for the page to initialize @return reference to the initialized page """ @@ -804,11 +1165,11 @@ with contextlib.suppress(AttributeError): page.setMode(self.displayMode) return page - + def showConfigurationPageByName(self, pageName, setCurrent=True): """ Public slot to show a named configuration page. - + @param pageName name of the configuration page to show (string) @param setCurrent flag indicating to set the current item (boolean) """ @@ -826,43 +1187,49 @@ elif setCurrent: items = self.configList.findItems( pageData[0], - Qt.MatchFlag.MatchFixedString | - Qt.MatchFlag.MatchRecursive) + Qt.MatchFlag.MatchFixedString | Qt.MatchFlag.MatchRecursive, + ) for item in items: if item.data(0, Qt.ItemDataRole.UserRole) == pageName: self.configList.setCurrentItem(item) self.configStack.setCurrentWidget(page) self.__resizeConfigStack() - + if page != self.emptyPage: page.polishPage() - self.buttonBox.button( - QDialogButtonBox.StandardButton.Apply).setEnabled(True) - self.buttonBox.button( - QDialogButtonBox.StandardButton.Reset).setEnabled(True) + self.buttonBox.button(QDialogButtonBox.StandardButton.Apply).setEnabled( + True + ) + self.buttonBox.button(QDialogButtonBox.StandardButton.Reset).setEnabled( + True + ) else: - self.buttonBox.button( - QDialogButtonBox.StandardButton.Apply).setEnabled(False) - self.buttonBox.button( - QDialogButtonBox.StandardButton.Reset).setEnabled(False) - + self.buttonBox.button(QDialogButtonBox.StandardButton.Apply).setEnabled( + False + ) + self.buttonBox.button(QDialogButtonBox.StandardButton.Reset).setEnabled( + False + ) + # reset scrollbars - for sb in [self.scrollArea.horizontalScrollBar(), - self.scrollArea.verticalScrollBar()]: + for sb in [ + self.scrollArea.horizontalScrollBar(), + self.scrollArea.verticalScrollBar(), + ]: if sb: sb.setValue(0) - + self.__currentConfigurationPageName = pageName - + def resizeEvent(self, evt): """ Protected method to handle the resizing of the widget. - + @param evt reference to the event object @type QResizeEvent """ self.__resizeConfigStack() - + def __resizeConfigStack(self): """ Private method to resize the stack of configuration pages. @@ -870,50 +1237,51 @@ ssize = self.scrollArea.size() if self.scrollArea.horizontalScrollBar(): ssize.setHeight( - ssize.height() - - self.scrollArea.horizontalScrollBar().height() - 2) + ssize.height() - self.scrollArea.horizontalScrollBar().height() - 2 + ) if self.scrollArea.verticalScrollBar(): ssize.setWidth( - ssize.width() - - self.scrollArea.verticalScrollBar().width() - 2) + ssize.width() - self.scrollArea.verticalScrollBar().width() - 2 + ) psize = self.configStack.currentWidget().minimumSizeHint() - self.configStack.resize(max(ssize.width(), psize.width()), - max(ssize.height(), psize.height())) - + self.configStack.resize( + max(ssize.width(), psize.width()), max(ssize.height(), psize.height()) + ) + def getConfigurationPageName(self): """ Public method to get the page name of the current page. - + @return page name of the current page (string) """ return self.__currentConfigurationPageName - + def calledFromEric(self): """ Public method to check, if invoked from within eric. - + @return flag indicating invocation from within eric (boolean) """ return self.fromEric - + def getPage(self, pageName): """ Public method to get a reference to the named page. - + @param pageName name of the configuration page (string) @return reference to the page or None, indicating page was not loaded yet """ return self.configItems[pageName][-1] - + def getLexers(self): """ Public method to get a reference to the lexers dictionary. - + @return reference to the lexers dictionary """ return self.lexers - + def setPreferences(self): """ Public method called to store the selected values into the preferences @@ -925,24 +1293,20 @@ pageData[-1].save() # page was loaded (and possibly modified) if time.monotonic() - now > 0.01: - QApplication.processEvents() # ensure HMI is responsive + QApplication.processEvents() # ensure HMI is responsive now = time.monotonic() - + def on_buttonBox_clicked(self, button): """ Private slot called by a button of the button box clicked. - + @param button button that was clicked (QAbstractButton) """ - if button == self.buttonBox.button( - QDialogButtonBox.StandardButton.Apply - ): + if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Apply): self.on_applyButton_clicked() - elif button == self.buttonBox.button( - QDialogButtonBox.StandardButton.Reset - ): + elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Reset): self.on_resetButton_clicked() - + @pyqtSlot() def on_applyButton_clicked(self): """ @@ -956,7 +1320,7 @@ if savedState is not None: page.setState(savedState) page.polishPage() - + @pyqtSlot() def on_resetButton_clicked(self): """ @@ -970,72 +1334,75 @@ if pageName == "editorHighlightingStylesPage": self.__initLexers() self.configItems[pageName][-1] = None - + self.showConfigurationPageByName(pageName) if savedState is not None: self.configStack.currentWidget().setState(savedState) - + def getExpandedEntries(self): """ Public method to get a list of expanded entries. - + @return list of expanded entries (list of string) """ return self.__expandedEntries - + @pyqtSlot(QTreeWidgetItem) def on_configList_itemCollapsed(self, item): """ Private slot handling a list entry being collapsed. - + @param item reference to the collapsed item (QTreeWidgetItem) """ pageName = item.data(0, Qt.ItemDataRole.UserRole) if pageName in self.__expandedEntries: self.__expandedEntries.remove(pageName) - + @pyqtSlot(QTreeWidgetItem) def on_configList_itemExpanded(self, item): """ Private slot handling a list entry being expanded. - + @param item reference to the expanded item (QTreeWidgetItem) """ pageName = item.data(0, Qt.ItemDataRole.UserRole) if pageName not in self.__expandedEntries: self.__expandedEntries.append(pageName) - + def isUsingWebEngine(self): """ Public method to get an indication, if QtWebEngine is being used. - + @return flag indicating the use of QtWebEngine @rtype bool """ - return ( - self.__webEngine or - self.displayMode == ConfigurationMode.WEBBROWSERMODE - ) + return self.__webEngine or self.displayMode == ConfigurationMode.WEBBROWSERMODE class ConfigurationDialog(QDialog): """ Class for the dialog variant. - + @signal preferencesChanged() emitted after settings have been changed @signal masterPasswordChanged(str, str) emitted after the master password has been changed with the old and the new password """ + preferencesChanged = pyqtSignal() masterPasswordChanged = pyqtSignal(str, str) - - def __init__(self, parent=None, name=None, modal=False, - fromEric=True, - displayMode=ConfigurationMode.DEFAULTMODE, - expandedEntries=None): + + def __init__( + self, + parent=None, + name=None, + modal=False, + fromEric=True, + displayMode=ConfigurationMode.DEFAULTMODE, + expandedEntries=None, + ): """ Constructor - + @param parent reference to the parent widget @type QWidget @param name name of the dialog @@ -1055,70 +1422,73 @@ self.setObjectName(name) self.setModal(modal) self.setWindowFlags(Qt.WindowType.Window) - + self.layout = QVBoxLayout(self) self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) - - self.cw = ConfigurationWidget(self, fromEric=fromEric, - displayMode=displayMode, - expandedEntries=expandedEntries) + + self.cw = ConfigurationWidget( + self, + fromEric=fromEric, + displayMode=displayMode, + expandedEntries=expandedEntries, + ) size = self.cw.size() self.layout.addWidget(self.cw) self.resize(size) self.setWindowTitle(self.cw.windowTitle()) - + self.cw.accepted.connect(self.accept) self.cw.rejected.connect(self.reject) self.cw.preferencesChanged.connect(self.__preferencesChanged) self.cw.masterPasswordChanged.connect(self.__masterPasswordChanged) - + def __preferencesChanged(self): """ Private slot to handle a change of the preferences. """ self.preferencesChanged.emit() - + def __masterPasswordChanged(self, oldPassword, newPassword): """ Private slot to handle the change of the master password. - + @param oldPassword current master password (string) @param newPassword new master password (string) """ self.masterPasswordChanged.emit(oldPassword, newPassword) - + def showConfigurationPageByName(self, pageName): """ Public slot to show a named configuration page. - + @param pageName name of the configuration page to show (string) """ self.cw.showConfigurationPageByName(pageName) - + def getConfigurationPageName(self): """ Public method to get the page name of the current page. - + @return page name of the current page (string) """ return self.cw.getConfigurationPageName() - + def getExpandedEntries(self): """ Public method to get a list of expanded entries. - + @return list of expanded entries (list of string) """ return self.cw.getExpandedEntries() - + def setPreferences(self): """ Public method called to store the selected values into the preferences storage. """ self.cw.setPreferences() - + def accept(self): """ Public method to accept the dialog. @@ -1130,34 +1500,34 @@ """ Main window class for the standalone dialog. """ + def __init__(self, parent=None): """ Constructor - + @param parent reference to the parent widget (QWidget) """ super().__init__(parent) - + self.cw = ConfigurationWidget(self, fromEric=False) size = self.cw.size() self.setCentralWidget(self.cw) self.resize(size) self.setWindowTitle(self.cw.windowTitle()) - - self.setStyle(Preferences.getUI("Style"), - Preferences.getUI("StyleSheet")) - + + self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet")) + self.cw.accepted.connect(self.accept) self.cw.rejected.connect(self.close) - + def showConfigurationPageByName(self, pageName): """ Public slot to show a named configuration page. - + @param pageName name of the configuration page to show (string) """ self.cw.showConfigurationPageByName(pageName) - + def accept(self): """ Public slot called by the Ok button.