| Home | Trees | Indices | Help |
|---|
|
|
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 import threading
14 pygtk.require('2.0')
15 import gtk
16 import re
17 from gtkcal import Cal
18 from iceprod.core import dataclasses
19 from iceprod.core.dataclasses import *
20 from iceprod.core import metadata
21 from GtkAddSimCat import GtkAddSimCat
22
23
25
27
28 self.parent = parent
29 self.ticket = 0
30 self.difplus = metadata.DIF_Plus()
31 self.dif = self.difplus.GetDIF()
32 self.plus = self.difplus.GetPlus()
33 self.vbox = gtk.VBox(False,0)
34 self.tv = gtk.TextView()
35 if test:
36 buff = self.tv.get_buffer()
37 buff.insert(buff.get_end_iter(),'Test...')
38 self.sw = gtk.ScrolledWindow()
39
40 self.frame = gtk.Frame()
41 self.frame.set_border_width(20)
42
43 self.sumframe = gtk.Frame("Summary")
44 self.sumframe.set_border_width(10)
45 self.sumframe.show()
46 self.sumframe.add(self.sw)
47
48 self.b0 = gtk.Button('Submit',stock=gtk.STOCK_EXECUTE)
49 self.b0.connect('clicked', self.submit)
50
51 self.hbbox = gtk.HButtonBox()
52 self.hbbox.pack_start(self.b0, False, False, 1)
53
54 # Title Text field
55 self.title_entry = gtk.Entry()
56 if test:
57 self.title_entry.set_text('test')
58 self.dif.SetEntryTitle('test')
59
60 self.title_entry.set_max_length(80)
61 self.title_entry.connect("activate", self.submit)
62 self.entryframe = gtk.Frame("DIF Entry Title")
63 self.entryframe.add(self.title_entry)
64
65 hbox = gtk.HBox()
66 hbox.pack_start(self.entryframe,False,False,1)
67
68 # DIF Sensor menu
69 hbbox = gtk.HButtonBox()
70 sensor_menu = gtk.combo_box_new_text()
71 sensor_menu.connect('changed', self.set_dif_sensor)
72 self.dif.SetSensorName("ICECUBE")
73 if test:
74 item = sensor_menu.append_text("ICECUBE")
75 sensor_menu.set_active(0)
76 else:
77 for s in self.dif.GetValidSensorNames():
78 item = sensor_menu.append_text(s)
79 sensorIndex = self.dif.GetValidSensorNames().keys().index('ICECUBE')
80 sensor_menu.set_active(sensorIndex)
81
82 self.sensorframe = gtk.Frame("Sensor")
83 self.sensorframe.add(sensor_menu)
84
85 hbbox.pack_start(self.sensorframe,False,False,1)
86 hbox.pack_start(hbbox,False,False,1)
87
88
89 # Simprod Ticket No.
90 self.ticket_entry = gtk.Entry()
91
92 self.ticket_entry.set_max_length(6)
93 self.ticket_entry.connect("activate", self.submit)
94 self.ticketframe = gtk.Frame("SimProd Ticket No.")
95 self.ticketframe.add(self.ticket_entry)
96
97 hbox.pack_start(self.ticketframe,False,False,1)
98
99
100 # Parent dataset
101 parentId = self.parent.GetSteering().GetParentId()
102 self.pid_entry = gtk.Label()
103 self.pid_entry.set_markup(
104 "<span foreground='red'><b>%d</b></span>" % parentId)
105 self.pidframe = gtk.Frame("Parent ID")
106 self.pidframe.add(self.pid_entry)
107 hbox.pack_start(self.pidframe,False,False,1)
108 self.vbox.pack_start(hbox,False,False,1)
109
110
111 # Plus Category menu
112 category_menu = gtk.combo_box_new_text()
113 category_menu.connect('changed', self.set_plus_category)
114 if test:
115 self.plus.SetCategory('unclassified')
116 item = category_menu.append_text(self.plus.GetCategory())
117 else:
118 item = category_menu.append_text("[Select Category]")
119 for cat in self.plus.GetValidCategories():
120 item = category_menu.append_text(cat)
121 category_menu.set_active(0)
122
123 self.catframe = gtk.Frame("Category")
124 self.catframe.add(category_menu)
125 hbox = gtk.HBox()
126
127 hbox.pack_start(self.catframe,False,False,1)
128
129
130 # Plus Subcategory Text entry
131 self.subcat_entry = gtk.Label()
132 subcat_txt="Sub-category will be automatically filled by server"
133 self.subcat_entry.set_markup("<span foreground='red'>%s</span>" % subcat_txt)
134
135 self.subcatframe = gtk.Frame("Subcategory")
136 self.subcatframe.add(self.subcat_entry)
137 hbox.pack_start(self.subcatframe,False,False,1)
138
139
140 # DIF SOURCE menu
141 hbbox = gtk.HButtonBox()
142 source_menu = gtk.combo_box_new_text()
143 source_menu.connect('changed', self.set_dif_source)
144 if test:
145 item = source_menu.append_text("SIMULATION")
146 self.dif.SetSourceName("SIMULATION")
147 source_menu.set_active(0)
148 else:
149 for s in self.dif.GetValidSourceNames():
150 item = source_menu.append_text(s)
151 source_menu.set_active(1)
152
153 self.sourceframe = gtk.Frame("Source")
154 self.sourceframe.add(source_menu)
155
156 hbbox.pack_start(self.sourceframe,False,False,1)
157 hbox.pack_start(hbbox,False,False,1)
158 self.vbox.pack_start(hbox,False,False,1)
159
160 # Plus Subcategory Text entry
161
162 # DIF Parameters menu
163 dif_parameters_menu = gtk.combo_box_new_text()
164 dif_parameters_menu.connect('changed', self.set_dif_param)
165 if test:
166 self.dif.SetParameters(self.dif.GetValidParameters()[0])
167 item = dif_parameters_menu.append_text(self.dif.GetValidParameters()[0])
168 else:
169 item = self.make_menu_item ("[Select Parameters]", self.set_dif_param, None)
170 for param in self.dif.GetValidParameters():
171 item = self.make_menu_item (param, self.set_dif_param, param)
172 item = dif_parameters_menu.append_text(param)
173 dif_parameters_menu.set_active(0)
174
175 self.difparamframe = gtk.Frame("DIF Parameters")
176 self.difparamframe.add(dif_parameters_menu)
177
178 hbox = gtk.HButtonBox()
179 hbox.pack_start(self.difparamframe,False,False,1)
180 self.vbox.pack_start(hbox,False,False,1)
181
182
183
184 # Date entries
185 self.scalframe = gtk.Frame("Start Date")
186 self.startdate_entry = gtk.Entry()
187 if test:
188 self.startdate_entry.set_text('2006-01-01T00:00:00')
189 self.c0 = gtk.Button('#')
190 self.c0.connect('clicked', self.cal,self.startdate_entry)
191 hbox = gtk.HBox()
192 hbox.pack_start(self.startdate_entry,False,False,1)
193 hbox.pack_start(self.c0,False,False,1)
194 self.scalframe.add(hbox)
195
196 self.ecalframe = gtk.Frame("End Date")
197 self.enddate_entry = gtk.Entry()
198 if test:
199 self.enddate_entry.set_text('2006-01-01T00:00:01')
200 self.c1 = gtk.Button('#')
201 self.c1.connect('clicked', self.cal,self.enddate_entry)
202 hbox = gtk.HBox()
203 hbox.pack_start(self.enddate_entry,False,False,1)
204 hbox.pack_start(self.c1,False,False,1)
205 self.ecalframe.add(hbox)
206
207 hbox = gtk.HBox()
208 hbox.pack_start(self.scalframe,False,False,1)
209 hbox.add(self.ecalframe)
210 self.vbox.pack_start(hbox,False,False,1)
211
212 # Simulation Category menu
213 self.simulation_category_menu = gtk.combo_box_new_text()
214 self.simulation_category_menu.connect('changed', self.set_simulation_category)
215 if test:
216 item = self.simulation_category_menu.append_text("Test")
217 self.parent.GetSteering().SetCategory("Test")
218 else:
219 item = self.simulation_category_menu.append_text("[Select Category]")
220 for cat in dataclasses.SimulationCategories:
221 item = self.simulation_category_menu.append_text(cat)
222 self.simulation_category_menu.set_active(0)
223
224 self.simcatframe = gtk.Frame("SimProd Category")
225 self.simcatframe.add(self.simulation_category_menu)
226 self.simcathbox = gtk.HBox()
227 self.simcathbox.pack_start(self.simcatframe,False,False,1)
228
229 # Geometry info
230 self.geoframe = gtk.Frame("Geometry")
231 self.geo_entry = gtk.Entry()
232 self.geo_entry.set_text('IC22+TWR')
233 if test:
234 self.geo_entry.set_text('Test')
235 self.geoframe.add(self.geo_entry)
236 self.simcathbox.pack_start(self.geoframe,False,False,1)
237
238 # Spectrum info
239 self.spectrumframe = gtk.Frame("Spectrum Type")
240 self.spectrum_entry = gtk.Entry()
241 if test:
242 self.spectrum_entry.set_text('N/A')
243 self.spectrumframe.add(self.spectrum_entry)
244 self.simcathbox.pack_start(self.spectrumframe,False,False,1)
245
246 # Photonics Info
247 self.photoframe = gtk.Frame("Photonics Info")
248 self.photo_entry = gtk.Entry()
249 if test:
250 self.photo_entry.set_text('N/A')
251 self.photoframe.add(self.photo_entry)
252 self.simcathbox.pack_start(self.photoframe,False,False,1)
253
254 self.vbox.pack_start(self.simcathbox,False,False,1)
255 self.simcathbox2 = gtk.HBox()
256
257 # Energy range
258 self.erangeframe = gtk.Frame("Energy Range")
259 self.erange_entry = gtk.Entry()
260 if test:
261 self.erange_entry.set_text('N/A')
262 self.erangeframe.add(self.erange_entry)
263 self.simcathbox2.pack_start(self.erangeframe,False,False,1)
264
265 # Angular range
266 self.arangeframe = gtk.Frame("Angular Range")
267 self.arange_entry = gtk.Entry()
268 if test:
269 self.arange_entry.set_text('N/A')
270 self.arangeframe.add(self.arange_entry)
271 self.simcathbox2.pack_start(self.arangeframe,False,False,1)
272
273 # Primaries
274 self.nprimaryframe = gtk.Frame("No. of Primaries")
275 self.nprimary_entry = gtk.Entry()
276 if test:
277 self.nprimary_entry.set_text('N/A')
278 self.nprimaryframe.add(self.nprimary_entry)
279 self.simcathbox2.pack_start(self.nprimaryframe,False,False,1)
280
281 self.vbox.pack_start(self.simcathbox2,False,False,1)
282
283 # Pack Summary TextView
284 self.vbox.pack_start(self.sumframe)
285 self.vbox.pack_start(self.hbbox, False)
286 self.sw.add(self.tv)
287
288 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
289 self.window.set_position(gtk.WIN_POS_MOUSE)
290 self.window.set_border_width(10)
291 self.frame.add(self.vbox)
292 self.window.add(self.frame)
293 self.window.set_resizable(True)
294 self.window.show()
295
296 self.window.set_size_request(700, 500)
297 self.window.set_title("Run Description")
298 self.frame.show_all()
299
302
303
305 buff = self.tv.get_buffer()
306 bounds = buff.get_bounds()
307 dtext = buff.get_text(bounds[0],bounds[1])
308 self.dif.SetSummary(dtext)
309 self.dif.SetEntryTitle(self.title_entry.get_text())
310 self.plus.SetStartDatetime(self.startdate_entry.get_text())
311 self.plus.SetEndDatetime(self.enddate_entry.get_text())
312
313 try:
314 self.ticket = int(self.ticket_entry.get_text())
315 except:
316 self.fail_submit("SimProd ticket No. must be an integer!")
317
318
319 if not self.dif.GetEntryTitle():
320 self.fail_submit("You must enter a DIF entry title before submitting")
321 return
322
323 if not self.dif.GetParameters():
324 self.fail_submit("You must select DIF Parameters before submitting")
325 return
326
327 if not self.plus.GetCategory():
328 self.fail_submit("You must select a Category before submitting")
329 return
330
331 if not len(dtext):
332 self.fail_submit("You must enter a summary before submitting")
333 return
334
335 date_regex = r'^[0-9]{4,4}(-[0-9]{2,2}){2,2}T([0-9]{2,2}:){2,2}[0-9]{2,2}'
336
337 startdate = self.startdate_entry.get_text()
338 if not startdate:
339 self.fail_submit("You must enter a start date")
340 return
341
342 match = re.match(date_regex, startdate)
343 if not match:
344 self.fail_submit("There is a problem with your start date")
345 return
346
347 enddate = self.enddate_entry.get_text()
348 if not enddate:
349 self.fail_submit("You must enter an end date")
350 return
351
352 match = re.match(date_regex, enddate)
353 if not match:
354 self.fail_submit("There is a problem with your end date")
355 return
356
357 if self.parent.GetSteering().GetCategory() == None:
358 self.fail_submit("You need to select a simulation category")
359 return
360
361 geo = self.geo_entry.get_text()
362 self.parent.GetSteering().SetGeometry(geo)
363 erange = self.erange_entry.get_text()
364 self.parent.GetSteering().SetERange(erange)
365 arange = self.arange_entry.get_text()
366 self.parent.GetSteering().SetARange(arange)
367 ptinfo = self.photo_entry.get_text()
368 self.parent.GetSteering().SetPTInfo(ptinfo)
369 spectrum = self.spectrum_entry.get_text()
370 self.parent.GetSteering().SetSpectrum(spectrum)
371 nprimaries = self.nprimary_entry.get_text()
372 self.parent.GetSteering().SetPrimaries(nprimaries)
373
374 self.parent.GetSteering().SetDescription(dtext)
375 self.window.destroy()
376
377 # Add projects from any included metaprojects to DIFPlus
378 for metaproject in self.parent.GetIceTrayConfig().GetMetaProjectList():
379 for project in metaproject.GetProjectList():
380 self.plus.AddProject(project)
381
382 # Add projects not included in any metaprojects to DIFPlus
383 for project in self.parent.GetIceTrayConfig().GetProjectList():
384 self.plus.AddProject(project)
385
386 self.parent.GetSteering().AddExtra("Metadata",self.difplus)
387 self.parent.GetSteering().AddExtra("Ticket",self.ticket)
388 self.parent.PrintText("preparing submission...")
389 self.parent.submit_auth(self.parent.submit)
390
392 self.parent.PrintText(msg)
393
399
401 model = combobox.get_model()
402 index = combobox.get_active()
403 if index:
404 cat = model[index][0]
405 if not cat == "[Select Category]" :
406 self.plus.SetCategory(cat)
407
408
410 model = combobox.get_model()
411 index = combobox.get_active()
412 if index:
413 src = model[index][0]
414 self.dif.SetSourceName(src)
415
417 model = combobox.get_model()
418 index = combobox.get_active()
419 if index:
420 src = model[index][0]
421 self.dif.SetSensorName(src)
422
424 model = combobox.get_model()
425 index = combobox.get_active()
426 if index:
427 cat = model[index][0]
428 if not cat == "[Select Category]":
429 self.parent.GetSteering().SetCategory(cat)
430
432 #item = self.make_menu_item (cat, self.set_simulation_category, cat)
433 self.simulation_category_menu.append_text(cat)
434 self.simulation_category_menu.set_active(1)
435 item.select()
436
438 addsimcatwindow = GtkAddSimCat(self)
439
440
442 model = combobox.get_model()
443 index = combobox.get_active()
444 if index:
445 self.dif.SetParameters(model[index][0])
446
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Fri Jan 4 16:45:19 2013 | http://epydoc.sourceforge.net |