Changeset f20767b in sasview for sansview/perspectives/fitting


Ignore:
Timestamp:
Jul 28, 2009 6:34:36 PM (15 years ago)
Author:
Jae Cho <jhjcho@…>
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:
e72bd95
Parents:
4176435
Message:

Working on 'Save(keep)' option. Still more to do on adding comments, on checkbox for array dispersion, and on bugs as being found.

Location:
sansview/perspectives/fitting
Files:
4 edited

Legend:

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

    r6f2c919 rf20767b  
    6161        ##list of dispersion parameters 
    6262        self.disp_list=[] 
     63        self.disp_name="" 
    6364        ## list of orientation parameters 
    6465        self.orientation_params=[] 
     
    100101        self.popUpMenu.AppendItem(self._redo) 
    101102        self._redo.Enable(False) 
    102         wx.EVT_MENU(self, id, self.onRedo) 
     103        wx.EVT_MENU(self, id, self.onRedo)        
     104        self.popUpMenu.AppendSeparator() 
     105                 
     106        id = wx.NewId() 
     107        self._keep = wx.MenuItem(self.popUpMenu,id,"Keep"," Keep the panel status to recall it later") 
     108        self.popUpMenu.AppendItem(self._keep) 
     109        self._keep.Enable(True) 
     110        wx.EVT_MENU(self, id, self.onSave) 
     111        self.popUpMenu.AppendSeparator() 
    103112         
    104113        ## Default locations 
     
    281290        self.polydisp= sans.models.dispersion_models.models 
    282291        self.disp_box = wx.ComboBox(self, -1) 
    283         
     292 
    284293        for key in self.polydisp.iterkeys(): 
    285294            name = str(key.__name__) 
     
    287296                # Remove the option until the rest of the code is ready for it 
    288297                self.disp_box.Append("Select customized Model",key) 
    289                  
    290298            else: 
    291299                self.disp_box.Append(name,key) 
     
    328336        self.weights=[] 
    329337        # Go through the list of dispersion check boxes to identify which one has changed  
     338 
    330339        for p in self.disp_cb_dict: 
    331340            self.state.disp_cb_dict[p]=  self.disp_cb_dict[p].GetValue() 
    332341            # Catch which one of the box was just checked or unchecked. 
    333342            if event.GetEventObject() == self.disp_cb_dict[p]:               
    334  
    335                  
     343                
    336344                if self.disp_cb_dict[p].GetValue() == True: 
    337345                    # The user wants this parameter to be averaged.  
     
    390398                    self.state.model._persistency_dict[p] = [self.values, self.weights] 
    391399                else: 
    392                     # The parameter was un-selected. Go back to Gaussian model (with 0 pts) 
    393400                    self._reset_dispersity() 
    394401               
    395                 ## Redraw the model 
     402                ## Redraw the model ??? 
    396403                self._draw_model() 
    397404         
     
    411418         
    412419        name= self.popUpMenu.GetLabel(event.GetId()) 
     420        self._on_select_model_helper() 
     421         
    413422        if name in self.saved_states.keys(): 
    414423            previous_state = self.saved_states[name] 
    415             self.reset_page(previous_state) 
    416              
    417     
     424            ## reset state of checkbox,textcrtl  and  regular parameters value 
     425            self.reset_page(previous_state)       
     426                   
    418427    def onSave(self, event): 
    419428        """ 
    420429            save history of the data and model 
    421430        """ 
    422          
    423431        if self.model==None: 
    424432            return  
     
    429437         
    430438        self.state.model = self.model.clone() 
     439        self.state.model.name= self.model.name 
    431440        #if not hasattr(self.model, "_persistency_dict"): 
    432441        #self.model._persistency_dict = {} 
     
    434443                         
    435444        new_state = self.state.clone() 
     445        new_state.model.name = self.state.model.name 
     446         
    436447        new_state.enable2D = copy.deepcopy(self.enable2D) 
    437448        ##Add model state on context menu 
     
    482493                    item[4].Hide() 
    483494        self.Layout() 
     495        # Get a handle to the TextCtrl 
     496        widget = evt.GetEventObject() 
     497        # Select the whole control, after this event resolves 
     498        wx.CallAfter(widget.SetSelection, -1,-1) 
    484499        return 
    485500     
     
    501516        # Make sure the mouse event is available to other listeners 
    502517        event.Skip() 
     518 
    503519     
    504520    def read_file(self, path): 
     
    555571        ## save data     
    556572        self.state.data= copy.deepcopy(self.data) 
    557         
    558573        try: 
    559574            n = self.disp_box.GetCurrentSelection() 
    560575            dispersity= self.disp_box.GetClientData(n) 
    561576            name= dispersity.__name__ 
    562             if name == "GaussianDispersion": 
     577            self.disp_name = name 
     578            if name == "GaussianDispersion" : 
    563579               if hasattr(self,"cb1"): 
    564580                   self.state.cb1= self.cb1.GetValue() 
     
    577593        if hasattr(self,"disp_box"): 
    578594            self.state.disp_box = self.disp_box.GetCurrentSelection() 
     595 
    579596            if len(self.disp_cb_dict)>0: 
    580597                for k , v in self.disp_cb_dict.iteritems(): 
     598          
    581599                    if v ==None : 
    582600                        self.state.disp_cb_dict[k]= v 
     
    589607            if len(self._disp_obj_dict)>0: 
    590608                for k , v in self._disp_obj_dict.iteritems(): 
     609       
    591610                    self.state._disp_obj_dict[k]= v 
     611                         
     612             
    592613            self.state.values = copy.deepcopy(self.values) 
    593614            self.state.weights = copy.deepcopy(self.weights) 
     
    600621        self.state.fittable_param =[] 
    601622        self.state.fixed_param =[] 
     623 
    602624         
    603625        ## save checkbutton state and txtcrtl values 
     
    606628        self._copy_parameters_state(self.orientation_params_disp, 
    607629                                     self.state.orientation_params_disp) 
     630         
    608631        self._copy_parameters_state(self.parameters, self.state.parameters) 
    609632        self._copy_parameters_state(self.fittable_param, self.state.fittable_param) 
     
    621644            self._undo.Enable(False) 
    622645            return  
     646        
    623647        self.model= state.model 
    624648        self.data = state.data 
    625649        self.smearer= state.smearer 
    626650        self.enable2D= state.enable2D 
     651         
     652        #??? 
     653        self.disp_cb_dict = state.disp_cb_dict 
     654        self.disp_list =state.disp_list 
     655 
     656        
    627657        ## set the state of the radio box 
    628658        self.shape_rbutton.SetValue(state.shape_rbutton ) 
     
    637667        self.structurebox.SetSelection(state.structurecombobox ) 
    638668        self.formfactorbox.SetSelection(state.formfactorcombobox) 
     669         
     670         
    639671        ## enable the view 2d button if this is a modelpage type 
    640672        if hasattr(self,"model_view"): 
    641             if not self.enable2D: 
     673            if self.enable2D: 
     674                self.model_view.Disable() 
     675            else: 
    642676                self.model_view.Enable() 
    643             else: 
    644                 self.model_view.Disable() 
    645677        ## set the select all check box to the a given state 
    646678        if hasattr(self, "cb1"):    
     
    648680       
    649681        ## reset state of checkbox,textcrtl  and  regular parameters value 
     682             
    650683        self._reset_parameters_state(self.orientation_params_disp, 
    651684                                     state.orientation_params_disp) 
     
    653686                                     state.orientation_params) 
    654687        self._reset_parameters_state(self.parameters,state.parameters)     
    655              
    656         ## display dispersion info layer 
     688         ## display dispersion info layer         
    657689        self.enable_disp.SetValue(state.enable_disp) 
    658690        self.disable_disp.SetValue(state.disable_disp) 
    659          
     691 
    660692        if hasattr(self, "disp_box"): 
     693             
    661694            self.disp_box.SetSelection(state.disp_box)  
    662695            n= self.disp_box.GetCurrentSelection() 
    663696            dispersity= self.disp_box.GetClientData(n) 
    664             name= dispersity.__name__       
     697            name= dispersity.__name__      
     698 
    665699            self._set_dipers_Param(event=None) 
    666700             
    667701            #self.disp_cb_dict = {} 
    668702            #for k,v in self.state.disp_cb_dict.iteritems(): 
    669                 #self.disp_cb_dict = copy.deepcopy(state.disp_cb_dict)  
    670                 #self.state.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
     703            #    self.disp_cb_dict = copy.deepcopy(state.disp_cb_dict)  
     704            #    self.state.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
     705 
     706            if name=="ArrayDispersion": 
    671707                 
    672             if name=="ArrayDispersion": 
    673708                for item in self.disp_cb_dict.keys(): 
    674                     print "array dispersion",state.values, state.weights 
    675                     self.disp_cb_dict[item].SetValue(state.disp_cb_dict[item]) 
    676                     # Create the dispersion objects 
    677                     from sans.models.dispersion_models import ArrayDispersion 
    678                     disp_model = ArrayDispersion() 
    679                     disp_model.set_weights(state.values, state.weights) 
    680                     
    681                     self._disp_obj_dict[item] = disp_model 
    682                     # Set the new model as the dispersion object for the selected parameter 
    683                     self.model.set_dispersion(item, disp_model) 
    684                     
    685                     #self.model._persistency_dict = {} 
    686                     #self.model._persistency_dict[item] = [state.values, state.weights] 
     709                     
     710                    if hasattr(self.disp_cb_dict[item],"SetValue") : 
     711                        self.disp_cb_dict[item].SetValue(state.disp_cb_dict[item]) 
     712                        # Create the dispersion objects 
     713                        from sans.models.dispersion_models import ArrayDispersion 
     714                        disp_model = ArrayDispersion() 
     715                        if hasattr(state,"values")and self.disp_cb_dict[item].GetValue()==True: 
     716                            if len(state.values)>0: 
     717                                self.values=state.values 
     718                                self.weights=state.weights 
     719                                disp_model.set_weights(self.values, state.weights) 
     720                            else: 
     721                                self._reset_dispersity() 
     722                         
     723                        self._disp_obj_dict[item] = disp_model 
     724                        # Set the new model as the dispersion object for the selected parameter 
     725                        self.model.set_dispersion(item, disp_model) 
     726                     
     727                        #self.model._persistency_dict = {} 
     728                        self.model._persistency_dict[item] = [state.values, state.weights] 
    687729                     
    688730            else: 
    689                 self._disp_obj_dict={} 
    690                 for k , v in self.state._disp_obj_dict.iteritems(): 
    691                     self._disp_obj_dict[k]=v 
    692      
     731 
     732                for k,v in self.state.disp_cb_dict.iteritems(): 
     733                    self.disp_cb_dict = copy.deepcopy(state.disp_cb_dict)  
     734                    self.state.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
     735                 
     736                #self._disp_obj_dict={} 
     737                #for k , v in self.state._disp_obj_dict.iteritems(): 
     738                #    self._disp_obj_dict[k]=v 
     739                 
    693740        ##plotting range restore     
    694741        self._reset_plotting_range(state) 
     
    703750            self.Refresh() 
    704751            #self.compute_chisqr(smearer= self.smearer)   
    705              
     752        #self._draw_model()    
    706753        ## reset state of checkbox,textcrtl  and dispersity parameters value 
    707754        self._reset_parameters_state(self.fittable_param,state.fittable_param) 
     
    714761        self._reset_context_menu() 
    715762         
     763        #self._reset_dispersity() 
     764        #self._set_dipers_Param(event=None) #to bo removed //resets disper para value 
     765 
     766        #self.disp_cb_dict = {} 
     767        #for k,v in self.state.disp_cb_dict.iteritems(): 
     768            #self.disp_cb_dict = copy.deepcopy(state.disp_cb_dict)  
     769            #self.state.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
     770 
     771 
    716772        ## set the value of the current state to the state given as parameter 
    717773        self.state = state.clone()  
    718         
     774        self._draw_model() 
    719775        
    720776         
     
    886942            @param statelist: list of state object to store the current state 
    887943        """ 
    888          
     944        #statelist=[] 
    889945        if len(listtocopy)==0: 
    890946            return 
    891947        
    892948        for item in listtocopy: 
     949   
    893950            checkbox_state = None 
    894951            if item[0]!= None: 
     
    12421299         
    12431300        ## post state to fit panel 
     1301        self.state.parameters =[] 
    12441302        self.state.model =self.model 
     1303         
    12451304        self.disp_list =self.model.getDispParamList() 
    1246         self.state.disp_list = self.disp_list, 
     1305        self.state.disp_list = self.disp_list 
    12471306        self.sizer4_4.Layout() 
    12481307        self.sizer4.Layout() 
     
    13391398        """ 
    13401399        self._reset_dispersity() 
     1400 
    13411401        if self.model ==None: 
    13421402            self.model_disp.Hide() 
     
    13511411            self.disp_box.Show(True) 
    13521412            ## layout for model containing no dispersity parameters 
     1413             
    13531414            self.disp_list= self.model.getDispParamList() 
    1354             if len(self.disp_list)==0: 
     1415              
     1416            if len(self.disp_list)==0 and len(self.disp_cb_dict)==0: 
    13551417                self._layout_sizer_noDipers()   
    13561418            else: 
     
    13621424            self.disp_box.SetSelection(0)  
    13631425            self.sizer4_4.Clear(True) 
    1364          
     1426             
    13651427        ## post state to fit panel  
    13661428        self.save_current_state() 
     
    13691431            event = PageInfoEvent(page = self) 
    13701432            wx.PostEvent(self.parent, event) 
    1371         
     1433         
     1434        self._draw_model() 
    13721435        self.sizer4_4.Layout() 
    13731436        self.sizer4.Layout() 
     
    13761439        self.SetScrollbars(20,20,200,100)        
    13771440           
    1378              
    13791441         
    13801442    def _layout_sizer_noDipers(self): 
     
    14161478        self.weights=[] 
    14171479        
    1418          
    1419         from sans.models.dispersion_models import GaussianDispersion 
     1480       
     1481        from sans.models.dispersion_models import GaussianDispersion, ArrayDispersion 
    14201482        if len(self.disp_cb_dict)==0: 
    14211483            self.sizer4_4.Clear(True) 
     
    14261488            self.SetScrollbars(20,20,200,100)    
    14271489            return  
    1428          
    1429          
    1430         for p in self.disp_cb_dict: 
    1431             # The parameter was un-selected. Go back to Gaussian model (with 0 pts) 
    1432             disp_model = GaussianDispersion() 
    1433             # Store the object to make it persist outside the scope of this method 
    1434             #TODO: refactor model to clean this up? 
    1435             self._disp_obj_dict[p] = disp_model 
    1436             # Set the new model as the dispersion object for the selected parameter 
    1437             self.model.set_dispersion(p, disp_model) 
    1438             # Redraw the model 
    1439             
    1440             self._draw_model() 
     1490        if (len(self.disp_cb_dict)>0) : 
     1491            for p in self.disp_cb_dict: 
     1492                # The parameter was un-selected. Go back to Gaussian model (with 0 pts)                     
     1493                disp_model = GaussianDispersion() 
     1494                
     1495                self._disp_obj_dict[p] = disp_model 
     1496                # Set the new model as the dispersion object for the selected parameter 
     1497                try: 
     1498                   self.model.set_dispersion(p, disp_model) 
     1499                except: 
     1500                    pass 
     1501                                # Redraw the model 
     1502                self._draw_model() 
    14411503        ## save state into 
    14421504        self.save_current_state() 
     
    14541516             self.disp_list should change type later .now only gaussian 
    14551517        """ 
    1456          
     1518 
    14571519        n = self.disp_box.GetCurrentSelection() 
    14581520        dispersity= self.disp_box.GetClientData(n) 
    14591521        name= dispersity.__name__ 
     1522        self.disp_name = name 
    14601523        if name == "GaussianDispersion": 
    14611524            self._set_sizer_gaussian() 
    1462              
    14631525        if name == "ArrayDispersion": 
    14641526            self._set_sizer_arraydispersion() 
     
    14771539        self.Refresh() 
    14781540         
    1479         
    1480         
    1481          
    14821541    def _set_sizer_arraydispersion(self): 
    14831542        """ 
    14841543            draw sizer with array dispersity  parameters 
    14851544        """ 
     1545         
    14861546        if len(self.param_toFit)>0: 
    14871547            for item in self.fittable_param: 
     
    14911551                if item in self.param_toFit: 
    14921552                    self.param_toFit.remove(item) 
    1493                      
     1553                   
     1554 
    14941555        self.fittable_param=[] 
    14951556        self.fixed_param=[] 
    14961557        self.orientation_params_disp=[] 
    14971558        self.sizer4_4.Clear(True)  
     1559        self._reset_dispersity() 
    14981560        ix=0 
    14991561        iy=1      
     
    15041566        # Add a check box for each parameter. 
    15051567        self.disp_cb_dict = {} 
     1568         
    15061569        for p in self.model.dispersion.keys(): 
    1507             ix+=1  
    1508             self.disp_cb_dict[p] = wx.CheckBox(self, -1, p, (10, 10)) 
    1509             self.state.disp_cb_dict[p]=  self.disp_cb_dict[p].GetValue() 
    1510             #print "went here======>",self.disp_cb_dict 
    1511             wx.EVT_CHECKBOX(self, self.disp_cb_dict[p].GetId(), self.select_disp_angle) 
    1512             self.sizer4_4.Add(self.disp_cb_dict[p], (iy, ix), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    1513          
     1570            if not p in self.model.orientation_params: 
     1571                ix+=1  
     1572                self.disp_cb_dict[p] = wx.CheckBox(self, -1, p, (10, 10)) 
     1573                self.state.disp_cb_dict[p]=  self.disp_cb_dict[p].GetValue() 
     1574 
     1575                wx.EVT_CHECKBOX(self, self.disp_cb_dict[p].GetId(), self.select_disp_angle) 
     1576                self.sizer4_4.Add(self.disp_cb_dict[p], (iy, ix), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     1577        for p in self.model.dispersion.keys(): 
     1578            if p in self.model.orientation_params: 
     1579                ix+=1  
     1580                self.disp_cb_dict[p] = wx.CheckBox(self, -1, p, (10, 10)) 
     1581                self.state.disp_cb_dict[p]=  self.disp_cb_dict[p].GetValue() 
     1582                if not self.enable2D: 
     1583                    self.disp_cb_dict[p].Disable() 
     1584                else: 
     1585                    self.disp_cb_dict[p].Enable() 
     1586 
     1587                wx.EVT_CHECKBOX(self, self.disp_cb_dict[p].GetId(), self.select_disp_angle) 
     1588                self.sizer4_4.Add(self.disp_cb_dict[p], (iy, ix), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     1589 
     1590 
    15141591        ix =0 
    15151592        iy +=1  
     
    15191596        self.SetScrollbars(20,20,200,100) 
    15201597        ## save state into 
     1598 
     1599        self.state.orientation_params =[] 
     1600        self.state.orientation_params_disp =[] 
     1601        self.state.parameters =[] 
     1602        self.state.fittable_param =[] 
     1603        self.state.fixed_param =[] 
     1604         
     1605        ## save checkbutton state and txtcrtl values 
     1606         
     1607        self._copy_parameters_state(self.orientation_params, 
     1608                                     self.state.orientation_params) 
     1609 
    15211610        self._copy_parameters_state(self.orientation_params_disp, 
    15221611                                     self.state.orientation_params_disp) 
     1612         
     1613        self._copy_parameters_state(self.parameters, self.state.parameters) 
    15231614        self._copy_parameters_state(self.fittable_param, self.state.fittable_param) 
    15241615        self._copy_parameters_state(self.fixed_param, self.state.fixed_param) 
     1616         
    15251617         
    15261618        ## post state to fit panel 
     
    15281620        wx.PostEvent(self.parent, event) 
    15291621         
     1622                 
     1623         
     1624        
    15301625 
    15311626    def _set_range_sizer(self, title, object1=None,object=None): 
    15321627        """ 
    1533             TODO: object1 and object are NOT proper parameter names. 
    1534             Please clean up your code. 
     1628            Fill the  
    15351629        """ 
    15361630        self.sizer5.Clear(True) 
     
    15411635        self.qmin.SetValue(str(self.qmin_x)) 
    15421636        self.qmin.SetToolTipString("Minimun value of Q in linear scale.") 
     1637        #self.qmin.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     1638        #self.qmin.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
     1639        #self.qmin.Bind(wx.EVT_TEXT_ENTER, self._onparamEnter) 
    15431640      
    15441641        self.qmax    = BasicPage.ModelTextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
    15451642        self.qmax.SetValue(str(self.qmax_x)) 
    15461643        self.qmax.SetToolTipString("Maximum value of Q in linear scale.") 
     1644        #self.qmax.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     1645        #self.qmax.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
     1646        #self.qmax.Bind(wx.EVT_TEXT_ENTER, self._onparamEnter) 
    15471647      
    15481648        sizer_horizontal=wx.BoxSizer(wx.HORIZONTAL) 
  • sansview/perspectives/fitting/fitpage.py

    r6f2c919 rf20767b  
    623623            
    624624        self.reset_page_helper(state) 
    625         evt = ModelEventbox(model=self.model) 
     625        evt = ModelEventbox(model=state.model) 
    626626        wx.PostEvent(self.event_owner, evt)    
    627627             
     
    11211121        iy+=1 
    11221122        sizer.Add((10,10),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    1123         for item in self.model.orientation_params: 
    1124             if not item in self.disp_list : 
    1125                 iy += 1 
    1126                 ix = 0 
    1127                 ## add parameters name with checkbox for selecting to fit 
    1128                 cb = wx.CheckBox(self, -1, item ) 
    1129                 cb.SetValue(False) 
    1130                 wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 
    1131                 if self.data.__class__.__name__ =="Data2D": 
    1132                     cb.Enable() 
    1133                 else: 
    1134                     cb.Disable() 
    1135                 sizer.Add( cb,( iy, ix),(1,1), 
    1136                              wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 5) 
    1137  
    1138                 ## add parameter value 
    1139                 ix += 1 
    1140                 value= self.model.getParam(item) 
    1141                 ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    1142                                     style=wx.TE_PROCESS_ENTER) 
    1143                  
    1144                 ctl1.SetValue(format_number(value)) 
    1145                 if self.data.__class__.__name__ =="Data2D": 
    1146                     ctl1.Enable() 
    1147                 else: 
    1148                     ctl1.Disable() 
    1149                 sizer.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 
    1150                 ## text to show error sign 
    1151                 ix += 1 
    1152                 text2=wx.StaticText(self, -1, '+/-') 
    1153                 sizer.Add(text2,(iy, ix),(1,1),\ 
    1154                                 wx.EXPAND|wx.ADJUST_MINSIZE, 0)  
    1155                 text2.Hide()  
    1156                 ## txtcrtl to add error from fit 
    1157                 ix += 1 
    1158                 ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
    1159                 sizer.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    1160                 ctl2.Hide() 
    1161                 if self.data.__class__.__name__ =="Data2D": 
    1162                     ctl1.Enable() 
    1163                 else: 
    1164                     ctl1.Disable() 
    1165                 param_min, param_max= self.model.details[item][1:] 
    1166                 ix += 1 
    1167                 ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    1168                                                kill_focus_callback = self._onparamRangeEnter, 
    1169                                                set_focus_callback  = self._onparamRangeEnter) 
    1170                 if param_min ==None: 
    1171                     ctl3.SetValue("") 
    1172                 else: 
    1173                     ctl3.SetValue(str(param_min)) 
    1174                 sizer.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    1175                 ctl3.Hide() 
    1176                 if self.data.__class__.__name__ =="Data2D": 
    1177                     ctl3.Enable() 
    1178                 else: 
    1179                     ctl3.Disable() 
    1180                 ix += 1 
    1181                 ctl4 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    1182                                                kill_focus_callback = self._onparamRangeEnter, 
    1183                                                set_focus_callback  = self._onparamRangeEnter) 
    1184                 sizer.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    1185                 if param_max ==None: 
    1186                     ctl4.SetValue("") 
    1187                 else: 
    1188                     ctl4.SetValue(str(param_max)) 
    1189                 ctl4.Hide() 
    1190                 if self.data.__class__.__name__ =="Data2D": 
    1191                     ctl4.Enable() 
    1192                 else: 
    1193                     ctl4.Disable() 
    1194                 if self.engine_type=="park": 
    1195                     ctl3.Show(True) 
    1196                     ctl4.Show(True) 
    1197                 ix +=1 
    1198                 # Units 
    1199                 try: 
    1200                     units = wx.StaticText(self, -1, self.model.details[item][0], style=wx.ALIGN_LEFT) 
    1201                 except: 
    1202                     units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 
    1203                 if self.data.__class__.__name__ =="Data2D": 
    1204                     units.Enable() 
    1205                 else: 
    1206                     units.Disable() 
    1207                 sizer.Add(units, (iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     1123         
     1124        # type can be either Guassian or Array 
     1125        type= self.model.dispersion.values()[1]["type"] 
     1126        
     1127        #For Gaussian only 
     1128        if type.lower() != "array": 
     1129            for item in self.model.orientation_params: 
     1130                if not item in self.disp_list: 
     1131                    iy += 1 
     1132                    ix = 0 
     1133                    ## add parameters name with checkbox for selecting to fit 
     1134                    cb = wx.CheckBox(self, -1, item ) 
     1135                    cb.SetValue(False) 
     1136                    wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 
     1137                    if self.data.__class__.__name__ =="Data2D": 
     1138                        cb.Enable() 
     1139                    else: 
     1140                        cb.Disable() 
     1141                    sizer.Add( cb,( iy, ix),(1,1), 
     1142                                 wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 5) 
     1143     
     1144                    ## add parameter value 
     1145                    ix += 1 
     1146                    value= self.model.getParam(item) 
     1147                    ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     1148                                        style=wx.TE_PROCESS_ENTER) 
    12081149                     
    1209                  
    1210                 ##[cb state, name, value, "+/-", error of fit, min, max , units] 
    1211                 self.parameters.append([cb,item, ctl1, 
    1212                                         text2,ctl2, ctl3, ctl4,units]) 
    1213                 self.orientation_params.append([cb,item, ctl1, 
    1214                                         text2,ctl2, ctl3, ctl4,units]) 
     1150                    ctl1.SetValue(format_number(value)) 
     1151                    if self.data.__class__.__name__ =="Data2D": 
     1152                        ctl1.Enable() 
     1153                    else: 
     1154                        ctl1.Disable() 
     1155                    sizer.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 
     1156                    ## text to show error sign 
     1157                    ix += 1 
     1158                    text2=wx.StaticText(self, -1, '+/-') 
     1159                    sizer.Add(text2,(iy, ix),(1,1),\ 
     1160                                    wx.EXPAND|wx.ADJUST_MINSIZE, 0)  
     1161                    text2.Hide()  
     1162                    ## txtcrtl to add error from fit 
     1163                    ix += 1 
     1164                    ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
     1165                    sizer.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     1166                    ctl2.Hide() 
     1167                    if self.data.__class__.__name__ =="Data2D": 
     1168                        ctl1.Enable() 
     1169                    else: 
     1170                        ctl1.Disable() 
     1171                    param_min, param_max= self.model.details[item][1:] 
     1172                    ix += 1 
     1173                    ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     1174                                                   kill_focus_callback = self._onparamRangeEnter, 
     1175                                                   set_focus_callback  = self._onparamRangeEnter) 
     1176                    if param_min ==None: 
     1177                        ctl3.SetValue("") 
     1178                    else: 
     1179                        ctl3.SetValue(str(param_min)) 
     1180                    sizer.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     1181                    ctl3.Hide() 
     1182                    if self.data.__class__.__name__ =="Data2D": 
     1183                        ctl3.Enable() 
     1184                    else: 
     1185                        ctl3.Disable() 
     1186                    ix += 1 
     1187                    ctl4 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     1188                                                   kill_focus_callback = self._onparamRangeEnter, 
     1189                                                   set_focus_callback  = self._onparamRangeEnter) 
     1190                    sizer.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     1191                    if param_max ==None: 
     1192                        ctl4.SetValue("") 
     1193                    else: 
     1194                        ctl4.SetValue(str(param_max)) 
     1195                    ctl4.Hide() 
     1196                    if self.data.__class__.__name__ =="Data2D": 
     1197                        ctl4.Enable() 
     1198                    else: 
     1199                        ctl4.Disable() 
     1200                    if self.engine_type=="park": 
     1201                        ctl3.Show(True) 
     1202                        ctl4.Show(True) 
     1203                    ix +=1 
     1204                    # Units 
     1205                    try: 
     1206                        units = wx.StaticText(self, -1, self.model.details[item][0], style=wx.ALIGN_LEFT) 
     1207                    except: 
     1208                        units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 
     1209                    if self.data.__class__.__name__ =="Data2D": 
     1210                        units.Enable() 
     1211                    else: 
     1212                        units.Disable() 
     1213                    sizer.Add(units, (iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     1214                         
     1215                     
     1216                    ##[cb state, name, value, "+/-", error of fit, min, max , units] 
     1217                    self.parameters.append([cb,item, ctl1, 
     1218                                            text2,ctl2, ctl3, ctl4,units]) 
     1219                    self.orientation_params.append([cb,item, ctl1, 
     1220                                            text2,ctl2, ctl3, ctl4,units]) 
    12151221               
    12161222        iy+=1 
  • sansview/perspectives/fitting/fitpanel.py

    r6f2c919 rf20767b  
    145145         
    146146        pageClosedEvent = wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE 
    147         self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.onClosePage)       
     147        self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.onClosePage) 
    148148        
    149149        #dictionary of miodel {model class name, model class} 
     
    389389            self.fit_page_name[page.window_name].appendItem(page.createMemento())  
    390390             
    391             #print " current added state: ",len(self.fit_page_name[page.window_name]) 
    392              
    393391    def _onUndo(self, event ): 
    394392        """ 
  • sansview/perspectives/fitting/modelpage.py

    r6f2c919 rf20767b  
    3535        description="" 
    3636        if self.model!=None: 
     37             
    3738            description = self.model.description 
    3839             
     
    279280        # If the 2D display is not currently enabled, plot the model in 2D  
    280281        # and set the enable2D flag. 
     282 
    281283        if self.fitrange: 
    282284            self.enable2D = True 
    283              
     285  
    284286        if self.enable2D: 
    285287            self._draw_model() 
     
    290292                    if item[2]!=None: 
    291293                        item[2].Enable() 
    292             if len(self.orientation_params_disp)>0: 
    293                  for item in self.orientation_params_disp: 
    294                     if item[2]!=None: 
    295                         item[2].Enable() 
     294            if  self.disp_name == "ArrayDispersion":                 
     295                self._set_sizer_arraydispersion()   
     296            else: 
     297                if len(self.orientation_params_disp)>0: 
     298                     for item in self.orientation_params_disp: 
     299                        if item[2]!=None: 
     300                            item[2].Enable() 
    296301        self.state.enable2D =  copy.deepcopy(self.enable2D) 
    297302        ## post state to fit panel 
     
    329334        self.state.structurecombobox = self.structurebox.GetCurrentSelection() 
    330335        self.state.formfactorcombobox = self.formfactorbox.GetCurrentSelection() 
    331         #print "_on_select_model",self.state.structurecombobox,self.state.formfactorcombobox  
    332336        
    333337        ## post state to fit panel 
     
    504508        sizer.Add((10,10),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    505509        for item  in self.model.orientation_params: 
    506             if not item in self.disp_list : 
     510            if not item in self.disp_list and item in keys: 
    507511                iy += 1 
    508512                ix = 0 
     
    536540                self.orientation_params.append([None,item, ctl1, 
    537541                                        None,None, None, None,None]) 
    538                  
     542                     
    539543        iy+=1 
    540544        sizer.Add((10,10),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
Note: See TracChangeset for help on using the changeset viewer.