Tue, 02 Mar 2021 17:17:09 +0100
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
7923
91e843545d9a
Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7750
diff
changeset
|
3 | # Copyright (c) 2020 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing an outline widget for source code navigation of the editor. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
10 | from PyQt5.QtCore import pyqtSlot, Qt, QCoreApplication, QModelIndex, QPoint |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
11 | from PyQt5.QtWidgets import QTreeView, QAbstractItemView, QMenu, QApplication |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from UI.BrowserSortFilterProxyModel import BrowserSortFilterProxyModel |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
14 | from UI.BrowserModel import ( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
15 | BrowserImportsItem, BrowserGlobalsItem, BrowserClassAttributeItem, |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
16 | BrowserImportItem |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
17 | ) |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | from .EditorOutlineModel import EditorOutlineModel |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
21 | import Preferences |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
23 | |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | class EditorOutlineView(QTreeView): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | Class implementing an outline widget for source code navigation of the |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | editor. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
29 | def __init__(self, editor, populate=True, parent=None): |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | Constructor |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @param editor reference to the editor widget |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @type Editor |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
35 | @param populate flag indicating to populate the outline |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
36 | @type bool |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @param parent reference to the parent widget |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | @type QWidget |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | super(EditorOutlineView, self).__init__(parent) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
42 | self.__model = EditorOutlineModel(editor, populate=populate) |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | self.__sortModel = BrowserSortFilterProxyModel() |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.__sortModel.setSourceModel(self.__model) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.setModel(self.__sortModel) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.setRootIsDecorated(True) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | self.setAlternatingRowColors(True) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | header = self.header() |
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 | header.setSortIndicator(0, Qt.SortOrder.AscendingOrder) |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | header.setSortIndicatorShown(True) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | header.setSectionsClickable(True) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
54 | self.setHeaderHidden(True) |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.setSortingEnabled(True) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
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
|
58 | self.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection) |
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
|
59 | self.setSelectionBehavior( |
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
|
60 | QAbstractItemView.SelectionBehavior.SelectRows) |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
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
|
62 | self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
63 | self.customContextMenuRequested.connect(self.__contextMenuRequested) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
64 | self.__createPopupMenus() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
65 | |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | self.activated.connect(self.__gotoItem) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | self.expanded.connect(self.__resizeColumns) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | self.collapsed.connect(self.__resizeColumns) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | self.__resizeColumns() |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | self.__expandedNames = [] |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | self.__currentItemName = "" |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
74 | self.__signalsConnected = False |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
75 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
76 | def setActive(self, active): |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
77 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
78 | Public method to activate or deactivate the outline view. |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
79 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
80 | @param active flag indicating the requested action |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
81 | @type bool |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
82 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
83 | if active and not self.__signalsConnected: |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
84 | editor = self.__model.editor() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
85 | editor.refreshed.connect(self.repopulate) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
86 | editor.languageChanged.connect(self.__editorLanguageChanged) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
87 | editor.editorRenamed.connect(self.__editorRenamed) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
88 | editor.cursorLineChanged.connect(self.__editorCursorLineChanged) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
89 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
90 | self.__model.repopulate() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
91 | self.__resizeColumns() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
92 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
93 | line, _ = editor.getCursorPosition() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
94 | self.__editorCursorLineChanged(line) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
95 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
96 | elif not active and self.__signalsConnected: |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
97 | editor = self.__model.editor() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
98 | editor.refreshed.disconnect(self.repopulate) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
99 | editor.languageChanged.disconnect(self.__editorLanguageChanged) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
100 | editor.editorRenamed.disconnect(self.__editorRenamed) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
101 | editor.cursorLineChanged.disconnect(self.__editorCursorLineChanged) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
102 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
103 | self.__model.clear() |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
105 | @pyqtSlot() |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | def __resizeColumns(self): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | Private slot to resize the view when items get expanded or collapsed. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | self.resizeColumnToContents(0) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | def isPopulated(self): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | Public method to check, if the model is populated. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | @return flag indicating a populated model |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | @rtype bool |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | return self.__model.isPopulated() |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
121 | @pyqtSlot() |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | def repopulate(self): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | Public slot to repopulate the model. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | if self.isPopulated(): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | self.__prepareRepopulate() |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | self.__model.repopulate() |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | self.__completeRepopulate() |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
131 | @pyqtSlot() |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | def __prepareRepopulate(self): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | Private slot to prepare to repopulate the outline view. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | itm = self.__currentItem() |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | if itm is not None: |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | self.__currentItemName = itm.data(0) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | self.__expandedNames = [] |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | childIndex = self.model().index(0, 0) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | while childIndex.isValid(): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | if self.isExpanded(childIndex): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | self.__expandedNames.append( |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | self.model().item(childIndex).data(0)) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | childIndex = self.indexBelow(childIndex) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
149 | @pyqtSlot() |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | def __completeRepopulate(self): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | Private slot to complete the repopulate of the outline view. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | childIndex = self.model().index(0, 0) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | while childIndex.isValid(): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | name = self.model().item(childIndex).data(0) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | if (self.__currentItemName and self.__currentItemName == name): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | self.setCurrentIndex(childIndex) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | if name in self.__expandedNames: |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | self.setExpanded(childIndex, True) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | childIndex = self.indexBelow(childIndex) |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
162 | self.__resizeColumns() |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | self.__expandedNames = [] |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | self.__currentItemName = "" |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | def isSupportedLanguage(self, language): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | Public method to check, if outlining a given language is supported. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | @param language source language to be checked |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | @type str |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | @return flag indicating support |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | @rtype bool |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | return language in EditorOutlineModel.SupportedLanguages |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
178 | @pyqtSlot(QModelIndex) |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | def __gotoItem(self, index): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | Private slot to set the editor cursor. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | @param index index of the item to set the cursor for |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | @type QModelIndex |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | if index.isValid(): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | itm = self.model().item(index) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | if itm: |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | try: |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | lineno = itm.lineno() |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
191 | self.__model.editor().gotoLine(lineno) |
7685
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | except AttributeError: |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | # don't care |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | pass |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | def mouseDoubleClickEvent(self, mouseEvent): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | Protected method of QAbstractItemView. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | Reimplemented to disable expanding/collapsing of items when |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | double-clicking. Instead the double-clicked entry is opened. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | @param mouseEvent the mouse event (QMouseEvent) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | index = self.indexAt(mouseEvent.pos()) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | if index.isValid(): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | itm = self.model().item(index) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | if isinstance(itm, (BrowserImportsItem, BrowserGlobalsItem)): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | self.setExpanded(index, not self.isExpanded(index)) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | else: |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | self.__gotoItem(index) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | def __currentItem(self): |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | Private method to get a reference to the current item. |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | @return reference to the current item |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | @rtype BrowserItem |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | """ |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | itm = self.model().item(self.currentIndex()) |
0b6e8c0d6403
Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | return itm |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
222 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
223 | ####################################################################### |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
224 | ## Context menu methods below |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
225 | ####################################################################### |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
226 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
227 | def __createPopupMenus(self): |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
228 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
229 | Private method to generate the various popup menus. |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
230 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
231 | # create the popup menu for general use |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
232 | self.__menu = QMenu(self) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
233 | self.__menu.addAction( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
234 | QCoreApplication.translate('EditorOutlineView', 'Goto'), |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
235 | self.__goto) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
236 | self.__menu.addSeparator() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
237 | self.__menu.addAction( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
238 | QCoreApplication.translate('EditorOutlineView', 'Refresh'), |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
239 | self.repopulate) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
240 | self.__menu.addSeparator() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
241 | self.__menu.addAction( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
242 | QCoreApplication.translate( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
243 | 'EditorOutlineView', 'Copy Path to Clipboard'), |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
244 | self.__copyToClipboard) |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
245 | self.__menu.addSeparator() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
246 | self.__menu.addAction( |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
247 | QCoreApplication.translate( |
7692
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
248 | 'EditorOutlineView', 'Expand All'), |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
249 | lambda: self.expandToDepth(-1)) |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
250 | self.__menu.addAction( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
251 | QCoreApplication.translate( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
252 | 'EditorOutlineView', 'Collapse All'), |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
253 | self.collapseAll) |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
254 | self.__menu.addSeparator() |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
255 | self.__menu.addAction( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
256 | QCoreApplication.translate( |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
257 | 'EditorOutlineView', 'Increment Width'), |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
258 | self.__incWidth) |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
259 | self.__decWidthAct = self.__menu.addAction( |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
260 | QCoreApplication.translate( |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
261 | 'EditorOutlineView', 'Decrement Width'), |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
262 | self.__decWidth) |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
263 | self.__menu.addAction( |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
264 | QCoreApplication.translate( |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
265 | 'EditorOutlineView', 'Set Default Width'), |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
266 | self.__defaultWidth) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
267 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
268 | # create the attribute/import menu |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
269 | self.__gotoMenu = QMenu( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
270 | QCoreApplication.translate('EditorOutlineView', "Goto"), |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
271 | self) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
272 | self.__gotoMenu.aboutToShow.connect(self.__showGotoMenu) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
273 | self.__gotoMenu.triggered.connect(self.__gotoAttribute) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
274 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
275 | self.__attributeMenu = QMenu(self) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
276 | self.__attributeMenu.addMenu(self.__gotoMenu) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
277 | self.__attributeMenu.addSeparator() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
278 | self.__attributeMenu.addAction( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
279 | QCoreApplication.translate('EditorOutlineView', 'Refresh'), |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
280 | self.repopulate) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
281 | self.__attributeMenu.addSeparator() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
282 | self.__attributeMenu.addAction( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
283 | QCoreApplication.translate( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
284 | 'EditorOutlineView', 'Copy Path to Clipboard'), |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
285 | self.__copyToClipboard) |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
286 | self.__attributeMenu.addSeparator() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
287 | self.__attributeMenu.addAction( |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
288 | QCoreApplication.translate( |
7692
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
289 | 'EditorOutlineView', 'Expand All'), |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
290 | lambda: self.expandToDepth(-1)) |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
291 | self.__attributeMenu.addAction( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
292 | QCoreApplication.translate( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
293 | 'EditorOutlineView', 'Collapse All'), |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
294 | self.collapseAll) |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
295 | self.__attributeMenu.addSeparator() |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
296 | self.__attributeMenu.addAction( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
297 | QCoreApplication.translate( |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
298 | 'EditorOutlineView', 'Increment Width'), |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
299 | self.__incWidth) |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
300 | self.__attributeDecWidthAct = self.__attributeMenu.addAction( |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
301 | QCoreApplication.translate( |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
302 | 'EditorOutlineView', 'Decrement Width'), |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
303 | self.__decWidth) |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
304 | self.__attributeMenu.addAction( |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
305 | QCoreApplication.translate( |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
306 | 'EditorOutlineView', 'Set Default Width'), |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
307 | self.__defaultWidth) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
308 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
309 | # create the background menu |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
310 | self.__backMenu = QMenu(self) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
311 | self.__backMenu.addAction( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
312 | QCoreApplication.translate('EditorOutlineView', 'Refresh'), |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
313 | self.repopulate) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
314 | self.__backMenu.addSeparator() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
315 | self.__backMenu.addAction( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
316 | QCoreApplication.translate( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
317 | 'EditorOutlineView', 'Copy Path to Clipboard'), |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
318 | self.__copyToClipboard) |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
319 | self.__backMenu.addSeparator() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
320 | self.__backMenu.addAction( |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
321 | QCoreApplication.translate( |
7692
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
322 | 'EditorOutlineView', 'Expand All'), |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
323 | lambda: self.expandToDepth(-1)) |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
324 | self.__backMenu.addAction( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
325 | QCoreApplication.translate( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
326 | 'EditorOutlineView', 'Collapse All'), |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
327 | self.collapseAll) |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
328 | self.__backMenu.addSeparator() |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
329 | self.__backMenu.addAction( |
94f0017f9372
EditorOutline: added actions to collapse/expand all entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7690
diff
changeset
|
330 | QCoreApplication.translate( |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
331 | 'EditorOutlineView', 'Increment Width'), |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
332 | self.__incWidth) |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
333 | self.__backDecWidthAct = self.__backMenu.addAction( |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
334 | QCoreApplication.translate( |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
335 | 'EditorOutlineView', 'Decrement Width'), |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
336 | self.__decWidth) |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
337 | self.__backMenu.addAction( |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
338 | QCoreApplication.translate( |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
339 | 'EditorOutlineView', 'Set Default Width'), |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
340 | self.__defaultWidth) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
341 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
342 | @pyqtSlot(QPoint) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
343 | def __contextMenuRequested(self, coord): |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
344 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
345 | Private slot to show the context menu. |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
346 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
347 | @param coord position of the mouse pointer |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
348 | @type QPoint |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
349 | """ |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
350 | index = self.indexAt(coord) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
351 | coord = self.mapToGlobal(coord) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
352 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
353 | decWidthEnable = ( |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
354 | self.maximumWidth() != |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
355 | 2 * Preferences.getEditor("SourceOutlineStepSize") |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
356 | ) |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
357 | |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
358 | if index.isValid(): |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
359 | self.setCurrentIndex(index) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
360 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
361 | itm = self.model().item(index) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
362 | if isinstance( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
363 | itm, (BrowserClassAttributeItem, BrowserImportItem) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
364 | ): |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
365 | self.__attributeDecWidthAct.setEnabled(decWidthEnable) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
366 | self.__attributeMenu.popup(coord) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
367 | else: |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
368 | self.__decWidthAct.setEnabled(decWidthEnable) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
369 | self.__menu.popup(coord) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
370 | else: |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
371 | self.__backDecWidthAct.setEnabled(decWidthEnable) |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
372 | self.__backMenu.popup(coord) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
373 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
374 | @pyqtSlot() |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
375 | def __showGotoMenu(self): |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
376 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
377 | Private slot to prepare the goto submenu of the attribute menu. |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
378 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
379 | self.__gotoMenu.clear() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
380 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
381 | itm = self.model().item(self.currentIndex()) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
382 | try: |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
383 | linenos = itm.linenos() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
384 | except AttributeError: |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
385 | try: |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
386 | linenos = [itm.lineno()] |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
387 | except AttributeError: |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
388 | return |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
389 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
390 | for lineno in sorted(linenos): |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
391 | act = self.__gotoMenu.addAction( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
392 | QCoreApplication.translate( |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
393 | 'EditorOutlineView', "Line {0}").format(lineno)) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
394 | act.setData(lineno) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
395 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
396 | ####################################################################### |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
397 | ## Context menu handlers below |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
398 | ####################################################################### |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
399 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
400 | @pyqtSlot() |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
401 | def __gotoAttribute(self, act): |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
402 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
403 | Private slot to handle the selection of the goto menu. |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
404 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
405 | @param act reference to the action (E5Action) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
406 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
407 | lineno = act.data() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
408 | self.__model.editor().gotoLine(lineno) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
409 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
410 | @pyqtSlot() |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
411 | def __goto(self): |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
412 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
413 | Private slot to move the editor cursor to the line of the context item. |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
414 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
415 | self.__gotoItem(self.currentIndex()) |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
416 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
417 | @pyqtSlot() |
7686
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
418 | def __copyToClipboard(self): |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
419 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
420 | Private slot to copy the file name of the editor to the clipboard. |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
421 | """ |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
422 | fn = self.__model.fileName() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
423 | |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
424 | if fn: |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
425 | cb = QApplication.clipboard() |
379d402162ca
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7685
diff
changeset
|
426 | cb.setText(fn) |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
427 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
428 | @pyqtSlot() |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
429 | def __incWidth(self): |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
430 | """ |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
431 | Private slot to increment the width of the outline. |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
432 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
433 | self.setMaximumWidth( |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
434 | self.maximumWidth() + |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
435 | Preferences.getEditor("SourceOutlineStepSize") |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
436 | ) |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
437 | self.updateGeometry() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
438 | |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
439 | @pyqtSlot() |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
440 | def __decWidth(self): |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
441 | """ |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
442 | Private slot to decrement the width of the outline. |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
443 | """ |
7750
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
444 | stepSize = Preferences.getEditor("SourceOutlineStepSize") |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
445 | newWidth = self.maximumWidth() - stepSize |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
446 | |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
447 | self.setMaximumWidth(max(newWidth, 2 * stepSize)) |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
448 | self.updateGeometry() |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
449 | |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
450 | @pyqtSlot() |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
451 | def __defaultWidth(self): |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
452 | """ |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
453 | Private slot to set the outline to the default width. |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
454 | """ |
b16930e5baa9
Editor Outline Viewer: made the width step size configurable and optimized the context menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7749
diff
changeset
|
455 | self.setMaximumWidth(Preferences.getEditor("SourceOutlineWidth")) |
7690
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
456 | self.updateGeometry() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
457 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
458 | ####################################################################### |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
459 | ## Methods handling editor signals below |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
460 | ####################################################################### |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
461 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
462 | @pyqtSlot() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
463 | def __editorLanguageChanged(self): |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
464 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
465 | Private slot handling a change of the associated editors source code |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
466 | language. |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
467 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
468 | self.__model.repopulate() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
469 | self.__resizeColumns() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
470 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
471 | @pyqtSlot() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
472 | def __editorRenamed(self): |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
473 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
474 | Private slot handling a renaming of the associated editor. |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
475 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
476 | self.__model.repopulate() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
477 | self.__resizeColumns() |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
478 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
479 | @pyqtSlot(int) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
480 | def __editorCursorLineChanged(self, lineno): |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
481 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
482 | Private method to highlight a node given its line number. |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
483 | |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
484 | @param lineno zero based line number of the item |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
485 | @type int |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
486 | """ |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
487 | sindex = self.__model.itemIndexByLine(lineno + 1) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
488 | if sindex.isValid(): |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
489 | index = self.model().mapFromSource(sindex) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
490 | if index.isValid(): |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
491 | self.setCurrentIndex(index) |
a59680062837
Continued implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7686
diff
changeset
|
492 | self.scrollTo(index) |
7696
f7e2cb3fc9d4
EditorOutline: reset the current item marker when no item could be found matching the cursor position.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7692
diff
changeset
|
493 | else: |
f7e2cb3fc9d4
EditorOutline: reset the current item marker when no item could be found matching the cursor position.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7692
diff
changeset
|
494 | self.setCurrentIndex(QModelIndex()) |