1
1
import asyncio
2
2
import time
3
3
4
- from quamash import QtGui
4
+ from quamash import QtGui , QtCore
5
5
from pyqtgraph import dockarea
6
6
7
7
from artiq .protocols .sync_struct import Subscriber
@@ -49,13 +49,20 @@ def convert(self, k, v, column):
49
49
50
50
51
51
class ScheduleDock (dockarea .Dock ):
52
- def __init__ (self ):
52
+ def __init__ (self , schedule_ctl ):
53
53
dockarea .Dock .__init__ (self , "Schedule" , size = (1000 , 300 ))
54
54
55
+ self .schedule_ctl = schedule_ctl
56
+
55
57
self .table = QtGui .QTableView ()
56
58
self .table .setSelectionBehavior (QtGui .QAbstractItemView .SelectRows )
57
59
self .addWidget (self .table )
58
60
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
+
59
66
@asyncio .coroutine
60
67
def sub_connect (self , host , port ):
61
68
self .subscriber = Subscriber ("schedule" , self .init_schedule_model )
@@ -66,6 +73,17 @@ def sub_close(self):
66
73
yield from self .subscriber .close ()
67
74
68
75
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