Helpviewer/HelpIndexWidget.py

Sat, 03 Dec 2016 12:49:53 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 03 Dec 2016 12:49:53 +0100
branch
maintenance
changeset 5356
d2bef1e78194
parent 5252
321c2003745d
child 5389
9b1c800daff3
permissions
-rw-r--r--

Re-merged with the default branch.

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
4631
5c1a96925da4 Updated copyright for 2016.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
3 # Copyright (c) 2009 - 2016 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
3145
a9de05d4a22f # __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3060
diff changeset
10 from __future__ import unicode_literals
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2403
diff changeset
11
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
12 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QEvent
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
13 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QLineEdit, QMenu, \
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
14 QDialog, QApplication
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
16
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 class HelpIndexWidget(QWidget):
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 Class implementing a window for showing the QtHelp index.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
501
5c615a85241a Finished porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 487
diff changeset
21 @signal linkActivated(QUrl) emitted when an index entry is activated
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
22 @signal linksActivated(links, keyword) emitted when an index entry
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
23 referencing multiple targets is activated
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 @signal escapePressed() emitted when the ESC key was pressed
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: 482
diff changeset
26 linkActivated = pyqtSignal(QUrl)
4d41d03d3d00 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 482
diff changeset
27 linksActivated = pyqtSignal(dict, str)
4d41d03d3d00 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 482
diff changeset
28 escapePressed = pyqtSignal()
4d41d03d3d00 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 482
diff changeset
29
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
30 def __init__(self, engine, mainWindow, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
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 @param engine reference to the help engine (QHelpEngine)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @param mainWindow reference to the main window object (QMainWindow)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param parent reference to the parent widget (QWidget)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2403
diff changeset
38 super(HelpIndexWidget, self).__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.__engine = engine
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.__mw = mainWindow
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.__searchEdit = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.__index = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.__layout = QVBoxLayout(self)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
47 label = QLabel(self.tr("&Look for:"))
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2999
diff changeset
48 self.__layout.addWidget(label)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__searchEdit = QLineEdit()
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2999
diff changeset
51 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
52 self.__searchEdit.textChanged.connect(self.__filterIndices)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__searchEdit.installEventFilter(self)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__layout.addWidget(self.__searchEdit)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__index = self.__engine.indexWidget()
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
57 self.__index.setContextMenuPolicy(Qt.CustomContextMenu)
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
58 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
59 self.__disableSearchEdit)
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
60 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
61 self.__enableSearchEdit)
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
62 self.__index.linkActivated.connect(self.__linkActivated)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
63 self.__index.linksActivated.connect(self.__linksActivated)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
64 self.__index.customContextMenuRequested.connect(
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
65 self.__showContextMenu)
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
66 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
67 self.__index.activateCurrentItem)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__layout.addWidget(self.__index)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
70 @pyqtSlot(QUrl, str)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
71 def __linkActivated(self, url, 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
72 """
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
73 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
74
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
75 @param url URL of the selected entry
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
76 @type QUrl
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
77 @param keyword keyword for the URL
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
78 @type str
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
79 @keyparam modifiers keyboard modifiers
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
80 @type Qt.KeyboardModifiers or None
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
81 """
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
82 if modifiers is None:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
83 modifiers = QApplication.keyboardModifiers()
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
84 if not url.isEmpty() and url.isValid():
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
85 if modifiers & Qt.ControlModifier:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
86 self.__mw.newTab(url)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
87 else:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
88 self.linkActivated.emit(url)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
89
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
90 def __linksActivated(self, links, keyword):
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
91 """
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
92 Private slot to handle the activation of an entry with multiple links.
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
93
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
94 @param links dictionary containing the links
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
95 @type dict of key:str and value:QUrl
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
96 @param keyword keyword for the entry
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
97 @type str
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
98 """
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
99 modifiers = QApplication.keyboardModifiers()
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
100 if len(links) == 1:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
101 url = QUrl(links[list(links.keys())[0]])
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
102 else:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
103 url = self.__selectLink(links, keyword)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
104 self.__linkActivated(url, keyword, modifiers)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
105
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
106 def __selectLink(self, links, keyword):
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
107 """
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
108 Private method to give the user a chance to select among the
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
109 returned links.
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
110
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
111 @param links dictionary of document title and URL to select from
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
112 @type dictionary of str (key) and QUrl (value)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
113 @param keyword keyword for the link set
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
114 @type str
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
115 @return selected link
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
116 @rtype QUrl
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
117 """
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
118 link = QUrl()
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
119 from .HelpTopicDialog import HelpTopicDialog
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
120 dlg = HelpTopicDialog(self, keyword, links)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
121 if dlg.exec_() == QDialog.Accepted:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
122 link = dlg.link()
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
123 return link
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
124
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 def __filterIndices(self, filter):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 Private slot to filter the indices according to the given filter.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 @param filter filter to be used (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 if '*' in filter:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 self.__index.filterIndices(filter, filter)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 self.__index.filterIndices(filter)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 def __enableSearchEdit(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 Private slot to enable the search edit.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.__searchEdit.setEnabled(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.__filterIndices(self.__searchEdit.text())
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 def __disableSearchEdit(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 Private slot to enable the search edit.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 self.__searchEdit.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 def focusInEvent(self, evt):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 Protected method handling focus in events.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 @param evt reference to the focus event object (QFocusEvent)
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 if evt.reason() != Qt.MouseFocusReason:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.__searchEdit.selectAll()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.__searchEdit.setFocus()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 def eventFilter(self, watched, event):
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 Public method called to filter the event queue.
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 @param watched the QObject being watched (QObject)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 @param event the event that occurred (QEvent)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 @return flag indicating whether the event was handled (boolean)
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 self.__searchEdit and watched == self.__searchEdit and \
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 event.type() == QEvent.KeyPress:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 idx = self.__index.currentIndex()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 if event.key() == Qt.Key_Up:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 idx = self.__index.model().index(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 idx.row() - 1, idx.column(), idx.parent())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 if idx.isValid():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.__index.setCurrentIndex(idx)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 elif event.key() == Qt.Key_Down:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 idx = self.__index.model().index(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 idx.row() + 1, idx.column(), idx.parent())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 if idx.isValid():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 self.__index.setCurrentIndex(idx)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 elif event.key() == Qt.Key_Escape:
487
4d41d03d3d00 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 482
diff changeset
181 self.escapePressed.emit()
0
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 return QWidget.eventFilter(self, watched, event)
5252
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
184
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
185 def __showContextMenu(self, pos):
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
186 """
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
187 Private slot showing the context menu.
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
188
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
189 @param pos position to show the menu at (QPoint)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
190 """
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
191 idx = self.__index.indexAt(pos)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
192 if idx.isValid():
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
193 menu = QMenu()
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
194 curTab = menu.addAction(self.tr("Open Link"))
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
195 newTab = menu.addAction(self.tr("Open Link in New Tab"))
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
196 menu.move(self.__index.mapToGlobal(pos))
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
197
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
198 act = menu.exec_()
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
199 model = self.__index.model()
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
200 if model is not None:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
201 keyword = model.data(idx, Qt.DisplayRole)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
202 links = model.linksForKeyword(keyword)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
203 if len(links) == 1:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
204 link = QUrl(links[list(links.keys())[0]])
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
205 else:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
206 link = self.__selectLink(links, keyword)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
207
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
208 if not link.isEmpty() and link.isValid():
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
209 if act == curTab:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
210 self.linkActivated.emit(link)
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
211 elif act == newTab:
321c2003745d Optimized the QtHelp handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
212 self.__mw.newTab(link)

eric ide

mercurial