From 5813ccb6b77e57e23763d33fc46d839386ae8546 Mon Sep 17 00:00:00 2001 From: Simon Renblad Date: Wed, 17 Apr 2024 17:04:26 +0800 Subject: [PATCH] moninj: add tree draft --- artiq/dashboard/moninj.py | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/artiq/dashboard/moninj.py b/artiq/dashboard/moninj.py index db8bb78b7..b8e67129f 100644 --- a/artiq/dashboard/moninj.py +++ b/artiq/dashboard/moninj.py @@ -819,6 +819,48 @@ class _DeviceManager: await self.mi_connection.close() +class MoninjTree(QtWidgets.QTreeWidget): + def __init__(self): + QtWidgets.QTreeWidget.__init__(self) + self.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove) + self._groups = dict() + self._widgets = dict() + + def add_widget(self, widget, group=None): + item = QtWidgets.QTreeWidgetItem([widget.to_model_path()]) + self.setItemWidget(item, widget) + self._widgets[widget.to_model_path()] = widget + if group is not None: + self._get_group(group).addChild(item) + else: + self.addTopLevelItem(item) + + def remove_widget(self, item): + widget = self.itemWidget(child, 0) + self.removeItemWidget(child, 0) + del self._widgets[widget.to_model_path()] + widget.deleteLater() + + def add_group(self, group=None): + if group in self._groups: + raise SyntaxError("group name repeated") + group_item = QtWidgets.QTreeWidgetItem([group]) + self.addTopLevelItem(group_item) + self._groups[group] = group_item + return group_item + + def remove_group(self, group): + group_item = self._groups[group] + child_items = group_item.takeChildren() + for child in child_items: + self.remove_widget(child) + self.takeTopLevelItem(self.indexOfTopLevelItem(group_item)) + del self._groups[group] + + def _get_group(self, group): + return self._groups[group] + + class MonInjDock(QtWidgets.QDockWidget): def __init__(self, schedule_ctl): QtWidgets.QDockWidget.__init__(self, "MonInj")