1
2
3 """
4 Gtk from for displaying and configuring IceProdPre Modules in
5 GtkIcetraConfig application
6
7 copyright (c) 2005 the icecube collaboration
8
9 @version: $Revision: $
10 @date: $Date: $
11 @author: Juan Carlos Diaz Velez <juancarlos@icecube.wisc.edu>
12 """
13
14 import pygtk
15 pygtk.require('2.0')
16 import gtk
17 from GtkParameterList import GtkParameterList
18 from GtkIceProdPreList import GtkIceProdPreList
19 from iceprod.core.dataclasses import *
20 from GtkIPModule import *
21 import logging
22
23 logger = logging.getLogger('GtkIceProdPre')
24
26
27 TARGETS = [ ('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0), ]
28
30 model, iter = selection.get_selected()
31 if iter:
32 name = model.get_value(iter, 0)
33 cname = model.get_value(iter, 1)
34 logger.debug("selected: %s %s " % (name,cname))
35
39
41 sel = self.tv.get_selection()
42 model, iter = sel.get_selected()
43 name = model.get_value(iter, 0)
44 cname = model.get_value(iter, 1)
45 path = model.get_path(iter)
46 self.iconfig.RemoveIceProdPre(name)
47 self.showmodules()
48 logger.debug("deleted: %s %s %" % (name,cname))
49
59
60 - def col_edited( self, cell, path, new_text, model ):
61 """
62 Canges the name of the module
63 @todo: add type checking for input values
64 @todo: add descriptions
65 """
66 logger.debug("Change '%s' to '%s'" % (model[path][0], new_text))
67 row = model[path]
68 mname = row[0]
69 mod = self.iconfig.GetIceProdPre(mname)
70 if mod:
71 self.iconfig.RemoveIceProdPre(mod.GetName())
72 mod.SetName(u'%s' % new_text)
73 self.iconfig.AddIceProdPre(mod)
74 row[0] = u'%s' % new_text
75
77 self.iconfig = iconfig
78 self.pdb = pdb
79 gtk.VBox.__init__(self)
80 self.printer = None
81
82
83 self.liststore = gtk.ListStore(str,str)
84 self.sw = gtk.ScrolledWindow()
85 self.tv = gtk.TreeView(self.liststore)
86 self.pack_start(self.sw)
87
88 self.b0 = gtk.Button('Add IceProdPre',stock=gtk.STOCK_ADD)
89 self.b0.connect('clicked', self.add_module)
90 self.b1 = gtk.Button('Delete IceProdPre',stock=gtk.STOCK_DELETE)
91 self.b1.connect('clicked', self.delete_module)
92
93 self.hbbox = gtk.HButtonBox()
94 self.hbbox.pack_start(self.b0, False, False, 1)
95 self.hbbox.pack_start(self.b1, False, False, 1)
96
97 self.tv.connect('row-activated', self.configure_module)
98 self.pack_start(self.hbbox, False)
99 self.sw.add(self.tv)
100
101 self.tv.column = [None]*6
102 self.tv.column[0] = gtk.TreeViewColumn('name')
103 self.tv.column[1] = gtk.TreeViewColumn('class')
104
105 self.tv.cell = [None]*6
106
107 self.selection = self.tv.get_selection()
108 self.selection.connect('changed', self.on_selection_changed)
109
110 for i in range(2):
111 self.tv.cell[i] = gtk.CellRendererText()
112 self.tv.append_column(self.tv.column[i])
113 self.tv.column[i].set_sort_column_id(i)
114 self.tv.column[i].pack_start(self.tv.cell[i], True)
115 self.tv.column[i].set_attributes(self.tv.cell[i], text=i)
116
117 self.tv.cell[0].set_property( 'editable', True)
118 self.tv.cell[0].connect( 'edited', self.col_edited,self.liststore)
119
120
121
122 self.tv.enable_model_drag_source( gtk.gdk.BUTTON1_MASK,
123 self.TARGETS,
124 gtk.gdk.ACTION_DEFAULT|
125 gtk.gdk.ACTION_MOVE)
126 self.tv.enable_model_drag_dest(self.TARGETS,
127 gtk.gdk.ACTION_DEFAULT)
128
129 self.tv.connect("drag_data_get", self.drag_data_get_data)
130 self.tv.connect("drag_data_received", self.drag_data_received_data)
131
132 self.showmodules()
133 self.show_all()
134
136 treeselection = treeview.get_selection()
137 model, iter = treeselection.get_selected()
138 data = model.get_value(iter, 0)
139 selection.set(selection.target, 8, data)
140
143 model = treeview.get_model()
144 data = selection.data
145 drop_info = treeview.get_dest_row_at_pos(x, y)
146 if drop_info:
147 path, position = drop_info
148 iter = model.get_iter(path)
149
150 row = []
151 module = self.iconfig.RemoveIceProdPre(data)
152 row.append(module.GetName())
153 row.append(module.GetClass())
154 if (position == gtk.TREE_VIEW_DROP_BEFORE
155 or position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE):
156 model.insert_before(iter, row)
157 self.iconfig.InsertIceProdPre(path[0],module)
158 else:
159 model.insert_after(iter, row)
160 self.iconfig.InsertIceProdPre(path[0]+1,module)
161 if context.action == gtk.gdk.ACTION_MOVE:
162 context.finish(True, True, etime)
163 self.reload(self.iconfig)
164 return
165
167 self.printer = printer
168
170 if self.printer:
171 self.printer(txt)
172 else:
173 print txt
174
178
187