gui: add console

This commit is contained in:
Sebastien Bourdeauducq 2015-07-25 00:36:16 +08:00
parent f210e0dcd6
commit ef8b09d9bc
4 changed files with 46 additions and 6 deletions

View File

@ -18,6 +18,7 @@ from artiq.gui.results import ResultsDock
from artiq.gui.parameters import ParametersDock from artiq.gui.parameters import ParametersDock
from artiq.gui.schedule import ScheduleDock from artiq.gui.schedule import ScheduleDock
from artiq.gui.log import LogDock from artiq.gui.log import LogDock
from artiq.gui.console import ConsoleDock
data_dir = os.path.join(os.path.abspath(os.path.dirname(__file__)), data_dir = os.path.join(os.path.abspath(os.path.dirname(__file__)),
@ -109,7 +110,19 @@ def main():
args.server, args.port_notify)) args.server, args.port_notify))
atexit.register(lambda: loop.run_until_complete(d_log.sub_close())) atexit.register(lambda: loop.run_until_complete(d_log.sub_close()))
area.addDock(d_log, "bottom") pdb = AsyncioClient()
loop.run_until_complete(pdb.connect_rpc(
args.server, args.port_control, "master_pdb"))
atexit.register(lambda: pdb.close_rpc())
def _get_parameter(k, v):
asyncio.async(pdb.set(k, v))
d_console = ConsoleDock(
d_params.get_parameter,
_get_parameter,
d_results.get_result)
area.addDock(d_console, "bottom")
area.addDock(d_log, "above", d_console)
area.addDock(d_schedule, "above", d_log) area.addDock(d_schedule, "above", d_log)
win.show() win.show()

21
artiq/gui/console.py Normal file
View File

@ -0,0 +1,21 @@
from pyqtgraph import console, dockarea
_help = """
The following functions are available:
get_parameter(key)
set_parameter(key, value) [asynchronous update]
get_result(key) [real-time results only]
"""
class ConsoleDock(dockarea.Dock):
def __init__(self, get_parameter, set_parameter, get_result):
dockarea.Dock.__init__(self, "Console", size=(1000, 300))
ns = {
"get_parameter": get_parameter,
"set_parameter": set_parameter,
"get_result": get_result
}
c = console.ConsoleWidget(namespace=ns, text=_help)
self.addWidget(c)

View File

@ -34,7 +34,7 @@ class ParametersDock(dockarea.Dock):
self.search = QtGui.QLineEdit() self.search = QtGui.QLineEdit()
self.search.setPlaceholderText("search...") self.search.setPlaceholderText("search...")
self.search.editingFinished.connect(self.search_parameters) self.search.editingFinished.connect(self._search_parameters)
grid.addWidget(self.search, 0, 0) grid.addWidget(self.search, 0, 0)
self.table = QtGui.QTableView() self.table = QtGui.QTableView()
@ -43,7 +43,10 @@ class ParametersDock(dockarea.Dock):
QtGui.QHeaderView.ResizeToContents) QtGui.QHeaderView.ResizeToContents)
grid.addWidget(self.table, 1, 0) grid.addWidget(self.table, 1, 0)
def search_parameters(self): def get_parameter(self, key):
return self.table_model.backing_store[key]
def _search_parameters(self):
model = self.table.model() model = self.table.model()
parentIndex = model.index(0, 0) parentIndex = model.index(0, 0)
numRows = model.rowCount(parentIndex) numRows = model.rowCount(parentIndex)
@ -66,6 +69,6 @@ class ParametersDock(dockarea.Dock):
yield from self.subscriber.close() yield from self.subscriber.close()
def init_parameters_model(self, init): def init_parameters_model(self, init):
table_model = ParametersModel(self.table, init) self.table_model = ParametersModel(self.table, init)
self.table.setModel(table_model) self.table.setModel(self.table_model)
return table_model return self.table_model

View File

@ -55,6 +55,9 @@ class ResultsDock(dockarea.Dock):
self.displays = dict() self.displays = dict()
def get_result(self, key):
return self.table_model.backing_store[key]
@asyncio.coroutine @asyncio.coroutine
def sub_connect(self, host, port): def sub_connect(self, host, port):
self.subscriber = Subscriber("rt_results", self.init_results_model, self.subscriber = Subscriber("rt_results", self.init_results_model,