forked from M-Labs/artiq
waveform: add LogWaveform
This commit is contained in:
parent
85bc36278d
commit
adffcf26e0
@ -3,6 +3,7 @@ from PyQt5.QtCore import Qt
|
|||||||
|
|
||||||
from artiq.gui.models import DictSyncTreeSepModel, LocalModelManager
|
from artiq.gui.models import DictSyncTreeSepModel, LocalModelManager
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
import bisect
|
import bisect
|
||||||
import pyqtgraph as pg
|
import pyqtgraph as pg
|
||||||
import logging
|
import logging
|
||||||
@ -200,3 +201,41 @@ class Waveform(pg.PlotWidget):
|
|||||||
def wheelEvent(self, e):
|
def wheelEvent(self, e):
|
||||||
if e.modifiers() & QtCore.Qt.ControlModifier:
|
if e.modifiers() & QtCore.Qt.ControlModifier:
|
||||||
super().wheelEvent(e)
|
super().wheelEvent(e)
|
||||||
|
|
||||||
|
|
||||||
|
class LogWaveform(Waveform):
|
||||||
|
def __init__(self, channel, state, parent=None):
|
||||||
|
Waveform.__init__(self, channel, state, parent)
|
||||||
|
|
||||||
|
def extract_data_from_state(self):
|
||||||
|
try:
|
||||||
|
self.x_data, self.y_data = zip(*self.state['logs'][self.name])
|
||||||
|
except:
|
||||||
|
logger.debug('Error caught when loading waveform: {}'.format(self.name), exc_info=True)
|
||||||
|
|
||||||
|
def display(self):
|
||||||
|
try:
|
||||||
|
self.plot_data_item.setData(
|
||||||
|
x=self.x_data, y=np.ones(len(self.x_data)))
|
||||||
|
self.plot_data_item.opts.update(
|
||||||
|
{"connect": np.zeros(2), "symbol": "x"})
|
||||||
|
old_msg = ""
|
||||||
|
old_x = 0
|
||||||
|
for x, msg in zip(self.x_data, self.y_data):
|
||||||
|
if x == old_x:
|
||||||
|
old_msg += "\n" + msg
|
||||||
|
else:
|
||||||
|
lbl = pg.TextItem(old_msg)
|
||||||
|
self.addItem(lbl)
|
||||||
|
lbl.setPos(old_x, DISPLAY_HIGH)
|
||||||
|
old_msg = msg
|
||||||
|
old_x = x
|
||||||
|
lbl = pg.TextItem(old_msg)
|
||||||
|
self.addItem(lbl)
|
||||||
|
lbl.setPos(old_x, DISPLAY_HIGH)
|
||||||
|
except:
|
||||||
|
logger.debug('Error caught when displaying waveform: {}'.format(self.name), exc_info=True)
|
||||||
|
self.plot_data_item.setData(x=[], y=[])
|
||||||
|
|
||||||
|
def format_cursor_label(self):
|
||||||
|
self.cursor_label.setText("")
|
||||||
|
Loading…
Reference in New Issue
Block a user