Sun, 31 Dec 2017 16:52:09 +0100
Updated copyright for 2018.
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
6048
82ad8ec9548c
Updated copyright for 2018.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6031
diff
changeset
|
3 | # Copyright (c) 2014 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a class for showing an editor marker map. |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
3484
645c12de6b0c
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3341
diff
changeset
|
10 | from __future__ import unicode_literals |
645c12de6b0c
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3341
diff
changeset
|
11 | |
3341
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
12 | from E5Gui.E5MapWidget import E5MapWidget |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
3341
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
14 | import Preferences |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | class EditorMarkerMap(E5MapWidget): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | """ |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | Class implementing a class for showing an editor marker map. |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | def __init__(self, parent=None): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | Constructor |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | @param parent reference to the parent widget (QWidget) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
3484
645c12de6b0c
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3341
diff
changeset
|
27 | super(EditorMarkerMap, self).__init__(parent) |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | |
3913
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
29 | self.setWhatsThis(self.tr( |
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
30 | """<b>Editor Map</b>""" |
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
31 | """<p>This shows a 'map' of the editor. The visible area is""" |
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
32 | """ highlighted by the box and all markers like bookmarks,""" |
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
33 | """ breakpoints, errors or changed lines are indicated""" |
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
34 | """ by differently colored lines configurable via the""" |
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
35 | """ Editor\u279dStyle page of the configuration dialog.</p>""" |
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
36 | )) |
9d13be0ff3d2
Added a "What's This" help to the marker map widget of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
37 | |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | # initialize colors for various markers |
3341
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
39 | self.initColors() |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
40 | |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
41 | def initColors(self): |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
42 | """ |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
43 | Public method to initialize the colors. |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
44 | """ |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
45 | self.setBackgroundColor( |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
46 | Preferences.getEditorColour("MarkerMapBackground")) |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
47 | |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
48 | self.__bookmarkColor = Preferences.getEditorColour("BookmarksMap") |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
49 | self.__errorColor = Preferences.getEditorColour("ErrorsMap") |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
50 | self.__warningColor = Preferences.getEditorColour("WarningsMap") |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
51 | self.__breakpointColor = Preferences.getEditorColour("BreakpointsMap") |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
52 | self.__taskColor = Preferences.getEditorColour("TasksMap") |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
53 | self.__coverageColor = Preferences.getEditorColour("CoverageMap") |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
54 | self.__changeColor = Preferences.getEditorColour("ChangesMap") |
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
55 | self.__currentLineMarker = Preferences.getEditorColour("CurrentMap") |
4304
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
56 | self.__searchMarkerColor = Preferences.getEditorColour( |
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
57 | "SearchMarkersMap") |
3341
7c015811fc4d
Finished implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3339
diff
changeset
|
58 | self.update() |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | def __drawIndicator(self, line, painter, color): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | """ |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | Private method to draw an indicator. |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | @param line line number (integer) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | @param painter reference to the painter (QPainter) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | @param color color to be used (QColor) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | """ |
6031
ccab25598d90
Fixed an issue drawing the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
68 | displayLine = self._master.getVisibleLineFromDocLine(line) |
ccab25598d90
Fixed an issue drawing the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
69 | position = self.value2Position(displayLine) |
3339
d0a603f1bfcd
Added support for wheel events and mouse move events to the map widget and made some adjustments to the representation (colors).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3329
diff
changeset
|
70 | painter.setPen(color) |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | painter.setBrush(color) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | painter.drawRect(self.generateIndicatorRect(position)) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | def _paintIt(self, painter): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | """ |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | Protected method for painting the widget's indicators. |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | @param painter reference to the painter object (QPainter) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | """ |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | # draw indicators in reverse order of priority |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | # 1. changes |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | for line in self._master.getChangeLines(): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | self.__drawIndicator(line, painter, self.__changeColor) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | # 2. coverage |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | for line in self._master.getCoverageLines(): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | self.__drawIndicator(line, painter, self.__coverageColor) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | # 3. tasks |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | for line in self._master.getTaskLines(): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | self.__drawIndicator(line, painter, self.__taskColor) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | # 4. breakpoints |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | for line in self._master.getBreakpointLines(): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | self.__drawIndicator(line, painter, self.__breakpointColor) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | # 5. bookmarks |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | for line in self._master.getBookmarkLines(): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | self.__drawIndicator(line, painter, self.__bookmarkColor) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | |
4304
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
102 | # 6. search markers |
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
103 | for line in self._master.getSearchIndicatorLines(): |
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
104 | self.__drawIndicator(line, painter, self.__searchMarkerColor) |
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
105 | |
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
106 | # 7. warnings |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | for line in self._master.getWarningLines(): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | self.__drawIndicator(line, painter, self.__warningColor) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
4304
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
110 | # 8. errors |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | for line in self._master.getSyntaxErrorLines(): |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | self.__drawIndicator(line, painter, self.__errorColor) |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | |
4304
f85965649066
Added the search markers to the marker map of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
114 | # 9. current line |
3329
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | self.__drawIndicator(self._master.getCursorPosition()[0], painter, |
1ee38e29ed4f
Continued implementing support for a marker map in the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | self.__currentLineMarker) |