@@ -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