| Home | Trees | Indices | Help |
|---|
|
|
1 #!/bin/env python
2 # copyright (c) 2005
3 # the icecube collaboration
4 # $Id: $
5 #
6 # @version $Revision: $
7 # @date $Date: $
8 # @author Juan Carlos Diaz Velez <juancarlos@icecube.wisc.edu>
9 # @brief icetray connections frame for GtkIcetraConfig application
10 #########################################################################
11 import pygtk
12 pygtk.require("2.0")
13 import gtk, gobject
14 from iceprod.core.dataclasses import *
15 import logging
16 from GtkModuleList import GtkModuleList
17
18 logger = logging.getLogger('GtkServiceList')
19
21 """ The GUI class is the controller for our application """
22
23 fooclass = 'BarService'
24
28
29
31 """ Sets up and populates gtk.TreeStore """
32 self.store = gtk.TreeStore( int, str, str, str, gobject.TYPE_BOOLEAN )
33 row = [0,self.fooname,self.fooclass, self.fooproject,False]
34 self.store.append(None, row )
35
36 if not self.pdb.cached and not self.pdb.connect(): return
37 for mp in self.iconfig.GetMetaProjectList():
38 for p in self.pdb.GetProjects(mp.GetId()):
39 pname = p.GetName()
40 pver = p.GetVersion()
41
42 services = self.pdb.GetServicesP(pname,pver)
43 for s in services:
44 if not self.iconfig.GetService(s.GetName()):
45 row = [s.GetId(),s.GetName(), s.GetClass(),pname,False]
46 logger.debug('|'.join(map(str,row)))
47 self.store.append(None, row )
48
49 for p in self.iconfig.GetProjectList():
50 pname = p.GetName()
51 pver = p.GetVersion()
52
53 services = self.pdb.GetServicesP(pname,pver)
54 for s in services:
55 if not self.iconfig.GetService(s.GetName()):
56 row = [s.GetId(),s.GetName(), s.GetClass(),pname]
57 logger.debug('|'.join(map(str,row)))
58 self.store.append(None,row )
59
61 """
62 Add Service
63 """
64 sel = tv.get_selection()
65 sel.select_path(path)
66 model, iter = sel.get_selected()
67 id = model.get_value(iter, 0)
68 name = model.get_value(iter, 1)
69 cname = model.get_value(iter, 2)
70
71 proj_name = model.get_value(iter, 3)
72 proj = self.iconfig.GetProject(proj_name)
73
74 newserv = Service()
75 newserv.SetName(name)
76 newserv.SetClass(cname)
77
78 if not self.pdb.cached and not self.pdb.connect(): return
79 proj = self.iconfig.GetProject(proj_name)
80 if not proj:
81 for mp in self.iconfig.GetMetaProjectList():
82 for p in self.pdb.GetProjectsSM(newserv,mp):
83 mp.AddProject(p.GetName(),p)
84 if p.GetName() == proj_name: proj = p
85 if not proj:
86 raise Exception, "Could not find project for '%s'"% newserv.GetName()
87 newserv.AddProject(proj_name,proj)
88
89 parameters = self.pdb.GetParameters(int(id))
90 for p in parameters:
91 param = Parameter()
92 param.SetName(p.GetName())
93 param.SetType(p.GetType())
94 param.SetDescription(p.GetDescription())
95 param.SetValue(p.GetValue())
96 newserv.AddParameter(param)
97
98 self.iconfig.AddService(newserv)
99 self.gtkmod.showservices()
100 self.root.destroy()
101
103 model = self.store
104 self.mdict = {}
105 if not self.pdb.cached and not self.pdb.connect(): return
106 model.foreach(self.do_change)
107 return
108
110 """
111 Add Service
112 """
113 if model[path][4]:
114 id = model[path][0]
115 name = model[path][1]
116 cname = model[path][2]
117
118 proj_name = model[path][3]
119 proj = self.iconfig.GetProject(proj_name)
120
121 newserv = Service()
122 newserv.SetName(name)
123 newserv.SetClass(cname)
124
125 proj = self.iconfig.GetProject(proj_name)
126 if not proj:
127 for mp in self.iconfig.GetMetaProjectList():
128 for p in self.pdb.GetProjectsSM(newserv,mp):
129 mp.AddProject(p.GetName(),p)
130 if p.GetName() == proj_name: proj = p
131
132 if not proj: # search all projects in mp to match name
133 for p in self.pdb.GetProjects(mp.GetId()):
134 if p.GetName() == proj_name:
135 mp.AddProject(p.GetName(),p)
136 proj = p
137 break
138 if not proj:
139 raise Exception, "Could not find project for '%s'" % newserv.GetName()
140 newserv.AddProject(proj_name,proj)
141
142 parameters = self.pdb.GetParameters(int(id))
143 for p in parameters:
144 param = Parameter()
145 param.SetName(p.GetName())
146 param.SetType(p.GetType())
147 param.SetDescription(p.GetDescription())
148 param.SetValue(p.GetValue())
149 newserv.AddParameter(param)
150
151 self.iconfig.AddService(newserv)
152 self.gtkmod.showservices()
153 self.root.destroy()
154
155
157 """ Form a view for the Tree Model """
158 self.view = gtk.TreeView( model )
159 self.view.connect('row-activated', self.add_service)
160
161 # setup the text cell renderer and allows these
162 # cells to be edited.
163 self.renderer = [None]*5
164 for i in range(4):
165 self.renderer[i] = gtk.CellRendererText()
166 self.renderer[4] = gtk.CellRendererToggle()
167 self.renderer[4].set_property('activatable', True)
168 self.renderer[4].connect( 'toggled', self.row_toggled)
169
170 self.column = [None]*5
171 self.column[0] = gtk.TreeViewColumn("DbID",self.renderer[0], text=0)
172 self.column[0].set_sort_column_id(0)
173 self.column[1] = gtk.TreeViewColumn("Default Name",self.renderer[1], text=1)
174 self.column[1].set_sort_column_id(1)
175 self.column[2] = gtk.TreeViewColumn("Class",self.renderer[2], text=2)
176 self.column[2].set_sort_column_id(2)
177 self.column[3] = gtk.TreeViewColumn("Project",self.renderer[3],text=3 )
178 self.column[4] = gtk.TreeViewColumn('Selected')
179 self.column[4].pack_start(self.renderer[4], True)
180 self.column[4].add_attribute( self.renderer[4], "active", 4)
181
182 for i in range(5):
183 self.view.append_column( self.column[i] )
184 return self.view
185
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Fri Jan 4 16:45:22 2013 | http://epydoc.sourceforge.net |