forked from M-Labs/artiq
moninj: add tree draft
parent
b5e762854b
commit
5813ccb6b7
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue