Ignore:
Timestamp:
Feb 2, 2009 7:28:06 PM (15 years ago)
Author:
Gervaise Alina <gervyh@…>
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
Message:

redesign the model1D and madel page

File:
1 moved

Legend:

Unmodified
Added
Removed
  • sansview/perspectives/fitting/old_fitpage1D.py

    rc80c06f r26bf293  
    55import copy 
    66import sans.models.dispersion_models  
    7 from sans.guicomm.events import StatusEvent  
    8 from modelpage import ModelPage   
    9 from modelpage import format_number 
     7from sans.guicomm.events import StatusEvent    
    108(ModelEventbox, EVT_MODEL_BOX) = wx.lib.newevent.NewEvent() 
    119_BOX_WIDTH = 80 
    1210 
     11def 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 
    1325 
    14  
     26from modelpage import format_number 
     27from modelpage import ModelPage 
    1528class FitPage1D(ModelPage): 
    1629    """ 
     
    3952        #panel interface 
    4053        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) 
    4554        self.sizer6 = wx.GridBagSizer(5,5) 
    4655        self.sizer5 = wx.GridBagSizer(5,5) 
     
    4958        self.sizer2 = wx.GridBagSizer(5,5) 
    5059        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         
    7862        self.DataSource  =wx.StaticText(self, -1,str(data.name)) 
    7963        self.smearer_box = wx.ComboBox(self, -1) 
     
    9074              self.smearer_box.Insert(str(v),i)   
    9175            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.") 
    9895        ix = 0 
    9996        iy = 1 
    100         self.sizer1.Add(wx.StaticText(self, -1, 'Data Source Name : '),(iy,ix),\ 
     97        self.sizer3.Add(wx.StaticText(self, -1, 'Data Source Name : '),(iy,ix),\ 
    10198                 (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    102         
    10399        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         
    107117        ix = 0 
    108118        iy = 1 
    109119        #set maximum range for x in linear scale 
    110120        self.text4_3 = wx.StaticText(self, -1, 'Maximum Data Range(Linear)', style=wx.ALIGN_LEFT) 
    111         self.sizer2.Add(self.text4_3,(iy,ix),(1,1),\ 
     121        self.sizer4.Add(self.text4_3,(iy,ix),(1,1),\ 
    112122                   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) 
    113126        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),\ 
    213128                            wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    214129        ix = 0 
    215130        iy += 1 
    216         self.sizer9.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),\ 
    217132                            wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    218133        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 
    224155        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),\ 
    227161                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    228162        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) 
    230167        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 
    247175        iy+=1 
    248         self.sizer10.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) 
    250178        # contains link between  model ,all its parameters, and panel organization 
    251179        self.parameters=[] 
     
    270198        self.Layout() 
    271199        self.GrandParent.GetSizer().Layout() 
    272     
    273     
     200        
     201 
     202   
     203   
     204  
     205         
    274206    def compute_chisqr(self): 
    275207        """ @param fn: function that return model value 
     
    296228                    if numpy.isfinite(item): 
    297229                        sum +=item 
    298                 self.tcChi.SetLabel(format_number(math.fabs(sum))) 
     230                self.tcChi.SetValue(format_number(math.fabs(sum))) 
    299231            except: 
    300232                wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
    301233                            "Chisqr cannot be compute: %s"% sys.exc_value)) 
    302234             
     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     
    303252    def _on_select_model(self,event): 
    304253        """ 
     
    321270                except: 
    322271                    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     
    340274    def _onTextEnter(self,event): 
    341275        """ 
     
    354288                            "Drawing  Error:wrong value entered %s"% sys.exc_value)) 
    355289         
    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 
    357320     
    358321    def get_param_list(self): 
     
    368331            raise ValueError,"missing parameter to fit" 
    369332         
    370      
    371             
    372     def old_set_panel(self,model): 
     333         
     334    def set_panel(self,model): 
    373335        """ 
    374336            Build the panel from the model content 
    375337            @param model: the model selected in combo box for fitting purpose 
    376338        """ 
     339        self.sizer2.Clear(True) 
    377340        self.sizer5.Clear(True) 
     341        self.sizer6.Clear(True) 
    378342        self.parameters = [] 
    379343        self.param_toFit=[] 
     
    382346        #print "fitpage1D : dispersion list",self.model.getDispParamList() 
    383347        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         
    384356        ik=0 
    385357        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() 
    387366        iy = 1 
    388367        ix = 0 
    389368        self.cb1 = wx.CheckBox(self, -1,"Select all", (10, 10)) 
    390369        wx.EVT_CHECKBOX(self, self.cb1.GetId(), self.select_all_param) 
    391         self.sizer5.Add(self.cb1,(iy, ix),(1,1),\ 
     370        self.sizer2.Add(self.cb1,(iy, ix),(1,1),\ 
    392371                          wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    393372        ix +=1 
    394373        self.text2_2 = wx.StaticText(self, -1, 'Values') 
    395         self.sizer5.Add(self.text2_2,(iy, ix),(1,1),\ 
     374        self.sizer2.Add(self.text2_2,(iy, ix),(1,1),\ 
    396375                            wx.EXPAND|wx.ADJUST_MINSIZE, 0)  
    397376        ix +=2 
    398377        self.text2_3 = wx.StaticText(self, -1, 'Errors') 
    399         self.sizer5.Add(self.text2_3,(iy, ix),(1,1),\ 
     378        self.sizer2.Add(self.text2_3,(iy, ix),(1,1),\ 
    400379                            wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    401380        self.text2_3.Hide()  
    402381        ix +=1 
    403382        self.text2_4 = wx.StaticText(self, -1, 'Units') 
    404         self.sizer5.Add(self.text2_4,(iy, ix),(1,1),\ 
     383        self.sizer2.Add(self.text2_4,(iy, ix),(1,1),\ 
    405384                            wx.EXPAND|wx.ADJUST_MINSIZE, 0)  
    406385        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 
    408389        for item in keys: 
    409390            if not item in disp_list: 
     
    413394                cb = wx.CheckBox(self, -1, item, (10, 10)) 
    414395                cb.SetValue(False) 
    415                 self.sizer5.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) 
    416397                wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 
    417398             
     
    422403                ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    423404                ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    424                 self.sizer5.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 
     405                self.sizer2.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 
    425406                 
    426407                ix += 1 
    427408                text2=wx.StaticText(self, -1, '+/-') 
    428                 self.sizer5.Add(text2,(iy, ix),(1,1),\ 
     409                self.sizer2.Add(text2,(iy, ix),(1,1),\ 
    429410                                wx.EXPAND|wx.ADJUST_MINSIZE, 0)  
    430411                text2.Hide()   
    431412                ix += 1 
    432413                ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
    433                 self.sizer5.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) 
    434415                ctl2.Hide() 
    435416                ix +=1 
     
    439420                except: 
    440421                    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) 
    443423            else: 
    444                 if not item in fixed: 
     424                if item in fixed: 
    445425                    ip = 0 
    446426                    iq += 1 
     
    472452                    im += 1 
    473453            #save data 
    474             """ 
     454             
    475455            self.parameters.append([cb,ctl1,text2,ctl2]) 
    476456                 
    477457        iy+=1 
    478         self.sizer5.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) 
    479459         
    480460        #Display units text on panel 
     
    523503        self.set_model_parameter() 
    524504         
    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          
    526552    def select_all_param(self,event):  
    527553        """ 
Note: See TracChangeset for help on using the changeset viewer.