Changeset c77d859 in sasview for sansview/perspectives/fitting/old_modelpage.py
- Timestamp:
- Mar 20, 2009 8:26:01 PM (15 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 20d30e9
- Parents:
- f2776f6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansview/perspectives/fitting/old_modelpage.py
r0b99881 rc77d859 1 1 import sys 2 2 import wx 3 import wx.lib 3 import wx.lib.newevent 4 4 import numpy 5 5 import copy … … 84 84 #------------------ sizer 4 draw------------------------ 85 85 86 86 ## structure combox box 87 self.structbox = wx.ComboBox(self, -1) 87 88 # define combox box 88 89 self.modelbox = wx.ComboBox(self, -1) 89 # preview selected model name 90 self.prevmodel_name=name 91 #print "model view prev_model",name 92 self.modelbox.SetValue(self.prevmodel_name) 90 93 91 #enable model 2D draw 94 92 self.enable2D= False 93 self.fitrange= True 95 94 #filling sizer2 96 95 ix = 0 … … 100 99 ix += 1 101 100 self.sizer4.Add(self.modelbox,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 101 ix +=1 102 self.text_mult= wx.StaticText(self,-1,' x ') 103 self.sizer4.Add(self.text_mult,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 104 ix += 1 105 self.sizer4.Add(self.structbox,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 106 107 if hasattr(model ,"model2"): 108 name= model.model2.name 109 110 self.structbox.SetValue(name) 111 if hasattr(model ,"model1"): 112 name= model.model1.name 113 items = self.modelbox.GetItems() 114 self.modelbox.SetValue(name) 115 else: 116 #print "model view prev_model",name 117 self.modelbox.SetValue( name ) 102 118 ix += 1 103 119 id = wx.NewId() … … 188 204 iy+=1 189 205 self.sizer9.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 190 #----------sizer 10 draw------------------------------------------------------ 191 """ 192 id = wx.NewId() 193 self.btClose =wx.Button(self,id,'Close') 194 self.btClose.Bind(wx.EVT_BUTTON, self.onClose,id=id) 195 self.btClose.SetToolTipString("Close page.") 196 197 ix= 3 198 iy= 1 199 self.sizer10.Add((20,20),(iy,ix),(1,1),wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 200 ix +=1 201 self.sizer10.Add( self.btClose,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 202 ix =0 203 iy+=1 204 self.sizer10.Add((20,20),(iy,ix),(1,1),wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 205 """ 206 206 207 # contains link between model ,all its parameters, and panel organization 207 208 self.parameters=[] … … 219 220 self.set_panel(self.model) 220 221 self.theta_cb=None 221 222 222 223 223 224 self.vbox.Layout() … … 229 230 self.Layout() 230 231 self.parent.GetSizer().Layout() 231 def set_model_description(self, model): 232 233 if model !=None and str(model.description)!=""and self.data==None: 234 self.sizer11.Clear(True) 235 self.box_description= wx.StaticBox(self, -1, 'Model Description') 236 boxsizer1 = wx.StaticBoxSizer(self.box_description, wx.VERTICAL) 237 boxsizer1.SetMinSize((320,20)) 238 self.description = wx.StaticText(self,-1,str(model.description)) 239 boxsizer1.Add(self.description, 0, wx.EXPAND) 240 self.sizer11.Add(boxsizer1,1, wx.EXPAND | wx.ALL, 2) 232 def set_model_description(self, model=None): 233 234 if model !=None: 235 description="description" 236 else: 237 description="" 238 if hasattr(model,description.lower())and self.data==None: 239 self.sizer11.Clear(True) 240 self.box_description= wx.StaticBox(self, -1, 'Model Description') 241 boxsizer1 = wx.StaticBoxSizer(self.box_description, wx.VERTICAL) 242 boxsizer1.SetMinSize((320,20)) 243 self.description = wx.StaticText(self,-1,str(model.description)) 244 boxsizer1.Add(self.description, 0, wx.EXPAND) 245 self.sizer11.Add(boxsizer1,1, wx.EXPAND | wx.ALL, 2) 241 246 242 247 … … 261 266 @param page: the page to populate 262 267 """ 263 id=0 264 self.model_list_box=dict 265 list_name=[] 266 for item in self.model_list_box.itervalues(): 267 name = item.__name__ 268 if hasattr(item, "name"): 269 name = item.name 270 list_name.append(name) 271 list_name.sort() 272 273 for name in list_name: 274 self.modelbox.Insert(name,int(id)) 275 id+=1 276 wx.EVT_COMBOBOX(self.modelbox,-1, self._on_select_model) 268 269 self.model_list_box = dict.get_list() 270 271 for item , mylist in self.model_list_box.iteritems(): 272 separator= "---%s---"%item 273 self.modelbox.Append(separator,"separator") 274 275 for models in mylist: 276 model= models() 277 name = model.__class__.__name__ 278 if hasattr(model, "name"): 279 name = model.name 280 self.modelbox.Append(name,models) 281 wx.EVT_COMBOBOX(self.modelbox,-1, self._on_select_model) 282 if item == "Structure Factors" : 283 for structs in mylist: 284 struct= structs() 285 name = struct.__class__.__name__ 286 if hasattr(struct, "name"): 287 name = struct.name 288 self.structbox.Append(name,structs) 289 wx.EVT_COMBOBOX(self.structbox,-1, self._on_select_model) 290 277 291 return 0 278 292 279 293 280 294 def Set_DipersParam(self, event): 295 if self.model ==None: 296 msg= " Select non - model value:%s !"%self.model 297 wx.PostEvent(self.parent.parent, StatusEvent(status= msg)) 298 return 281 299 if self.enable_disp.GetValue(): 282 300 if len(self.disp_list)==0: … … 417 435 # If the 2D display is not currently enabled, plot the model in 2D 418 436 # and set the enable2D flag. 419 if self.enable2D==False: 420 self.enable2D=True 437 if self.fitrange: 438 self.enable2D = True 439 440 if self.enable2D: 421 441 self._draw_model() 422 442 self.model_view.Disable() 443 423 444 424 445 … … 433 454 434 455 self.set_panel(model) 435 self._draw_model(name) 436 437 # Select the model from the combo box 438 items = self.modelbox.GetItems() 439 for i in range(len(items)): 440 if items[i]==name: 441 self.modelbox.SetSelection(i) 442 self.model_view.SetFocus() 456 self._draw_model() 457 458 if hasattr(model ,"model2"): 459 name= model.model2.name 460 items = self.structbox.GetItems() 461 for i in range(len(items)): 462 if items[i]==name: 463 self.structbox.SetSelection(i) 464 465 if hasattr(model ,"model1"): 466 name= model.model1.name 467 items = self.modelbox.GetItems() 468 for i in range(len(items)): 469 if items[i]==name: 470 self.modelbox.SetSelection(i) 471 else: 472 # Select the model from the combo box 473 items = self.modelbox.GetItems() 474 for i in range(len(items)): 475 if items[i]==name: 476 self.modelbox.SetSelection(i) 477 self.structbox.SetValue("No Structure") 478 479 self.model_view.SetFocus() 443 480 444 481 def _on_select_Disp(self,event): … … 462 499 self.Layout() 463 500 self.parent.GetSizer().Layout() 464 for item in self.model_list_box.itervalues(): 465 name = item.__name__ 466 if hasattr(item, "name"): 467 name = item.name 468 if name ==event.GetString(): 469 model=item() 470 self.model= model 471 self.set_panel(model) 472 self.name= name 473 self.model_view.SetFocus() 474 self.parent.model_page.name=name 475 self.parent.draw_model_name=name 501 form_factor =self.modelbox.GetClientData(self.modelbox.GetCurrentSelection()) 502 struct_factor =self.structbox.GetClientData(self.structbox.GetCurrentSelection()) 503 504 if form_factor!="separator": 505 if struct_factor != None and struct_factor.__name__ != "NoStructure": 506 from sans.models.MultiplicationModel import MultiplicationModel 507 self.model= MultiplicationModel(form_factor(),struct_factor()) 508 else: 509 self.model= form_factor() 510 else: 511 self.model=None 512 msg= " Select non - model value:%s !Please select another model"%name 513 wx.PostEvent(self.parent.parent, StatusEvent(status= msg)) 476 514 477 self._draw_model(name) 478 515 self.set_model_description(self.model) 516 self.set_panel(self.model) 517 self.name= self.model.name 518 self.model_view.SetFocus() 519 self.parent.model_page.name= self.name 520 self.parent.draw_model_name= self.name 521 self._draw_model() 479 522 480 523 def get_model_box(self): … … 506 549 self.param_toFit=[] 507 550 self.fixed_param=[] 508 self.model = model 509 510 self.set_model_description( self.model) 511 512 keys = self.model.getParamList() 513 #list of dispersion paramaters 514 self.disp_list=self.model.getDispParamList() 515 516 keys.sort() 517 ik=0 518 im=1 519 520 iy = 1 521 ix = 0 522 self.cb1 = wx.CheckBox(self, -1,"Select all", (10, 10)) 523 if self.data!=None: 524 wx.EVT_CHECKBOX(self, self.cb1.GetId(), self.select_all_param) 525 self.cb1.SetValue(False) 526 else: 527 self.cb1.Disable() 528 self.cb1.Hide() 529 530 self.sizer5.Add(self.cb1,(iy, ix),(1,1),\ 531 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 532 ix +=1 533 self.text2_2 = wx.StaticText(self, -1, 'Values') 534 self.sizer5.Add(self.text2_2,(iy, ix),(1,1),\ 535 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 536 ix +=2 537 self.text2_3 = wx.StaticText(self, -1, 'Errors') 538 self.sizer5.Add(self.text2_3,(iy, ix),(1,1),\ 539 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 540 self.text2_3.Hide() 541 542 543 ix +=1 544 self.text2_4 = wx.StaticText(self, -1, 'Units') 545 self.sizer5.Add(self.text2_4,(iy, ix),(1,1),\ 546 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 547 self.text2_4.Hide() 548 disp_list=self.model.getDispParamList() 549 for item in keys: 550 if not item in disp_list: 551 iy += 1 552 ix = 0 553 554 cb = wx.CheckBox(self, -1, item, (10, 10)) 555 if self.data!=None: 556 cb.SetValue(False) 557 wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 551 if model !=None: 552 self.model = model 553 554 self.set_model_description( self.model) 555 556 keys = self.model.getParamList() 557 #list of dispersion paramaters 558 self.disp_list=self.model.getDispParamList() 559 560 keys.sort() 561 ik=0 562 im=1 563 564 iy = 1 565 ix = 0 566 self.cb1 = wx.CheckBox(self, -1,"Select all", (10, 10)) 567 if self.data!=None: 568 wx.EVT_CHECKBOX(self, self.cb1.GetId(), self.select_all_param) 569 self.cb1.SetValue(False) 570 else: 571 self.cb1.Disable() 572 self.cb1.Hide() 573 574 self.sizer5.Add(self.cb1,(iy, ix),(1,1),\ 575 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 576 ix +=1 577 self.text2_2 = wx.StaticText(self, -1, 'Values') 578 self.sizer5.Add(self.text2_2,(iy, ix),(1,1),\ 579 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 580 ix +=2 581 self.text2_3 = wx.StaticText(self, -1, 'Errors') 582 self.sizer5.Add(self.text2_3,(iy, ix),(1,1),\ 583 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 584 self.text2_3.Hide() 585 586 587 ix +=1 588 self.text2_4 = wx.StaticText(self, -1, 'Units') 589 self.sizer5.Add(self.text2_4,(iy, ix),(1,1),\ 590 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 591 self.text2_4.Hide() 592 disp_list=self.model.getDispParamList() 593 for item in keys: 594 if not item in disp_list: 595 iy += 1 596 ix = 0 597 598 cb = wx.CheckBox(self, -1, item, (10, 10)) 599 if self.data!=None: 600 cb.SetValue(False) 601 wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 602 else: 603 cb.Disable() 604 self.sizer5.Add( cb,( iy, ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 605 606 ix += 1 607 value= self.model.getParam(item) 608 ctl1 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 609 ctl1.SetValue(str (format_number(value))) 610 ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 611 ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 612 self.sizer5.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 613 614 ix += 1 615 text2=wx.StaticText(self, -1, '+/-') 616 self.sizer5.Add(text2,(iy, ix),(1,1),\ 617 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 618 text2.Hide() 619 ix += 1 620 ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 621 self.sizer5.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 622 ctl2.Hide() 623 624 ix +=1 625 # Units 626 try: 627 units = wx.StaticText(self, -1, self.model.details[item][0], style=wx.ALIGN_LEFT) 628 except: 629 units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 630 self.sizer5.Add(units, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 631 632 self.parameters.append([cb,ctl1,text2,ctl2]) 633 634 iy+=1 635 self.sizer5.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 636 637 #Display units text on panel 638 for item in keys: 639 if self.model.details[item][0]!='': 640 self.text2_4.Show() 641 break 558 642 else: 559 cb.Disable() 560 self.sizer5.Add( cb,( iy, ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 561 562 ix += 1 563 value= self.model.getParam(item) 564 ctl1 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 565 ctl1.SetValue(str (format_number(value))) 566 ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 567 ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 568 self.sizer5.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 569 570 ix += 1 571 text2=wx.StaticText(self, -1, '+/-') 572 self.sizer5.Add(text2,(iy, ix),(1,1),\ 573 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 574 text2.Hide() 575 ix += 1 576 ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 577 self.sizer5.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 578 ctl2.Hide() 579 580 ix +=1 581 # Units 582 try: 583 units = wx.StaticText(self, -1, self.model.details[item][0], style=wx.ALIGN_LEFT) 584 except: 585 units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 586 self.sizer5.Add(units, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 587 588 self.parameters.append([cb,ctl1,text2,ctl2]) 589 590 iy+=1 591 self.sizer5.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 592 593 #Display units text on panel 594 for item in keys: 595 if self.model.details[item][0]!='': 596 self.text2_4.Show() 597 break 598 else: 599 self.text2_4.Hide() 600 643 self.text2_4.Hide() 644 601 645 self.vbox.Layout() 602 646 self.SetScrollbars(20,20,55,40) … … 949 993 # If qmin and qmax have been modified, update qmin and qmax and 950 994 # set the is_modified flag to True 951 if float(self.qmin.GetValue()) != self.qmin_x: 952 self.qmin_x = float(self.qmin.GetValue()) 953 is_modified = True 954 if float(self.qmax.GetValue()) != self.qmax_x: 955 self.qmax_x = float(self.qmax.GetValue()) 956 is_modified = True 957 995 from sans.guiframe.utils import check_value 996 if check_value( self.qmin, self.qmax): 997 if float(self.qmin.GetValue()) != self.qmin_x: 998 self.qmin_x = float(self.qmin.GetValue()) 999 is_modified = True 1000 if float(self.qmax.GetValue()) != self.qmax_x: 1001 self.qmax_x = float(self.qmax.GetValue()) 1002 is_modified = True 1003 self.fitrange = True 1004 else: 1005 self.fitrange = False 958 1006 if float(self.npts.GetValue()) != self.num_points: 959 1007 self.num_points = float(self.npts.GetValue()) … … 963 1011 self._draw_model() 964 1012 965 def _draw_model(self , name=None):1013 def _draw_model(self): 966 1014 """ 967 1015 Method to draw or refresh a plotted model. … … 971 1019 [Note to coder: This way future changes will be done in only one place.] 972 1020 """ 973 if name==None: 974 name= self.model.name 975 976 self.manager.draw_model(self.model, name, data=self.data, 977 qmin=self.qmin_x, qmax=self.qmax_x, 978 qstep= self.num_points, 979 enable2D=self.enable2D) 1021 if self.model !=None: 1022 self.manager.draw_model(self.model, self.model.name, data=self.data, 1023 qmin=self.qmin_x, qmax=self.qmax_x, 1024 qstep= self.num_points, 1025 enable2D=self.enable2D) 980 1026 981 1027 def select_param(self,event):
Note: See TracChangeset
for help on using the changeset viewer.