Skip to content

Commit

Permalink
gui: support experiment cancellation
Browse files Browse the repository at this point in the history
sbourdeauducq committed May 24, 2015
1 parent ae46152 commit 5fb86af
Showing 2 changed files with 24 additions and 6 deletions.
2 changes: 1 addition & 1 deletion artiq/frontend/artiq_gui.py
Original file line number Diff line number Diff line change
@@ -73,7 +73,7 @@ def main():
d_log = LogDock()
area.addDock(d_log, "bottom")

d_schedule = ScheduleDock()
d_schedule = ScheduleDock(schedule_ctl)
area.addDock(d_schedule, "above", d_log)
loop.run_until_complete(d_schedule.sub_connect(
args.server, args.port_notify))
28 changes: 23 additions & 5 deletions artiq/gui/schedule.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import asyncio
import time

from quamash import QtGui
from quamash import QtGui, QtCore
from pyqtgraph import dockarea

from artiq.protocols.sync_struct import Subscriber
@@ -49,13 +49,20 @@ def convert(self, k, v, column):


class ScheduleDock(dockarea.Dock):
def __init__(self):
def __init__(self, schedule_ctl):
dockarea.Dock.__init__(self, "Schedule", size=(1000, 300))

self.schedule_ctl = schedule_ctl

self.table = QtGui.QTableView()
self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.addWidget(self.table)

self.table.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
delete_action = QtGui.QAction("Delete", self.table)
delete_action.triggered.connect(self.delete_clicked)
self.table.addAction(delete_action)

@asyncio.coroutine
def sub_connect(self, host, port):
self.subscriber = Subscriber("schedule", self.init_schedule_model)
@@ -66,6 +73,17 @@ def sub_close(self):
yield from self.subscriber.close()

def init_schedule_model(self, init):
table_model = _ScheduleModel(self.table, init)
self.table.setModel(table_model)
return table_model
self.table_model = _ScheduleModel(self.table, init)
self.table.setModel(self.table_model)
return self.table_model

@asyncio.coroutine
def delete(self, rid):
yield from self.schedule_ctl.delete(rid)

def delete_clicked(self):
idx = self.table.selectedIndexes()
if idx:
row = idx[0].row()
rid = self.table_model.row_to_key[row]
asyncio.async(self.delete(rid))

0 comments on commit 5fb86af

Please sign in to comment.