eric7/WebBrowser/QtHelp/HelpIndexWidget.py

Thu, 30 Dec 2021 11:17:58 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 30 Dec 2021 11:17:58 +0100
branch
eric7
changeset 8881
54e42bc2437a
parent 8704
e4042abf2a5b
permissions
-rw-r--r--

Updated copyright for 2022.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8704
diff changeset
3 # Copyright (c) 2009 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a window for showing the QtHelp index.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
10 from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QEvent
8704
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
11 from PyQt6.QtGui import QGuiApplication, QClipboard
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
12 from PyQt6.QtHelp import QHelpLink
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
13 from PyQt6.QtWidgets import (
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
14 QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QMenu, QDialog,
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
15 QApplication
7269
0c63ea7f94bd Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
16 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
18
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 class HelpIndexWidget(QWidget):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 Class implementing a window for showing the QtHelp index.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 @signal escapePressed() emitted when the ESC key was pressed
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
24 @signal openUrl(QUrl, str) emitted to open an entry in the current tab
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
25 @signal newTab(QUrl, str) emitted to open an entry in a new tab
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
26 @signal newBackgroundTab(QUrl, str) emitted to open an entry in a
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
27 new background tab
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
28 @signal newWindow(QUrl, str) emitted to open an entry in a new window
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
487
4d41d03d3d00 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 482
diff changeset
30 escapePressed = pyqtSignal()
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
31 openUrl = pyqtSignal(QUrl)
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
32 newTab = pyqtSignal(QUrl)
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
33 newBackgroundTab = pyqtSignal(QUrl)
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
34 newWindow = pyqtSignal(QUrl)
487
4d41d03d3d00 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 482
diff changeset
35
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
36 def __init__(self, engine, internal=False, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
40 @param engine reference to the help engine
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
41 @type QHelpEngine
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
42 @param internal flag indicating the internal help viewer
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
43 @type bool
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
44 @param parent reference to the parent widget
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
45 @type QWidget
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
47 super().__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__engine = engine
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
50 self.__internal = internal
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__searchEdit = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__index = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__layout = QVBoxLayout(self)
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
56 if internal:
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
57 # no margins for the internal variant
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
58 self.__layout.setContentsMargins(0, 0, 0, 0)
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
59
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
60 self.__searchEditLayout = QHBoxLayout()
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
61 label = QLabel(self.tr("&Look for:"))
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
62 self.__searchEditLayout.addWidget(label)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.__searchEdit = QLineEdit()
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
65 self.__searchEdit.setClearButtonEnabled(True)
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2999
diff changeset
66 label.setBuddy(self.__searchEdit)
487
4d41d03d3d00 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 482
diff changeset
67 self.__searchEdit.textChanged.connect(self.__filterIndices)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__searchEdit.installEventFilter(self)
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
69 self.__searchEditLayout.addWidget(self.__searchEdit)
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
70 self.__layout.addLayout(self.__searchEditLayout)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.__index = self.__engine.indexWidget()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
73 self.__index.setContextMenuPolicy(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
74 Qt.ContextMenuPolicy.CustomContextMenu)
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
75
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
76 self.__engine.indexModel().indexCreationStarted.connect(
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
77 self.__disableSearchEdit)
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
78 self.__engine.indexModel().indexCreated.connect(
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
79 self.__enableSearchEdit)
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
80 self.__index.documentActivated.connect(self.__documentActivated)
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
81 self.__index.documentsActivated.connect(self.__documentsActivated)
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
82 self.__index.customContextMenuRequested.connect(
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
83 self.__showContextMenu)
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
84 self.__searchEdit.returnPressed.connect(
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
85 self.__index.activateCurrentItem)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.__layout.addWidget(self.__index)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87
8564
c48137b0d7ba Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8421
diff changeset
88 @pyqtSlot(QHelpLink, str)
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
89 def __documentActivated(self, document, keyword, modifiers=None):
113
33afff70d8ee Implemented a workaround for a Qt/PyQt issue causing the eric web browser to crash, when some entry of the index widget is activated.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
90 """
33afff70d8ee Implemented a workaround for a Qt/PyQt issue causing the eric web browser to crash, when some entry of the index widget is activated.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
91 Private slot to handle the activation of a keyword entry.
33afff70d8ee Implemented a workaround for a Qt/PyQt issue causing the eric web browser to crash, when some entry of the index widget is activated.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
92
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
93 @param document reference to a data structure containing the
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
94 document info
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
95 @type QHelpLink
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
96 @param keyword keyword for the URL
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
97 @type str
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
98 @param modifiers keyboard modifiers
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
99 @type Qt.KeyboardModifiers or None
113
33afff70d8ee Implemented a workaround for a Qt/PyQt issue causing the eric web browser to crash, when some entry of the index widget is activated.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
100 """
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
101 if modifiers is None:
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
102 modifiers = QApplication.keyboardModifiers()
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
103 if not document.url.isEmpty() and document.url.isValid():
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
104 if modifiers & (
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
105 Qt.KeyboardModifier.ControlModifier |
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
106 Qt.KeyboardModifier.ControlModifier
7269
0c63ea7f94bd Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
107 ):
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
108 self.newBackgroundTab.emit(document.url)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
109 elif modifiers & Qt.KeyboardModifier.ControlModifier:
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
110 self.newTab.emit(document.url)
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
111 elif (
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
112 modifiers & Qt.KeyboardModifier.ShiftModifier and
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
113 not self.__internal
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
114 ):
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
115 self.newWindow.emit(document.url)
113
33afff70d8ee Implemented a workaround for a Qt/PyQt issue causing the eric web browser to crash, when some entry of the index widget is activated.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
116 else:
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
117 self.openUrl.emit(document.url)
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
118
8565
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
119 def __documentsActivated(self, documents, helpKeyword):
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
120 """
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
121 Private slot to handle the activation of an entry with multiple help
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
122 documents.
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
123
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
124 @param documents list of help document link data structures
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
125 @type list of QHelpLink
8565
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
126 @param helpKeyword keyword for the entry
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
127 @type str
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
128 """
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
129 modifiers = QApplication.keyboardModifiers()
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
130 document = (
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
131 documents[0]
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
132 if len(documents) == 1 else
8565
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
133 self.__selectDocument(documents, helpKeyword)
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
134 )
8565
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
135 self.__documentActivated(document, helpKeyword, modifiers)
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
136
8565
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
137 def __selectDocument(self, documents, helpKeyword):
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
138 """
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
139 Private method to give the user a chance to select among the
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
140 given documents.
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
141
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
142 @param documents list of help document link data structures
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
143 @type list of QHelpLink
8565
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
144 @param helpKeyword keyword for the documents
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
145 @type str
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
146 @return selected document
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
147 @rtype QHelpLink
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
148 """
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
149 document = QHelpLink()
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
150
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
151 from .HelpTopicDialog import HelpTopicDialog
8565
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
152 dlg = HelpTopicDialog(self, helpKeyword, documents)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
153 if dlg.exec() == QDialog.DialogCode.Accepted:
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
154 document = dlg.document()
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
155
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
156 return document
113
33afff70d8ee Implemented a workaround for a Qt/PyQt issue causing the eric web browser to crash, when some entry of the index widget is activated.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
157
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
158 def __filterIndices(self, indexFilter):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
160 Private slot to filter the indexes according to the given filter.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
162 @param indexFilter filter to be used
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
163 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 """
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
165 if '*' in indexFilter:
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
166 self.__index.filterIndices(indexFilter, indexFilter)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 else:
5605
1950fe1a32c4 Finished fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
168 self.__index.filterIndices(indexFilter)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 def __enableSearchEdit(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 Private slot to enable the search edit.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.__searchEdit.setEnabled(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.__filterIndices(self.__searchEdit.text())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 def __disableSearchEdit(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 Private slot to enable the search edit.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.__searchEdit.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 def focusInEvent(self, evt):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 Protected method handling focus in events.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
187 @param evt reference to the focus event object
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
188 @type QFocusEvent
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
190 if evt.reason() != Qt.FocusReason.MouseFocusReason:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.__searchEdit.selectAll()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 self.__searchEdit.setFocus()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 def eventFilter(self, watched, event):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 Public method called to filter the event queue.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
198 @param watched the QObject being watched
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
199 @type QObject
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
200 @param event the event that occurred
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
201 @type QEvent
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
202 @return flag indicating whether the event was handled
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
203 @rtype bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
7269
0c63ea7f94bd Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
205 if (
0c63ea7f94bd Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
206 self.__searchEdit and watched == self.__searchEdit and
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
207 event.type() == QEvent.Type.KeyPress
7269
0c63ea7f94bd Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
208 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 idx = self.__index.currentIndex()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
210 if event.key() == Qt.Key.Key_Up:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 idx = self.__index.model().index(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 idx.row() - 1, idx.column(), idx.parent())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 if idx.isValid():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 self.__index.setCurrentIndex(idx)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
215 elif event.key() == Qt.Key.Key_Down:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 idx = self.__index.model().index(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 idx.row() + 1, idx.column(), idx.parent())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 if idx.isValid():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.__index.setCurrentIndex(idx)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
220 elif event.key() == Qt.Key.Key_Escape:
487
4d41d03d3d00 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 482
diff changeset
221 self.escapePressed.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 return QWidget.eventFilter(self, watched, event)
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
224
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
225 def __showContextMenu(self, pos):
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
226 """
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
227 Private slot showing the context menu.
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
228
8421
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
229 @param pos position to show the menu at
cd4eee7f1d28 QtHelp: changed the code to not use deprecated methods anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
230 @type QPoint
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
231 """
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
232 idx = self.__index.indexAt(pos)
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
233 if idx.isValid():
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
234 menu = QMenu()
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
235 curTab = menu.addAction(self.tr("Open Link"))
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
236 if self.__internal:
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
237 newTab = menu.addAction(self.tr("Open Link in New Page"))
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
238 newBackgroundTab = menu.addAction(
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
239 self.tr("Open Link in Background Page"))
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
240 else:
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
241 newTab = menu.addAction(self.tr("Open Link in New Tab"))
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
242 newBackgroundTab = menu.addAction(
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
243 self.tr("Open Link in Background Tab"))
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
244 newWindow = menu.addAction(self.tr("Open Link in New Window"))
8704
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
245 menu.addSeparator()
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
246 copyLink = menu.addAction(self.tr("Copy URL to Clipboard"))
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
247 menu.move(self.__index.mapToGlobal(pos))
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
248
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
249 act = menu.exec()
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
250 model = self.__index.model()
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
251 if model is not None:
8565
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
252 helpKeyword = model.data(idx, Qt.ItemDataRole.DisplayRole)
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
253 helpLinks = self.__engine.documentsForKeyword(helpKeyword, "")
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
254 if len(helpLinks) == 1:
207b47c2eed9 Next batch of changes for QtHelp as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8564
diff changeset
255 link = helpLinks[0].url
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
256 else:
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
257 link = self.__selectDocument(helpLinks, helpKeyword).url
5038
df7103c3f2a6 Added capabilities to open links in a new background tab, and several other link open actions to various context menus of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4875
diff changeset
258
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
259 if not link.isEmpty() and link.isValid():
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
260 if act == curTab:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
261 self.openUrl.emit(link)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
262 elif act == newTab:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
263 self.newTab.emit(link)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
264 elif act == newBackgroundTab:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
265 self.newBackgroundTab.emit(link)
8685
b0669ce1066d Continued implementing the embedded help viewer widget. Added the help index and help search widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8565
diff changeset
266 elif not self.__internal and act == newWindow:
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5038
diff changeset
267 self.newWindow.emit(link)
8704
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
268 elif act == copyLink:
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
269 # copy the URL to both clipboard areas
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
270 QGuiApplication.clipboard().setText(
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
271 link.toString(), QClipboard.Mode.Clipboard)
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
272 QGuiApplication.clipboard().setText(
e4042abf2a5b Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8693
diff changeset
273 link.toString(), QClipboard.Mode.Selection)

eric ide

mercurial