33from qtutils .qt .QtWidgets import *
44
55from labscript_utils .qtwidgets .toolpalette import ToolPaletteGroup
6+ from labscript_utils .qtwidgets .ddsoutput import DDSOutput
67
78from blacs .tab_base_classes import PluginTab
89
@@ -22,22 +23,32 @@ def create_widgets(self, blacs_tablist, AOs, DOs, DDSs):
2223 if self ._AOs [AO ] is None :
2324 chan = self ._blacs_tablist [AO [0 ]].get_channel (AO [1 ])
2425 orig_label = chan .name .split ('-' )
25- self ._AOs [AO ] = chan .create_widget ('%s\n %s' % (AO [0 ]+ '.' + orig_label [0 ], orig_label [1 ]), False , None )
26+ virtual_label = '%s\n %s' % (AO [0 ]+ '.' + orig_label [0 ], orig_label [1 ])
27+ self ._AOs [AO ] = chan .create_widget (virtual_label , False , None )
2628 self ._AOs [AO ].last_AO = None
2729
2830 for DO in self ._DOs .keys ():
2931 if self ._DOs [DO ] is None :
3032 self ._DOs [DO ] = self ._blacs_tablist [DO [0 ]].get_channel (DO [1 ]).create_widget (inverted = DO [2 ])
3133 orig_label = self ._DOs [DO ].text ().split ('\n ' )
32- self ._DOs [DO ].setText ('%s\n %s' % (DO [0 ]+ '.' + orig_label [0 ], orig_label [1 ]))
34+ virtual_label = '%s\n %s' % (DO [0 ]+ '.' + orig_label [0 ], orig_label [1 ])
35+ self ._DOs [DO ].setText (virtual_label )
3336 self ._DOs [DO ].last_DO = None
3437
35- dds_widgets = [] # TODO
38+ for DDS in self ._DDSs .keys ():
39+ if self ._DDSs [DDS ] is None :
40+ chan = self ._blacs_tablist [DDS [0 ]].get_channel (DDS [1 ])
41+ orig_label = chan .name .split (' - ' )
42+ self ._DDSs [DDS ] = DDSOutput (DDS [0 ]+ '.' + orig_label [0 ], orig_label [1 ])
43+ chan .add_widget (self ._DDSs [DDS ])
44+ self ._DDSs [DDS ].last_DDS = None
3645
3746 if len (self ._AOs ) > 0 :
3847 self .place_widget_group ('Analog Outputs' , [v for k , v in self ._AOs .items ()])
3948 if len (self ._DOs ) > 0 :
4049 self .place_widget_group ('Digital Outputs' , [v for k , v in self ._DOs .items ()])
50+ if len (self ._DDSs ) > 0 :
51+ self .place_widget_group ('DDS Outputs' , [v for k , v in self ._DDSs .items ()])
4152
4253 return
4354
@@ -56,6 +67,11 @@ def connect_widgets(self):
5667 new_DO = self ._blacs_tablist [DO [0 ]].get_channel (DO [1 ])
5768 if self ._DOs [DO ].get_DO () is None and self ._DOs [DO ].last_DO != new_DO :
5869 self ._DOs [DO ].set_DO (new_DO )
70+ for DDS in self ._DDSs .keys ():
71+ if self ._DDSs [DDS ] is not None :
72+ new_DDS = self ._blacs_tablist [DDS [0 ]].get_channel (DDS [1 ])
73+ if self ._DDSs [DDS ].last_DDS != new_DDS :
74+ new_DDS .add_widget (self ._DDSs [DDS ])
5975
6076 def disconnect_widgets (self , closing_device_name ):
6177 '''
@@ -70,6 +86,11 @@ def disconnect_widgets(self, closing_device_name):
7086 if DO [0 ] == closing_device_name :
7187 self ._DOs [DO ].last_DO = self ._DOs [DO ].get_DO ()
7288 self ._DOs [DO ].set_DO (None )
89+ for DDDS in self ._DDSs .keys ():
90+ if DDS [0 ] == closing_device_name :
91+ old_DDS = self ._blacs_tablist [DDS [0 ]].get_channel (DDS [1 ])
92+ self ._DDSs [DDS ].last_DDS = old_DDS
93+ old_DDS .remove_widget (self ._DDSs [DDS ])
7394
7495 def place_widget_group (self , name , widgets ):
7596 widget = QWidget ()
0 commit comments