Wed, 20 Oct 2021 19:45:22 +0200
Added a context menu action to copy the link URL to the clipboard to the QtHelp widgets.
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 | |
7923
91e843545d9a
Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7781
diff
changeset
|
3 | # Copyright (c) 2009 - 2021 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 TOC. |
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 |
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 |
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
|
12 | from PyQt6.QtWidgets import QWidget, QVBoxLayout, QMenu, QApplication |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
14 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | class HelpTocWidget(QWidget): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | Class implementing a window for showing the QtHelp TOC. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | @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
|
20 | @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
|
21 | @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
|
22 | @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
|
23 | 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
|
24 | @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
|
25 | """ |
487
4d41d03d3d00
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
458
diff
changeset
|
26 | 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
|
27 | 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
|
28 | 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
|
29 | 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
|
30 | newWindow = pyqtSignal(QUrl) |
487
4d41d03d3d00
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
458
diff
changeset
|
31 | |
8683
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
32 | def __init__(self, engine, internal=False, parent=None): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
8683
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
36 | @param engine reference to the help engine |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
37 | @type QHelpEngine |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
38 | @param internal flag indicating the internal help viewer |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
39 | @type bool |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
40 | @param parent reference to the parent widget |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
41 | @type QWidget |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
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
|
43 | super().__init__(parent) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.__engine = engine |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.__expandDepth = -2 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | |
8683
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
48 | self.__internal = internal |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
49 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | self.__tocWidget = self.__engine.contentWidget() |
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
|
51 | self.__tocWidget.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
|
52 | Qt.ContextMenuPolicy.CustomContextMenu) |
4875
4ee26909ac0d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
53 | self.__tocWidget.setSortingEnabled(True) |
0
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:
8683
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:
8683
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:
8683
diff
changeset
|
58 | self.__layout.setContentsMargins(0, 0, 0, 0) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.__layout.addWidget(self.__tocWidget) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | |
2999
28c75409a78f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
61 | self.__tocWidget.customContextMenuRequested.connect( |
28c75409a78f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
62 | self.__showContextMenu) |
5252
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
63 | self.__tocWidget.linkActivated.connect(self.__linkActivated) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | model = self.__tocWidget.model() |
4875
4ee26909ac0d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
66 | model.contentsCreated.connect(self.__contentsCreated) |
4ee26909ac0d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
67 | |
5252
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
68 | @pyqtSlot(QUrl) |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
69 | def __linkActivated(self, url): |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
70 | """ |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
71 | Private slot handling the activation of an entry. |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
72 | |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
73 | @param url URL of the activated entry |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
74 | @type QUrl |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
75 | """ |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
76 | if not url.isEmpty() and url.isValid(): |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
77 | buttons = QApplication.mouseButtons() |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
78 | modifiers = QApplication.keyboardModifiers() |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
79 | |
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
|
80 | if buttons & Qt.MouseButton.MiddleButton: |
5252
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
81 | self.newTab.emit(url) |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
82 | else: |
7269
0c63ea7f94bd
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
83 | if ( |
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
|
84 | modifiers & ( |
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
|
85 | Qt.KeyboardModifier.ControlModifier | |
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
|
86 | Qt.KeyboardModifier.ShiftModifier |
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
|
87 | ) == ( |
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
|
88 | Qt.KeyboardModifier.ControlModifier | |
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
|
89 | Qt.KeyboardModifier.ShiftModifier |
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
|
90 | ) |
7269
0c63ea7f94bd
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
91 | ): |
5252
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
92 | self.newBackgroundTab.emit(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
|
93 | elif modifiers & Qt.KeyboardModifier.ControlModifier: |
5252
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
94 | self.newTab.emit(url) |
8683
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
95 | elif ( |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
96 | modifiers & Qt.KeyboardModifier.ShiftModifier and |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
97 | not self.__internal |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
98 | ): |
5252
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
99 | self.newWindow.emit(url) |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
100 | else: |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
101 | self.openUrl.emit(url) |
321c2003745d
Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5038
diff
changeset
|
102 | |
4875
4ee26909ac0d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
103 | def __contentsCreated(self): |
4ee26909ac0d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
104 | """ |
4ee26909ac0d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
105 | Private slot to be run after the contents was generated. |
4ee26909ac0d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
106 | """ |
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
|
107 | self.__tocWidget.sortByColumn(0, Qt.SortOrder.AscendingOrder) |
4875
4ee26909ac0d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
108 | self.__expandTOC() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | def __expandTOC(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | Private slot to expand the table of contents. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | if self.__expandDepth > -2: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | self.expandToDepth(self.__expandDepth) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | self.__expandDepth = -2 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | def expandToDepth(self, depth): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | Public slot to expand the table of contents to a specific depth. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | @param depth depth to expand to (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | self.__expandDepth = depth |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | if depth == -1: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | self.__tocWidget.expandAll() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | self.__tocWidget.expandToDepth(depth) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | def focusInEvent(self, evt): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | Protected method handling focus in events. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | @param evt reference to the focus event object (QFocusEvent) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | """ |
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
|
136 | if evt.reason() != Qt.FocusReason.MouseFocusReason: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | self.__tocWidget.setFocus() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | def keyPressEvent(self, evt): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | Protected method handling key press events. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | @param evt reference to the key press event (QKeyEvent) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | """ |
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
|
145 | if evt.key() == Qt.Key.Key_Escape: |
487
4d41d03d3d00
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
458
diff
changeset
|
146 | self.escapePressed.emit() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | def syncToContent(self, url): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | Public method to sync the TOC to the displayed page. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | @param url URL of the displayed page (QUrl) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | @return flag indicating a successful synchronization (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | idx = self.__tocWidget.indexOf(url) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | if not idx.isValid(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | return False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | self.__tocWidget.setCurrentIndex(idx) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | return True |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | def __showContextMenu(self, pos): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | Private slot showing the context menu. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | @param pos position to show the menu at (QPoint) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | if not self.__tocWidget.indexAt(pos).isValid(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | |
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
|
170 | model = self.__tocWidget.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
|
171 | itm = model.contentItemAt(self.__tocWidget.currentIndex()) |
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
|
172 | link = itm.url() |
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
|
173 | if link.isEmpty() or not link.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
|
174 | return |
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
|
175 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | menu = QMenu() |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
177 | curTab = menu.addAction(self.tr("Open Link")) |
8683
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
178 | if self.__internal: |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
179 | newTab = menu.addAction(self.tr("Open Link in New Page")) |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
180 | newBackgroundTab = menu.addAction( |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
181 | self.tr("Open Link in Background Page")) |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
182 | else: |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
183 | newTab = menu.addAction(self.tr("Open Link in New Tab")) |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
184 | newBackgroundTab = menu.addAction( |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
185 | self.tr("Open Link in Background Tab")) |
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
186 | 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
|
187 | 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
|
188 | copyLink = menu.addAction(self.tr("Copy URL to Clipboard")) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | menu.move(self.__tocWidget.mapToGlobal(pos)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
191 | act = menu.exec() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | if act == curTab: |
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
|
193 | self.openUrl.emit(link) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | elif act == newTab: |
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
|
195 | self.newTab.emit(link) |
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
|
196 | elif act == newBackgroundTab: |
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
|
197 | self.newBackgroundTab.emit(link) |
8683
e8a907801549
Continued implementing the embedded help viewer widget. Added the QtHelp Table of Contents widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
198 | elif not self.__internal and act == newWindow: |
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
|
199 | 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
|
200 | 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
|
201 | # 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
|
202 | 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
|
203 | 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
|
204 | 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
|
205 | link.toString(), QClipboard.Mode.Selection) |