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 import logging
17 from GtkIPModule import *
18
19 logger = logging.getLogger('GtkExtern')
20 NotConnectedException = 'Not connected'
21
22
24
25 param = {}
26 param["Name"] = (Extern.GetName ,Extern.SetName)
27 param["Version"] = (Extern.GetVersion,Extern.SetVersion)
28 param["Description"]= (Extern.GetDescription,Extern.SetDescription)
29 param["Executable"] = (Extern.GetExec,Extern.SetExec)
30 param["Arguments"] = (Extern.GetArgs,Extern.SetArgs)
31 param["Input File"] = (Extern.GetInFile,Extern.SetInFile)
32 param["Output File"]= (Extern.GetOutFile,Extern.SetOutFile)
33 param["Error File"] = (Extern.GetErrFile,Extern.SetErrFile)
34
37
39 gtk.VBox.__init__(self)
40 self.steering = steering
41 self.tree_store = gtk.TreeStore( str,str , int)
42 self.textbuffer = None
43 self.sw = gtk.ScrolledWindow()
44
45
46 self.tv = gtk.TreeView(self.tree_store)
47 self.pack_start(self.sw)
48 self.sw.add(self.tv)
49 self.tv.column = [None]*2
50 self.tv.column[0] = gtk.TreeViewColumn('Name')
51 self.tv.column[1] = gtk.TreeViewColumn('Value')
52
53 self.tv.cell = [None]*2
54 self.tv.cell[0] = gtk.CellRendererText()
55 self.tv.append_column(self.tv.column[0])
56 self.tv.column[0].set_sort_column_id(0)
57 self.tv.column[0].pack_start(self.tv.cell[0], True)
58 self.tv.column[0].set_attributes(self.tv.cell[0], text=0)
59
60 self.tv.cell[1] = gtk.CellRendererText()
61 self.tv.cell[1].set_property('editable',True)
62 self.tv.append_column(self.tv.column[1])
63 self.tv.column[1].set_sort_column_id(1)
64 self.tv.column[1].pack_start(self.tv.cell[1], True)
65 self.tv.column[1].set_attributes(self.tv.cell[1], text=1)
66 self.tv.cell[1].connect('edited', self.edited_cb, (self.tree_store, 1))
67
68
69
70 self.showexterns()
71 self.selection = None
72
76
78 selection = self.tv.get_selection()
79 model, iter = selection.get_selected()
80 if not model.iter_has_child(iter):
81 iter = model.iter_parent(iter)
82 name = model.get_value(iter, 0)
83 value = model.get_value(iter, 1)
84 extern = Extern()
85
86
87 return extern
88
90
91
92 self.rownum = 0
93 self.rows = {}
94 externs = self.get_iconfig().GetExterns()
95 for i in range(len(externs)):
96 e = externs[i]
97 name = e.GetName()
98 version = e.GetVersion()
99 executable = e.GetExec()
100 args = e.GetArgs()
101 mselected = False
102
103 externdict = [ e.GetName() , e.GetVersion() , i]
104 paramdict = {}
105 for key in self.param.keys():
106 func = self.param[key]
107 paramdict[key]=[ key, self.param[key][0](e) ,i]
108 self.rows[e.GetName()] = {
109 'extern':externdict,'parameters':paramdict,'obj': e
110 }
111
112 self.selection = self.tv.get_selection()
113 self.selection.connect('changed', self.on_selection_changed)
114
115 self.show_all()
116 self.tree_store.clear()
117
118 for m in self.rows.keys():
119 extern = self.rows[m]['extern']
120 params = self.rows[m]['parameters']
121
122 parent = self.tree_store.append( None, extern)
123 for p in params.values():
124 self.tree_store.append( parent, p )
125
126
127 - def set_text_buffer(self,textbuffer):
128 self.textbuffer = textbuffer
129
130 - def write_text_buffer(self,text):
131 if self.textbuffer:
132 self.textbuffer.set_text(text)
133 else:
134 print text
135
136 - def edited_cb(self,cell, path, new_text, user_data):
137 store, column = user_data
138 iter = store.get_iter(path)
139 name = store.get_value(iter, 0)
140 value = store.get_value(iter, 1)
141 index = store.get_value(iter, 2)
142 store.set_value(iter, 1, new_text)
143 if store.iter_has_child(iter):
144 return
145 else:
146 iter = store.iter_parent(iter)
147 e = self.rows[store.get_value(iter, 0)]["obj"]
148 store.set_value(iter, 0,self.param["Name"][0](e) )
149 store.set_value(iter, 1,self.param["Version"][0](e) )
150 self.param[name][1](e,new_text)
151 return
152
154 model, iter = selection.get_selected()
155 name = model.get_value(iter, 0)
156 value = model.get_value(iter, 1)
157