Add level line flag to allow tracking its marker x-position

history_view
Tyler Goodlet 2022-09-13 17:43:04 -04:00
parent ad2100fe3f
commit 44c6f6dfda
2 changed files with 21 additions and 18 deletions

View File

@ -117,6 +117,7 @@ class LevelMarker(QGraphicsPathItem):
self.get_level = get_level self.get_level = get_level
self._on_paint = on_paint self._on_paint = on_paint
self.scene_x = lambda: chart.marker_right_points()[1] self.scene_x = lambda: chart.marker_right_points()[1]
self.level: float = 0 self.level: float = 0
self.keep_in_view = keep_in_view self.keep_in_view = keep_in_view
@ -152,11 +153,7 @@ class LevelMarker(QGraphicsPathItem):
def w(self) -> float: def w(self) -> float:
return self.path_br().width() return self.path_br().width()
def position_in_view( def position_in_view(self) -> None:
self,
# level: float,
) -> None:
''' '''
Show a pp off-screen indicator for a level label. Show a pp off-screen indicator for a level label.
@ -190,7 +187,6 @@ class LevelMarker(QGraphicsPathItem):
) )
elif level < ymn: # pin to bottom of view elif level < ymn: # pin to bottom of view
self.setPos( self.setPos(
QPointF( QPointF(
x, x,
@ -240,11 +236,12 @@ def qgo_draw_markers(
right_offset: float, right_offset: float,
) -> float: ) -> float:
"""Paint markers in ``pg.GraphicsItem`` style by first '''
Paint markers in ``pg.GraphicsItem`` style by first
removing the view transform for the painter, drawing the markers removing the view transform for the painter, drawing the markers
in scene coords, then restoring the view coords. in scene coords, then restoring the view coords.
""" '''
# paint markers in native coordinate system # paint markers in native coordinate system
orig_tr = p.transform() orig_tr = p.transform()

View File

@ -85,6 +85,7 @@ class LevelLine(pg.InfiniteLine):
self._marker = None self._marker = None
self.only_show_markers_on_hover = only_show_markers_on_hover self.only_show_markers_on_hover = only_show_markers_on_hover
self.show_markers: bool = True # presuming the line is hovered at init self.show_markers: bool = True # presuming the line is hovered at init
self.track_marker_pos: bool = False
# should line go all the way to far end or leave a "margin" # should line go all the way to far end or leave a "margin"
# space for other graphics (eg. L1 book) # space for other graphics (eg. L1 book)
@ -329,7 +330,7 @@ class LevelLine(pg.InfiniteLine):
from pg.. from pg..
''' '''
p.setRenderHint(p.Antialiasing) # p.setRenderHint(p.Antialiasing)
# these are in viewbox coords # these are in viewbox coords
vb_left, vb_right = self._endPoints vb_left, vb_right = self._endPoints
@ -355,14 +356,18 @@ class LevelLine(pg.InfiniteLine):
# order lines.. not sure wtf is up with that. # order lines.. not sure wtf is up with that.
# for now we're just using it on the position line. # for now we're just using it on the position line.
elif self._marker: elif self._marker:
if self.track_marker_pos:
# make the line end at the marker's x pos
line_end = self._marker.pos().x()
# TODO: make this label update part of a scene-aware-marker else:
# composed annotation # TODO: make this label update part of a scene-aware-marker
self._marker.setPos( # composed annotation
QPointF(marker_right, self.scene_y()) self._marker.setPos(
) QPointF(marker_right, self.scene_y())
if hasattr(self._marker, 'label'): )
self._marker.label.update() if hasattr(self._marker, 'label'):
self._marker.label.update()
elif not self.use_marker_margin: elif not self.use_marker_margin:
# basically means **don't** shorten the line with normally # basically means **don't** shorten the line with normally
@ -525,9 +530,10 @@ def level_line(
**kwargs, **kwargs,
) -> LevelLine: ) -> LevelLine:
"""Convenience routine to add a styled horizontal line to a plot. '''
Convenience routine to add a styled horizontal line to a plot.
""" '''
hl_color = color + '_light' if highlight_on_hover else color hl_color = color + '_light' if highlight_on_hover else color
line = LevelLine( line = LevelLine(