forked from M-Labs/artiq
1
0
Fork 0
artiq/artiq/gui/datasets.py

64 lines
1.9 KiB
Python
Raw Normal View History

2015-07-14 23:31:18 +08:00
import asyncio
2015-07-17 02:52:53 +08:00
from collections import OrderedDict
from functools import partial
2015-08-01 19:37:16 +08:00
import logging
2015-07-14 23:31:18 +08:00
from quamash import QtGui, QtCore
from pyqtgraph import dockarea
from pyqtgraph import LayoutWidget
from artiq.tools import short_format
2015-11-17 19:46:17 +08:00
from artiq.gui.models import DictSyncTreeSepModel
2015-07-14 23:31:18 +08:00
2015-08-01 19:37:16 +08:00
logger = logging.getLogger(__name__)
2015-11-17 19:46:17 +08:00
class Model(DictSyncTreeSepModel):
2015-11-11 12:13:19 +08:00
def __init__(self, init):
2015-11-17 19:46:17 +08:00
DictSyncTreeSepModel.__init__(self, ".",
["Dataset", "Persistent", "Value"],
init)
2015-07-14 23:31:18 +08:00
def convert(self, k, v, column):
2015-11-17 19:46:17 +08:00
if column == 1:
return "Y" if v[0] else "N"
elif column == 2:
return short_format(v[1])
2015-07-14 23:31:18 +08:00
else:
raise ValueError
class DatasetsDock(dockarea.Dock):
2015-11-11 12:13:19 +08:00
def __init__(self, dialog_parent, dock_area, datasets_sub):
2015-12-11 00:20:20 +08:00
dockarea.Dock.__init__(self, "Datasets")
2015-07-17 02:52:53 +08:00
self.dialog_parent = dialog_parent
self.dock_area = dock_area
2015-07-14 23:31:18 +08:00
grid = LayoutWidget()
self.addWidget(grid)
2015-10-12 17:31:55 +08:00
self.search = QtGui.QLineEdit()
self.search.setPlaceholderText("search...")
self.search.editingFinished.connect(self._search_datasets)
2015-10-30 19:58:15 +08:00
grid.addWidget(self.search, 0, 0)
2015-10-12 17:31:55 +08:00
2015-11-17 19:46:17 +08:00
self.table = QtGui.QTreeView()
2015-07-15 01:08:08 +08:00
self.table.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
2015-11-17 19:46:17 +08:00
self.table.header().setResizeMode(QtGui.QHeaderView.ResizeToContents)
2015-10-12 17:31:55 +08:00
grid.addWidget(self.table, 1, 0)
2015-07-14 23:31:18 +08:00
2015-11-11 12:13:19 +08:00
self.table_model = Model(dict())
datasets_sub.add_setmodel_callback(self.set_model)
2015-07-14 23:31:18 +08:00
2015-10-12 17:31:55 +08:00
def _search_datasets(self):
2015-11-11 12:13:19 +08:00
if hasattr(self, "table_model_filter"):
self.table_model_filter.setFilterFixedString(
self.search.displayText())
2015-10-12 17:31:55 +08:00
2015-11-11 12:13:19 +08:00
def set_model(self, model):
self.table_model = model
2016-01-10 18:38:24 +08:00
self.table_model_filter = QtCore.QSortFilterProxyModel()
self.table_model_filter.setSourceModel(self.table_model)
self.table.setModel(self.table_model_filter)