13 from PyQt6.QtGui import QAction, QFont, QFontMetrics |
13 from PyQt6.QtGui import QAction, QFont, QFontMetrics |
14 from PyQt6.QtHelp import QHelpEngine |
14 from PyQt6.QtHelp import QHelpEngine |
15 from PyQt6.QtWidgets import ( |
15 from PyQt6.QtWidgets import ( |
16 QWidget, QHBoxLayout, QVBoxLayout, QComboBox, QSizePolicy, QStackedWidget, |
16 QWidget, QHBoxLayout, QVBoxLayout, QComboBox, QSizePolicy, QStackedWidget, |
17 QToolButton, QButtonGroup, QAbstractButton, QMenu, QFrame, QLabel, |
17 QToolButton, QButtonGroup, QAbstractButton, QMenu, QFrame, QLabel, |
18 QProgressBar |
18 QProgressBar, QSplitter |
19 ) |
19 ) |
20 try: |
20 try: |
21 from PyQt6.QtWebEngineCore import QWebEngineProfile, QWebEngineSettings |
21 from PyQt6.QtWebEngineCore import QWebEngineProfile, QWebEngineSettings |
22 WEBENGINE_AVAILABLE = True |
22 WEBENGINE_AVAILABLE = True |
23 except ImportError: |
23 except ImportError: |
62 self.__layout = QVBoxLayout() |
62 self.__layout = QVBoxLayout() |
63 self.__layout.setObjectName("MainLayout") |
63 self.__layout.setObjectName("MainLayout") |
64 self.__layout.setContentsMargins(0, 3, 0, 0) |
64 self.__layout.setContentsMargins(0, 3, 0, 0) |
65 |
65 |
66 ################################################################### |
66 ################################################################### |
|
67 ## Help Topic Selector |
|
68 ################################################################### |
67 |
69 |
68 self.__selectorLayout = QHBoxLayout() |
70 self.__selectorLayout = QHBoxLayout() |
69 |
71 |
70 self.__helpSelector = QComboBox(self) |
72 self.__helpSelector = QComboBox(self) |
71 self.__helpSelector.setSizePolicy( |
73 self.__helpSelector.setSizePolicy( |
193 self.__navigationMenuActionTriggered) |
197 self.__navigationMenuActionTriggered) |
194 self.__forwardButton.setMenu(self.__forwardMenu) |
198 self.__forwardButton.setMenu(self.__forwardMenu) |
195 self.__forwardMenu.aboutToShow.connect(self.__showForwardMenu) |
199 self.__forwardMenu.aboutToShow.connect(self.__showForwardMenu) |
196 |
200 |
197 ################################################################### |
201 ################################################################### |
|
202 ## Center widget with help pages, search widget and navigation |
|
203 ## widgets |
|
204 ################################################################### |
|
205 |
|
206 self.__centerSplitter = QSplitter(Qt.Orientation.Vertical, self) |
|
207 self.__centerSplitter.setChildrenCollapsible(False) |
|
208 self.__layout.addWidget(self.__centerSplitter) |
|
209 |
|
210 self.__helpCenterWidget = QWidget(self) |
|
211 self.__helpCenterLayout = QVBoxLayout() |
|
212 self.__helpCenterLayout.setContentsMargins(0, 0, 0, 0) |
|
213 self.__helpCenterWidget.setLayout(self.__helpCenterLayout) |
|
214 |
|
215 ################################################################### |
198 |
216 |
199 self.__helpStack = QStackedWidget(self) |
217 self.__helpStack = QStackedWidget(self) |
200 self.__helpStack.setSizePolicy( |
218 self.__helpStack.setSizePolicy( |
201 QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) |
219 QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) |
202 self.__layout.addWidget(self.__helpStack) |
220 self.__helpCenterLayout.addWidget(self.__helpStack) |
203 |
221 |
204 ################################################################### |
222 ################################################################### |
205 |
223 |
206 self.__searchWidget = EricTextEditSearchWidget( |
224 self.__searchWidget = EricTextEditSearchWidget( |
207 self, widthForHeight=False, enableClose=True) |
225 self, widthForHeight=False, enableClose=True) |
208 self.__layout.addWidget(self.__searchWidget) |
226 self.__helpCenterLayout.addWidget(self.__searchWidget) |
209 self.__searchWidget.closePressed.connect(self.__searchWidgetClosed) |
227 self.__searchWidget.closePressed.connect(self.__searchWidgetClosed) |
210 self.__searchWidget.hide() |
228 self.__searchWidget.hide() |
|
229 |
|
230 self.__centerSplitter.addWidget(self.__helpCenterWidget) |
211 |
231 |
212 ################################################################### |
232 ################################################################### |
213 |
233 |
214 self.__helpNavigationStack = QStackedWidget(self) |
234 self.__helpNavigationStack = QStackedWidget(self) |
215 self.__helpNavigationStack.setSizePolicy( |
235 self.__helpNavigationStack.setSizePolicy( |
216 QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred) |
236 QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred) |
217 self.__helpNavigationStack.setMaximumHeight(200) |
237 self.__helpNavigationStack.setMinimumHeight(100) |
218 self.__layout.addWidget(self.__helpNavigationStack) |
238 self.__centerSplitter.addWidget(self.__helpNavigationStack) |
219 self.__populateNavigationStack() |
239 self.__populateNavigationStack() |
220 |
240 |
|
241 ################################################################### |
|
242 ## Bottom buttons |
221 ################################################################### |
243 ################################################################### |
222 |
244 |
223 self.__buttonLayout = QHBoxLayout() |
245 self.__buttonLayout = QHBoxLayout() |
224 |
246 |
225 self.__buttonGroup = QButtonGroup(self) |
247 self.__buttonGroup = QButtonGroup(self) |