src/eric7/QScintilla/EditorMarkerMap.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
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)

eric ide

mercurial