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

Source Code for Module iceprod.client.gtkrunlist

  1  #!/bin/env python 
  2  # 
  3   
  4  """ 
  5   Display window for Configuration database 
  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, gobject 
 17  from iceprod.core.dataclasses import * 
 18  import time 
 19  import logging 
 20  import iceprod.core.logger 
 21   
 22  logger = logging.getLogger('GtkRunList') 
 23   
24 -class GtkRunList:
25 - def __init__(self,cdb,parent):
26 27 self.store = gtk.ListStore( int, str, str, str, str) 28 self.cdb = cdb 29 self.parent = parent 30 self.resume_action = None 31 self.init()
32
33 - def init(self):
34 if not self.display(): return 35 36 # setup the main window 37 self.root = gtk.Window(type=gtk.WINDOW_TOPLEVEL) 38 self.sw = gtk.ScrolledWindow() 39 self.root.set_title('Configuration Database') 40 self.root.set_size_request(800, 375) 41 42 # Get the model and attach it to the view 43 self.view = self.make_view( self.store ) 44 45 self.vbox = gtk.VBox(False,1) 46 47 # Add search field 48 self.entry = gtk.Entry() 49 self.entry.set_max_length(50) 50 self.entry.connect("activate", self.enter_callback, self.entry) 51 self.entry_frame = gtk.Frame('Search keyword') 52 self.entry_frame.add(self.entry) 53 self.vbox.pack_start(self.entry_frame, False, False, 1) 54 self.entry.show() 55 56 # Add view into frame and into main window 57 self.sw.add(self.view) 58 self.view_frame = gtk.Frame('Database entries') 59 self.view_frame.add(self.sw) 60 self.vbox.add(self.view_frame) 61 62 self.root.add(self.vbox) 63 self.root.show_all() 64 return
65
66 - def enter_callback(self, widget, entry):
67 entry_text = entry.get_text() 68 self.display(entry_text)
69
70 - def set_resume_action(self,action):
71 self.resume_action = action
72
73 - def resume_action_callback(self):
74 if self.resume_action: 75 self.resume_action() 76 self.resume_action = None
77
78 - def display(self,search_string=""):
79 """ Populates gtk.TreeStore """ 80 81 self.store.clear() 82 self.set_resume_action(self.init) 83 runs = self.cdb.show_dataset_table(search_string) 84 for r in runs: 85 row = [ 86 r['dataset_id'], 87 r['startdate'], 88 r['username'], 89 r['description'], 90 r['hostname'], 91 ] 92 logger.debug(','.join(map(str,row))) 93 self.store.append( row ) 94 return True
95
96 - def get_config(self, tv, path, viewcol):
97 """ 98 Get config from database server 99 """ 100 sel = tv.get_selection() 101 sel.select_path(path) 102 model, iter = sel.get_selected() 103 id = model.get_value(iter, 0) 104 name = model.get_value(iter, 1) 105 106 self.set_resume_action(self.init) 107 self.parent.configfile = "dataset.%d.xml" % int(id) 108 self.parent.CloseConfig() 109 self.parent.LoadConfig( self.cdb.download_config( int(id) ) ) 110 self.root.destroy()
111 112
113 - def make_view( self, model ):
114 """ Form a view for the Tree Model """ 115 self.view = gtk.TreeView( model ) 116 self.view.connect('row-activated', self.get_config) 117 118 # setup the text cell renderer and allows these 119 # cells to be edited. 120 self.renderer = [None]*5 121 for i in range(5): 122 self.renderer[i] = gtk.CellRendererText() 123 124 self.column = [None]*5 125 self.column[0] = gtk.TreeViewColumn("run ID",self.renderer[0], text=0) 126 self.column[1] = gtk.TreeViewColumn("date",self.renderer[1],text=1 ) 127 self.column[2] = gtk.TreeViewColumn("user",self.renderer[2], text=2) 128 self.column[3] = gtk.TreeViewColumn("description",self.renderer[3],text=3 ) 129 self.column[4] = gtk.TreeViewColumn("host",self.renderer[4], text=4) 130 131 for i in range(5): 132 self.view.append_column( self.column[i] ) 133 return self.view
134
135 - def cdbauth(self,db):
136 137 auth_dialog = gtk.Dialog(title='authentication', parent=None, flags=0 ); 138 139 username_label = gtk.Label("Username:") 140 username_label.show() 141 142 username_entry = gtk.Entry() 143 username_entry.set_text(self.parent._getproduser()) 144 username_entry.show() 145 146 password_label = gtk.Label("Password:") 147 password_label.show() 148 149 password_entry = gtk.Entry() 150 password_entry.set_visibility(False) 151 password_entry.show() 152 153 server_label = gtk.Label("Server:") 154 server_entry = gtk.Entry() 155 if self.parent._getprodserver(): 156 server_entry.set_text(self.parent._getprodserver()) 157 server_label.show() 158 server_entry.show() 159 160 database_label = gtk.Label("Database:") 161 database_entry = gtk.Entry() 162 if self.parent._getproddb(): 163 database_entry.set_text(self.parent._getproddb()) 164 database_label.show() 165 database_entry.show() 166 167 cancel_button = gtk.Button('Cancel') 168 cancel_button.show() 169 cancel_button.connect("clicked", lambda widget: auth_dialog.destroy()) 170 171 submit_button = gtk.Button('OK') 172 submit_button.show() 173 authfunc = lambda x: (db.authenticate( 174 self.parent._setprodserver(server_entry.get_text()), 175 self.parent._setproduser(username_entry.get_text()), 176 self.parent._setprodpass(password_entry.get_text()), 177 self.parent._setproddb(database_entry.get_text()), 178 True), auth_dialog.destroy(),self.resume_action_callback() ) 179 180 username_entry.connect("activate", authfunc) 181 password_entry.connect("activate", authfunc) 182 server_entry.connect("activate", authfunc) 183 database_entry.connect("activate", authfunc) 184 submit_button.connect("clicked", authfunc) 185 186 auth_dialog.vbox.pack_start(username_label, True, True, 0) 187 auth_dialog.vbox.pack_start(username_entry, True, True, 0) 188 auth_dialog.vbox.pack_start(password_label, True, True, 0) 189 auth_dialog.vbox.pack_start(password_entry, True, True, 0) 190 auth_dialog.vbox.pack_start(server_label, True, True, 0) 191 auth_dialog.vbox.pack_start(server_entry, True, True, 0) 192 auth_dialog.vbox.pack_start(database_label, True, True, 0) 193 auth_dialog.vbox.pack_start(database_entry, True, True, 0) 194 auth_dialog.action_area.pack_start(cancel_button, True, True, 0) 195 auth_dialog.action_area.pack_start(submit_button, True, True, 0) 196 auth_dialog.show()
197