1
2
3
4
5
6
7
8
9
10
11 import pygtk
12 pygtk.require('2.0')
13 import gtk
14 from iceprod.core.dataclasses import *
15 from GtkIPModule import *
16 import logging
17
18 logger = logging.getLogger('GtkDAGRel')
19
21
22 TARGETS = [ ('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0), ]
23
25 try:
26 model, iter = selection.get_selected()
27 src = model.get_value(iter, 0)
28 outbox = model.get_value(iter, 1)
29 dest = model.get_value(iter, 2)
30 inbox = model.get_value(iter, 3)
31 logger.debug("selected connection: %s@%s => %s@%s" % (outbox,src,inbox,dest))
32
33 self.tips.disable()
34 src_class = self.iconfig.GetModule(src).GetClass()
35 dest_class = self.iconfig.GetModule(dest).GetClass()
36 self.tips.set_tip(self.tv, "%s <> %s" % (src_class,dest_class))
37 self.tips.enable()
38 except:
39 None
40
41
43 gtk.main_quit()
44 return False
45
47 sel = self.tv.get_selection()
48 model, iter = sel.get_selected()
49 path = model.get_path(iter)
50 connection_number = model.get_value(iter, 4)
51
52 self.showconnections()
53
59
60
62 self.iconfig = iconfig
63 gtk.VBox.__init__(self)
64
65 self.tips = gtk.Tooltips()
66 self.tips.enable()
67
68
69 self.liststore = gtk.ListStore(str,str,int)
70
71 self.sw = gtk.ScrolledWindow()
72
73
74 self.tv = gtk.TreeView(self.liststore)
75 self.pack_start(self.sw)
76 self.b0 = gtk.Button('Add Connection')
77 self.b1 = gtk.Button('Delete Connection')
78 self.b0.connect('clicked', self.add_connection)
79 self.b1.connect('clicked', self.delete_connection)
80
81 self.hbbox = gtk.HButtonBox()
82 self.hbbox.pack_start(self.b0, False, False, 1)
83 self.hbbox.pack_start(self.b1, False, False, 1)
84
85 self.pack_start(self.hbbox, False)
86 self.sw.add(self.tv)
87
88 self.tv.column = [None]*3
89 self.tv.column[0] = gtk.TreeViewColumn('From')
90 self.tv.column[1] = gtk.TreeViewColumn('To')
91
92
93
94 self.tv.cell = [None]*3
95
96 self.selection = self.tv.get_selection()
97 self.selection.connect('changed', self.on_selection_changed)
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 self.tv.cell[0] = gtk.CellRendererText()
113 self.tv.cell[0].set_property( 'editable', False)
114 self.tv.append_column(self.tv.column[0])
115 self.tv.column[0].set_sort_column_id(0)
116 self.tv.column[0].pack_start(self.tv.cell[0], True)
117 self.tv.column[0].set_attributes(self.tv.cell[0], text=0)
118
119 self.tv.cell[1] = gtk.CellRendererText()
120 self.tv.cell[1].set_property( 'editable', True)
121 self.tv.cell[1].connect( 'edited', self.cell_edit,self.liststore,1)
122 self.tv.append_column(self.tv.column[1])
123 self.tv.column[1].pack_start(self.tv.cell[1], True)
124 self.tv.column[1].set_attributes(self.tv.cell[1], text=1)
125
126 self.showconnections()
127 self.show_all()
128
129
133
147
148
149 - def cell_edit( self, cell, path, new_text,model,col ):
150 """
151 Canges the value of the connection
152 """
153 logger.debug("Change '%s' to '%s'" % (model[path][col], new_text))
154 row = model[path]
155 src = row[1]
156 child = row[2]
157 srctsk = self.iconfig.GetTaskDefinitions()[src]
158 srctsk.GetChildren()[child] = new_text
159
160
162 treeselection = treeview.get_selection()
163 model, iter = treeselection.get_selected()
164 data = str(model.get_value(iter, 4))
165 selection.set(selection.target, 8, data)
166
169 model = treeview.get_model()
170 data = selection.data
171 drop_info = treeview.get_dest_row_at_pos(x, y)
172 if drop_info:
173 path, position = drop_info
174 iter = model.get_iter(path)
175
176 row = []
177 old_row = int(data)
178 new_row = int(model.get_value(iter, 4))
179 conn = self.iconfig.RemoveConnection(old_row)
180 self.iconfig.InsertConnection(new_row,conn)
181 row.append(conn.GetOutbox().GetModule())
182 row.append(conn.GetOutbox().GetBoxName())
183 row.append(conn.GetInbox().GetModule())
184 row.append(conn.GetInbox().GetBoxName())
185
186 if (position == gtk.TREE_VIEW_DROP_BEFORE
187 or position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE):
188 row.append( new_row )
189 model.insert_before(iter, row)
190 else:
191 row.append( new_row + 1)
192 model.insert_after(iter, row)
193 else:
194 model.append([data])
195 if context.action == gtk.gdk.ACTION_MOVE:
196 context.finish(True, True, etime)
197 return
198