Package iceprod :: Package client :: Package gtk :: Module GtkSteering
[hide private]
[frames] | no frames]

Source Code for Module iceprod.client.gtk.GtkSteering

  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   
 12  import pygtk 
 13  pygtk.require('2.0') 
 14  import gtk 
 15  from iceprod.core.dataclasses import * 
 16  from GtkIPModule import * 
 17  import logging 
 18   
 19  logger = logging.getLogger('GtkSteering') 
 20   
21 -class GtkSteering(GtkIPModule):
22
23 - def on_selection_changed(self,selection):
24 try: 25 model, iter = selection.get_selected() 26 name = model.get_value(iter, 0) 27 value = model.get_value(iter, 1) 28 except: 29 None
30 31
32 - def delete_event(self, widget, event, data=None):
33 gtk.main_quit() 34 return False
35
36 - def delete_steering(self, b):
37 sel = self.tv.get_selection() 38 model, iter = sel.get_selected() 39 name = model.get_value(iter, 1) 40 self.steering.RemoveParameter(name) 41 model.remove(iter)
42
43 - def add_steering(self, b):
44 """ 45 add steering parameter 46 """ 47 row = [] 48 param = Parameter() 49 param.SetName('new_parameter') 50 param.SetType('string') 51 param.SetValue('NULL') 52 self.steering.AddParameter(param) 53 54 row.append(param.GetType()) 55 row.append(param.GetName()) 56 row.append(param.GetValue()) 57 i0 = self.liststore.append(row) 58 sel = self.tv.get_selection() 59 sel.select_iter(i0)
60 61 62
63 - def __init__(self,steering):
64 self.steering = steering 65 gtk.VBox.__init__(self) 66 67 # create a liststore with three int columns 68 self.liststore = gtk.ListStore(str,str,str) 69 70 self.sw = gtk.ScrolledWindow() 71 72 # Set sort column 73 self.tv = gtk.TreeView(self.liststore) 74 self.pack_start(self.sw) 75 76 self.b0 = gtk.Button('Add Parameter') 77 self.b1 = gtk.Button('Delete Parameter') 78 self.b0.connect('clicked', self.add_steering) 79 self.b1.connect('clicked', self.delete_steering) 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('Type') 90 self.tv.column[1] = gtk.TreeViewColumn('Parameter') 91 self.tv.column[2] = gtk.TreeViewColumn('Value') 92 93 self.tv.cell = [None]*3 94 95 self.selection = self.tv.get_selection() 96 self.selection.connect('changed', self.on_selection_changed) 97 98 99 for i in range(3): 100 self.tv.cell[i] = gtk.CellRendererText() 101 self.tv.cell[i].set_property( 'editable', True) 102 self.tv.cell[i].connect( 'edited', self.cell_edit,self.liststore,i) 103 self.tv.append_column(self.tv.column[i]) 104 self.tv.column[i].set_sort_column_id(i) 105 self.tv.column[i].pack_start(self.tv.cell[i], True) 106 self.tv.column[i].set_attributes(self.tv.cell[i], text=i) 107 108 self.showsteerings() 109 self.show_all()
110
111 - def reload(self,steering):
112 self.steering = steering 113 self.showsteerings()
114
115 - def showsteerings(self):
116 self.liststore.clear() 117 for s in self.steering.GetParameters(): 118 119 row = [s.GetType(),s.GetName(),s.GetValue()] 120 self.liststore.append(row) 121 122 # select the new row in each view 123 sel = self.tv.get_selection()
124 # sel.select_iter(i1) 125
126 - def cell_edit( self, cell, path, new_text,model,col ):
127 """ 128 Canges the value of the steering parameter 129 """ 130 logger.debug("Change '%s' to '%s'" % (model[path][col], new_text)) 131 row = model[path] 132 pname = row[col] 133 param = self.steering.GetParameter(row[1]) 134 if not param: 135 logger.warn("parameter %s not found" % row[1]) 136 return 137 if (col == 0): 138 param.SetType(new_text) 139 elif (col == 1): 140 self.steering.RemoveParameter(model[path][col]) 141 param.SetName(new_text) 142 self.steering.AddParameter(param) 143 elif (col == 2): 144 param.SetValue(new_text) 145 else: 146 logger.error("unknown column %d " % col) 147 row[col] = u'%s' % new_text
148