Package vwidget :: Module cluster
[hide private]
[frames] | no frames]

Source Code for Module vwidget.cluster

 1  """ 
 2  A module for GUI management of cobra.cluster clients 
 3  calling into a server. 
 4  """ 
 5   
 6  import gtk 
 7   
 8  import cobra 
 9  import cobra.cluster as c_cluster 
10   
11  import vwidget.util as vw_util 
12  import vwidget.views as vw_views 
13   
14  from vwidget.main import idlethread 
15 16 -class ClusterServerView(vw_views.VTreeView, 17 c_cluster.ClusterCallback):
18 """ 19 A cluster server status GUI. 20 """ 21 __cols__ = ( 22 ("Id", 0, int), 23 ("Client",1,str), 24 ("Status",2,str), 25 ("Percent",3,int) 26 ) 27
28 - def __init__(self):
29 vw_views.VTreeView.__init__(self) 30 # Hook all the GUI callbacks in the server. 31 #FIXME make this a callback object in the server 32 self.id_iter = {} 33 # Setup a progress bar renderer 34 self.treeview.remove_column(self.treeview.get_column(3)) 35 col = vw_util.makeColumn("Percent", 3, cell=gtk.CellRendererProgress(), links={"value":3}) 36 self.treeview.append_column(col)
37 38 # Mirror the server interfaces so it's easy to keep things straight
39 - def workGotten(self, server, work):
40 ip,port = cobra.getCallerInfo() 41 self._dispWorkGotten(work, ip, port)
42 43 @idlethread
44 - def _dispWorkGotten(self, work, ip, port):
45 iter = self.model.append((work.id, ip, "Starting", 0)) 46 self.id_iter[work.id] = iter
47 48 @idlethread
49 - def workDone(self, server, work):
50 iter = self.id_iter.pop(work.id, None) 51 if iter != None: 52 self.vwRemove(iter)
53
54 - def workTimeout(self, server, work):
55 self.workDone(server, work)
56
57 - def workCanceled(self, server, work):
58 self.workDone(server, work)
59
60 - def workFailed(self, server, work):
61 self.workDone(server, work)
62 63 @idlethread
64 - def workStatus(self, server, workid, status):
65 iter = self.id_iter.get(workid) 66 self.model.set_value(iter, 2, status)
67 68 @idlethread
69 - def workCompletion(self, server, workid, percent):
70 iter = self.id_iter.get(workid) 71 self.model.set_value(iter, 3, percent)
72