|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2014 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing a class for showing an editor marker map. |
|
8 """ |
|
9 |
|
10 from EricWidgets.EricMapWidget import EricMapWidget |
|
11 |
|
12 import Preferences |
|
13 |
|
14 |
|
15 class EditorMarkerMap(EricMapWidget): |
|
16 """ |
|
17 Class implementing a class for showing an editor marker map. |
|
18 """ |
|
19 def __init__(self, parent=None): |
|
20 """ |
|
21 Constructor |
|
22 |
|
23 @param parent reference to the parent widget (QWidget) |
|
24 """ |
|
25 super().__init__(parent) |
|
26 |
|
27 self.setWhatsThis(self.tr( |
|
28 """<b>Editor Map</b>""" |
|
29 """<p>This shows a 'map' of the editor. The visible area is""" |
|
30 """ highlighted by the box and all markers like bookmarks,""" |
|
31 """ breakpoints, errors or changed lines are indicated""" |
|
32 """ by differently colored lines configurable via the""" |
|
33 """ Editor\u279dStyle page of the configuration dialog.</p>""" |
|
34 )) |
|
35 |
|
36 # initialize colors for various markers |
|
37 self.initColors() |
|
38 |
|
39 def initColors(self): |
|
40 """ |
|
41 Public method to initialize the colors. |
|
42 """ |
|
43 self.setBackgroundColor( |
|
44 Preferences.getEditorColour("MarkerMapBackground")) |
|
45 |
|
46 self.__bookmarkColor = Preferences.getEditorColour("BookmarksMap") |
|
47 self.__errorColor = Preferences.getEditorColour("ErrorsMap") |
|
48 self.__warningColor = Preferences.getEditorColour("WarningsMap") |
|
49 self.__breakpointColor = Preferences.getEditorColour("BreakpointsMap") |
|
50 self.__taskColor = Preferences.getEditorColour("TasksMap") |
|
51 self.__coverageColor = Preferences.getEditorColour("CoverageMap") |
|
52 self.__changeColor = Preferences.getEditorColour("ChangesMap") |
|
53 self.__currentLineMarker = Preferences.getEditorColour("CurrentMap") |
|
54 self.__searchMarkerColor = Preferences.getEditorColour( |
|
55 "SearchMarkersMap") |
|
56 self.__vcsConflictMarkerColor = Preferences.getEditorColour( |
|
57 "VcsConflictMarkersMap") |
|
58 self.update() |
|
59 |
|
60 def __drawIndicator(self, line, painter, color): |
|
61 """ |
|
62 Private method to draw an indicator. |
|
63 |
|
64 @param line line number (integer) |
|
65 @param painter reference to the painter (QPainter) |
|
66 @param color color to be used (QColor) |
|
67 """ |
|
68 displayLine = self._master.getVisibleLineFromDocLine(line) |
|
69 position = self.value2Position(displayLine) |
|
70 painter.setPen(color) |
|
71 painter.setBrush(color) |
|
72 painter.drawRect(self.generateIndicatorRect(position)) |
|
73 |
|
74 def _paintIt(self, painter): |
|
75 """ |
|
76 Protected method for painting the widget's indicators. |
|
77 |
|
78 @param painter reference to the painter object (QPainter) |
|
79 """ |
|
80 # draw indicators in reverse order of priority |
|
81 |
|
82 # 1. changes |
|
83 if Preferences.getEditor("ShowMarkerChanges"): |
|
84 for line in self._master.getChangeLines(): |
|
85 self.__drawIndicator(line, painter, self.__changeColor) |
|
86 |
|
87 # 2. coverage |
|
88 if Preferences.getEditor("ShowMarkerCoverage"): |
|
89 for line in self._master.getCoverageLines(): |
|
90 self.__drawIndicator(line, painter, self.__coverageColor) |
|
91 |
|
92 # 3. tasks |
|
93 for line in self._master.getTaskLines(): |
|
94 self.__drawIndicator(line, painter, self.__taskColor) |
|
95 |
|
96 # 4. breakpoints |
|
97 for line in self._master.getBreakpointLines(): |
|
98 self.__drawIndicator(line, painter, self.__breakpointColor) |
|
99 |
|
100 # 5. bookmarks |
|
101 for line in self._master.getBookmarkLines(): |
|
102 self.__drawIndicator(line, painter, self.__bookmarkColor) |
|
103 |
|
104 # 6. search markers |
|
105 if Preferences.getEditor("ShowMarkerSearch"): |
|
106 for line in self._master.getSearchIndicatorLines(): |
|
107 self.__drawIndicator(line, painter, self.__searchMarkerColor) |
|
108 |
|
109 # 7. warnings |
|
110 for line in self._master.getWarningLines(): |
|
111 self.__drawIndicator(line, painter, self.__warningColor) |
|
112 |
|
113 # 8. VCS conflict markers |
|
114 for line in self._master.getVcsConflictMarkerLines(): |
|
115 self.__drawIndicator(line, painter, self.__vcsConflictMarkerColor) |
|
116 |
|
117 # 9. errors |
|
118 for line in self._master.getSyntaxErrorLines(): |
|
119 self.__drawIndicator(line, painter, self.__errorColor) |
|
120 |
|
121 # 10. current line |
|
122 self.__drawIndicator(self._master.getCursorPosition()[0], painter, |
|
123 self.__currentLineMarker) |