moninj: merge into single layout

This commit is contained in:
Simon Renblad 2024-04-12 14:40:29 +08:00
parent baa58343ac
commit c6194eb430
2 changed files with 20 additions and 30 deletions

View File

@ -739,38 +739,30 @@ class _DeviceManager:
await self.mi_connection.close()
class _MonInjDock(QtWidgets.QDockWidget):
def __init__(self, name):
QtWidgets.QDockWidget.__init__(self, name)
self.setObjectName(name)
class MonInjDock(QtWidgets.QDockWidget):
def __init__(self, schedule_ctl):
QtWidgets.QDockWidget.__init__(self, "MonInj")
self.setObjectName("MonInj")
self.setFeatures(QtWidgets.QDockWidget.DockWidgetMovable |
QtWidgets.QDockWidget.DockWidgetFloatable)
def layout_widgets(self, widgets):
scroll_area = QtWidgets.QScrollArea()
scroll_area.setWidgetResizable(True)
self.setWidget(scroll_area)
grid = FlowLayout()
self.grid = FlowLayout()
grid_widget = QtWidgets.QWidget()
grid_widget.setLayout(grid)
for widget in sorted(widgets, key=lambda w: w.sort_key()):
grid.addWidget(widget)
scroll_area.setWidgetResizable(True)
grid_widget.setLayout(self.grid)
scroll_area.setWidget(grid_widget)
class MonInj:
def __init__(self, schedule_ctl):
self.ttl_dock = _MonInjDock("TTL")
self.dds_dock = _MonInjDock("DDS")
self.dac_dock = _MonInjDock("DAC")
self.dm = _DeviceManager(schedule_ctl)
self.dm.ttl_cb = lambda: self.ttl_dock.layout_widgets(self.dm.ttl_widgets.values())
self.dm.dds_cb = lambda: self.dds_dock.layout_widgets(self.dm.dds_widgets.values())
self.dm.dac_cb = lambda: self.dac_dock.layout_widgets(self.dm.dac_widgets.values())
self.dm.ttl_cb = lambda: self.layout_widgets(self.dm.ttl_widgets.values())
self.dm.dds_cb = lambda: self.layout_widgets(self.dm.dds_widgets.values())
self.dm.dac_cb = lambda: self.layout_widgets(self.dm.dac_widgets.values())
def layout_widgets(self, widgets):
for widget in sorted(widgets, key=lambda w: w.sort_key()):
self.grid.addWidget(widget)
async def stop(self):
if self.dm is not None:

View File

@ -226,8 +226,8 @@ def main():
smgr.register(d_applets)
broadcast_clients["ccb"].notify_cbs.append(d_applets.ccb_notify)
d_ttl_dds = moninj.MonInj(rpc_clients["schedule"])
atexit_register_coroutine(d_ttl_dds.stop, loop=loop)
d_moninj = moninj.MonInjDock(rpc_clients["schedule"])
atexit_register_coroutine(d_moninj.stop, loop=loop)
d_waveform = waveform.WaveformDock(
args.analyzer_proxy_timeout,
@ -237,10 +237,10 @@ def main():
atexit_register_coroutine(d_waveform.stop, loop=loop)
def init_cbs(ddb):
d_ttl_dds.dm.init_ddb(ddb)
d_moninj.dm.init_ddb(ddb)
d_waveform.init_ddb(ddb)
return ddb
devices_sub = Subscriber("devices", init_cbs, [d_ttl_dds.dm.notify_ddb, d_waveform.notify_ddb])
devices_sub = Subscriber("devices", init_cbs, [d_moninj.dm.notify_ddb, d_waveform.notify_ddb])
loop.run_until_complete(devices_sub.connect(args.server, args.port_notify))
atexit_register_coroutine(devices_sub.close, loop=loop)
@ -260,8 +260,7 @@ def main():
# lay out docks
right_docks = [
d_explorer, d_shortcuts,
d_ttl_dds.ttl_dock, d_ttl_dds.dds_dock, d_ttl_dds.dac_dock,
d_explorer, d_shortcuts, d_moninj,
d_datasets, d_applets, d_waveform, d_interactive_args
]
main_window.addDockWidget(QtCore.Qt.RightDockWidgetArea, right_docks[0])
@ -280,8 +279,7 @@ def main():
atexit_register_coroutine(smgr.stop, loop=loop)
# work around for https://github.com/m-labs/artiq/issues/1307
d_ttl_dds.ttl_dock.show()
d_ttl_dds.dds_dock.show()
d_moninj.show()
# create first log dock if not already in state
d_log0 = logmgr.first_log_dock()