eric7/QScintilla/EditorMarkerMap.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8356
68ec9c3d4de5
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a class for showing an editor marker map.
8 """
9
10 from E5Gui.E5MapWidget import E5MapWidget
11
12 import Preferences
13
14
15 class EditorMarkerMap(E5MapWidget):
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