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

Source Code for Module iceprod.client.gtk.GtkProjectDisplay

  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  from GtkIPModule import * 
 17  import logging 
 18   
 19  logger = logging.getLogger('GtkProjectDisplay') 
 20  NotConnectedException = 'Not connected' 
 21   
 22   
23 -class GtkProjectDisplay(GtkIPModule):
24
25 - def get_iconfig(self):
26 return self.icetray
27
28 - def __init__(self,icetray,db):
29 gtk.VBox.__init__(self) 30 self.db = db 31 self.icetray= icetray 32 self.tree_store = gtk.TreeStore( str,str ,int) 33 self.textbuffer = None 34 self.metaproject_dict = { } 35 self.showprojects() 36 self.selection = None
37
38 - def GetSelected(self):
39 selection = self.tv.get_selection() 40 model, iter = selection.get_selected() 41 if not iter: return MetaProject() 42 if not model.iter_has_child(iter): # This is not a meta project 43 iter = model.iter_parent(iter) # get parent 44 name = model.get_value(iter, 0) 45 version = model.get_value(iter, 1) 46 mid = model.get_value(iter, 2) 47 mp = MetaProject() 48 mp.SetName(name) 49 mp.SetVersion(version) 50 mp.SetId(mid) 51 return mp
52
53 - def showprojects(self):
54 # create a liststore with three int columns 55 56 self.rownum = 0 57 self.rows = {} 58 metaprojects = self.get_iconfig().GetMetaProjectList() 59 for mrow in metaprojects: 60 mid = mrow.GetId() 61 mpname = mrow.GetName() 62 mver = mrow.GetVersion() 63 mselected = False 64 65 metaproj = self.get_iconfig().GetMetaProject(mpname) 66 metadict = [ mpname, mver, mid] 67 68 projdict = {} 69 projects = mrow.GetProjectList() 70 for prow in projects: 71 pid = prow.GetId() 72 pname = prow.GetName() 73 ver = prow.GetVersion() 74 projdict[pname]=[pname,ver,pid] 75 self.rows[mpname] = { 76 'metaproject':metadict,'projects':projdict 77 } 78 self.sw = gtk.ScrolledWindow() 79 80 # Set sort column 81 self.tv = gtk.TreeView(self.tree_store) 82 self.pack_start(self.sw) 83 self.sw.add(self.tv) 84 self.tv.column = [None]*5 85 self.tv.column[0] = gtk.TreeViewColumn('Project Name') 86 self.tv.column[1] = gtk.TreeViewColumn('version') 87 self.tv.column[2] = gtk.TreeViewColumn('') 88 self.tv.cell = [None]*6 89 90 self.selection = self.tv.get_selection() 91 self.selection.connect('changed', self.on_selection_changed) 92 93 for i in range(2): 94 self.tv.cell[i] = gtk.CellRendererText() 95 self.tv.append_column(self.tv.column[i]) 96 self.tv.column[i].set_sort_column_id(i) 97 self.tv.column[i].pack_start(self.tv.cell[i], True) 98 self.tv.column[i].set_attributes(self.tv.cell[i], text=i) 99 100 self.show_all() 101 102 for m in self.rows.keys(): 103 metaproject = self.rows[m]['metaproject'] 104 projects = self.rows[m]['projects'] 105 106 parent = self.tree_store.append( None, metaproject ) 107 for p in projects.keys(): 108 self.tree_store.append( parent, projects[p] )
109 110
111 - def set_text_buffer(self,textbuffer):
112 self.textbuffer = textbuffer
113
114 - def write_text_buffer(self,text):
115 if self.textbuffer: 116 self.textbuffer.set_text(text) 117 else: 118 print text 119
120 - def on_selection_changed(self,selection):
121 model, iter = selection.get_selected() 122 name = model.get_value(iter, 0) 123 version = model.get_value(iter, 1) 124 pid = model.get_value(iter, 2) 125 logger.info("selected: %d %s.%s" % (pid,name,version) ) 126