Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/perspectives/fitting/fitpage.py

    rc8e1996 r55db501  
    1414from sasmodels.weights import MODELS as POLYDISPERSITY_MODELS 
    1515 
    16 from sas.sasgui.guiframe.events import StatusEvent, NewPlotEvent, \ 
    17     PlotQrangeEvent 
     16from sas.sasgui.guiframe.events import StatusEvent 
     17from sas.sasgui.guiframe.events import NewPlotEvent 
     18from sas.sasgui.guiframe.events import PlotQrangeEvent 
    1819from sas.sasgui.guiframe.dataFitting import check_data_validity 
    19 from sas.sasgui.guiframe.utils import format_number, check_float 
     20from sas.sasgui.guiframe.utils import format_number 
     21from sas.sasgui.guiframe.utils import check_float 
    2022from sas.sasgui.guiframe.documentation_window import DocumentationWindow 
    21  
    22 from sas.sasgui.perspectives.fitting.basepage import BasicPage as BasicPage 
    23 from sas.sasgui.perspectives.fitting.basepage import PageInfoEvent as \ 
    24     PageInfoEvent 
    25 from sas.sascalc.data_util.qsmearing import smear_selection 
    26 from .basepage import ModelTextCtrl 
    2723 
    2824(Chi2UpdateEvent, EVT_CHI2_UPDATE) = wx.lib.newevent.NewEvent() 
     
    3228SMEAR_SIZE_H = 0.00 
    3329 
     30from sas.sasgui.perspectives.fitting.basepage import BasicPage as BasicPage 
     31from sas.sasgui.perspectives.fitting.basepage import PageInfoEvent as PageInfoEvent 
     32from sas.sascalc.data_util.qsmearing import smear_selection 
     33from .basepage import ModelTextCtrl 
     34 
    3435 
    3536class FitPage(BasicPage): 
     
    4849        BasicPage.__init__(self, parent, color=color) 
    4950 
    50         # draw sizer 
     51        ## draw sizer 
    5152        self._fill_data_sizer() 
    5253        self.is_2D = None 
     
    7172        self.enable_fit_button() 
    7273        self.fill_data_combobox(data_list=self.data_list) 
    73         # create a default data for an empty panel 
     74        #create a default data for an empty panel 
    7475        self.create_default_data() 
    7576        self._manager.frame.Bind(wx.EVT_SET_FOCUS, self.on_set_focus) 
     
    104105        self.data_box_description.SetForegroundColour(dname_color) 
    105106        boxsizer1 = wx.StaticBoxSizer(self.data_box_description, wx.VERTICAL) 
    106         # ---------------------------------------------------------- 
     107        #---------------------------------------------------------- 
    107108        sizer_data = wx.BoxSizer(wx.HORIZONTAL) 
    108109        self.dataSource = wx.ComboBox(self, wx.ID_ANY, style=wx.CB_READONLY) 
     
    133134        self.enable_datasource() 
    134135        if len(data_list) > 0: 
    135             # find the maximum range covering all data 
     136            #find the maximum range covering all data 
    136137            qmin, qmax, npts = self.compute_data_set_range(data_list) 
    137138            self.qmin_data_set = qmin 
     
    168169            self.set_data(data) 
    169170        elif self.dataSource.GetCount() > 0: 
     171 
    170172            pos = self.dataSource.GetSelection() 
    171173            data = self.dataSource.GetClientData(pos) 
     
    184186 
    185187        :return: True or False 
     188 
    186189        """ 
    187190        if self.data.__class__.__name__ == "Data2D" or \ 
     
    197200        buttons, xi^2, number of points etc. 
    198201        """ 
    199         is_2d_data = False 
     202        is_2Ddata = False 
    200203 
    201204        # Check if data is 2D 
    202205        if self.data.__class__.__name__ == "Data2D" or \ 
    203206                        self.enable2D: 
    204             is_2d_data = True 
     207            is_2Ddata = True 
    205208 
    206209        title = "Fitting" 
    207         # smear messages & titles 
     210        #smear messages & titles 
    208211        smear_message_none = "No smearing is selected..." 
    209212        smear_message_dqdata = "The dQ data is being used for smearing..." 
     
    223226        self._get_smear_info() 
    224227 
    225         # Sizers 
     228        #Sizers 
    226229        box_description_range = wx.StaticBox(self, wx.ID_ANY, str(title)) 
    227230        box_description_range.SetForegroundColour(wx.BLUE) 
     
    242245        sizer_weighting = wx.BoxSizer(wx.HORIZONTAL) 
    243246        weighting_box.SetMinSize((_DATA_BOX_WIDTH, 40)) 
    244         # Filling the sizer containing weighting info. 
     247        #Filling the sizer containing weighting info. 
    245248        self.dI_noweight = wx.RadioButton(self, wx.ID_ANY, 
    246249                                          'No Weighting', style=wx.RB_GROUP) 
     
    284287                        self._on_select_accuracy) 
    285288 
    286         # Fit button 
     289        #Fit button 
    287290        self.btFit = wx.Button(self, self._ids.next(), 'Fit') 
    288291        self.default_bt_colour = self.btFit.GetDefaultAttributes() 
     
    290293        self.btFit.SetToolTipString("Start fitting.") 
    291294 
    292         # General Help button 
     295        #General Help button 
    293296        self.btFitHelp = wx.Button(self, wx.ID_ANY, 'Help') 
    294297        self.btFitHelp.SetToolTipString("General fitting help.") 
    295298        self.btFitHelp.Bind(wx.EVT_BUTTON, self._onFitHelp) 
    296299         
    297         # Resolution Smearing Help button (for now use same technique as 
    298         # used for dI help to get tiniest possible button that works 
    299         # both on MAC and PC.  Should completely rewrite the fitting sizer 
    300         # in future.  This is minimum to get out release 3.1 
     300        #Resolution Smearing Help button (for now use same technique as 
     301        #used for dI help to get tiniest possible button that works 
     302        #both on MAC and PC.  Should completely rewrite the fitting sizer  
     303        #in future.  This is minimum to get out release 3.1 
    301304        #        comment June 14, 2015     --- PDB 
    302305        if sys.platform.count("win32") > 0: 
    303             size_q = (20, 15)  # on PC 
     306            size_q = (20, 15)  #on PC 
    304307        else: 
    305             size_q = (30, 20)  # on MAC 
     308            size_q = (30, 20)  #on MAC 
    306309        self.btSmearHelp = wx.Button(self, wx.ID_ANY, '?', 
    307310                                     style=wx.BU_EXACTFIT, size=size_q) 
     
    309312        self.btSmearHelp.Bind(wx.EVT_BUTTON, self._onSmearHelp) 
    310313         
    311         # textcntrl for custom resolution 
     314        #textcntrl for custom resolution 
    312315        self.smear_pinhole_max = ModelTextCtrl(self, wx.ID_ANY, 
    313316                            size=(_BOX_WIDTH - 25, 20), 
     
    327330                            text_enter_callback=self.onSlitSmear) 
    328331 
    329         # smear 
     332        ## smear 
    330333        self.smear_data_left = BGTextCtrl(self, wx.ID_ANY, 
    331334                                          size=(_BOX_WIDTH - 25, 20), style=0) 
     
    335338        self.smear_data_right.SetValue(str(self.dq_r)) 
    336339 
    337         # set default values for smear 
     340        #set default values for smear 
    338341        self.smear_pinhole_max.SetValue(str(self.dx_max)) 
    339342        self.smear_pinhole_min.SetValue(str(self.dx_min)) 
     
    341344        self.smear_slit_width.SetValue(str(self.dxw)) 
    342345 
    343         # Filling the sizer containing instruments smearing info. 
     346        #Filling the sizer containing instruments smearing info. 
    344347        self.disable_smearer = wx.RadioButton(self, wx.ID_ANY, 
    345348                                              'None', style=wx.RB_GROUP) 
    346349        self.enable_smearer = wx.RadioButton(self, wx.ID_ANY, 'Use dQ Data') 
    347         # self.enable_smearer.SetToolTipString( 
    348         # "Click to use the loaded dQ data for smearing.") 
     350        #self.enable_smearer.SetToolTipString( 
     351        #"Click to use the loaded dQ data for smearing.") 
    349352        self.pinhole_smearer = wx.RadioButton(self, wx.ID_ANY, 
    350353                                              'Custom Pinhole Smear') 
    351         # self.pinhole_smearer.SetToolTipString 
    352         # ("Click to input custom resolution for pinhole smearing.") 
     354        #self.pinhole_smearer.SetToolTipString 
     355        #("Click to input custom resolution for pinhole smearing.") 
    353356        self.slit_smearer = wx.RadioButton(self, wx.ID_ANY, 'Custom Slit Smear') 
    354         # self.slit_smearer.SetToolTipString 
    355         # ("Click to input custom resolution for slit smearing.") 
     357        #self.slit_smearer.SetToolTipString 
     358        #("Click to input custom resolution for slit smearing.") 
    356359        self.Bind(wx.EVT_RADIOBUTTON, self.onSmear, 
    357360                  id=self.disable_smearer.GetId()) 
     
    376379        self.Npts_fit = BGTextCtrl(self, wx.ID_ANY, "-", size=(75, 20), style=0) 
    377380        self.Npts_fit.SetToolTipString( 
    378             " Npts : number of points selected for fitting") 
     381                            " Npts : number of points selected for fitting") 
    379382        self.Npts_total = ModelTextCtrl(self, wx.ID_ANY, size=(_BOX_WIDTH, 20), 
    380                                         style=wx.TE_PROCESS_ENTER, 
    381                                         text_enter_callback=self._onQrangeEnter) 
     383                            style=wx.TE_PROCESS_ENTER, 
     384                            text_enter_callback=self._onQrangeEnter) 
    382385        self.Npts_total.SetValue(format_number(self.npts_x)) 
    383         self.Npts_total.SetToolTipString( 
    384             " Total Npts : total number of data points") 
     386        self.Npts_total.SetToolTipString(\ 
     387                                " Total Npts : total number of data points") 
    385388 
    386389        # Update and Draw button 
     
    427430        self.smear_description_2d_y = wx.StaticText(self, wx.ID_ANY, 
    428431                            smear_message_2d_y_title, style=wx.ALIGN_LEFT) 
    429         self.smear_description_2d_y.SetToolTipString( 
     432        self.smear_description_2d_y.SetToolTipString(\ 
    430433                                    " dQs(perpendicular) in q_phi direction.") 
    431434        self.smear_description_pin_min = wx.StaticText(self, wx.ID_ANY, 
     
    438441                        smear_message_slit_width_title, style=wx.ALIGN_LEFT) 
    439442 
    440         # arrange sizers 
     443        #arrange sizers 
    441444        self.sizer_set_smearer.Add(sizer_smearer) 
    442445        self.sizer_set_smearer.Add((10, 10)) 
    443446        self.sizer_set_smearer.Add(self.smear_description_none, 
    444                                    0, wx.CENTER, 10) 
     447                                    0, wx.CENTER, 10) 
    445448        self.sizer_set_smearer.Add(self.smear_description_dqdata, 
    446                                    0, wx.CENTER, 10) 
     449                                    0, wx.CENTER, 10) 
    447450        self.sizer_set_smearer.Add(self.smear_description_2d, 
    448                                    0, wx.CENTER, 10) 
     451                                    0, wx.CENTER, 10) 
    449452        self.sizer_new_smear.Add(self.smear_description_type, 
    450                                  0, wx.CENTER, 10) 
     453                                  0, wx.CENTER, 10) 
    451454        self.sizer_new_smear.Add(self.smear_description_accuracy_type, 
    452                                  0, wx.CENTER, 10) 
     455                                  0, wx.CENTER, 10) 
    453456        self.sizer_new_smear.Add(self.smear_accuracy) 
    454457        self.sizer_new_smear.Add(self.smear_description_smear_type, 
    455                                  0, wx.CENTER, 10) 
     458                                  0, wx.CENTER, 10) 
    456459        self.sizer_new_smear.Add((15, -1)) 
    457         self.sizer_new_smear.Add(self.smear_description_2d_x, 0, wx.CENTER, 10) 
     460        self.sizer_new_smear.Add(self.smear_description_2d_x, 
     461                                  0, wx.CENTER, 10) 
    458462        self.sizer_new_smear.Add(self.smear_description_pin_min, 
    459                                  0, wx.CENTER, 10) 
     463                                  0, wx.CENTER, 10) 
    460464        self.sizer_new_smear.Add(self.smear_description_slit_height, 
    461                                  0, wx.CENTER, 10) 
    462  
    463         self.sizer_new_smear.Add(self.smear_pinhole_min, 0, wx.CENTER, 10) 
    464         self.sizer_new_smear.Add(self.smear_slit_height, 0, wx.CENTER, 10) 
    465         self.sizer_new_smear.Add(self.smear_data_left, 0, wx.CENTER, 10) 
     465                                  0, wx.CENTER, 10) 
     466 
     467        self.sizer_new_smear.Add(self.smear_pinhole_min, 
     468                                  0, wx.CENTER, 10) 
     469        self.sizer_new_smear.Add(self.smear_slit_height, 
     470                                  0, wx.CENTER, 10) 
     471        self.sizer_new_smear.Add(self.smear_data_left, 
     472                                  0, wx.CENTER, 10) 
    466473        self.sizer_new_smear.Add((20, -1)) 
    467474        self.sizer_new_smear.Add(self.smear_description_2d_y, 
    468                                  0, wx.CENTER, 10) 
     475                                  0, wx.CENTER, 10) 
    469476        self.sizer_new_smear.Add(self.smear_description_pin_max, 
    470                                  0, wx.CENTER, 10) 
     477                                  0, wx.CENTER, 10) 
    471478        self.sizer_new_smear.Add(self.smear_description_slit_width, 
    472                                  0, wx.CENTER, 10) 
     479                                  0, wx.CENTER, 10) 
    473480 
    474481        self.sizer_new_smear.Add(self.smear_pinhole_max, 0, wx.CENTER, 10) 
     
    495502 
    496503        # Show only the relevant smear messages, etc 
    497         if self.current_smearer is None: 
    498             if not is_2d_data: 
     504        if self.current_smearer == None: 
     505            if not is_2Ddata: 
    499506                self.smear_description_none.Show(True) 
    500507                self.enable_smearer.Disable() 
     
    502509                self.smear_description_none.Show(True) 
    503510                self.slit_smearer.Disable() 
    504             if self.data is None: 
     511            if self.data == None: 
    505512                self.slit_smearer.Disable() 
    506513                self.pinhole_smearer.Disable() 
     
    509516            self._show_smear_sizer() 
    510517        boxsizer_range.Add(self.sizer_set_masking) 
    511         # 2D data? default 
    512         is_2d_data = False 
    513  
    514         # check if it is 2D data 
     518        #2D data? default 
     519        is_2Ddata = False 
     520 
     521        #check if it is 2D data 
    515522        if self.data.__class__.__name__ == "Data2D" or self.enable2D: 
    516             is_2d_data = True 
     523            is_2Ddata = True 
    517524 
    518525        self.sizer5.Clear(True) 
     
    562569        sizer.Add(wx.StaticText(self, wx.ID_ANY, ' Max[1/A]')) 
    563570        sizer.Add(self.EditMask_title) 
    564         sizer.Add((-1, 5)) 
     571        sizer.Add((-1,5)) 
    565572 
    566573        sizer.Add(self.reset_qrange) 
     
    568575        sizer.Add(self.qmax) 
    569576        sizer.Add(self.btEditMask) 
    570         sizer.Add((-1, 5)) 
    571  
    572         sizer.AddMany(5*[(-1, 5)]) 
     577        sizer.Add((-1,5)) 
     578 
     579        sizer.AddMany(5*[(-1,5)]) 
    573580 
    574581        sizer.Add(box_description_1, 0, 0) 
     
    576583        sizer.Add(self.points_sizer, 0, 0) 
    577584        sizer.Add(self.draw_button, 0, 0) 
    578         sizer.Add((-1, 5)) 
     585        sizer.Add((-1,5)) 
    579586         
    580587        sizer.Add(self.tcChi, 0, 0) 
     
    586593        boxsizer_range.Add(sizer_chi2) 
    587594        boxsizer_range.Add(sizer) 
    588         if is_2d_data: 
     595        if is_2Ddata: 
    589596            self.btEditMask.Enable() 
    590597            self.EditMask_title.Enable() 
     
    592599            self.btEditMask.Disable() 
    593600            self.EditMask_title.Disable() 
    594         # save state 
     601        ## save state 
    595602        self.save_current_state() 
    596603        self.sizer5.Add(boxsizer_range, 0, wx.EXPAND | wx.ALL, 10) 
    597604        self.sizer5.Layout() 
    598605 
     606 
    599607    def _set_sizer_dispersion(self): 
    600608        """ 
     
    606614 
    607615        self.sizer4_4.Clear(True) 
    608         if self.model is None: 
    609             # no model is selected 
     616        if self.model == None: 
     617            ##no model is selected 
    610618            return 
    611619        if not self.enable_disp.GetValue(): 
    612             # the user didn't select dispersity display 
     620            ## the user didn't select dispersity display 
    613621            return 
    614622 
    615623        self._reset_dispersity() 
    616624 
    617         # fill a sizer with the combobox to select dispersion type 
     625        ## fill a sizer with the combobox to select dispersion type 
    618626        model_disp = wx.StaticText(self, wx.ID_ANY, 'Function') 
    619         CHECK_STATE = False 
     627        CHECK_STATE = self.cb1.GetValue() 
    620628 
    621629        ix = 0 
     
    638646            err_text = '' 
    639647        self.text_disp_1 = wx.StaticText(self, wx.ID_ANY, err_text) 
    640         self.sizer4_4.Add(self.text_disp_1, (iy, ix), (1, 1), 
     648        self.sizer4_4.Add(self.text_disp_1, (iy, ix), (1, 1), \ 
    641649                          wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    642650 
    643651        ix += 1 
    644652        self.text_disp_min = wx.StaticText(self, wx.ID_ANY, 'Min') 
    645         self.sizer4_4.Add(self.text_disp_min, (iy, ix), (1, 1), 
     653        self.sizer4_4.Add(self.text_disp_min, (iy, ix), (1, 1), \ 
    646654                            wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    647655 
     
    676684                if item in self.model.magnetic_params: 
    677685                    continue 
    678             if item not in self.model.orientation_params: 
    679                 if item not in self.disp_cb_dict: 
     686            if not item in self.model.orientation_params: 
     687                if not item in self.disp_cb_dict: 
    680688                    self.disp_cb_dict[item] = None 
    681689                name0 = "Distribution of " + item 
     
    683691                name2 = item + ".npts" 
    684692                name3 = item + ".nsigmas" 
    685                 if name1 not in self.model.details: 
     693                if not name1 in self.model.details: 
    686694                    self.model.details[name1] = ["", None, None] 
    687695 
     
    709717                        ctl1.SetValue(str(format_number(value, True))) 
    710718                        self.sizer4_4.Add(ctl1, (iy, ix), (1, 1), wx.EXPAND) 
    711                         # text to show error sign 
     719                        ## text to show error sign 
    712720                        ix = 2 
    713721                        text2 = wx.StaticText(self, wx.ID_ANY, '+/-') 
     
    769777                        Tct2.SetValue(str(format_number(value))) 
    770778                        self.sizer4_4.Add(Tct2, (iy, ix), (1, 1), 
    771                                           wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
     779                                           wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    772780                        self.fixed_param.append([None, name3, Tct2, 
    773781                                                 None, None, None, 
     
    795803                if item in self.model.magnetic_params: 
    796804                    continue 
    797             if item in self.model.orientation_params: 
    798                 if item not in self.disp_cb_dict: 
     805            if  item in self.model.orientation_params: 
     806                if not item in self.disp_cb_dict: 
    799807                    self.disp_cb_dict[item] = None 
    800808                name0 = "Distribution of " + item 
     
    803811                name3 = item + ".nsigmas" 
    804812 
    805                 if name1 not in self.model.details: 
     813                if not name1 in self.model.details: 
    806814                    self.model.details[name1] = ["", None, None] 
    807815 
     
    848856 
    849857                        self.sizer4_4.Add(ctl1, (iy, ix), (1, 1), wx.EXPAND) 
    850                         # text to show error sign 
     858                        ## text to show error sign 
    851859                        ix = 2 
    852860                        text2 = wx.StaticText(self, wx.ID_ANY, '+/-') 
     
    961969 
    962970        self.state.model = self.model.clone() 
    963         # save state into 
     971        ## save state into 
     972        self.state.cb1 = self.cb1.GetValue() 
    964973        self._copy_parameters_state(self.parameters, self.state.parameters) 
    965974        self._copy_parameters_state(self.orientation_params_disp, 
     
    971980        wx.PostEvent(self.parent, 
    972981                     StatusEvent(status=" Selected Distribution: Gaussian")) 
    973         # Fill the list of fittable parameters 
     982        #Fill the list of fittable parameters 
     983        #self.select_all_param(event=None) 
    974984        self.get_all_checked_params() 
    975985        self.Layout() 
     
    979989        Update and Draw the model 
    980990        """ 
    981         if self.model is None: 
     991        if self.model == None: 
    982992            msg = "Please select a Model first..." 
    983993            wx.MessageBox(msg, 'Info') 
     
    989999            self.create_default_data() 
    9901000        """ 
    991         flag, is_modified = self._update_paramv_on_fit() 
    992  
    993         wx.CallAfter(self._onparamEnter_helper, is_modified) 
     1001        flag,is_modified = self._update_paramv_on_fit() 
     1002 
     1003        wx.CallAfter(self._onparamEnter_helper,is_modified) 
    9941004        if not flag: 
    9951005            msg = "The parameters are invalid" 
     
    10011011        Allow to fit 
    10021012        """ 
    1003         if event is not None: 
     1013        if event != None: 
    10041014            event.Skip() 
    10051015        if self.fit_started: 
     
    10411051            return 
    10421052 
    1043         self.select_param() 
     1053        self.select_param(event=None) 
    10441054 
    10451055        # Remove or do not allow fitting on the Q=0 point, especially 
     
    10521062                                    qmax=self.qmax_x) 
    10531063 
    1054         # single fit 
    1055         # self._manager.onFit(uid=self.uid) 
     1064        #single fit 
     1065        #self._manager.onFit(uid=self.uid) 
    10561066        self.fit_started = self._manager.onFit(uid=self.uid) 
    10571067        wx.CallAfter(self.set_fitbutton) 
     
    10661076        versions of Wx (before 2.9) and thus not the release version of 
    10671077        installers, the help comes up at the top level of the file as 
    1068         web browser does not pass anything past the # to the browser when it is 
     1078        webbrowser does not pass anything past the # to the browser when it is 
    10691079        running "file:///...." 
    10701080 
    1071         :param evt: Triggers on clicking the help button 
    1072         """ 
     1081    :param evt: Triggers on clicking the help button 
     1082    """ 
    10731083 
    10741084        _TreeLocation = "user/sasgui/perspectives/fitting/fitting_help.html" 
     
    10851095        versions of Wx (before 2.9) and thus not the release version of 
    10861096        installers, the help comes up at the top level of the file as 
    1087         web browser does not pass anything past the # to the browser when it is 
     1097        webbrowser does not pass anything past the # to the browser when it is 
    10881098        running "file:///...." 
    10891099 
    1090         :param evt: Triggers on clicking the help button 
    1091         """ 
     1100    :param evt: Triggers on clicking the help button 
     1101    """ 
    10921102 
    10931103        _TreeLocation = "user/sasgui/perspectives/fitting/sm_help.html" 
     
    11011111        """ 
    11021112        # Skip this feature if we are not on Windows 
    1103         # NOTE: the is_mac data member actually means "is no Windows". 
     1113        #NOTE: the is_mac data member actually means "is no Windows". 
    11041114        if self.is_mac: 
    11051115            return 
     
    11111121            label = "Fit" 
    11121122            color = "black" 
    1113         # self.btFit.Enable(False) 
     1123        #self.btFit.Enable(False) 
    11141124        self.btFit.SetLabel(label) 
    11151125        self.btFit.SetForegroundColour(color) 
     
    11421152        Stop fit 
    11431153        """ 
    1144         if event is not None: 
     1154        if event != None: 
    11451155            event.Skip() 
    11461156        self._manager.stop_fit(self.uid) 
     
    11621172        copy_flag = False 
    11631173        is_poly_enabled = None 
    1164         if event is not None: 
    1165             if (event.GetEventObject() == self.formfactorbox 
     1174        if event != None: 
     1175            if (event.GetEventObject() == self.formfactorbox\ 
    11661176                        and self.structurebox.GetLabel() != 'None')\ 
    11671177                        or event.GetEventObject() == self.structurebox\ 
     
    11761186            self._keep.Enable(False) 
    11771187            self._set_save_flag(False) 
     1188        # TODO: why do we have to variables for one flag?? 
    11781189        self.enable_disp.SetValue(False) 
    11791190        self.disable_disp.SetValue(True) 
     
    12051216                    self._keep.Enable(not self.batch_on) 
    12061217                    self._set_save_flag(True) 
    1207                     self._set_smear(self.data) 
    12081218 
    12091219            # more disables for 2D 
     
    12191229            except: 
    12201230                raise 
    1221                 # error occured on chisqr computation 
    1222                 # pass 
    1223             # event to post model to fit to fitting plugins 
     1231                ## error occured on chisqr computation 
     1232                #pass 
     1233            ## event to post model to fit to fitting plugins 
    12241234            (ModelEventbox, EVT_MODEL_BOX) = wx.lib.newevent.NewEvent() 
    12251235 
    1226             # set smearing value whether or not data contain the smearing info 
     1236            ## set smearing value whether or not 
     1237            #    the data contain the smearing info 
    12271238            evt = ModelEventbox(model=self.model, 
    12281239                            smearer=temp_smear, 
     
    12341245 
    12351246            self._manager._on_model_panel(evt=evt) 
    1236             self.mbox_description.SetLabel("Model [ %s ]" % 
    1237                                            str(self.model.name)) 
     1247            self.mbox_description.SetLabel("Model [ %s ]" % str(self.model.name)) 
    12381248            self.mbox_description.SetForegroundColour(wx.BLUE) 
    12391249            self.state.model = self.model.clone() 
    12401250            self.state.model.name = self.model.name 
    12411251 
    1242         if event is not None: 
    1243             # post state to fit panel 
     1252        if event != None: 
     1253            ## post state to fit panel 
    12441254            new_event = PageInfoEvent(page=self) 
    12451255            wx.PostEvent(self.parent, new_event) 
    1246             # update list of plugins if new plugin is available 
     1256            #update list of plugins if new plugin is available 
    12471257            custom_model = 'Customized Models' 
    12481258            mod_cat = self.categorybox.GetStringSelection() 
     
    12571267                    self.formfactorbox.SetValue(current_val) 
    12581268            # when select a model only from guictr/button 
    1259             if is_poly_enabled is not None: 
     1269            if is_poly_enabled != None: 
    12601270                self.enable_disp.SetValue(is_poly_enabled) 
    12611271                self.disable_disp.SetValue(not is_poly_enabled) 
     
    12851295        when enter value on panel redraw model according to changed 
    12861296        """ 
    1287         if self.model is None: 
     1297        if self.model == None: 
    12881298            msg = "Please select a Model first..." 
    12891299            wx.MessageBox(msg, 'Info') 
    12901300            return 
    12911301 
    1292         # default flag 
     1302        #default flag 
    12931303        flag = False 
    12941304        self.fitrange = True 
    1295         # get event object 
     1305        #get event object 
    12961306        tcrtl = event.GetEventObject() 
    1297         # Clear msg if previously shown. 
     1307        #Clear msg if previously shown. 
    12981308        msg = "" 
    12991309        wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
     
    13061316                if not self.disable_smearer.GetValue(): 
    13071317                    temp_smearer = self.current_smearer 
    1308                     # set smearing value whether or not data contain the 
    1309                     # smearing info 
     1318                    ## set smearing value whether or not 
     1319                    #        the data contain the smearing info 
    13101320                    if self.slit_smearer.GetValue(): 
    13111321                        flag1 = self.update_slit_smear() 
     
    13241334                                              enable_smearer=enable_smearer) 
    13251335                if flag: 
    1326                     # self.compute_chisqr(smearer= temp_smearer) 
    1327  
    1328                     # new state posted 
     1336                    #self.compute_chisqr(smearer= temp_smearer) 
     1337 
     1338                    ## new state posted 
    13291339                    if self.state_change: 
    1330                         # self._undo.Enable(True) 
     1340                        #self._undo.Enable(True) 
    13311341                        event = PageInfoEvent(page=self) 
    13321342                        wx.PostEvent(self.parent, event) 
     
    13381348        else: 
    13391349            self.save_current_state() 
    1340             msg = "Cannot Plot: Must enter a number!!!  " 
     1350            msg = "Cannot Plot :Must enter a number!!!  " 
    13411351            wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    13421352 
     
    13491359        """ 
    13501360        tcrtl = event.GetEventObject() 
    1351         # Clear msg if previously shown. 
     1361        #Clear msg if previously shown. 
    13521362        msg = "" 
    13531363        wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
     
    13671377            tcrtl.SetBackgroundColour(wx.WHITE) 
    13681378 
    1369         # self._undo.Enable(True) 
     1379        #self._undo.Enable(True) 
    13701380        self.save_current_state() 
    13711381        event = PageInfoEvent(page=self) 
     
    13771387        ON Qrange focus 
    13781388        """ 
    1379         if event is not None: 
     1389        if event != None: 
    13801390            event.Skip() 
    1381         # tcrtl = event.GetEventObject() 
     1391        #tcrtl = event.GetEventObject() 
    13821392        self._validate_qrange(self.qmin, self.qmax) 
    13831393 
     
    13861396        On Qrange textctrl click, make the qrange lines in the plot 
    13871397        """ 
    1388         if event is not None: 
     1398        if event != None: 
    13891399            event.Skip() 
    13901400        if self.data.__class__.__name__ == "Data2D": 
     
    14041414        #On q range value updated. DO not combine with qrange_click(). 
    14051415        """ 
    1406         if event is not None: 
     1416        if event != None: 
    14071417            event.Skip() 
    14081418        if self.data.__class__.__name__ == "Data2D": 
     
    14321442        length = len(self.data.x) 
    14331443        indx = (numpy.abs(self.data.x - x_data)).argmin() 
    1434         # return array.flat[idx] 
     1444        #return array.flat[idx] 
    14351445        if key == wx.WXK_PAGEUP or key == wx.WXK_NUMPAD_PAGEUP: 
    14361446            indx += 1 
     
    14511461        """ 
    14521462        tcrtl = event.GetEventObject() 
    1453         # Clear msg if previously shown. 
     1463        #Clear msg if previously shown. 
    14541464        msg = "" 
    14551465        wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
     
    14811491                wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    14821492                return 
    1483             # Check if # of points for theory model are valid(>0). 
     1493            #Check if # of points for theory model are valid(>0). 
    14841494            # check for 2d 
    14851495            if self.data.__class__.__name__ == "Data2D" or \ 
     
    14881498                radius = numpy.sqrt(self.data.qx_data * self.data.qx_data + 
    14891499                                    self.data.qy_data * self.data.qy_data) 
    1490                 index_data = ((self.qmin_x <= radius) & (radius <= self.qmax_x)) 
     1500                index_data = ((self.qmin_x <= radius) & \ 
     1501                                (radius <= self.qmax_x)) 
    14911502                index_data = (index_data) & (self.data.mask) 
    14921503                index_data = (index_data) & (numpy.isfinite(self.data.data)) 
     
    14981509                    return 
    14991510                else: 
    1500                     # self.data.mask = index_data 
    1501                     # self.Npts_fit.SetValue(str(len(self.data.mask))) 
     1511                    #self.data.mask = index_data 
     1512                    #self.Npts_fit.SetValue(str(len(self.data.mask))) 
    15021513                    self.show_npts2fit() 
    15031514            else: 
    1504                 index_data = ((self.qmin_x <= self.data.x) & 
     1515                index_data = ((self.qmin_x <= self.data.x) & \ 
    15051516                              (self.data.x <= self.qmax_x)) 
    15061517                self.Npts_fit.SetValue(str(len(self.data.x[index_data]))) 
     
    15351546            for item in self.parameters: 
    15361547                if item[0].IsShown(): 
    1537                     # Skip the angle parameters if 1D data 
     1548                    #Skip the angle parameters if 1D data 
    15381549                    if self.data.__class__.__name__ != "Data2D" and \ 
    15391550                            not self.enable2D: 
     
    15421553                    if item in self.param_toFit: 
    15431554                        continue 
    1544                     # hide statictext +/- 
     1555                    ## hide statictext +/- 
    15451556                    if len(item) < 4: 
    15461557                        continue 
    1547                     if item[3] is not None and item[3].IsShown(): 
     1558                    if item[3] != None and item[3].IsShown(): 
    15481559                        item[3].Hide() 
    1549                     # hide textcrtl  for error after fit 
    1550                     if item[4] is not None and item[4].IsShown(): 
     1560                    ## hide textcrtl  for error after fit 
     1561                    if item[4] != None and item[4].IsShown(): 
    15511562                        item[4].Hide() 
    15521563 
     
    15541565            for item in self.fittable_param: 
    15551566                if item[0].IsShown(): 
    1556                     # Skip the angle parameters if 1D data 
     1567                    #Skip the angle parameters if 1D data 
    15571568                    if self.data.__class__.__name__ != "Data2D" and \ 
    15581569                            not self.enable2D: 
     
    15631574                    if len(item) < 4: 
    15641575                        continue 
    1565                     # hide statictext +/- 
    1566                     if item[3] is not None and item[3].IsShown(): 
     1576                    ## hide statictext +/- 
     1577                    if item[3] != None and item[3].IsShown(): 
    15671578                        item[3].Hide() 
    1568                     # hide textcrtl  for error after fit 
    1569                     if item[4] is not None and item[4].IsShown(): 
     1579                    ## hide textcrtl  for error after fit 
     1580                    if item[4] != None and item[4].IsShown(): 
    15701581                        item[4].Hide() 
    15711582        return 
     
    15761587        """ 
    15771588        # get the default values 
    1578         if self.dxl is None: 
     1589        if self.dxl == None: 
    15791590            self.dxl = 0.0 
    1580         if self.dxw is None: 
     1591        if self.dxw == None: 
    15811592            self.dxw = "" 
    1582         if self.dx_min is None: 
     1593        if self.dx_min == None: 
    15831594            self.dx_min = SMEAR_SIZE_L 
    1584         if self.dx_max is None: 
     1595        if self.dx_max == None: 
    15851596            self.dx_max = SMEAR_SIZE_H 
    15861597 
     
    16031614        elif self.data.__class__.__name__ == "Data2D" or \ 
    16041615            self.enable2D: 
    1605             if data.dqx_data is None or data.dqy_data is None: 
     1616            if data.dqx_data == None or  data.dqy_data == None: 
    16061617                return 
    1607             elif self.current_smearer is not None \ 
     1618            elif self.current_smearer != None \ 
    16081619                and data.dqx_data.any() != 0 \ 
    16091620                and data.dqx_data.any() != 0: 
     
    16151626                return 
    16161627        # check if it is pinhole smear and get min max if it is. 
    1617         if data.dx is not None and not numpy.any(data.dx): 
     1628        if data.dx != None and all(data.dx != 0): 
    16181629            self.smear_type = "Pinhole" 
    16191630            self.dq_l = data.dx[0] 
     
    16211632 
    16221633        # check if it is slit smear and get min max if it is. 
    1623         elif data.dxl is not None or data.dxw is not None: 
     1634        elif data.dxl != None or data.dxw != None: 
    16241635            self.smear_type = "Slit" 
    1625             if data.dxl is not None and not numpy.all(data.dxl, 0): 
     1636            if data.dxl != None and all(data.dxl != 0): 
    16261637                self.dq_l = data.dxl[0] 
    1627             if data.dxw is not None and not numpy.all(data.dxw, 0): 
     1638            if data.dxw != None and all(data.dxw != 0): 
    16281639                self.dq_r = data.dxw[0] 
    1629         # return self.smear_type,self.dq_l,self.dq_r 
     1640        #return self.smear_type,self.dq_l,self.dq_r 
    16301641 
    16311642    def _show_smear_sizer(self): 
     
    16511662 
    16521663            self.smear_description_dqdata.Show(True) 
    1653             if self.smear_type is not None: 
     1664            if self.smear_type != None: 
    16541665                self.smear_description_smear_type.Show(True) 
    16551666                if self.smear_type == 'Slit': 
     
    17421753        Select an accuracy in 2D custom smear: Xhigh, High, Med, or Low 
    17431754        """ 
    1744         # event.Skip() 
     1755        #event.Skip() 
    17451756        # Check if the accuracy is same as before 
    1746         # self.smear2d_accuracy = event.GetEventObject().GetValue() 
     1757        #self.smear2d_accuracy = event.GetEventObject().GetValue() 
    17471758        self.smear2d_accuracy = self.smear_accuracy.GetValue() 
    17481759        if self.pinhole_smearer.GetValue(): 
     
    17501761        else: 
    17511762            self.onSmear(event=None) 
    1752             if self.current_smearer is not None: 
     1763            if self.current_smearer != None: 
    17531764                self.current_smearer.set_accuracy(accuracy=\ 
    17541765                                                  self.smear2d_accuracy) 
     
    17821793        Build a panel to allow to edit Mask 
    17831794        """ 
    1784         from sas.sasgui.guiframe.local_perspectives.plotting.masking import \ 
    1785             MaskPanel as MaskDialog 
     1795        from sas.sasgui.guiframe.local_perspectives.plotting.masking \ 
     1796        import MaskPanel as MaskDialog 
    17861797 
    17871798        self.panel = MaskDialog(base=self, data=self.data, id=wx.NewId()) 
     
    17941805        is_valid_qrange = self._update_paramv_on_fit() 
    17951806 
    1796         if is_valid_qrange and self.model is not None: 
     1807        if is_valid_qrange and self.model != None: 
    17971808            self.panel.MakeModal(False) 
    17981809            event.Skip() 
     
    18001811            self._draw_model() 
    18011812            self.show_npts2fit() 
    1802         elif self.model is None: 
     1813        elif self.model == None: 
    18031814            self.panel.MakeModal(False) 
    18041815            event.Skip() 
     
    18671878                    npts = len(data.x) 
    18681879                except: 
    1869                     msg = "Unable to find min/max/length of \n data named %s" %\ 
     1880                    msg = "Unable to find min/max/length of \n data named %s" % \ 
    18701881                                data.filename 
    18711882                    wx.PostEvent(self._manager.parent, StatusEvent(status=msg, 
     
    18841895                                               info="error")) 
    18851896                    raise ValueError, msg 
    1886                 # Maximum value of data 
     1897                ## Maximum value of data 
    18871898                qmax = math.sqrt(x * x + y * y) 
    18881899                npts = len(data.data) 
     
    18961907        flag = False 
    18971908        is_data = False 
    1898         npts = 0 
    18991909        try: 
    19001910            old_id = self.data.id 
     
    19081918                flag = True 
    19091919        if data is not None: 
     1920            id = data.id 
    19101921            if is_data: 
    19111922                self.graph_id = self.data.group_id 
     
    19221933            self._set_save_flag(False) 
    19231934        else: 
    1924             if self.model is not None: 
     1935            if self.model != None: 
    19251936                self._set_bookmark_flag(not self.batch_on) 
    19261937                self._keep.Enable(not self.batch_on) 
     
    19291940                self._set_preview_flag(True) 
    19301941 
     1942            self._set_smear(data) 
    19311943            # more disables for 2D 
    19321944            if self.data.__class__.__name__ == "Data2D" or \ 
     
    19351947                self.pinhole_smearer.Enable(True) 
    19361948                self.default_mask = copy.deepcopy(self.data.mask) 
    1937                 if self.data.err_data is None or\ 
    1938                         numpy.all(err == 1 for err in self.data.err_data) or \ 
    1939                         not numpy.any(self.data.err_data): 
     1949                if self.data.err_data == None or\ 
     1950                        (self.data.err_data == 1).all() or\ 
     1951                        (self.data.err_data == 0).all(): 
    19401952                    self.dI_didata.Enable(False) 
    19411953                    self.dI_noweight.SetValue(True) 
     
    19481960                self.slit_smearer.Enable(True) 
    19491961                self.pinhole_smearer.Enable(True) 
    1950  
    1951                 if self.data.dy is None or\ 
    1952                      numpy.all(self.data.dy == 1) or\ 
    1953                      not numpy.any(self.data.dy): 
     1962                if self.data.dy == None or\ 
     1963                     (self.data.dy == 1).all() or\ 
     1964                     (self.data.dy == 0).all(): 
    19541965                    self.dI_didata.Enable(False) 
    19551966                    self.dI_noweight.SetValue(True) 
     
    19591970                    self.dI_didata.SetValue(True) 
    19601971                    self.weightbt_string = self.dI_didata.GetLabelText() 
    1961             # Enable weighting radio buttons 
     1972            # Enable weighting radio uttons 
    19621973            self.dI_noweight.Enable(True) 
    19631974            self.dI_sqrdata.Enable(True) 
     
    19681979            data_name = self.data.name 
    19691980            _, _, npts = self.compute_data_range(self.data) 
    1970             # set maximum range for x in linear scale 
     1981            #set maximum range for x in linear scale 
    19711982            if not hasattr(self.data, "data"):  # Display only for 1D data fit 
    19721983                self.btEditMask.Disable() 
     
    19771988 
    19781989        self.Npts_total.SetValue(str(npts)) 
    1979         # default:number of data points selected to fit 
     1990        #default:number of data points selected to fit 
    19801991        self.Npts_fit.SetValue(str(npts)) 
    19811992        self.Npts_total.SetEditable(False) 
    1982         self.Npts_total.SetBackgroundColour( 
     1993        self.Npts_total.SetBackgroundColour(\ 
    19831994                                    self.GetParent().GetBackgroundColour()) 
    19841995 
     
    19902001        # send graph_id to page_finder 
    19912002        self._manager.set_graph_id(uid=self.uid, graph_id=self.graph_id) 
    1992         # focus the page 
     2003        #focus the page 
    19932004        if check_data_validity(data): 
    19942005            self.data_box_description.SetForegroundColour(wx.BLUE) 
     
    20022013        self.on_set_focus(None) 
    20032014        self.Refresh() 
    2004         # update model plot with new data information 
     2015        #update model plot with new data information 
    20052016        if flag: 
     2017            #set model view button 
     2018            self.onSmear(None) 
     2019 
    20062020            if self.data.__class__.__name__ == "Data2D": 
    20072021                self.enable2D = True 
     
    20112025                self.model_view.SetLabel("1D Mode") 
    20122026            self.model_view.Disable() 
    2013             #  replace data plot on combo box selection 
    2014             # by removing the previous selected data 
     2027            #replace data plot on combo box selection 
     2028            #by removing the previous selected data 
    20152029            try: 
    20162030                wx.PostEvent(self._manager.parent, 
     
    20192033            except: 
    20202034                pass 
    2021             # plot the current selected data 
     2035            #plot the current selected data 
    20222036            wx.PostEvent(self._manager.parent, 
    20232037                         NewPlotEvent(action="check", plot=self.data, 
     
    20392053            self.reset_page_helper(state) 
    20402054 
    2041             self.select_param() 
    2042             # Save state_fit 
     2055            self.select_param(event=None) 
     2056            #Save state_fit 
    20432057            self.save_current_state_fit() 
    20442058        except: 
     
    20792093        else: 
    20802094            for qx in self.data.x: 
    2081                 if qmax >= qx >= qmin: 
     2095                if qx >= qmin and qx <= qmax: 
    20822096                    npts2fit += 1 
    20832097        return npts2fit 
     
    21082122        # make sure stop button to fit button all the time 
    21092123        self._on_fit_complete() 
    2110         if out is None or not numpy.isfinite(chisqr): 
     2124        if out == None or not numpy.isfinite(chisqr): 
    21112125            raise ValueError, "Fit error occured..." 
    21122126 
     
    21152129        dispersity = '' 
    21162130 
    2117         # Hide textctrl boxes of errors. 
     2131        #Hide textctrl boxes of errors. 
    21182132        self._clear_Err_on_Fit() 
    21192133 
    2120         # Check if chi2 is finite 
    2121         if chisqr is not None and numpy.isfinite(chisqr): 
    2122             # format chi2 
     2134        #Check if chi2 is finite 
     2135        if chisqr != None and numpy.isfinite(chisqr): 
     2136            #format chi2 
    21232137            chi2 = format_number(chisqr, True) 
    21242138            self.tcChi.SetValue(chi2) 
     
    21272141            self.tcChi.SetValue("-") 
    21282142 
    2129         # Hide error title 
     2143        #Hide error title 
    21302144        if self.text2_3.IsShown() and not self.is_mac: 
    21312145            self.text2_3.Hide() 
     
    21342148            if self.enable_disp.GetValue(): 
    21352149                if hasattr(self, "text_disp_1"): 
    2136                     if self.text_disp_1 is not None and not self.is_mac: 
     2150                    if self.text_disp_1 != None and not self.is_mac: 
    21372151                        self.text_disp_1.Hide() 
    21382152        except: 
     
    21412155 
    21422156        i = 0 
    2143         # Set the panel when fit result are list 
     2157        #Set the panel when fit result are list 
    21442158 
    21452159        for item in self.param_toFit: 
    2146             if len(item) > 5 and item is not None: 
     2160            if len(item) > 5 and item != None: 
    21472161 
    21482162                if item[0].IsShown(): 
    2149                     # reset error value to initial state 
     2163                    ## reset error value to initial state 
    21502164                    if not self.is_mac: 
    21512165                        item[3].Hide() 
     
    21542168                        if item[1] == p_name[ind]: 
    21552169                            break 
    2156                     if len(out) > 0 and out[ind] is not None: 
     2170                    if len(out) > 0 and out[ind] != None: 
    21572171                        val_out = format_number(out[ind], True) 
    21582172                        item[2].SetValue(val_out) 
    21592173 
    2160                     if(cov is not None and len(cov) == len(out)): 
     2174                    if(cov != None and len(cov) == len(out)): 
    21612175                        try: 
    2162                             if dispersity is not None: 
     2176                            if dispersity != None: 
    21632177                                if self.enable_disp.GetValue(): 
    21642178                                    if hasattr(self, "text_disp_1"): 
    2165                                         if self.text_disp_1 is not None: 
     2179                                        if self.text_disp_1 != None: 
    21662180                                            if not self.text_disp_1.IsShown()\ 
    2167                                                   and not self.is_mac: 
     2181                                                and not self.is_mac: 
    21682182                                                self.text_disp_1.Show(True) 
    21692183                        except: 
    21702184                            pass 
    21712185 
    2172                         if cov[ind] is not None: 
     2186                        if cov[ind] != None: 
    21732187                            if numpy.isfinite(float(cov[ind])): 
    21742188                                val_err = format_number(cov[ind], True) 
    2175                                 item[4].SetForegroundColour(wx.BLACK) 
     2189                                item[4].SetForegroundColour(wx.BLACK) 
    21762190                            else: 
    21772191                                val_err = 'NaN' 
     
    21852199            else: 
    21862200                raise ValueError, "onsetValues: Invalid parameters..." 
    2187         # Show error title when any errors displayed 
     2201        #Show error title when any errors displayed 
    21882202        if has_error: 
    21892203            if not self.text2_3.IsShown(): 
    21902204                self.text2_3.Show(True) 
    2191         # save current state 
     2205        ## save current state 
    21922206        self.save_current_state() 
    21932207 
     
    21962210            self.Refresh() 
    21972211        self._mac_sleep(0.1) 
    2198         # plot model ( when drawing, do not update chisqr value again) 
     2212        #plot model ( when drawing, do not update chisqr value again) 
    21992213        self._draw_model(update_chisqr=False, source='fit') 
    22002214 
     
    22122226        # compute weight for the current data 
    22132227        flag_weight = self.get_weight_flag() 
    2214         if is_2D is None: 
     2228        if is_2D == None: 
    22152229            is_2D = self._is_2D() 
    22162230        self._manager.set_fit_weight(uid=self.uid, 
     
    22312245        self._update_paramv_on_fit() 
    22322246 
    2233         if event is not None: 
     2247        if event != None: 
    22342248            tcrtl = event.GetEventObject() 
    22352249            # event case of radio button 
    2236             if tcrtl.GetValue(): 
     2250            if tcrtl.GetValue() == True: 
    22372251                self.dx_min = 0.0 
    22382252                self.dx_max = 0.0 
     
    22522266 
    22532267        self.sizer_set_smearer.Layout() 
    2254         # we need FitInside here not just self.Layout to ensure all the sizers 
    2255         # end up with the necessasary space to in the scroll panel. In 
    2256         # particular the compute and fit buttons end up on top of each other 
    2257         # PDB Nov 28 2015. 
     2268        ## we need FitInside here not just self.Layout to ensure all the sizers 
     2269        ## end up with the necessasary space to in the scroll panel. In 
     2270        ## particular the compute and fit buttons end up on top of each other 
     2271        ## PDB Nov 28 2015.  
    22582272        self.FitInside() 
    22592273 
    2260         if event is not None: 
     2274        if event != None: 
    22612275            event.Skip() 
    2262         # self._undo.Enable(True) 
     2276        #self._undo.Enable(True) 
    22632277        self.save_current_state() 
    22642278        event = PageInfoEvent(page=self) 
     
    23352349                get_pin_max.SetBackgroundColour("pink") 
    23362350                msg = "Model Error:This value can not be negative!!!" 
    2337             elif self.dx_min is not None and self.dx_max is not None: 
     2351            elif self.dx_min != None and self.dx_max != None: 
    23382352                if self._is_2D(): 
    23392353                    data.dqx_data[data.dqx_data == 0] = self.dx_min 
     
    23462360                                           self.dx_max + step / 1.1, 
    23472361                                           step) 
    2348             elif self.dx_min is not None: 
     2362            elif self.dx_min != None: 
    23492363                if self._is_2D(): 
    23502364                    data.dqx_data[data.dqx_data == 0] = self.dx_min 
    23512365                else: 
    23522366                    data.dx[data.dx == 0] = self.dx_min 
    2353             elif self.dx_max is not None: 
     2367            elif self.dx_max != None: 
    23542368                if self._is_2D(): 
    23552369                    data.dqy_data[data.dqy_data == 0] = self.dx_max 
     
    23592373            # 2D need to set accuracy 
    23602374            if self._is_2D(): 
    2361                 self.current_smearer.set_accuracy( 
    2362                     accuracy=self.smear2d_accuracy) 
    2363  
    2364         if msg is not None: 
     2375                self.current_smearer.set_accuracy(accuracy=\ 
     2376                                                  self.smear2d_accuracy) 
     2377 
     2378        if msg != None: 
    23652379            wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    23662380        else: 
    23672381            get_pin_min.SetBackgroundColour("white") 
    23682382            get_pin_max.SetBackgroundColour("white") 
    2369         # set smearing value whether or not the data contain the smearing info 
     2383        ## set smearing value whether or not the data contain the smearing info 
    23702384 
    23712385        enable_smearer = not self.disable_smearer.GetValue() 
     
    23932407        wx.CallAfter(self.save_current_state) 
    23942408 
    2395         if msg is not None: 
     2409        if msg != None: 
    23962410            return False 
    23972411        else: 
     
    24092423        msg = None 
    24102424        # for event given 
    2411         if event is not None: 
     2425        if event != None: 
    24122426            tcrtl = event.GetEventObject() 
    24132427            # event case of radio button 
     
    24302444        self._show_smear_sizer() 
    24312445        self.sizer_set_smearer.Layout() 
    2432         # we need FitInside here not just self.Layout to ensure all the sizers 
    2433         # end up with the necessasary space to in the scroll panel. In 
    2434         # particular the compute and fit buttons end up on top of each other 
    2435         # PDB Nov 28 2015. 
     2446        ## we need FitInside here not just self.Layout to ensure all the sizers 
     2447        ## end up with the necessasary space to in the scroll panel. In 
     2448        ## particular the compute and fit buttons end up on top of each other 
     2449        ## PDB Nov 28 2015.  
    24362450        self.FitInside() 
    24372451 
    2438         if event is not None: 
     2452        if event != None: 
    24392453            event.Skip() 
    24402454        self.save_current_state() 
    24412455        event = PageInfoEvent(page=self) 
    24422456        wx.PostEvent(self.parent, event) 
    2443         if msg is not None: 
     2457        if msg != None: 
    24442458            wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    24452459 
     
    25302544 
    25312545        self.current_smearer = smear_selection(data, self.model) 
    2532         # set smearing value whether or not the data contain the smearing info 
     2546        ## set smearing value whether or not the data contain the smearing info 
    25332547        enable_smearer = not self.disable_smearer.GetValue() 
    25342548        self._manager.set_smearer(smearer=self.current_smearer, 
     
    25532567        if self._is_changed_slit(): 
    25542568            msg = self._set_slit_smear() 
    2555         # self._undo.Enable(True) 
     2569        #self._undo.Enable(True) 
    25562570        self.save_current_state() 
    25572571 
    2558         if msg is not None: 
     2572        if msg != None: 
    25592573            return False 
    25602574        else: 
     
    25662580        are computed when fitting 
    25672581        """ 
    2568         if event is not None: 
     2582        if event != None: 
    25692583            event.Skip() 
    25702584        if self.data is None: 
     
    25792593 
    25802594        self.sizer_set_smearer.Layout() 
    2581         # we need FitInside here not just self.Layout to ensure all the sizers 
    2582         # end up with the necessasary space to in the scroll panel. In 
    2583         # particular the compute and fit buttons end up on top of each other 
    2584         # PDB Nov 28 2015. 
     2595        ## we need FitInside here not just self.Layout to ensure all the sizers 
     2596        ## end up with the necessasary space to in the scroll panel. In 
     2597        ## particular the compute and fit buttons end up on top of each other 
     2598        ## PDB Nov 28 2015.  
    25852599        self.FitInside() 
    25862600        self._set_weight() 
    25872601 
    2588         # set smearing value whether or not the data contain the smearing info 
     2602        ## set smearing value whether or not the data contain the smearing info 
    25892603        enable_smearer = not self.disable_smearer.GetValue() 
    25902604        wx.CallAfter(self._manager.set_smearer, uid=self.uid, 
     
    26072621        """ 
    26082622        self._get_smear_info() 
    2609         # renew smear sizer 
     2623        #renew smear sizer 
    26102624        if self.smear_type is not None: 
    26112625            self.smear_description_smear_type.SetValue(str(self.smear_type)) 
     
    26472661        """ 
    26482662        try: 
    2649             if event is None: 
     2663            if event == None: 
    26502664                output = "-" 
    26512665            elif not numpy.isfinite(event.output): 
     
    26822696        self._manager.set_param2fit(self.uid, param2fit) 
    26832697 
    2684     def select_param(self, event=None): 
     2698    def select_all_param(self, event): 
     2699        """ 
     2700        set to true or false all checkBox given the main checkbox value cb1 
     2701        """ 
     2702        self.param_toFit = [] 
     2703        if  self.parameters != []: 
     2704            if  self.cb1.GetValue(): 
     2705                for item in self.parameters: 
     2706                    if item[0].IsShown(): 
     2707                        ## for data2D select all to fit 
     2708                        if self.data.__class__.__name__ == "Data2D" or \ 
     2709                                self.enable2D: 
     2710                            item[0].SetValue(True) 
     2711                            self.param_toFit.append(item) 
     2712                        else: 
     2713                            ## for 1D all parameters except orientation 
     2714                            if not item in self.orientation_params: 
     2715                                item[0].SetValue(True) 
     2716                                self.param_toFit.append(item) 
     2717                    else: 
     2718                        item[0].SetValue(False) 
     2719                #if len(self.fittable_param)>0: 
     2720                for item in self.fittable_param: 
     2721                    if item[0].IsShown(): 
     2722                        if self.data.__class__.__name__ == "Data2D" or \ 
     2723                                self.enable2D: 
     2724                            item[0].SetValue(True) 
     2725                            self.param_toFit.append(item) 
     2726                            try: 
     2727                                if len(self.values[item[1]]) > 0: 
     2728                                    item[0].SetValue(False) 
     2729                            except: 
     2730                                pass 
     2731 
     2732                        else: 
     2733                            ## for 1D all parameters except orientation 
     2734                            if not item in self.orientation_params_disp: 
     2735                                item[0].SetValue(True) 
     2736                                self.param_toFit.append(item) 
     2737                                try: 
     2738                                    if len(self.values[item[1]]) > 0: 
     2739                                        item[0].SetValue(False) 
     2740                                except: 
     2741                                    pass 
     2742                    else: 
     2743                        item[0].SetValue(False) 
     2744 
     2745            else: 
     2746                for item in self.parameters: 
     2747                    item[0].SetValue(False) 
     2748                for item in self.fittable_param: 
     2749                    item[0].SetValue(False) 
     2750                self.param_toFit = [] 
     2751 
     2752        self.save_current_state_fit() 
     2753 
     2754        if event != None: 
     2755            #self._undo.Enable(True) 
     2756            ## post state to fit panel 
     2757            event = PageInfoEvent(page=self) 
     2758            wx.PostEvent(self.parent, event) 
     2759        param2fit = [] 
     2760        for item in self.param_toFit: 
     2761            if item[0] and item[0].IsShown(): 
     2762                param2fit.append(item[1]) 
     2763        self.parent._manager.set_param2fit(self.uid, param2fit) 
     2764 
     2765    def select_param(self, event): 
    26852766        """ 
    26862767        Select TextCtrl  checked for fitting purpose and stores them 
     
    26892770        self.param_toFit = [] 
    26902771        for item in self.parameters: 
    2691             # Skip t ifhe angle parameters if 1D data 
     2772            #Skip t ifhe angle parameters if 1D data 
    26922773            if self.data.__class__.__name__ != "Data2D" and\ 
    26932774                        not self.enable2D: 
    26942775                if item in self.orientation_params: 
    26952776                    continue 
    2696             # Select parameters to fit for list of primary parameters 
     2777            #Select parameters to fit for list of primary parameters 
    26972778            if item[0].GetValue() and item[0].IsShown(): 
    26982779                if not (item in self.param_toFit): 
     
    27032784                    self.param_toFit.remove(item) 
    27042785 
    2705         # Select parameters to fit for list of fittable parameters 
     2786        #Select parameters to fit for list of fittable parameters 
    27062787        #        with dispersion 
    27072788        for item in self.fittable_param: 
    2708             # Skip t ifhe angle parameters if 1D data 
     2789            #Skip t ifhe angle parameters if 1D data 
    27092790            if self.data.__class__.__name__ != "Data2D" and\ 
    27102791                        not self.enable2D: 
     
    27152796                    self.param_toFit.append(item) 
    27162797            else: 
    2717                 # remove parameters from the fitting list 
     2798                #remove parameters from the fitting list 
    27182799                if item in self.param_toFit: 
    27192800                    self.param_toFit.remove(item) 
    27202801 
    2721         # Calculate num. of angle parameters 
     2802        #Calculate num. of angle parameters 
    27222803        if self.data.__class__.__name__ == "Data2D" or \ 
    27232804                       self.enable2D: 
     
    27252806        else: 
    27262807            len_orient_para = len(self.orientation_params)  # assume even len 
    2727         # Total num. of angle parameters 
     2808        #Total num. of angle parameters 
    27282809        if len(self.fittable_param) > 0: 
    27292810            len_orient_para *= 2 
     2811        #Set the value of checkbox that selected every checkbox or not 
     2812        if len(self.parameters) + len(self.fittable_param) - len_orient_para \ 
     2813            == len(self.param_toFit): 
     2814            self.cb1.SetValue(True) 
     2815        else: 
     2816            self.cb1.SetValue(False) 
    27302817 
    27312818        self.save_current_state_fit() 
    2732         if event is not None: 
    2733             # post state to fit panel 
     2819        if event != None: 
     2820            ## post state to fit panel 
    27342821            event = PageInfoEvent(page=self) 
    27352822            wx.PostEvent(self.parent, event) 
     
    27572844        self.orientation_params_disp = [] 
    27582845 
    2759         if model is None: 
     2846        if model == None: 
    27602847            self.sizer3.Layout() 
    27612848            self.SetupScrolling() 
     
    27652852        boxsizer1 = wx.StaticBoxSizer(box_description, wx.VERTICAL) 
    27662853        sizer = wx.GridBagSizer(5, 5) 
    2767         # save the current model 
     2854        ## save the current model 
    27682855        self.model = model 
    27692856 
    27702857        keys = self.model.getParamList() 
    27712858 
    2772         # list of dispersion parameters 
     2859        #list of dispersion parameters 
    27732860        self.disp_list = self.model.getDispParamList() 
    27742861 
     
    28032890                return -1 
    28042891            # both have a number 
    2805             if num_a is not None and num_b is not None: 
     2892            if num_a != None and num_b != None: 
    28062893                if num_a > num_b: 
    28072894                    return -1 
     
    28162903                    return 1 
    28172904            # one of them has a number 
    2818             elif num_a is not None: 
     2905            elif num_a != None: 
    28192906                return 1 
    2820             elif num_b is not None: 
     2907            elif num_b != None: 
    28212908                return -1 
    28222909            # no numbers 
     
    28242911                return cmp(a.lower(), b.lower()) 
    28252912         
    2826         # keys obtained now from ordered dict, so commenting alphabetical 
    2827         # ordering keys.sort(custom_compare) 
     2913        # keys obtained now from ordered dict, so commenting alphabetical ordering 
     2914        #keys.sort(custom_compare) 
    28282915 
    28292916        iy = 0 
    28302917        ix = 0 
    2831         sizer.Add(wx.StaticText(self, wx.ID_ANY, 'Parameter'), 
    2832                   (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
     2918        select_text = "Select All" 
     2919        self.cb1 = wx.CheckBox(self, wx.ID_ANY, str(select_text), (10, 10)) 
     2920        wx.EVT_CHECKBOX(self, self.cb1.GetId(), self.select_all_param) 
     2921        self.cb1.SetToolTipString("To check/uncheck all the boxes below.") 
     2922        self.cb1.SetValue(True) 
     2923 
     2924        sizer.Add(self.cb1, (iy, ix), (1, 1), \ 
     2925                             wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 5) 
    28332926        ix += 1 
    28342927        self.text2_2 = wx.StaticText(self, wx.ID_ANY, 'Value') 
    2835         sizer.Add(self.text2_2, (iy, ix), (1, 1), 
     2928        sizer.Add(self.text2_2, (iy, ix), (1, 1), \ 
    28362929                            wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    28372930        ix += 2 
    28382931        self.text2_3 = wx.StaticText(self, wx.ID_ANY, 'Error') 
    2839         sizer.Add(self.text2_3, (iy, ix), (1, 1), 
    2840                   wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
     2932        sizer.Add(self.text2_3, (iy, ix), (1, 1), \ 
     2933                            wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    28412934        if not self.is_mac: 
    28422935            self.text2_3.Hide() 
    28432936        ix += 1 
    28442937        self.text2_min = wx.StaticText(self, wx.ID_ANY, 'Min') 
    2845         sizer.Add(self.text2_min, (iy, ix), (1, 1), 
    2846                   wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    2847         # self.text2_min.Hide() 
     2938        sizer.Add(self.text2_min, (iy, ix), (1, 1), \ 
     2939                            wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
     2940        #self.text2_min.Hide() 
    28482941        ix += 1 
    28492942        self.text2_max = wx.StaticText(self, wx.ID_ANY, 'Max') 
    2850         sizer.Add(self.text2_max, (iy, ix), (1, 1), 
    2851                   wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    2852         # self.text2_max.Hide() 
     2943        sizer.Add(self.text2_max, (iy, ix), (1, 1), \ 
     2944                            wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
     2945        #self.text2_max.Hide() 
    28532946        ix += 1 
    28542947        self.text2_4 = wx.StaticText(self, wx.ID_ANY, '[Units]') 
    2855         sizer.Add(self.text2_4, (iy, ix), (1, 1), 
    2856                   wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
     2948        sizer.Add(self.text2_4, (iy, ix), (1, 1), \ 
     2949                            wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    28572950        self.text2_4.Hide() 
    28582951 
    2859         CHECK_STATE = False 
     2952        CHECK_STATE = self.cb1.GetValue() 
    28602953        for item in keys: 
    28612954 
    2862             if item not in self.disp_list and not item in \ 
     2955            if not item in self.disp_list and not item in \ 
    28632956                    self.model.orientation_params: 
    28642957 
    2865                 # prepare a spot to store errors 
    2866                 if item not in self.model.details: 
     2958                ##prepare a spot to store errors 
     2959                if not item in self.model.details: 
    28672960                    self.model.details[item] = ["", None, None] 
    28682961 
    28692962                iy += 1 
    28702963                ix = 0 
    2871                 if (self.model.__class__ in 
    2872                     self.model_list_box["Multi-Functions"] or 
     2964                if (self.model.__class__ in \ 
     2965                    self.model_list_box["Multi-Functions"] or \ 
    28732966                    self.temp_multi_functional)\ 
    28742967                    and (item in self.model.non_fittable): 
    28752968                    non_fittable_name = wx.StaticText(self, wx.ID_ANY, item) 
    2876                     sizer.Add(non_fittable_name, (iy, ix), (1, 1), 
     2969                    sizer.Add(non_fittable_name, (iy, ix), (1, 1), \ 
    28772970                            wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 21) 
    2878                     # add parameter value 
     2971                    ## add parameter value 
    28792972                    ix += 1 
    28802973                    value = self.model.getParam(item) 
    28812974                    if len(self.model.fun_list) > 0: 
    2882                         # num = item.split('_')[1][5:7] 
     2975                        #num = item.split('_')[1][5:7] 
    28832976                        fun_box = wx.ComboBox(self, wx.ID_ANY, size=(100, -1), 
    28842977                                    style=wx.CB_READONLY, name='%s' % item) 
    28852978                        self._set_fun_box_list(fun_box) 
    28862979                        fun_box.SetSelection(0) 
    2887                         # self.fun_box.SetToolTipString("A function 
     2980                        #self.fun_box.SetToolTipString("A function 
    28882981                        #    describing the interface") 
    28892982                        wx.EVT_COMBOBOX(fun_box, wx.ID_ANY, self._on_fun_box) 
     
    28922985                                                size=(_BOX_WIDTH, 20), 
    28932986                                style=wx.TE_PROCESS_ENTER, name='%s' % item) 
    2894                         fun_box.SetToolTipString( 
     2987                        fun_box.SetToolTipString(\ 
    28952988                                "Hit 'Enter' after typing to update the plot.") 
    28962989                        fun_box.SetValue(format_number(value, True)) 
     
    29002993                                                None, None]) 
    29012994                else: 
    2902                     # add parameters name with checkbox for selecting to fit 
     2995                    ## add parameters name with checkbox for selecting to fit 
    29032996                    cb = wx.CheckBox(self, wx.ID_ANY, item) 
    29042997                    cb.SetValue(CHECK_STATE) 
    29052998                    cb.SetToolTipString(" Check mark to fit.") 
    2906                     # cb.SetValue(True) 
     2999                    #cb.SetValue(True) 
    29073000                    wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 
    29083001 
     
    29103003                              wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 5) 
    29113004 
    2912                     # add parameter value 
     3005                    ## add parameter value 
    29133006                    ix += 1 
    29143007                    value = self.model.getParam(item) 
    29153008                    ctl1 = ModelTextCtrl(self, wx.ID_ANY, size=(_BOX_WIDTH, 20), 
    29163009                                         style=wx.TE_PROCESS_ENTER) 
    2917                     ctl1.SetToolTipString( 
     3010                    ctl1.SetToolTipString(\ 
    29183011                                "Hit 'Enter' after typing to update the plot.") 
    29193012                    ctl1.SetValue(format_number(value, True)) 
    29203013                    sizer.Add(ctl1, (iy, ix), (1, 1), wx.EXPAND) 
    2921                     # text to show error sign 
     3014                    ## text to show error sign 
    29223015                    ix += 1 
    29233016                    text2 = wx.StaticText(self, wx.ID_ANY, '+/-') 
    2924                     sizer.Add(text2, (iy, ix), (1, 1), 
     3017                    sizer.Add(text2, (iy, ix), (1, 1), \ 
    29253018                              wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    29263019                    if not self.is_mac: 
     
    29833076        iy += 1 
    29843077        ix = 0 
    2985         # Add tile for orientational angle 
     3078        #Add tile for orientational angle 
    29863079        for item in keys: 
    29873080            if item in self.model.orientation_params: 
     
    29903083                mag_on_button.SetToolTipString("Turn Pol Beam/Mag scatt on/off") 
    29913084                mag_on_button.Bind(wx.EVT_BUTTON, self._on_mag_on) 
    2992                 mag_angle_help_button = wx.Button(self, wx.ID_ANY, 
    2993                                                   "Magnetic angles?") 
     3085                mag_angle_help_button = wx.Button(self, wx.ID_ANY, "Magnetic angles?") 
    29943086                mag_angle_help_button.SetToolTipString("see angle definitions") 
    29953087                mag_help_button = wx.Button(self, wx.ID_ANY, "Mag HELP") 
    29963088                mag_help_button.SetToolTipString("Help on pol beam/mag fitting") 
    29973089                mag_help_button.Bind(wx.EVT_BUTTON, self._on_mag_help) 
    2998                 mag_angle_help_button.Bind(wx.EVT_BUTTON, 
     3090                mag_angle_help_button.Bind(wx.EVT_BUTTON, \ 
    29993091                                            self._on_mag_angle_help) 
    30003092                sizer.Add(orient_angle, (iy, ix), (1, 1), 
     
    30093101                          wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 
    30103102 
    3011                 # handle the magnetic buttons 
    3012                 # clean this up so that assume mag is off then turn 
    3013                 # all buttons on IF mag has mag and has 2D 
     3103                #handle the magnetic buttons 
     3104                #clean this up so that assume mag is off then turn  
     3105                #all buttons on IF mag has mag and has 2D 
    30143106                if not self._has_magnetic: 
    30153107                    mag_on_button.Show(False) 
     
    30373129                break 
    30383130 
    3039         # For Gaussian only 
     3131        #For Gaussian only 
    30403132        if type.lower() != "array": 
    30413133            for item in self.model.orientation_params: 
     
    30433135                    if item in self.model.magnetic_params: 
    30443136                        continue 
    3045                 if item not in self.disp_list: 
    3046                     # prepare a spot to store min max 
    3047                     if item not in self.model.details: 
     3137                if not item in self.disp_list: 
     3138                    ##prepare a spot to store min max 
     3139                    if not item in self.model.details: 
    30483140                        self.model.details[item] = ["", None, None] 
    30493141 
    30503142                    iy += 1 
    30513143                    ix = 0 
    3052                     # add parameters name with checkbox for selecting to fit 
     3144                    ## add parameters name with checkbox for selecting to fit 
    30533145                    cb = wx.CheckBox(self, wx.ID_ANY, item) 
    30543146                    cb.SetValue(CHECK_STATE) 
     
    30633155                              wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 5) 
    30643156 
    3065                     # add parameter value 
     3157                    ## add parameter value 
    30663158                    ix += 1 
    30673159                    value = self.model.getParam(item) 
    30683160                    ctl1 = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 
    30693161                                         style=wx.TE_PROCESS_ENTER) 
    3070                     ctl1.SetToolTipString( 
     3162                    ctl1.SetToolTipString(\ 
    30713163                                "Hit 'Enter' after typing to update the plot.") 
    30723164                    ctl1.SetValue(format_number(value, True)) 
     
    30773169                        ctl1.Hide() 
    30783170                    sizer.Add(ctl1, (iy, ix), (1, 1), wx.EXPAND) 
    3079                     # text to show error sign 
     3171                    ## text to show error sign 
    30803172                    ix += 1 
    30813173                    text2 = wx.StaticText(self, -1, '+/-') 
    3082                     sizer.Add(text2, (iy, ix), (1, 1), 
     3174                    sizer.Add(text2, (iy, ix), (1, 1), \ 
    30833175                              wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
    30843176 
     
    31453237        iy += 1 
    31463238        box_description.SetForegroundColour(wx.BLUE) 
    3147         # Display units text on panel 
     3239        #Display units text on panel 
    31483240        for item in keys: 
    31493241            if item in self.model.details: 
    31503242                self.text2_4.Show() 
    3151         # Fill the list of fittable parameters 
     3243        #Fill the list of fittable parameters 
    31523244        self.get_all_checked_params() 
    31533245        self.save_current_state_fit() 
     
    31613253        Get key stroke event 
    31623254        """ 
    3163         if self.data is None: 
     3255        if self.data == None: 
    31643256            return 
    31653257        # Figuring out key combo: Cmd for copy, Alt for paste 
Note: See TracChangeset for help on using the changeset viewer.