Changeset 26bf293 in sasview for sansview/perspectives/fitting/old_fitpage1D.py
- Timestamp:
- Feb 2, 2009 7:28:06 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:
- ca88b2e
- Parents:
- 2cf2b87
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
sansview/perspectives/fitting/old_fitpage1D.py
rc80c06f r26bf293 5 5 import copy 6 6 import sans.models.dispersion_models 7 from sans.guicomm.events import StatusEvent 8 from modelpage import ModelPage 9 from modelpage import format_number 7 from sans.guicomm.events import StatusEvent 10 8 (ModelEventbox, EVT_MODEL_BOX) = wx.lib.newevent.NewEvent() 11 9 _BOX_WIDTH = 80 12 10 11 def format_number(value, high=False): 12 """ 13 Return a float in a standardized, human-readable formatted string 14 """ 15 try: 16 value = float(value) 17 except: 18 print "returning 0" 19 return "0" 20 21 if high: 22 return "%-6.4g" % value 23 else: 24 return "%-5.3g" % value 13 25 14 26 from modelpage import format_number 27 from modelpage import ModelPage 15 28 class FitPage1D(ModelPage): 16 29 """ … … 39 52 #panel interface 40 53 self.vbox = wx.BoxSizer(wx.VERTICAL) 41 self.sizer10 = wx.GridBagSizer(5,5)42 self.sizer9 = wx.GridBagSizer(5,5)43 self.sizer8 = wx.GridBagSizer(5,5)44 self.sizer7 = wx.GridBagSizer(5,5)45 54 self.sizer6 = wx.GridBagSizer(5,5) 46 55 self.sizer5 = wx.GridBagSizer(5,5) … … 49 58 self.sizer2 = wx.GridBagSizer(5,5) 50 59 self.sizer1 = wx.GridBagSizer(5,5) 51 # Add layer 52 #data info layer 53 self.vbox.Add(self.sizer1) 54 #data range 55 self.vbox.Add(self.sizer2) 56 #instrument smearing selection layer 57 self.vbox.Add(self.sizer3) 58 #model selection 59 self.vbox.Add(wx.StaticLine(self, -1), 0, wx.EXPAND, 0) 60 self.vbox.Add(self.sizer4) 61 #model paramaters layer 62 self.vbox.Add(self.sizer5) 63 #polydispersion selected 64 self.vbox.Add(wx.StaticLine(self, -1), 0, wx.EXPAND, 0) 65 self.vbox.Add(self.sizer6) 66 #combox box for type of dispersion 67 self.vbox.Add(self.sizer7) 68 #dispersion parameters layer 69 self.vbox.Add(self.sizer8) 70 #fit info layer 71 self.vbox.Add(wx.StaticLine(self, -1), 0, wx.EXPAND, 0) 72 self.vbox.Add(self.sizer9) 73 #close layer 74 self.vbox.Add(wx.StaticLine(self, -1), 0, wx.EXPAND, 0) 75 self.vbox.Add(self.sizer10) 76 77 #---------sizer 1 draw-------------------------------- 60 61 78 62 self.DataSource =wx.StaticText(self, -1,str(data.name)) 79 63 self.smearer_box = wx.ComboBox(self, -1) … … 90 74 self.smearer_box.Insert(str(v),i) 91 75 i+=1 92 93 # Minimum value of data 94 self.data_min = wx.StaticText(self, -1,str(format_number(numpy.min(data.x)))) 95 # Maximum value of data 96 self.data_max = wx.StaticText(self, -1,str(format_number(numpy.max(data.x)))) 97 #Filing the sizer containing data related fields 76 self.modelbox = wx.ComboBox(self, -1) 77 id = wx.NewId() 78 self.btFit =wx.Button(self,id,'Fit') 79 self.btFit.Bind(wx.EVT_BUTTON, self.onFit,id=id) 80 self.btFit.SetToolTipString("Perform fit.") 81 self.static_line_1 = wx.StaticLine(self, -1) 82 83 self.vbox.Add(self.sizer3) 84 self.vbox.Add(self.sizer2) 85 self.vbox.Add(self.static_line_1, 0, wx.EXPAND, 0) 86 self.vbox.Add(self.sizer5) 87 self.vbox.Add(self.sizer6) 88 self.vbox.Add(self.sizer4) 89 self.vbox.Add(self.sizer1) 90 91 id = wx.NewId() 92 self.btClose =wx.Button(self,id,'Close') 93 self.btClose.Bind(wx.EVT_BUTTON, self.onClose,id=id) 94 self.btClose.SetToolTipString("Close page.") 98 95 ix = 0 99 96 iy = 1 100 self.sizer 1.Add(wx.StaticText(self, -1, 'Data Source Name : '),(iy,ix),\97 self.sizer3.Add(wx.StaticText(self, -1, 'Data Source Name : '),(iy,ix),\ 101 98 (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 102 103 99 ix += 1 104 self.sizer1.Add(self.DataSource,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 105 106 #---------sizer 2 draw-------------------------------- 100 self.sizer3.Add(self.DataSource,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 101 ix += 1 102 self.sizer3.Add((20,20),(iy,ix),(1,1),wx.RIGHT|wx.EXPAND|wx.ADJUST_MINSIZE,0) 103 ix = 0 104 iy += 1 105 self.sizer3.Add(wx.StaticText(self,-1,'Instrument Smearing'),(iy,ix),(1,1)\ 106 , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 107 ix += 1 108 self.sizer3.Add(self.smearer_box,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 109 110 ix = 0 111 iy += 1 112 self.sizer3.Add(wx.StaticText(self,-1,'Model'),(iy,ix),(1,1)\ 113 , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 114 ix += 1 115 self.sizer3.Add(self.modelbox,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 116 107 117 ix = 0 108 118 iy = 1 109 119 #set maximum range for x in linear scale 110 120 self.text4_3 = wx.StaticText(self, -1, 'Maximum Data Range(Linear)', style=wx.ALIGN_LEFT) 111 self.sizer 2.Add(self.text4_3,(iy,ix),(1,1),\121 self.sizer4.Add(self.text4_3,(iy,ix),(1,1),\ 112 122 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 123 ix += 1 124 self.sizer4.Add(wx.StaticText(self, -1, 'Min'),(iy, ix),(1,1),\ 125 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 113 126 ix += 2 114 self.sizer2.Add(wx.StaticText(self, -1, 'Min :'),(iy, ix),(1,1),\ 115 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 116 ix += 1 117 self.sizer2.Add(self.data_min,(iy, ix),(1,1),\ 118 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 119 ix += 1 120 self.sizer2.Add(wx.StaticText(self, -1, 'Max : '),(iy, ix),(1,1),\ 121 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 122 ix += 1 123 self.sizer2.Add(self.data_max,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 124 125 #----sizer 3 draw-------------------------------- 126 ix = 0 127 iy = 1 128 self.sizer3.Add(wx.StaticText(self,-1,'Instrument Smearing'),(iy,ix),(1,1)\ 129 , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 130 ix += 1 131 self.sizer3.Add(self.smearer_box,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 132 ix =0 133 iy+=1 134 self.sizer3.Add((20,20),(iy,ix),(1,1),wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 135 136 #------------------ sizer 4 draw------------------------ 137 self.modelbox = wx.ComboBox(self, -1) 138 139 #filling sizer2 140 ix = 0 141 iy = 1 142 self.sizer4.Add(wx.StaticText(self,-1,'Model'),(iy,ix),(1,1)\ 143 , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 144 ix += 1 145 self.sizer4.Add(self.modelbox,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 146 147 #----------sizer6------------------------------------------------- 148 self.disable_disp = wx.RadioButton(self, -1, 'No', (10, 10), style=wx.RB_GROUP) 149 self.enable_disp = wx.RadioButton(self, -1, 'Yes', (10, 30)) 150 self.Bind(wx.EVT_RADIOBUTTON, self.Set_DipersParam, id=self.disable_disp.GetId()) 151 self.Bind(wx.EVT_RADIOBUTTON, self.Set_DipersParam, id=self.enable_disp.GetId()) 152 ix= 0 153 iy=1 154 self.sizer6.Add(wx.StaticText(self,-1,'Polydispersity: '),(iy,ix),(1,1)\ 155 , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 156 ix += 1 157 self.sizer6.Add(self.enable_disp ,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 158 ix += 1 159 self.sizer6.Add(self.disable_disp ,(iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 160 ix =0 161 iy+=1 162 self.sizer6.Add((20,20),(iy,ix),(1,1),wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 163 164 165 #---------sizer 9 draw---------------------------------------- 166 self.tcChi = wx.StaticText(self, -1, str(0), style=wx.ALIGN_LEFT) 167 self.tcChi.Hide() 168 self.text1_1 = wx.StaticText(self, -1, 'Chi2/dof', style=wx.ALIGN_LEFT) 169 self.text1_1.Hide() 170 171 id = wx.NewId() 172 self.btFit =wx.Button(self,id,'Fit') 173 self.btFit.Bind(wx.EVT_BUTTON, self.onFit,id=id) 174 self.btFit.SetToolTipString("Perform fit.") 175 ## Q range 176 self.qmin= 0.001 177 self.qmax= 0.1 178 self.num_points= 100 179 180 181 self.xmin = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 182 self.xmin.SetValue(format_number(self.qmin)) 183 self.xmin.SetToolTipString("Minimun value of x in linear scale.") 184 self.xmin.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 185 self.xmin.Bind(wx.EVT_TEXT_ENTER, self._onparamEnter) 186 self.xmin.Disable() 187 188 self.xmax = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 189 self.xmax.SetValue(format_number(self.qmax)) 190 self.xmax.SetToolTipString("Maximum value of x in linear scale.") 191 self.xmax.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 192 self.xmax.Bind(wx.EVT_TEXT_ENTER, self._onparamEnter) 193 self.xmax.Disable() 194 195 self.npts = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 196 self.npts.SetValue(format_number(self.num_points)) 197 self.npts.SetToolTipString("Number of point to plot.") 198 self.npts.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 199 self.npts.Bind(wx.EVT_TEXT_ENTER, self._onparamEnter) 200 self.npts.Disable() 201 ix = 0 202 iy = 1 203 self.sizer9.Add(wx.StaticText(self, -1, 'Fitting Range'),(iy, ix),(1,1),\ 204 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 205 ix += 1 206 self.sizer9.Add(wx.StaticText(self, -1, 'Min'),(iy, ix),(1,1),\ 207 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 208 ix += 1 209 self.sizer9.Add(wx.StaticText(self, -1, 'Max'),(iy, ix),(1,1),\ 210 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 211 ix += 1 212 self.sizer9.Add(wx.StaticText(self, -1, 'Npts'),(iy, ix),(1,1),\ 127 self.sizer4.Add(wx.StaticText(self, -1, 'Max'),(iy, ix),(1,1),\ 213 128 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 214 129 ix = 0 215 130 iy += 1 216 self.sizer 9.Add(wx.StaticText(self, -1, 'x range'),(iy, ix),(1,1),\131 self.sizer4.Add(wx.StaticText(self, -1, 'x range'),(iy, ix),(1,1),\ 217 132 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 218 133 ix += 1 219 self.sizer9.Add(self.xmin,(iy, ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 220 ix += 1 221 self.sizer9.Add(self.xmax,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 222 ix += 1 223 self.sizer9.Add(self.npts,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 134 self.xmin = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 135 self.xmin.SetValue(format_number(numpy.min(data.x))) 136 self.xmin.SetToolTipString("Minimun value of x in linear scale.") 137 self.xmin.Bind(wx.EVT_KILL_FOCUS, self._onTextEnter) 138 self.xmin.Bind(wx.EVT_TEXT_ENTER, self._onTextEnter) 139 self.xmin.Disable() 140 self.sizer4.Add(self.xmin,(iy, ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 141 142 143 ix += 2 144 self.xmax = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 145 self.xmax.SetValue(format_number(numpy.max(data.x))) 146 self.xmax.SetToolTipString("Maximum value of x in linear scale.") 147 self.xmax.Bind(wx.EVT_KILL_FOCUS, self._onTextEnter) 148 self.xmax.Bind(wx.EVT_TEXT_ENTER, self._onTextEnter) 149 self.xmax.Disable() 150 self.sizer4.Add(self.xmax,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 151 ix =0 152 iy+=1 153 self.sizer4.Add((20,20),(iy,ix),(1,1),wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 154 #Set chisqr result into TextCtrl 224 155 ix = 0 225 iy += 1 226 self.sizer9.Add(self.text1_1,(iy,ix),(1,1),\ 156 iy = 1 157 158 self.text1_1 = wx.StaticText(self, -1, 'Chi2/dof', style=wx.ALIGN_LEFT) 159 #self.sizer1.Add(self.text1_1,1) 160 self.sizer1.Add(self.text1_1,(iy,ix),(1,1),\ 227 161 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 228 162 ix += 1 229 self.sizer9.Add(self.tcChi,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 163 self.tcChi = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 164 self.tcChi.SetToolTipString("Chi^2 over degrees of freedom.") 165 #self.sizer1.Add(self.tcChi, 1, wx.R | wx.BOTTOM , 5) 166 self.sizer1.Add(self.tcChi,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 230 167 ix +=2 231 self.sizer9.Add(self.btFit,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 232 ix =0 233 iy+=1 234 self.sizer9.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 235 #----------sizer 10 draw------------------------------------------------------ 236 id = wx.NewId() 237 self.btClose =wx.Button(self,id,'Close') 238 self.btClose.Bind(wx.EVT_BUTTON, self.onClose,id=id) 239 self.btClose.SetToolTipString("Close page.") 240 241 ix= 3 242 iy= 1 243 self.sizer10.Add((20,20),(iy,ix),(1,1),wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 244 ix +=1 245 self.sizer10.Add( self.btClose,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 246 ix =0 168 #self.sizer1.Add(self.btFit, 1, wx.LEFT | wx.BOTTOM , 5) 169 self.sizer1.Add(self.btFit,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 170 ix+= 2 171 self.sizer1.Add( self.btClose,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 172 #self.sizer1.Add( self.btClose,1, wx.LEFT | wx.BOTTOM , 5) 173 self.tcChi.Disable() 174 ix= 0 247 175 iy+=1 248 self.sizer1 0.Add((20,20),(iy,ix),(1,1),wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)249 176 self.sizer1.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 177 #self.sizer1.Add((20,20), 0) 250 178 # contains link between model ,all its parameters, and panel organization 251 179 self.parameters=[] … … 270 198 self.Layout() 271 199 self.GrandParent.GetSizer().Layout() 272 273 200 201 202 203 204 205 274 206 def compute_chisqr(self): 275 207 """ @param fn: function that return model value … … 296 228 if numpy.isfinite(item): 297 229 sum +=item 298 self.tcChi.Set Label(format_number(math.fabs(sum)))230 self.tcChi.SetValue(format_number(math.fabs(sum))) 299 231 except: 300 232 wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 301 233 "Chisqr cannot be compute: %s"% sys.exc_value)) 302 234 235 236 def onFit(self,event): 237 """ signal for fitting""" 238 239 flag=self.checkFitRange() 240 self.set_manager(self.manager) 241 242 qmin=float(self.xmin.GetValue()) 243 qmax =float( self.xmax.GetValue()) 244 if len(self.param_toFit) >0 and flag==True: 245 self.manager.schedule_for_fit( value=1,fitproblem =None) 246 self.manager._on_single_fit(qmin=qmin,qmax=qmax) 247 else: 248 wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 249 "Select at least on parameter to fit ")) 250 251 303 252 def _on_select_model(self,event): 304 253 """ … … 321 270 except: 322 271 raise #ValueError,"model.name is not equal to model class name" 323 break 324 def onFit(self,event): 325 """ signal for fitting""" 326 327 flag=self.checkFitRange() 328 self.set_manager(self.manager) 329 330 qmin=float(self.xmin.GetValue()) 331 qmax =float( self.xmax.GetValue()) 332 if len(self.param_toFit) >0 and flag==True: 333 self.manager.schedule_for_fit( value=1,fitproblem =None) 334 self.manager._on_single_fit(qmin=qmin,qmax=qmax) 335 else: 336 wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 337 "Select at least on parameter to fit ")) 338 339 272 break 273 340 274 def _onTextEnter(self,event): 341 275 """ … … 354 288 "Drawing Error:wrong value entered %s"% sys.exc_value)) 355 289 356 290 def checkFitRange(self): 291 """ 292 Check the validity of fitting range 293 @note: xmin should always be less than xmax or else each control box 294 background is colored in pink. 295 """ 296 297 flag = True 298 valueMin = self.xmin.GetValue() 299 valueMax = self.xmax.GetValue() 300 # Check for possible values entered 301 #print "fitpage: checkfitrange:",valueMin,valueMax 302 try: 303 if (float(valueMax)> float(valueMin)): 304 self.xmax.SetBackgroundColour(wx.WHITE) 305 self.xmin.SetBackgroundColour(wx.WHITE) 306 else: 307 flag = False 308 self.xmin.SetBackgroundColour("pink") 309 self.xmax.SetBackgroundColour("pink") 310 except: 311 flag = False 312 self.xmin.SetBackgroundColour("pink") 313 self.xmax.SetBackgroundColour("pink") 314 315 self.xmin.Refresh() 316 self.xmax.Refresh() 317 return flag 318 319 357 320 358 321 def get_param_list(self): … … 368 331 raise ValueError,"missing parameter to fit" 369 332 370 371 372 def old_set_panel(self,model): 333 334 def set_panel(self,model): 373 335 """ 374 336 Build the panel from the model content 375 337 @param model: the model selected in combo box for fitting purpose 376 338 """ 339 self.sizer2.Clear(True) 377 340 self.sizer5.Clear(True) 341 self.sizer6.Clear(True) 378 342 self.parameters = [] 379 343 self.param_toFit=[] … … 382 346 #print "fitpage1D : dispersion list",self.model.getDispParamList() 383 347 keys.sort() 348 disp_list=self.model.getDispParamList() 349 fixed=self.model.fixed 350 print "fixed",fixed 351 #model.setParam("scale", 2) 352 #print "model sphere scale fixed?", self.model.is_fittable("scale") 353 ip=0 354 iq=1 355 384 356 ik=0 385 357 im=1 386 358 if len(disp_list)>0: 359 disp = wx.StaticText(self, -1, 'Dispersion') 360 self.sizer5.Add(disp,( iq, ip),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 361 ip += 1 362 values = wx.StaticText(self, -1, 'Values') 363 self.sizer5.Add(values,( iq, ip),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 364 365 disp_list.sort() 387 366 iy = 1 388 367 ix = 0 389 368 self.cb1 = wx.CheckBox(self, -1,"Select all", (10, 10)) 390 369 wx.EVT_CHECKBOX(self, self.cb1.GetId(), self.select_all_param) 391 self.sizer 5.Add(self.cb1,(iy, ix),(1,1),\370 self.sizer2.Add(self.cb1,(iy, ix),(1,1),\ 392 371 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 393 372 ix +=1 394 373 self.text2_2 = wx.StaticText(self, -1, 'Values') 395 self.sizer 5.Add(self.text2_2,(iy, ix),(1,1),\374 self.sizer2.Add(self.text2_2,(iy, ix),(1,1),\ 396 375 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 397 376 ix +=2 398 377 self.text2_3 = wx.StaticText(self, -1, 'Errors') 399 self.sizer 5.Add(self.text2_3,(iy, ix),(1,1),\378 self.sizer2.Add(self.text2_3,(iy, ix),(1,1),\ 400 379 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 401 380 self.text2_3.Hide() 402 381 ix +=1 403 382 self.text2_4 = wx.StaticText(self, -1, 'Units') 404 self.sizer 5.Add(self.text2_4,(iy, ix),(1,1),\383 self.sizer2.Add(self.text2_4,(iy, ix),(1,1),\ 405 384 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 406 385 self.text2_4.Hide() 407 disp_list=self.model.getDispParamList() 386 #print "keys", keys 387 #print "disp_list", disp_list 388 #print "fix_list",fixed 408 389 for item in keys: 409 390 if not item in disp_list: … … 413 394 cb = wx.CheckBox(self, -1, item, (10, 10)) 414 395 cb.SetValue(False) 415 self.sizer 5.Add( cb,( iy, ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)396 self.sizer2.Add( cb,( iy, ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 416 397 wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 417 398 … … 422 403 ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 423 404 ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 424 self.sizer 5.Add(ctl1, (iy,ix),(1,1), wx.EXPAND)405 self.sizer2.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 425 406 426 407 ix += 1 427 408 text2=wx.StaticText(self, -1, '+/-') 428 self.sizer 5.Add(text2,(iy, ix),(1,1),\409 self.sizer2.Add(text2,(iy, ix),(1,1),\ 429 410 wx.EXPAND|wx.ADJUST_MINSIZE, 0) 430 411 text2.Hide() 431 412 ix += 1 432 413 ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 433 self.sizer 5.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)414 self.sizer2.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 434 415 ctl2.Hide() 435 416 ix +=1 … … 439 420 except: 440 421 units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 441 self.sizer5.Add(units, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 442 """ 422 self.sizer2.Add(units, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 443 423 else: 444 if notitem in fixed:424 if item in fixed: 445 425 ip = 0 446 426 iq += 1 … … 472 452 im += 1 473 453 #save data 474 """454 475 455 self.parameters.append([cb,ctl1,text2,ctl2]) 476 456 477 457 iy+=1 478 self.sizer 5.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)458 self.sizer2.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 479 459 480 460 #Display units text on panel … … 523 503 self.set_model_parameter() 524 504 525 505 def set_model_parameter(self): 506 if len(self.parameters) !=0 and self.model !=None: 507 # Flag to register when a parameter has changed. 508 is_modified = False 509 for item in self.fixed_param: 510 511 try: 512 name=str(item[0]) 513 value= float(item[1].GetValue()) 514 # print "model para", name,value 515 # If the value of the parameter has changed, 516 # update the model and set the is_modified flag 517 if value != self.model.getParam(name): 518 self.model.setParam(name,value) 519 is_modified = True 520 except: 521 wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 522 "Model Drawing Error:wrong value entered : %s"% sys.exc_value)) 523 524 for item in self.parameters: 525 # print "paramters",str(item[0].GetLabelText()) 526 try: 527 name=str(item[0].GetLabelText()) 528 value= float(item[1].GetValue()) 529 # print "model para", name,value 530 # If the value of the parameter has changed, 531 # update the model and set the is_modified flag 532 if value != self.model.getParam(name): 533 self.model.setParam(name,value) 534 is_modified = True 535 except: 536 wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 537 "Model Drawing Error:wrong value entered : %s"% sys.exc_value)) 538 539 # Here we should check whether the boundaries have been modified. 540 # If qmin and qmax have been modified, update qmin and qmax and 541 # set the is_modified flag to True 542 if float(self.xmin.GetValue()) != self.qmin: 543 self.qmin = float(self.xmin.GetValue()) 544 is_modified = True 545 if float(self.xmax.GetValue()) != self.qmax: 546 self.qmax = float(self.xmax.GetValue()) 547 is_modified = True 548 549 if is_modified: 550 self.manager.redraw_model(qmin=self.qmin, qmax=self.qmax) 551 526 552 def select_all_param(self,event): 527 553 """
Note: See TracChangeset
for help on using the changeset viewer.