Allow y-label pinning on cross hair hide
parent
9798689961
commit
887c305d46
|
@ -119,17 +119,18 @@ _corner_anchors = {
|
||||||
'bottom': 1,
|
'bottom': 1,
|
||||||
'right': 1,
|
'right': 1,
|
||||||
}
|
}
|
||||||
|
_y_margin = 5
|
||||||
# XXX: fyi naming here is confusing / opposite to coords
|
# XXX: fyi naming here is confusing / opposite to coords
|
||||||
_corner_margins = {
|
_corner_margins = {
|
||||||
('top', 'left'): (-4, -5),
|
('top', 'left'): (-4, -_y_margin),
|
||||||
('top', 'right'): (4, -5),
|
('top', 'right'): (4, -_y_margin),
|
||||||
|
|
||||||
('bottom', 'left'): (-4, lambda font_size: font_size * 2),
|
('bottom', 'left'): (-4, lambda font_size: font_size + 2*_y_margin),
|
||||||
('bottom', 'right'): (4, lambda font_size: font_size * 2),
|
('bottom', 'right'): (4, lambda font_size: font_size + 2*_y_margin),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# TODO: change this into a ``pg.TextItem``...
|
# TODO: change this into our own ``Label``
|
||||||
class ContentsLabel(pg.LabelItem):
|
class ContentsLabel(pg.LabelItem):
|
||||||
"""Label anchored to a ``ViewBox`` typically for displaying
|
"""Label anchored to a ``ViewBox`` typically for displaying
|
||||||
datum-wise points from the "viewed" contents.
|
datum-wise points from the "viewed" contents.
|
||||||
|
@ -235,6 +236,11 @@ class Cursor(pg.GraphicsObject):
|
||||||
# line width in view coordinates
|
# line width in view coordinates
|
||||||
self._lw = self.pixelWidth() * self.lines_pen.width()
|
self._lw = self.pixelWidth() * self.lines_pen.width()
|
||||||
|
|
||||||
|
# xhair label's color name
|
||||||
|
self.label_color: str = 'default'
|
||||||
|
|
||||||
|
self._y_label_update: bool = True
|
||||||
|
|
||||||
def add_hovered(
|
def add_hovered(
|
||||||
self,
|
self,
|
||||||
item: pg.GraphicsObject,
|
item: pg.GraphicsObject,
|
||||||
|
@ -257,14 +263,12 @@ class Cursor(pg.GraphicsObject):
|
||||||
hl.setCacheMode(QtGui.QGraphicsItem.DeviceCoordinateCache)
|
hl.setCacheMode(QtGui.QGraphicsItem.DeviceCoordinateCache)
|
||||||
hl.hide()
|
hl.hide()
|
||||||
|
|
||||||
label_color = 'default'
|
|
||||||
|
|
||||||
yl = YAxisLabel(
|
yl = YAxisLabel(
|
||||||
chart=plot,
|
chart=plot,
|
||||||
parent=plot.getAxis('right'),
|
parent=plot.getAxis('right'),
|
||||||
digits=digits or self.digits,
|
digits=digits or self.digits,
|
||||||
opacity=_ch_label_opac,
|
opacity=_ch_label_opac,
|
||||||
bg_color=label_color,
|
bg_color=self.label_color,
|
||||||
)
|
)
|
||||||
yl.hide() # on startup if mouse is off screen
|
yl.hide() # on startup if mouse is off screen
|
||||||
|
|
||||||
|
@ -304,7 +308,7 @@ class Cursor(pg.GraphicsObject):
|
||||||
self.xaxis_label = XAxisLabel(
|
self.xaxis_label = XAxisLabel(
|
||||||
parent=self.plots[plot_index].getAxis('bottom'),
|
parent=self.plots[plot_index].getAxis('bottom'),
|
||||||
opacity=_ch_label_opac,
|
opacity=_ch_label_opac,
|
||||||
bg_color=label_color,
|
bg_color=self.label_color,
|
||||||
)
|
)
|
||||||
# place label off-screen during startup
|
# place label off-screen during startup
|
||||||
self.xaxis_label.setPos(self.plots[0].mapFromView(QPointF(0, 0)))
|
self.xaxis_label.setPos(self.plots[0].mapFromView(QPointF(0, 0)))
|
||||||
|
@ -373,7 +377,7 @@ class Cursor(pg.GraphicsObject):
|
||||||
# px perfect...
|
# px perfect...
|
||||||
line_offset = self._lw / 2
|
line_offset = self._lw / 2
|
||||||
|
|
||||||
if iy != last_iy:
|
if iy != last_iy and self._y_label_update:
|
||||||
|
|
||||||
# update y-range items
|
# update y-range items
|
||||||
self.graphics[plot]['hl'].setY(iy + line_offset)
|
self.graphics[plot]['hl'].setY(iy + line_offset)
|
||||||
|
@ -422,16 +426,34 @@ class Cursor(pg.GraphicsObject):
|
||||||
return self.plots[0].boundingRect()
|
return self.plots[0].boundingRect()
|
||||||
|
|
||||||
def show_xhair(self) -> None:
|
def show_xhair(self) -> None:
|
||||||
plot = self.active_plot
|
|
||||||
g = self.graphics[self.active_plot]
|
g = self.graphics[self.active_plot]
|
||||||
# show horiz line and y-label
|
# show horiz line and y-label
|
||||||
g['hl'].show()
|
g['hl'].show()
|
||||||
g['vl'].show()
|
g['vl'].show()
|
||||||
g['yl'].show()
|
|
||||||
|
|
||||||
def hide_xhair(self) -> None:
|
yl = g['yl']
|
||||||
plot = self.active_plot
|
# yl.fg_color = pg.mkColor(hcolor('black'))
|
||||||
|
# yl.bg_color = pg.mkColor(hcolor(self.label_color))
|
||||||
|
yl.show()
|
||||||
|
|
||||||
|
def hide_xhair(
|
||||||
|
self,
|
||||||
|
hide_label: bool = False,
|
||||||
|
y_label_level: float = None,
|
||||||
|
fg_color: str = None,
|
||||||
|
# bg_color: str = 'papas_special',
|
||||||
|
) -> None:
|
||||||
g = self.graphics[self.active_plot]
|
g = self.graphics[self.active_plot]
|
||||||
g['hl'].hide()
|
g['hl'].hide()
|
||||||
g['vl'].hide()
|
g['vl'].hide()
|
||||||
g['yl'].hide()
|
|
||||||
|
yl = g['yl']
|
||||||
|
|
||||||
|
if hide_label:
|
||||||
|
yl.hide()
|
||||||
|
elif y_label_level:
|
||||||
|
yl.update_from_data(0, y_label_level)
|
||||||
|
|
||||||
|
if fg_color is not None:
|
||||||
|
yl.fg_color = pg.mkColor(hcolor(fg_color))
|
||||||
|
yl.bg_color = pg.mkColor(hcolor('papas_special'))
|
||||||
|
|
Loading…
Reference in New Issue