--- a/eric7/WebBrowser/QtHelp/HelpIndexWidget.py Wed Oct 13 18:15:30 2021 +0200 +++ b/eric7/WebBrowser/QtHelp/HelpIndexWidget.py Thu Oct 14 20:15:58 2021 +0200 @@ -10,7 +10,8 @@ from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QEvent from PyQt6.QtHelp import QHelpLink from PyQt6.QtWidgets import ( - QWidget, QVBoxLayout, QLabel, QLineEdit, QMenu, QDialog, QApplication + QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QMenu, QDialog, + QApplication ) @@ -31,31 +32,41 @@ newBackgroundTab = pyqtSignal(QUrl) newWindow = pyqtSignal(QUrl) - def __init__(self, engine, parent=None): + def __init__(self, engine, internal=False, parent=None): """ Constructor @param engine reference to the help engine @type QHelpEngine + @param internal flag indicating the internal help viewer + @type bool @param parent reference to the parent widget @type QWidget """ super().__init__(parent) self.__engine = engine + self.__internal = internal self.__searchEdit = None self.__index = None self.__layout = QVBoxLayout(self) + if internal: + # no margins for the internal variant + self.__layout.setContentsMargins(0, 0, 0, 0) + + self.__searchEditLayout = QHBoxLayout() label = QLabel(self.tr("&Look for:")) - self.__layout.addWidget(label) + self.__searchEditLayout.addWidget(label) self.__searchEdit = QLineEdit() + self.__searchEdit.setClearButtonEnabled(True) label.setBuddy(self.__searchEdit) self.__searchEdit.textChanged.connect(self.__filterIndices) self.__searchEdit.installEventFilter(self) - self.__layout.addWidget(self.__searchEdit) + self.__searchEditLayout.addWidget(self.__searchEdit) + self.__layout.addLayout(self.__searchEditLayout) self.__index = self.__engine.indexWidget() self.__index.setContextMenuPolicy( @@ -96,7 +107,10 @@ self.newBackgroundTab.emit(document.url) elif modifiers & Qt.KeyboardModifier.ControlModifier: self.newTab.emit(document.url) - elif modifiers & Qt.KeyboardModifier.ShiftModifier: + elif ( + modifiers & Qt.KeyboardModifier.ShiftModifier and + not self.__internal + ): self.newWindow.emit(document.url) else: self.openUrl.emit(document.url) @@ -132,10 +146,12 @@ @rtype QHelpLink """ document = QHelpLink() + from .HelpTopicDialog import HelpTopicDialog dlg = HelpTopicDialog(self, helpKeyword, documents) if dlg.exec() == QDialog.DialogCode.Accepted: document = dlg.document() + return document def __filterIndices(self, indexFilter): @@ -216,10 +232,15 @@ if idx.isValid(): menu = QMenu() curTab = menu.addAction(self.tr("Open Link")) - newTab = menu.addAction(self.tr("Open Link in New Tab")) - newBackgroundTab = menu.addAction( - self.tr("Open Link in Background Tab")) - newWindow = menu.addAction(self.tr("Open Link in New Window")) + if self.__internal: + newTab = menu.addAction(self.tr("Open Link in New Page")) + newBackgroundTab = menu.addAction( + self.tr("Open Link in Background Page")) + else: + newTab = menu.addAction(self.tr("Open Link in New Tab")) + newBackgroundTab = menu.addAction( + self.tr("Open Link in Background Tab")) + newWindow = menu.addAction(self.tr("Open Link in New Window")) menu.move(self.__index.mapToGlobal(pos)) act = menu.exec() @@ -230,7 +251,7 @@ if len(helpLinks) == 1: link = helpLinks[0].url else: - link = self.__selectDocument(helpLinks, helpKeyword) + link = self.__selectDocument(helpLinks, helpKeyword).url if not link.isEmpty() and link.isValid(): if act == curTab: @@ -239,5 +260,5 @@ self.newTab.emit(link) elif act == newBackgroundTab: self.newBackgroundTab.emit(link) - elif act == newWindow: + elif not self.__internal and act == newWindow: self.newWindow.emit(link)