3030from blacs .device_base_class import DeviceTab
3131from blacs .output_classes import AO as AO_output_class
3232from blacs .output_classes import DO as DO_output_class
33+ from blacs .output_classes import EO as EO_output_class
3334from blacs .output_classes import DDS as DDS_output_class
3435
3536from .virtual_device_tab import VirtualDeviceTab
@@ -122,6 +123,7 @@ def plugin_setup_complete(self, BLACS):
122123 vd_tab .create_widgets (self .BLACS ['ui' ].blacs .tablist ,
123124 self .virtual_devices [name ]['AO' ],
124125 self .virtual_devices [name ]['DO' ],
126+ self .virtual_devices [name ]['EO' ],
125127 self .virtual_devices [name ]['DDS' ])
126128
127129 self .setup_complete = True
@@ -210,6 +212,7 @@ def _get_child_outputs(self, conn_table, root_devs, dev_name, tab):
210212 '''
211213 AOs = []
212214 DOs = []
215+ EOs = []
213216 DDSs = []
214217
215218 device_conn = conn_table .find_by_name (dev_name )
@@ -231,10 +234,12 @@ def _get_child_outputs(self, conn_table, root_devs, dev_name, tab):
231234 DOs .append ((child , child_dev .parent_port , inv ))
232235 elif isinstance (channel , AO_output_class ):
233236 AOs .append ((child , child_dev .parent_port ))
237+ elif isinstance (channel , EO_output_class ):
238+ EOs .append ((child , child_dev .parent_port ))
234239 elif isinstance (channel , DDS_output_class ):
235240 DDSs .append ((child , child_dev .parent_port ))
236241
237- return AOs , DOs , DDSs
242+ return AOs , DOs , EOs , DDSs
238243
239244 def __init__ (self , BLACS ):
240245 '''
@@ -258,14 +263,15 @@ def __init__(self, BLACS):
258263
259264 analog_outputs = QStandardItem ('Analog Outputs' )
260265 digital_outputs = QStandardItem ('Digital Outputs' )
266+ enum_outputs = QStandardItem ('Enum Outputs' )
261267 dds_outputs = QStandardItem ('DDS Outputs' )
262268
263269 device_item .appendRow (analog_outputs )
264270 device_item .appendRow (digital_outputs )
265271 device_item .appendRow (dds_outputs )
266272
267273 root_devs = self .BLACS ['ui' ].blacs .tablist .keys ()
268- AOs , DOs , DDSs = self ._get_child_outputs (connection_table , root_devs , tab_name , tab )
274+ AOs , DOs , EOs , DDSs = self ._get_child_outputs (connection_table , root_devs , tab_name , tab )
269275
270276 for DO in DOs :
271277 DO_item = QStandardItem (DO [1 ] + ' - ' + DO [0 ])
@@ -284,6 +290,14 @@ def __init__(self, BLACS):
284290 add_to_vd_item .setToolTip ('Add this output to selected virtual device' )
285291 add_to_vd_item .setData (AO [1 ] + ' - ' + AO [0 ], self .CT_TREE_ROLE_NAME )
286292 analog_outputs .appendRow ([AO_item , add_to_vd_item ])
293+ for EO in EOs :
294+ EO_item = QStandardItem (EO [1 ] + ' - ' + EO [0 ])
295+ add_to_vd_item = QStandardItem ()
296+ add_to_vd_item .setIcon (QIcon (':qtutils/fugue/arrow' ))
297+ add_to_vd_item .setEditable (False )
298+ add_to_vd_item .setToolTip ('Add this output to selected virtual device' )
299+ add_to_vd_item .setData (EO [1 ] + ' - ' + EO [0 ], self .CT_TREE_ROLE_NAME )
300+ enum_outputs .appendRow ([EO_item , add_to_vd_item ])
287301 for DDS in DDSs :
288302 DDS_item = QStandardItem (DDS [1 ] + ' - ' + DDS [0 ])
289303 add_to_vd_item = QStandardItem ()
@@ -453,6 +467,16 @@ def on_edit_virtual_devices(self, *args, **kwargs):
453467 do_item .setData (DO [2 ], self .VD_TREE_ROLE_DO_INVERTED )
454468 digital_outputs .appendRow (self .make_virtual_device_output_row (do_item ))
455469
470+ enum_outputs = QStandardItem ('Enum Outputs' )
471+ device_item .appendRow (enum_outputs )
472+ for EO in vd ['EO' ]:
473+ if EO [0 ] not in self .BLACS ['ui' ].blacs .tablist :
474+ # BLACS tab removed, remove virtual device
475+ continue
476+ chan = self .BLACS ['ui' ].blacs .tablist [EO [0 ]].get_channel (EO [1 ])
477+ eo_item = QStandardItem (EO [0 ] + '.' + chan .name )
478+ enum_outputs .appendRow (self .make_virtual_device_output_row (eo_item ))
479+
456480 dds_outputs = QStandardItem ('DDS Outputs' )
457481 device_item .appendRow (dds_outputs )
458482 for DDS in vd ['DDS' ]:
0 commit comments