Skip to content

Commit 5fb86af

Browse files
committedMay 24, 2015
gui: support experiment cancellation
1 parent ae46152 commit 5fb86af

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed
 

‎artiq/frontend/artiq_gui.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def main():
7373
d_log = LogDock()
7474
area.addDock(d_log, "bottom")
7575

76-
d_schedule = ScheduleDock()
76+
d_schedule = ScheduleDock(schedule_ctl)
7777
area.addDock(d_schedule, "above", d_log)
7878
loop.run_until_complete(d_schedule.sub_connect(
7979
args.server, args.port_notify))

‎artiq/gui/schedule.py

+23-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import asyncio
22
import time
33

4-
from quamash import QtGui
4+
from quamash import QtGui, QtCore
55
from pyqtgraph import dockarea
66

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

5050

5151
class ScheduleDock(dockarea.Dock):
52-
def __init__(self):
52+
def __init__(self, schedule_ctl):
5353
dockarea.Dock.__init__(self, "Schedule", size=(1000, 300))
5454

55+
self.schedule_ctl = schedule_ctl
56+
5557
self.table = QtGui.QTableView()
5658
self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
5759
self.addWidget(self.table)
5860

61+
self.table.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
62+
delete_action = QtGui.QAction("Delete", self.table)
63+
delete_action.triggered.connect(self.delete_clicked)
64+
self.table.addAction(delete_action)
65+
5966
@asyncio.coroutine
6067
def sub_connect(self, host, port):
6168
self.subscriber = Subscriber("schedule", self.init_schedule_model)
@@ -66,6 +73,17 @@ def sub_close(self):
6673
yield from self.subscriber.close()
6774

6875
def init_schedule_model(self, init):
69-
table_model = _ScheduleModel(self.table, init)
70-
self.table.setModel(table_model)
71-
return table_model
76+
self.table_model = _ScheduleModel(self.table, init)
77+
self.table.setModel(self.table_model)
78+
return self.table_model
79+
80+
@asyncio.coroutine
81+
def delete(self, rid):
82+
yield from self.schedule_ctl.delete(rid)
83+
84+
def delete_clicked(self):
85+
idx = self.table.selectedIndexes()
86+
if idx:
87+
row = idx[0].row()
88+
rid = self.table_model.row_to_key[row]
89+
asyncio.async(self.delete(rid))

0 commit comments

Comments
 (0)
Please sign in to comment.