1
0
forked from M-Labs/artiq

waveform: reset cursor onDataChange

This commit is contained in:
Simon Renblad 2024-02-16 15:38:28 +08:00 committed by Sébastien Bourdeauducq
parent 6ed6fb0bce
commit 1749fa661f

View File

@ -133,7 +133,7 @@ class _BackgroundItem(pg.GraphicsWidgetAnchor, pg.GraphicsWidget):
class _BaseWaveform(pg.PlotWidget): class _BaseWaveform(pg.PlotWidget):
cursorMove = QtCore.pyqtSignal(float) cursorMove = QtCore.pyqtSignal(float)
def __init__(self, name, width, ndecimals, def __init__(self, name, width, ndecimals,
parent=None, pen="r", stepMode="right", connect="finite"): parent=None, pen="r", stepMode="right", connect="finite"):
pg.PlotWidget.__init__(self, pg.PlotWidget.__init__(self,
parent=parent, parent=parent,
@ -198,11 +198,13 @@ class _BaseWaveform(pg.PlotWidget):
def setTimescale(self, timescale): def setTimescale(self, timescale):
self.timescale = timescale self.timescale = timescale
def setData(self, data):
if len(data) == 0:
raise ValueError("no timeseries data to display for this channel")
self.x_data, self.y_data = zip(*data)
def onDataChange(self, data): def onDataChange(self, data):
try: raise NotImplementedError
self.x_data, self.y_data = zip(*data)
except:
logger.error("Error getting data for waveform: %s", self.name, exc_info=True)
def onCursorMove(self, x): def onCursorMove(self, x):
self.cursor.setValue(x) self.cursor.setValue(x)
@ -242,8 +244,8 @@ class BitWaveform(_BaseWaveform):
self._arrows = [] self._arrows = []
def onDataChange(self, data): def onDataChange(self, data):
_BaseWaveform.onDataChange(self, data)
try: try:
self.setData(data)
for arw in self._arrows: for arw in self._arrows:
self.removeItem(arw) self.removeItem(arw)
self._arrows = [] self._arrows = []
@ -285,8 +287,8 @@ class AnalogWaveform(_BaseWaveform):
self._format_string = "{:." + str(ndecimals) + "f}" self._format_string = "{:." + str(ndecimals) + "f}"
def onDataChange(self, data): def onDataChange(self, data):
_BaseWaveform.onDataChange(self, data)
try: try:
self.setData(data)
self.plot_data_item.setData(x=self.x_data, y=self.y_data) self.plot_data_item.setData(x=self.x_data, y=self.y_data)
max_y = max(self.y_data) max_y = max(self.y_data)
min_y = min(self.y_data) min_y = min(self.y_data)
@ -326,8 +328,8 @@ class BitVectorWaveform(_BaseWaveform):
self.addItem(lbl) self.addItem(lbl)
def onDataChange(self, data): def onDataChange(self, data):
_BaseWaveform.onDataChange(self, data)
try: try:
self.setData(data)
for lbl in self._labels: for lbl in self._labels:
self.plot_item.removeItem(lbl) self.plot_item.removeItem(lbl)
self._labels = [] self._labels = []
@ -368,8 +370,8 @@ class LogWaveform(_BaseWaveform):
self._labels = [] self._labels = []
def onDataChange(self, data): def onDataChange(self, data):
_BaseWaveform.onDataChange(self, data)
try: try:
self.setData(data)
for lbl in self._labels: for lbl in self._labels:
self.plot_item.removeItem(lbl) self.plot_item.removeItem(lbl)
self._labels = [] self._labels = []
@ -397,9 +399,6 @@ class LogWaveform(_BaseWaveform):
self.plot_item.removeItem(lbl) self.plot_item.removeItem(lbl)
self.plot_data_item.setData(x=[], y=[]) self.plot_data_item.setData(x=[], y=[])
def onCursorMove(self, x):
_BaseWaveform.onCursorMove(self, x)
class _WaveformView(QtWidgets.QWidget): class _WaveformView(QtWidgets.QWidget):
cursorMove = QtCore.pyqtSignal(float) cursorMove = QtCore.pyqtSignal(float)
@ -468,6 +467,7 @@ class _WaveformView(QtWidgets.QWidget):
self._splitter.widget(i).setStoppedX(stopped_x) self._splitter.widget(i).setStoppedX(stopped_x)
def onDataChange(self, top, bottom, roles): def onDataChange(self, top, bottom, roles):
self.cursorMove.emit(0)
first = top.row() first = top.row()
last = bottom.row() last = bottom.row()
data_row = self._model.headers.index("data") data_row = self._model.headers.index("data")