mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 03:31:50 +02:00
fix(crosshair): emit all crosshair events, not just line coordinates
This commit is contained in:
@ -9,6 +9,8 @@ from qtpy.QtCore import Signal as pyqtSignal
|
|||||||
|
|
||||||
|
|
||||||
class Crosshair(QObject):
|
class Crosshair(QObject):
|
||||||
|
positionChanged = pyqtSignal(tuple)
|
||||||
|
positionClicked = pyqtSignal(tuple)
|
||||||
# Signal for 1D plot
|
# Signal for 1D plot
|
||||||
coordinatesChanged1D = pyqtSignal(tuple)
|
coordinatesChanged1D = pyqtSignal(tuple)
|
||||||
coordinatesClicked1D = pyqtSignal(tuple)
|
coordinatesClicked1D = pyqtSignal(tuple)
|
||||||
@ -164,6 +166,7 @@ class Crosshair(QObject):
|
|||||||
"""
|
"""
|
||||||
pos = event[0]
|
pos = event[0]
|
||||||
self.update_markers()
|
self.update_markers()
|
||||||
|
self.positionChanged.emit((pos.x(), pos.y()))
|
||||||
if self.plot_item.vb.sceneBoundingRect().contains(pos):
|
if self.plot_item.vb.sceneBoundingRect().contains(pos):
|
||||||
mouse_point = self.plot_item.vb.mapSceneToView(pos)
|
mouse_point = self.plot_item.vb.mapSceneToView(pos)
|
||||||
self.v_line.setPos(mouse_point.x())
|
self.v_line.setPos(mouse_point.x())
|
||||||
@ -217,6 +220,7 @@ class Crosshair(QObject):
|
|||||||
if self.plot_item.vb.sceneBoundingRect().contains(event._scenePos):
|
if self.plot_item.vb.sceneBoundingRect().contains(event._scenePos):
|
||||||
mouse_point = self.plot_item.vb.mapSceneToView(event._scenePos)
|
mouse_point = self.plot_item.vb.mapSceneToView(event._scenePos)
|
||||||
x, y = mouse_point.x(), mouse_point.y()
|
x, y = mouse_point.x(), mouse_point.y()
|
||||||
|
self.positionClicked.emit((x, y))
|
||||||
|
|
||||||
if self.is_log_x:
|
if self.is_log_x:
|
||||||
x = 10**x
|
x = 10**x
|
||||||
|
@ -56,6 +56,8 @@ class BECViewBox(pg.ViewBox):
|
|||||||
|
|
||||||
|
|
||||||
class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
||||||
|
crosshair_position_changed = Signal(tuple)
|
||||||
|
crosshair_position_clicked = Signal(tuple)
|
||||||
crosshair_coordinates_changed = Signal(tuple)
|
crosshair_coordinates_changed = Signal(tuple)
|
||||||
crosshair_coordinates_clicked = Signal(tuple)
|
crosshair_coordinates_clicked = Signal(tuple)
|
||||||
USER_ACCESS = [
|
USER_ACCESS = [
|
||||||
@ -328,6 +330,8 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
|||||||
"""Hook the crosshair to all plots."""
|
"""Hook the crosshair to all plots."""
|
||||||
if self.crosshair is None:
|
if self.crosshair is None:
|
||||||
self.crosshair = Crosshair(self.plot_item, precision=3)
|
self.crosshair = Crosshair(self.plot_item, precision=3)
|
||||||
|
self.crosshair.positionChanged.connect(self.crosshair_position_changed)
|
||||||
|
self.crosshair.positionClicked.connect(self.crosshair_position_clicked)
|
||||||
self.crosshair.coordinatesChanged1D.connect(self.crosshair_coordinates_changed)
|
self.crosshair.coordinatesChanged1D.connect(self.crosshair_coordinates_changed)
|
||||||
self.crosshair.coordinatesClicked1D.connect(self.crosshair_coordinates_clicked)
|
self.crosshair.coordinatesClicked1D.connect(self.crosshair_coordinates_clicked)
|
||||||
self.crosshair.coordinatesChanged2D.connect(self.crosshair_coordinates_changed)
|
self.crosshair.coordinatesChanged2D.connect(self.crosshair_coordinates_changed)
|
||||||
@ -336,6 +340,8 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
|||||||
def unhook_crosshair(self) -> None:
|
def unhook_crosshair(self) -> None:
|
||||||
"""Unhook the crosshair from all plots."""
|
"""Unhook the crosshair from all plots."""
|
||||||
if self.crosshair is not None:
|
if self.crosshair is not None:
|
||||||
|
self.crosshair.positionChanged.disconnect(self.crosshair_position_changed)
|
||||||
|
self.crosshair.positionClicked.disconnect(self.crosshair_position_clicked)
|
||||||
self.crosshair.coordinatesChanged1D.disconnect(self.crosshair_coordinates_changed)
|
self.crosshair.coordinatesChanged1D.disconnect(self.crosshair_coordinates_changed)
|
||||||
self.crosshair.coordinatesClicked1D.disconnect(self.crosshair_coordinates_clicked)
|
self.crosshair.coordinatesClicked1D.disconnect(self.crosshair_coordinates_clicked)
|
||||||
self.crosshair.coordinatesChanged2D.disconnect(self.crosshair_coordinates_changed)
|
self.crosshair.coordinatesChanged2D.disconnect(self.crosshair_coordinates_changed)
|
||||||
|
@ -58,8 +58,14 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|||||||
dap_summary_update = Signal(dict)
|
dap_summary_update = Signal(dict)
|
||||||
autorange_signal = Signal()
|
autorange_signal = Signal()
|
||||||
new_scan = Signal()
|
new_scan = Signal()
|
||||||
|
crosshair_position_changed = Signal(tuple)
|
||||||
|
crosshair_position_changed_string = Signal(str)
|
||||||
|
crosshair_position_clicked = Signal(tuple)
|
||||||
|
crosshair_position_clicked_string = Signal(str)
|
||||||
crosshair_coordinates_changed = Signal(tuple)
|
crosshair_coordinates_changed = Signal(tuple)
|
||||||
|
crosshair_coordinates_changed_string = Signal(str)
|
||||||
crosshair_coordinates_clicked = Signal(tuple)
|
crosshair_coordinates_clicked = Signal(tuple)
|
||||||
|
crosshair_coordinates_clicked_string = Signal(str)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -136,6 +142,20 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|||||||
self.waveform.new_scan.connect(self.new_scan)
|
self.waveform.new_scan.connect(self.new_scan)
|
||||||
self.waveform.crosshair_coordinates_changed.connect(self.crosshair_coordinates_changed)
|
self.waveform.crosshair_coordinates_changed.connect(self.crosshair_coordinates_changed)
|
||||||
self.waveform.crosshair_coordinates_clicked.connect(self.crosshair_coordinates_clicked)
|
self.waveform.crosshair_coordinates_clicked.connect(self.crosshair_coordinates_clicked)
|
||||||
|
self.waveform.crosshair_coordinates_changed.connect(
|
||||||
|
self._emit_crosshair_coordinates_changed_string
|
||||||
|
)
|
||||||
|
self.waveform.crosshair_coordinates_clicked.connect(
|
||||||
|
self._emit_crosshair_coordinates_clicked_string
|
||||||
|
)
|
||||||
|
self.waveform.crosshair_position_changed.connect(self.crosshair_position_changed)
|
||||||
|
self.waveform.crosshair_position_clicked.connect(self.crosshair_position_clicked)
|
||||||
|
self.waveform.crosshair_position_changed.connect(
|
||||||
|
self._emit_crosshair_position_changed_string
|
||||||
|
)
|
||||||
|
self.waveform.crosshair_position_clicked.connect(
|
||||||
|
self._emit_crosshair_position_clicked_string
|
||||||
|
)
|
||||||
|
|
||||||
def _hook_actions(self):
|
def _hook_actions(self):
|
||||||
self.toolbar.widgets["save"].action.triggered.connect(self.export)
|
self.toolbar.widgets["save"].action.triggered.connect(self.export)
|
||||||
@ -156,6 +176,22 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|||||||
# lambda: self.save_config(path=None, gui=True)
|
# lambda: self.save_config(path=None, gui=True)
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
@SafeSlot(tuple)
|
||||||
|
def _emit_crosshair_coordinates_changed_string(self, coordinates):
|
||||||
|
self.crosshair_coordinates_changed_string.emit(str(coordinates))
|
||||||
|
|
||||||
|
@SafeSlot(tuple)
|
||||||
|
def _emit_crosshair_coordinates_clicked_string(self, coordinates):
|
||||||
|
self.crosshair_coordinates_clicked_string.emit(str(coordinates))
|
||||||
|
|
||||||
|
@SafeSlot(tuple)
|
||||||
|
def _emit_crosshair_position_changed_string(self, position):
|
||||||
|
self.crosshair_position_changed_string.emit(str(position))
|
||||||
|
|
||||||
|
@SafeSlot(tuple)
|
||||||
|
def _emit_crosshair_position_clicked_string(self, position):
|
||||||
|
self.crosshair_position_clicked_string.emit(str(position))
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
# Dialog Windows
|
# Dialog Windows
|
||||||
###################################
|
###################################
|
||||||
|
Reference in New Issue
Block a user