src/eric7/QtHelpInterface/QtHelpDocumentationConfigurationDialog.py

branch
eric7
changeset 9686
2eee7a645cba
parent 9653
e67609152c5e
child 10439
21c28b0f9e41
diff -r b43e04854aba -r 2eee7a645cba src/eric7/QtHelpInterface/QtHelpDocumentationConfigurationDialog.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/QtHelpInterface/QtHelpDocumentationConfigurationDialog.py	Mon Jan 09 11:22:56 2023 +0100
@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to manage the QtHelp documentation database.
+"""
+
+from PyQt6.QtCore import pyqtSlot
+from PyQt6.QtWidgets import QAbstractButton, QDialog, QDialogButtonBox
+
+from .QtHelpDocumentationSettings import QtHelpDocumentationSettings
+from .Ui_QtHelpDocumentationConfigurationDialog import (
+    Ui_QtHelpDocumentationConfigurationDialog,
+)
+
+
+class QtHelpDocumentationConfigurationDialog(
+    QDialog, Ui_QtHelpDocumentationConfigurationDialog
+):
+    """
+    Class implementing a dialog to manage the QtHelp documentation database.
+    """
+
+    def __init__(self, engine, parent=None):
+        """
+        Constructor
+
+        @param engine reference to the Qt help engine
+        @type QHelpEngineCore
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+
+        self.__engine = engine
+
+        self.__settings = QtHelpDocumentationSettings.readSettings(self.__engine)
+
+        self.documentationSettingsWidget.documentationSettingsChanged.connect(
+            self.__documentationSettingsChanged
+        )
+        self.documentationSettingsWidget.setDocumentationSettings(self.__settings)
+
+        self.filterSettingsWidget.setAvailableComponents(self.__settings.components())
+        self.filterSettingsWidget.setAvailableVersions(self.__settings.versions())
+        self.filterSettingsWidget.readSettings(self.__engine.filterEngine())
+
+    @pyqtSlot(QtHelpDocumentationSettings)
+    def __documentationSettingsChanged(self, settings):
+        """
+        Private slot to handle a change of the QtHelp documentation
+        configuration.
+
+        @param settings reference to the documentation settings object
+        @type QtHelpDocumentationSettings
+        """
+        self.__settings = settings
+
+        self.filterSettingsWidget.setAvailableComponents(self.__settings.components())
+        self.filterSettingsWidget.setAvailableVersions(self.__settings.versions())
+
+    @pyqtSlot(QAbstractButton)
+    def on_buttonBox_clicked(self, button):
+        """
+        Private slot called by a button of the button box clicked.
+
+        @param button button that was clicked
+        @type QAbstractButton
+        """
+        if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Apply):
+            self.__applyConfiguration()
+
+            self.__settings = QtHelpDocumentationSettings.readSettings(self.__engine)
+
+            self.filterSettingsWidget.setAvailableComponents(
+                self.__settings.components()
+            )
+            self.filterSettingsWidget.setAvailableVersions(self.__settings.versions())
+            self.filterSettingsWidget.readSettings(self.__engine.filterEngine())
+        elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Ok):
+            self.__applyConfiguration()
+            self.accept()
+
+    def __applyConfiguration(self):
+        """
+        Private method to apply the current QtHelp documentation configuration.
+        """
+        changed = QtHelpDocumentationSettings.applySettings(
+            self.__engine, self.__settings
+        )
+        changed |= self.filterSettingsWidget.applySettings(self.__engine.filterEngine())
+
+        if changed:
+            # In order to update the filter combobox and index widget according
+            # to the new filter configuration.
+            self.__engine.setupData()

eric ide

mercurial