forked from M-Labs/artiq
1
0
Fork 0

moninj: add tree draft

Simon Renblad 2024-04-17 17:04:26 +08:00
parent b5e762854b
commit 5813ccb6b7
1 changed files with 42 additions and 0 deletions

View File

@ -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")