eric7/WebBrowser/QtHelp/QtHelpDocumentationConfigurationDialog.py

branch
eric7
changeset 8422
bb5da74c1b3f
child 8564
c48137b0d7ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/WebBrowser/QtHelp/QtHelpDocumentationConfigurationDialog.py	Sun Jun 13 19:03:43 2021 +0200
@@ -0,0 +1,106 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021 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 QDialog, QDialogButtonBox, QAbstractButton
+
+from .Ui_QtHelpDocumentationConfigurationDialog import (
+    Ui_QtHelpDocumentationConfigurationDialog
+)
+
+from .QtHelpDocumentationSettings import QtHelpDocumentationSettings
+
+
+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 == 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 == 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