1
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
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
34 if not self.display(): return
35
36
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
43 self.view = self.make_view( self.store )
44
45 self.vbox = gtk.VBox(False,1)
46
47
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
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
69
72
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
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
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
119
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
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