mirror of https://github.com/m-labs/artiq.git
gui: dataset search
This commit is contained in:
parent
3923dd83c2
commit
e6e93ab6ed
|
@ -49,14 +49,19 @@ class DatasetsDock(dockarea.Dock):
|
||||||
grid = LayoutWidget()
|
grid = LayoutWidget()
|
||||||
self.addWidget(grid)
|
self.addWidget(grid)
|
||||||
|
|
||||||
|
self.search = QtGui.QLineEdit()
|
||||||
|
self.search.setPlaceholderText("search...")
|
||||||
|
self.search.editingFinished.connect(self._search_datasets)
|
||||||
|
grid.addWidget(self.search, 0, )
|
||||||
|
|
||||||
self.table = QtGui.QTableView()
|
self.table = QtGui.QTableView()
|
||||||
self.table.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
|
self.table.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
|
||||||
self.table.horizontalHeader().setResizeMode(
|
self.table.horizontalHeader().setResizeMode(
|
||||||
QtGui.QHeaderView.ResizeToContents)
|
QtGui.QHeaderView.ResizeToContents)
|
||||||
grid.addWidget(self.table, 0, 0)
|
grid.addWidget(self.table, 1, 0)
|
||||||
|
|
||||||
add_display_box = QtGui.QGroupBox("Add display")
|
add_display_box = QtGui.QGroupBox("Add display")
|
||||||
grid.addWidget(add_display_box, 0, 1)
|
grid.addWidget(add_display_box, 1, 1)
|
||||||
display_grid = QtGui.QGridLayout()
|
display_grid = QtGui.QGridLayout()
|
||||||
add_display_box.setLayout(display_grid)
|
add_display_box.setLayout(display_grid)
|
||||||
|
|
||||||
|
@ -67,6 +72,17 @@ class DatasetsDock(dockarea.Dock):
|
||||||
|
|
||||||
self.displays = dict()
|
self.displays = dict()
|
||||||
|
|
||||||
|
def _search_datasets(self):
|
||||||
|
model = self.table_model
|
||||||
|
search = self.search.displayText()
|
||||||
|
for row in range(model.rowCount(model.index(0, 0))):
|
||||||
|
index = model.index(row, 0)
|
||||||
|
dataset = model.data(index, QtCore.Qt.DisplayRole)
|
||||||
|
if search in dataset:
|
||||||
|
self.table.showRow(row)
|
||||||
|
else:
|
||||||
|
self.table.hideRow(row)
|
||||||
|
|
||||||
def get_dataset(self, key):
|
def get_dataset(self, key):
|
||||||
return self.table_model.backing_store[key][1]
|
return self.table_model.backing_store[key][1]
|
||||||
|
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
import asyncio
|
|
||||||
|
|
||||||
from quamash import QtGui, QtCore
|
|
||||||
from pyqtgraph import dockarea
|
|
||||||
from pyqtgraph import LayoutWidget
|
|
||||||
|
|
||||||
from artiq.protocols.sync_struct import Subscriber
|
|
||||||
from artiq.gui.tools import DictSyncModel, short_format
|
|
||||||
|
|
||||||
|
|
||||||
class ParametersModel(DictSyncModel):
|
|
||||||
def __init__(self, parent, init):
|
|
||||||
DictSyncModel.__init__(self, ["Parameter", "Value"],
|
|
||||||
parent, init)
|
|
||||||
|
|
||||||
def sort_key(self, k, v):
|
|
||||||
return k
|
|
||||||
|
|
||||||
def convert(self, k, v, column):
|
|
||||||
if column == 0:
|
|
||||||
return k
|
|
||||||
elif column == 1:
|
|
||||||
return short_format(v)
|
|
||||||
else:
|
|
||||||
raise ValueError
|
|
||||||
|
|
||||||
|
|
||||||
class ParametersDock(dockarea.Dock):
|
|
||||||
def __init__(self):
|
|
||||||
dockarea.Dock.__init__(self, "Parameters", size=(400, 300))
|
|
||||||
|
|
||||||
grid = LayoutWidget()
|
|
||||||
self.addWidget(grid)
|
|
||||||
|
|
||||||
self.search = QtGui.QLineEdit()
|
|
||||||
self.search.setPlaceholderText("search...")
|
|
||||||
self.search.editingFinished.connect(self._search_parameters)
|
|
||||||
grid.addWidget(self.search, 0, 0)
|
|
||||||
|
|
||||||
self.table = QtGui.QTableView()
|
|
||||||
self.table.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
|
|
||||||
self.table.horizontalHeader().setResizeMode(
|
|
||||||
QtGui.QHeaderView.ResizeToContents)
|
|
||||||
grid.addWidget(self.table, 1, 0)
|
|
||||||
|
|
||||||
def get_parameter(self, key):
|
|
||||||
return self.table_model.backing_store[key]
|
|
||||||
|
|
||||||
def _search_parameters(self):
|
|
||||||
model = self.table.model()
|
|
||||||
parentIndex = model.index(0, 0)
|
|
||||||
numRows = model.rowCount(parentIndex)
|
|
||||||
|
|
||||||
for row in range(numRows):
|
|
||||||
index = model.index(row, 0)
|
|
||||||
parameter = model.data(index, QtCore.Qt.DisplayRole)
|
|
||||||
if parameter.startswith(self.search.displayText()):
|
|
||||||
self.table.showRow(row)
|
|
||||||
else:
|
|
||||||
self.table.hideRow(row)
|
|
||||||
|
|
||||||
async def sub_connect(self, host, port):
|
|
||||||
self.subscriber = Subscriber("parameters", self.init_parameters_model)
|
|
||||||
await self.subscriber.connect(host, port)
|
|
||||||
|
|
||||||
async def sub_close(self):
|
|
||||||
await self.subscriber.close()
|
|
||||||
|
|
||||||
def init_parameters_model(self, init):
|
|
||||||
self.table_model = ParametersModel(self.table, init)
|
|
||||||
self.table.setModel(self.table_model)
|
|
||||||
return self.table_model
|
|
Loading…
Reference in New Issue