Skip to content

Commit 7c8e230

Browse files
committed
Stop using private variables
1 parent 7a7fdb7 commit 7c8e230

File tree

2 files changed

+61
-25
lines changed

2 files changed

+61
-25
lines changed

blacs/plugins/virtual_device/__init__.py

Lines changed: 57 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
from labscript_utils.ls_zprocess import Event
2929
from blacs.plugins import PLUGINS_DIR, callback
3030
from blacs.device_base_class import DeviceTab
31+
from blacs.output_classes import AO as AO_output_class
32+
from blacs.output_classes import DO as DO_output_class
33+
from blacs.output_classes import DDS as DDS_output_class
3134

3235
from .virtual_device_tab import VirtualDeviceTab
3336

@@ -159,6 +162,35 @@ def _get_root_parent(item):
159162
item = item.parent()
160163
return item
161164

165+
def _get_child_outputs(self, conn_table, root_devs, dev_name, tab):
166+
AOs = []
167+
DOs = []
168+
DDSs = []
169+
170+
device_conn = conn_table.find_by_name(dev_name)
171+
for child in device_conn.child_list.keys():
172+
if child in root_devs:
173+
# Don't cross between tabs here
174+
continue
175+
176+
child_dev = device_conn.find_by_name(child)
177+
channel = tab.get_channel(child_dev.parent_port)
178+
if channel is None:
179+
AOs_, DOs_, DDSs_ = self._get_child_outputs(conn_table, root_devs, child, tab)
180+
181+
AOs += AOs_
182+
DOs += DOs_
183+
DDSs += DDSs_
184+
elif isinstance(channel, DO_output_class):
185+
inv = child_dev.properties['inverted'] if 'inverted' in child_dev.properties else False
186+
DOs.append((child, child_dev.parent_port, inv))
187+
elif isinstance(channel, AO_output_class):
188+
AOs.append((child, child_dev.parent_port))
189+
elif isinstance(channel, DDS_output_class):
190+
DDSS.append((child, child_dev.parent_port))
191+
192+
return AOs, DOs, DDSs
193+
162194
def __init__(self, BLACS):
163195
self.BLACS = BLACS
164196

@@ -174,37 +206,41 @@ def __init__(self, BLACS):
174206
self.connection_table_model.appendRow([device_item])
175207

