--- /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()