1
2
3
4
5
6
7
8
9
10
11
12 from iceprod.core.dataclasses import *
13 import pygtk
14 pygtk.require('2.0')
15 import gtk, gobject
16 from GtkIPModule import *
17 import logging
18
19 logger = logging.getLogger('GtkProjectDisplay')
20 NotConnectedException = 'Not connected'
21
22
24
27
29 gtk.VBox.__init__(self)
30 self.db = db
31 self.icetray= icetray
32 self.tree_store = gtk.TreeStore( str,str ,int)
33 self.textbuffer = None
34 self.metaproject_dict = { }
35 self.showprojects()
36 self.selection = None
37
39 selection = self.tv.get_selection()
40 model, iter = selection.get_selected()
41 if not iter: return MetaProject()
42 if not model.iter_has_child(iter):
43 iter = model.iter_parent(iter)
44 name = model.get_value(iter, 0)
45 version = model.get_value(iter, 1)
46 mid = model.get_value(iter, 2)
47 mp = MetaProject()
48 mp.SetName(name)
49 mp.SetVersion(version)
50 mp.SetId(mid)
51 return mp
52
54
55
56 self.rownum = 0
57 self.rows = {}
58 metaprojects = self.get_iconfig().GetMetaProjectList()
59 for mrow in metaprojects:
60 mid = mrow.GetId()
61 mpname = mrow.GetName()
62 mver = mrow.GetVersion()
63 mselected = False
64
65 metaproj = self.get_iconfig().GetMetaProject(mpname)
66 metadict = [ mpname, mver, mid]
67
68 projdict = {}
69 projects = mrow.GetProjectList()
70 for prow in projects:
71 pid = prow.GetId()
72 pname = prow.GetName()
73 ver = prow.GetVersion()
74 projdict[pname]=[pname,ver,pid]
75 self.rows[mpname] = {
76 'metaproject':metadict,'projects':projdict
77 }
78 self.sw = gtk.ScrolledWindow()
79
80
81 self.tv = gtk.TreeView(self.tree_store)
82 self.pack_start(self.sw)
83 self.sw.add(self.tv)
84 self.tv.column = [None]*5
85 self.tv.column[0] = gtk.TreeViewColumn('Project Name')
86 self.tv.column[1] = gtk.TreeViewColumn('version')
87 self.tv.column[2] = gtk.TreeViewColumn('')
88 self.tv.cell = [None]*6
89
90 self.selection = self.tv.get_selection()
91 self.selection.connect('changed', self.on_selection_changed)
92
93 for i in range(2):
94 self.tv.cell[i] = gtk.CellRendererText()
95 self.tv.append_column(self.tv.column[i])
96 self.tv.column[i].set_sort_column_id(i)
97 self.tv.column[i].pack_start(self.tv.cell[i], True)
98 self.tv.column[i].set_attributes(self.tv.cell[i], text=i)
99
100 self.show_all()
101
102 for m in self.rows.keys():
103 metaproject = self.rows[m]['metaproject']
104 projects = self.rows[m]['projects']
105
106 parent = self.tree_store.append( None, metaproject )
107 for p in projects.keys():
108 self.tree_store.append( parent, projects[p] )
109
110
111 - def set_text_buffer(self,textbuffer):
112 self.textbuffer = textbuffer
113
114 - def write_text_buffer(self,text):
115 if self.textbuffer:
116 self.textbuffer.set_text(text)
117 else:
118 print text
119
121 model, iter = selection.get_selected()
122 name = model.get_value(iter, 0)
123 version = model.get_value(iter, 1)
124 pid = model.get_value(iter, 2)
125 logger.info("selected: %d %s.%s" % (pid,name,version) )
126