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