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

Source Code for Module iceprod.client.gtk.GtkExtern

  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  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   
23 -class GtkExtern(GtkIPModule):
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
35 - def get_iconfig(self):
36 return self.steering
37
38 - def __init__(self,steering):
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 # Set sort column 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
73 - def reload(self,steering):
74 self.steering = steering 75 self.showexterns()
76
77 - def GetSelected(self):
78 selection = self.tv.get_selection() 79 model, iter = selection.get_selected() 80 if not model.iter_has_child(iter): # This is not the top level 81 iter = model.iter_parent(iter) # get parent 82 name = model.get_value(iter, 0) 83 value = model.get_value(iter, 1) 84 extern = Extern() 85 #extern.SetName(name) 86 #extern.SetVersion(version) 87 return extern
88
89 - def showexterns(self):
90 # create a liststore with three int columns 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): # This is the top level 144 return 145 else: 146 iter = store.iter_parent(iter) # get parent 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
153 - def on_selection_changed(self,selection):
154 model, iter = selection.get_selected() 155 name = model.get_value(iter, 0) 156 value = model.get_value(iter, 1) 157