eric6/QScintilla/EditorMarkerMap.py

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

eric ide

mercurial