1# -*- coding: utf-8 -*-
2
3# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4#
5
6"""
7Module implementing the Editor Documentation Viewer configuration page.
8"""
9
10from .ConfigurationPageBase import ConfigurationPageBase
11from .Ui_EditorDocViewerPage import Ui_EditorDocViewerPage
12
13from E5Gui.E5Application import e5App
14
15import Preferences
16
17
18class EditorDocViewerPage(ConfigurationPageBase, Ui_EditorDocViewerPage):
19    """
20    Class implementing the Editor Documentation Viewer configuration page.
21    """
22    def __init__(self):
23        """
24        Constructor
25        """
26        super().__init__()
27        self.setupUi(self)
28        self.setObjectName("EditorExportersPage")
29
30        try:
31            providers = e5App().getObject("DocuViewer").getProviders()
32            for provider, text in providers:
33                self.providerComboBox.addItem(text, provider)
34
35            self.infoLabel.clear()
36
37            # set initial values
38            self.parenthesisCheckBox.setChecked(
39                Preferences.getDocuViewer("ShowInfoOnOpenParenthesis"))
40
41            provider = Preferences.getDocuViewer("Provider")
42            self.viewerGroupBox.setChecked(provider != "disabled")
43
44            index = self.providerComboBox.findData(provider)
45            if index >= 0:
46                self.providerComboBox.setCurrentIndex(index)
47        except KeyError:
48            # documentation viewer is globally disabled
49            self.viewerGroupBox.setChecked(False)
50            self.viewerGroupBox.setEnabled(False)
51            self.infoLabel.setText(self.tr(
52                "The Documentation Viewer is disabled globally. Re-enable it"
53                " on the Interface/Interface configuration page and restart"
54                " the eric."))
55
56    def save(self):
57        """
58        Public slot to save the Editor Typing configuration.
59        """
60        enabled = self.viewerGroupBox.isChecked()
61        if enabled:
62            Preferences.setDocuViewer(
63                "ShowInfoOnOpenParenthesis",
64                self.parenthesisCheckBox.isChecked())
65            Preferences.setDocuViewer(
66                "Provider",
67                self.providerComboBox.itemData(
68                    self.providerComboBox.currentIndex())
69            )
70        else:
71            Preferences.setDocuViewer("Provider", "disabled")
72
73
74def create(dlg):
75    """
76    Module function to create the configuration page.
77
78    @param dlg reference to the configuration dialog
79    @return reference to the instantiated page (ConfigurationPageBase)
80    """
81    page = EditorDocViewerPage()
82    return page
83