176208
analog_outputs = QStandardItem('Analog Outputs')
209+
digital_outputs = QStandardItem('Digital Outputs')
210+
dds_outputs = QStandardItem('DDS Outputs')
211+
177212
device_item.appendRow(analog_outputs)
178-
for AO_name, AO_dev in tab._AO.items():
179-
conn_table_dev = connection_table.find_by_name(AO_dev.name.split(' - ').pop(1))
180-
if conn_table_dev is None:
181-
# Don't list devices not in the connection table to reduce clutter
182-
continue
183-
AO_item = QStandardItem(AO_dev.name)
213+
device_item.appendRow(digital_outputs)
214+
device_item.appendRow(dds_outputs)
215+
216+
root_devs = self.BLACS['ui'].blacs.tablist.keys()
217+
AOs, DOs, DDSs = self._get_child_outputs(connection_table, root_devs, tab_name, tab)
218+
219+
for DO in DOs:
220+
DO_item = QStandardItem(DO[1] + ' - ' + DO[0])
221+
add_to_vd_item = QStandardItem()
222+
add_to_vd_item.setIcon(QIcon(':qtutils/fugue/arrow'))
223+
add_to_vd_item.setEditable(False)
224+
add_to_vd_item.setToolTip('Add this output to selected virtual device')
225+
add_to_vd_item.setData(DO[1], self.CT_TREE_ROLE_NAME)
226+
add_to_vd_item.setData(DO[2], self.CT_TREE_ROLE_DO_INVERTED)
227+
digital_outputs.appendRow([DO_item, add_to_vd_item])
228+
for AO in AOs:
229+
AO_item = QStandardItem(AO[1] + ' - ' + AO[0])
184230
add_to_vd_item = QStandardItem()
185231
add_to_vd_item.setIcon(QIcon(':qtutils/fugue/arrow'))
186232
add_to_vd_item.setEditable(False)
187233
add_to_vd_item.setToolTip('Add this output to selected virtual device')
188-
add_to_vd_item.setData(AO_name, self.CT_TREE_ROLE_NAME)
234+
add_to_vd_item.setData(AO[1], self.CT_TREE_ROLE_NAME)
189235
analog_outputs.appendRow([AO_item, add_to_vd_item])
190-
191-
digital_outputs = QStandardItem('Digital Outputs')
192-
device_item.appendRow(digital_outputs)
193-
for DO_name, DO_dev in tab._DO.items():
194-
conn_table_dev = connection_table.find_by_name(DO_dev.name.split(' - ').pop(1))
195-
if conn_table_dev is None:
196-
# Don't list devices not in the connection table to reduce clutter
197-
continue
198-
print(conn_table_dev.properties)
199-
DO_item = QStandardItem(DO_dev.name)
236+
for DDS in DDSs:
237+
DDS_item = QStandardItem(DDS[1] + ' - ' + DDS[0])
200238
add_to_vd_item = QStandardItem()
201239
add_to_vd_item.setIcon(QIcon(':qtutils/fugue/arrow'))
202240
add_to_vd_item.setEditable(False)
203241
add_to_vd_item.setToolTip('Add this output to selected virtual device')
204-
add_to_vd_item.setData(DO_name, self.CT_TREE_ROLE_NAME)
205-
inverted = conn_table_dev.properties['inverted'] if 'inverted' in conn_table_dev.properties else False
206-
add_to_vd_item.setData(inverted, self.CT_TREE_ROLE_DO_INVERTED)
207-
digital_outputs.appendRow([DO_item, add_to_vd_item])
242+
add_to_vd_item.setData(DDS[1], self.CT_TREE_ROLE_NAME)
243+
dds_outputs.appendRow([DDS_item, add_to_vd_item])
208244

209245
self.virtual_device_model = QStandardItemModel()
210246
self.virtual_device_model.setHorizontalHeaderLabels(['Virtual Devices', 'Up', 'Down', 'Remove'])

blacs/plugins/virtual_device/virtual_device_tab.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ def create_widgets(self, blacs_tablist, AOs, DOs, DDSs):
1616

1717
for AO in self._AOs.keys():
1818
if self._AOs[AO] is None:
19-
self._AOs[AO] = self._blacs_tablist[AO[0]]._AO[AO[1]].create_widget(None, False, None)
19+
self._AOs[AO] = self._blacs_tablist[AO[0]].get_channel(AO[1]).create_widget(None, False, None)
2020
self._AOs[AO].last_AO = None
2121

2222
for DO in self._DOs.keys():
2323
if self._DOs[DO] is None:
24-
self._DOs[DO] = self._blacs_tablist[DO[0]]._DO[DO[1]].create_widget(inverted=DO[2])
24+
self._DOs[DO] = self._blacs_tablist[DO[0]].get_channel(DO[1]).create_widget(inverted=DO[2])
2525
self._DOs[DO].last_DO = None
2626

2727
dds_widgets = []
@@ -36,12 +36,12 @@ def create_widgets(self, blacs_tablist, AOs, DOs, DDSs):
3636
def connect_widgets(self):
3737
for AO in self._AOs.keys():
3838
if self._AOs[AO] is not None:
39-
new_AO = self._blacs_tablist[AO[0]]._AO[AO[1]]
39+
new_AO = self._blacs_tablist[AO[0]].get_channel(AO[1])
4040
if self._AOs[AO].get_AO() is None and self._AOs[AO].last_AO != new_AO:
4141
self._AOs[AO].set_AO(new_AO)
4242
for DO in self._DOs.keys():
4343
if self._DOs[DO] is not None:
44-
new_DO = self._blacs_tablist[DO[0]]._DO[DO[1]]
44+
new_DO = self._blacs_tablist[DO[0]].get_channel(DO[1])
4545
if self._DOs[DO].get_DO() is None and self._DOs[DO].last_DO != new_DO:
4646
self._DOs[DO].set_DO(new_DO)
4747

0 commit comments

Comments
 (0)