Skip to content

Commit 790bd1e

Browse files
committed
Fix virtual device editing bugs:
1. Make sure DO inverted data is reloaded from save 2. Check if BLACS tabs are still available when loading editor
1 parent 6416ac8 commit 790bd1e

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

blacs/plugins/virtual_device/__init__.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,7 @@ def get_menu_items(self):
275275
]
276276
}
277277

278-
def make_virtual_device_output_row(self, name):
279-
name_item = QStandardItem(name)
278+
def make_virtual_device_output_row(self, name_item):
280279
up_item = QStandardItem()
281280
up_item.setIcon(QIcon(':qtutils/fugue/arrow-090'))
282281
up_item.setEditable(False)
@@ -386,20 +385,33 @@ def on_edit_virtual_devices(self, *args, **kwargs):
386385
analog_outputs = QStandardItem('Analog Outputs')
387386
device_item.appendRow(analog_outputs)
388387
for AO in vd['AO']:
388+
if AO[0] not in self.BLACS['ui'].blacs.tablist:
389+
# BLACS tab removed, remove virtual device
390+
continue
389391
chan = self.BLACS['ui'].blacs.tablist[AO[0]].get_channel(AO[1])
390-
analog_outputs.appendRow(self.make_virtual_device_output_row(AO[0] + '.' + chan.name))
392+
ao_item = QStandardItem(AO[0] + '.' + chan.name)
393+
analog_outputs.appendRow(self.make_virtual_device_output_row(ao_item))
391394

392395
digital_outputs = QStandardItem('Digital Outputs')
393396
device_item.appendRow(digital_outputs)
394397
for DO in vd['DO']:
398+
if DO[0] not in self.BLACS['ui'].blacs.tablist:
399+
# BLACS tab removed, remove virtual device
400+
continue
395401
chan = self.BLACS['ui'].blacs.tablist[DO[0]].get_channel(DO[1])
396-
digital_outputs.appendRow(self.make_virtual_device_output_row(DO[0] + '.' + chan.name))
402+
do_item = QStandardItem(DO[0] + '.' + chan.name)
403+
do_item.setData(DO[2], self.VD_TREE_ROLE_DO_INVERTED)
404+
digital_outputs.appendRow(self.make_virtual_device_output_row(do_item))
397405

398406
dds_outputs = QStandardItem('DDS Outputs')
399407
device_item.appendRow(dds_outputs)
400408
for DDS in vd['DDS']:
409+
if DDS[0] not in self.BLACS['ui'].blacs.tablist:
410+
# BLACS tab removed, remove virtual device
411+
continue
401412
chan = self.BLACS['ui'].blacs.tablist[DDS[0]].get_channel(DDS[1])
402-
dds_outputs.appendRow(self.make_virtual_device_output_row(DDS[0] + '.' + chan.name))
413+
dds_item = QStandardItem(DDS[0] + '.' + chan.name)
414+
dds_outputs.appendRow(self.make_virtual_device_output_row(dds_item))
403415

404416
add_vd_item = QStandardItem(self.VD_TREE_DUMMY_ROW_TEXT)
405417
add_vd_item.setData(True, self.VD_TREE_ROLE_IS_DUMMY_ROW)

0 commit comments

Comments
 (0)