forked from M-Labs/artiq
waveform: add clear, update_from_dict to Model
This commit is contained in:
parent
f5f58f8f23
commit
f65d6e83dc
@ -34,11 +34,21 @@ class Model(DictSyncTreeSepModel):
|
||||
def __init__(self, init):
|
||||
DictSyncTreeSepModel.__init__(self, "/", ["Channels"], init)
|
||||
|
||||
def clear(self):
|
||||
for k in self.backing_store:
|
||||
self._del_item(self, k.split(self.separator))
|
||||
self.backing_store.clear()
|
||||
|
||||
def update_from_dict(self, d):
|
||||
self.clear()
|
||||
for k, v in d.items():
|
||||
self[k] = v
|
||||
|
||||
|
||||
class _AddChannelDialog(QtWidgets.QDialog):
|
||||
accepted = QtCore.pyqtSignal(list)
|
||||
|
||||
def __init__(self, parent, channels_mgr):
|
||||
def __init__(self, parent, channel_model):
|
||||
QtWidgets.QDialog.__init__(self, parent=parent)
|
||||
self.setContextMenuPolicy(Qt.ActionsContextMenu)
|
||||
self.setWindowTitle("Add channels")
|
||||
@ -46,14 +56,14 @@ class _AddChannelDialog(QtWidgets.QDialog):
|
||||
grid = QtWidgets.QGridLayout()
|
||||
self.setLayout(grid)
|
||||
|
||||
self._channels_mgr = channels_mgr
|
||||
self._channel_model = channel_model
|
||||
self._channels_widget = QtWidgets.QTreeView()
|
||||
self._channels_widget.setHeaderHidden(True)
|
||||
self._channels_widget.setSelectionBehavior(
|
||||
QtWidgets.QAbstractItemView.SelectItems)
|
||||
self._channels_widget.setSelectionMode(
|
||||
QtWidgets.QAbstractItemView.ExtendedSelection)
|
||||
self._channels_widget.setModel(self._channels_mgr)
|
||||
self._channels_widget.setModel(self._channel_model)
|
||||
grid.addWidget(self._channels_widget, 0, 0, 1, 2)
|
||||
cancel_btn = QtWidgets.QPushButton("Cancel")
|
||||
cancel_btn.clicked.connect(self.close)
|
||||
@ -72,9 +82,9 @@ class _AddChannelDialog(QtWidgets.QDialog):
|
||||
selection = self._channels_widget.selectedIndexes()
|
||||
channels = []
|
||||
for select in selection:
|
||||
key = self._channels_mgr.index_to_key(select)
|
||||
key = self._channel_model.index_to_key(select)
|
||||
if key is not None:
|
||||
width = self._channels_mgr[key].ref
|
||||
width = self._channel_model[key].ref
|
||||
channels.append((key, width))
|
||||
self.accepted.emit(channels)
|
||||
self.close()
|
||||
@ -388,10 +398,10 @@ class AnalogWaveform(Waveform):
|
||||
class WaveformArea(QtWidgets.QWidget):
|
||||
cursorMoved = QtCore.pyqtSignal(float)
|
||||
|
||||
def __init__(self, parent, state, channels_mgr):
|
||||
def __init__(self, parent, state, channel_model):
|
||||
QtWidgets.QWidget.__init__(self, parent=parent)
|
||||
self._state = state
|
||||
self._channels_mgr = channels_mgr
|
||||
self._channel_model = channel_model
|
||||
|
||||
self._cursor_visible = True
|
||||
self._cursor_x_pos = 0
|
||||
@ -458,7 +468,7 @@ class WaveformArea(QtWidgets.QWidget):
|
||||
cw.update_x_max()
|
||||
|
||||
async def _add_waveform_task(self):
|
||||
dialog = _AddChannelDialog(self, self._channels_mgr)
|
||||
dialog = _AddChannelDialog(self, self._channel_model)
|
||||
fut = asyncio.Future()
|
||||
|
||||
def on_accept(s):
|
||||
@ -663,7 +673,7 @@ class WaveformDock(QtWidgets.QDockWidget):
|
||||
self.setFeatures(
|
||||
QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable)
|
||||
|
||||
self._channels_mgr = Model({})
|
||||
self._channel_model = Model({})
|
||||
|
||||
self._devices = None
|
||||
self._dump = None
|
||||
@ -704,7 +714,7 @@ class WaveformDock(QtWidgets.QDockWidget):
|
||||
lambda: asyncio.ensure_future(self.proxy_client.trigger_proxy_task()))
|
||||
|
||||
self._waveform_area = WaveformArea(self, self._state,
|
||||
self._channels_mgr)
|
||||
self._channel_model)
|
||||
self.traceDataChanged.connect(self._waveform_area.on_trace_update)
|
||||
self.traceDataChanged.connect(self._update_log_channels)
|
||||
grid.addWidget(self._waveform_area, 2, 0, colspan=12)
|
||||
@ -739,7 +749,7 @@ class WaveformDock(QtWidgets.QDockWidget):
|
||||
|
||||
def _update_log_channels(self):
|
||||
for log in self._state['logs']:
|
||||
self._channels_mgr[log] = (0, "log")
|
||||
self._channel_model[log] = (0, "log")
|
||||
|
||||
def on_dump_receive(self, data):
|
||||
decoded_dump = comm_analyzer.decode_dump(data)
|
||||
@ -840,8 +850,8 @@ class WaveformDock(QtWidgets.QDockWidget):
|
||||
|
||||
def _process_ddb(self):
|
||||
addr = None
|
||||
#for k, v in comm_analyzer.get_channel_list(self._ddb).items():
|
||||
# self._channel_model[k] = v
|
||||
channel_list = comm_analyzer.get_channel_list(self._ddb)
|
||||
self._channel_model.update_from_dict(channel_list)
|
||||
for name, desc in self._ddb.items():
|
||||
if name == "core_analyzer":
|
||||
logger.info("coreanalyzer exists")
|
||||
|
Loading…
Reference in New Issue
Block a user