Changeset c8e1996 in sasview


Ignore:
Timestamp:
Oct 20, 2016 3:54:06 PM (4 years ago)
Author:
krzywon
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, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
880e845, cf1910f
Parents:
8b645cc
Message:

Fixes #738: No errors are thrown on loading projects with fits, plus linting.

Location:
src/sas/sasgui
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/guiframe/data_panel.py

    r998ca90 rc8e1996  
    11################################################################################ 
    2 #This software was developed by the University of Tennessee as part of the 
    3 #Distributed Data Analysis of Neutron Scattering Experiments (DANSE) 
    4 #project funded by the US National Science Foundation. 
     2# This software was developed by the University of Tennessee as part of the 
     3# Distributed Data Analysis of Neutron Scattering Experiments (DANSE) 
     4# project funded by the US National Science Foundation. 
    55# 
    6 #See the license text in license.txt 
     6# See the license text in license.txt 
    77# 
    8 #copyright 2010, University of Tennessee 
     8# copyright 2010, University of Tennessee 
    99################################################################################ 
    1010""" 
     
    1414from wx.build import build_options 
    1515 
    16 # Check version 
    17 toks = str(wx.__version__).split('.') 
    18 if int(toks[1]) < 9: 
    19     if int(toks[2]) < 12: 
    20         wx_version = 811 
    21     else: 
    22         wx_version = 812 
    23 else: 
    24     wx_version = 900 
    2516import sys 
    2617from wx.lib.scrolledpanel import ScrolledPanel 
    27 import  wx.lib.agw.customtreectrl as CT 
     18import wx.lib.agw.customtreectrl as CT 
    2819from sas.sasgui.guiframe.dataFitting import Data1D 
    2920from sas.sasgui.guiframe.dataFitting import Data2D 
     
    3627from sas.sasgui.guiframe.events import NewBatchEvent 
    3728from sas.sascalc.dataloader.loader import Loader 
    38 #from sas.sasgui.guiframe.local_perspectives.plotting.masking \ 
     29# from sas.sasgui.guiframe.local_perspectives.plotting.masking \ 
    3930#    import FloatPanel as QucikPlotDialog 
    40 from sas.sasgui.guiframe.local_perspectives.plotting.SimplePlot import PlotFrame \ 
    41         as QucikPlotDialog 
     31from sas.sasgui.guiframe.local_perspectives.plotting.SimplePlot \ 
     32    import PlotFrame as QucikPlotDialog 
    4233import sas.sasgui.guiframe.config as config 
     34 
     35# Check version 
     36toks = str(wx.__version__).split('.') 
     37if int(toks[1]) < 9: 
     38    if int(toks[2]) < 12: 
     39        wx_version = 811 
     40    else: 
     41        wx_version = 812 
     42else: 
     43    wx_version = 900 
    4344 
    4445extension_list = [] 
     
    4950APPLICATION_WLIST = config.APPLICATION_WLIST 
    5051 
    51 #Control panel width 
     52# Control panel width 
    5253if sys.platform.count("win32") > 0: 
    5354    PANEL_WIDTH = 235 
     
    6566    IS_MAC = True 
    6667 
    67 STYLE_FLAG = wx.RAISED_BORDER|CT.TR_HAS_BUTTONS| CT.TR_HIDE_ROOT|\ 
    68                     wx.WANTS_CHARS|CT.TR_HAS_VARIABLE_ROW_HEIGHT 
     68STYLE_FLAG = wx.RAISED_BORDER | CT.TR_HAS_BUTTONS | CT.TR_HIDE_ROOT |\ 
     69                    wx.WANTS_CHARS | CT.TR_HAS_VARIABLE_ROW_HEIGHT 
    6970 
    7071 
     
    7475    """ 
    7576    def __init__(self, parent, *args, **kwds): 
    76         #agwstyle is introduced in wx.2.8.11 but is not working for mac 
     77        # agwstyle is introduced in wx.2.8.11 but is not working for mac 
    7778        if IS_MAC and wx_version < 812: 
    7879            try: 
     
    114115            return 0 
    115116 
     117 
    116118class DataPanel(ScrolledPanel, PanelBase): 
    117119    """ 
     
    119121    interact with data. 
    120122    """ 
    121     ## Internal name for the AUI manager 
     123    # Internal name for the AUI manager 
    122124    window_name = "Data Panel" 
    123     ## Title to appear on top of the window 
     125    # Title to appear on top of the window 
    124126    window_caption = "Data Explorer" 
    125     #type of window 
     127    # type of window 
    126128    window_type = "Data Panel" 
    127     ## Flag to tell the GUI manager that this panel is not 
     129    # Flag to tell the GUI manager that this panel is not 
    128130    #  tied to any perspective 
    129     #ALWAYS_ON = True 
     131    # ALWAYS_ON = True 
     132 
    130133    def __init__(self, parent, 
    131134                 list=None, 
     
    133136                 id=-1, 
    134137                 list_of_perspective=None, manager=None, *args, **kwds): 
    135         #kwds['size'] = size 
    136         #kwds['style'] = STYLE_FLAG 
     138        # kwds['size'] = size 
     139        # kwds['style'] = STYLE_FLAG 
    137140        ScrolledPanel.__init__(self, parent=parent, id=id, *args, **kwds) 
    138141        PanelBase.__init__(self, parent) 
    139142        self.SetupScrolling() 
    140         #Set window's font size 
     143        # Set window's font size 
    141144        self.SetWindowVariant(variant=FONT_VARIANT) 
    142145        self.loader = Loader() 
    143         #Default location 
     146        # Default location 
    144147        self._default_save_location = None 
    145148        self.all_data1d = True 
     
    159162        self.tree_ctrl_theory = None 
    160163        self.perspective_cbox = None 
    161         ## Create context menu for page 
     164        # Create context menu for page 
    162165        self.data_menu = None 
    163166        self.popUpMenu = None 
     
    165168        self.editmask_id = None 
    166169        # Default attr 
    167         self.vbox  = None 
     170        self.vbox = None 
    168171        self.sizer1 = None 
    169172        self.sizer2 = None 
     
    210213        """ 
    211214        w, h = self.parent.GetSize() 
    212         self.vbox  = wx.BoxSizer(wx.VERTICAL) 
     215        self.vbox = wx.BoxSizer(wx.VERTICAL) 
    213216        self.sizer1 = wx.BoxSizer(wx.VERTICAL) 
    214217        self.sizer1.SetMinSize(wx.Size(w/13, h*2/5)) 
     
    219222        self.sizer5 = wx.BoxSizer(wx.VERTICAL) 
    220223 
    221         self.vbox.Add(self.sizer5, 0, wx.EXPAND|wx.ALL, 1) 
    222         self.vbox.Add(self.sizer1, 1, wx.EXPAND|wx.ALL, 0) 
    223         self.vbox.Add(self.sizer2, 0, wx.EXPAND|wx.ALL, 1) 
    224         self.vbox.Add(self.sizer3, 0, wx.EXPAND|wx.ALL, 10) 
    225         #self.vbox.Add(self.sizer4, 0, wx.EXPAND|wx.ALL,5) 
     224        self.vbox.Add(self.sizer5, 0, wx.EXPAND | wx.ALL, 1) 
     225        self.vbox.Add(self.sizer1, 1, wx.EXPAND | wx.ALL, 0) 
     226        self.vbox.Add(self.sizer2, 0, wx.EXPAND | wx.ALL, 1) 
     227        self.vbox.Add(self.sizer3, 0, wx.EXPAND | wx.ALL, 10) 
     228        # self.vbox.Add(self.sizer4, 0, wx.EXPAND|wx.ALL,5) 
    226229 
    227230        self.SetSizer(self.vbox) 
     
    235238        self.selection_cbox = wx.ComboBox(self, -1, style=wx.CB_READONLY) 
    236239        list_of_options = ['Select all Data', 
    237                             'Unselect all Data', 
     240                           'Unselect all Data', 
    238241                           'Select all Data 1D', 
    239242                           'Unselect all Data 1D', 
    240243                           'Select all Data 2D', 
    241                            'Unselect all Data 2D' ] 
     244                           'Unselect all Data 2D'] 
    242245        for option in list_of_options: 
    243246            self.selection_cbox.Append(str(option)) 
     
    245248        wx.EVT_COMBOBOX(self.selection_cbox, -1, self._on_selection_type) 
    246249        self.sizer5.AddMany([(select_txt, 0, wx.ALL, 5), 
    247                             (self.selection_cbox, 0, wx.ALL,5)]) 
     250                            (self.selection_cbox, 0, wx.ALL, 5)]) 
    248251        self.enable_selection() 
    249  
    250252 
    251253    def _on_selection_type(self, event): 
     
    257259            self.tree_ctrl.CheckItem(data_ctrl, check_value) 
    258260            if data_ctrl.HasChildren(): 
    259                 if check_value == True and not control.IsExpanded(): 
     261                if check_value and not control.IsExpanded(): 
    260262                    # Only select children if control is expanded 
    261263                    # Always deselect children, regardless (see ticket #259) 
     
    299301        Layout widgets related to buttons 
    300302        """ 
    301         #Load Data Button 
     303        # Load Data Button 
    302304        self.bt_add = wx.Button(self, wx.NewId(), "Load Data", 
    303305                                size=(BUTTON_WIDTH, -1)) 
     
    305307        wx.EVT_BUTTON(self, self.bt_add.GetId(), self._load_data) 
    306308 
    307         #Delete Data Button 
     309        # Delete Data Button 
    308310        self.bt_remove = wx.Button(self, wx.NewId(), "Delete Data", 
    309          size=(BUTTON_WIDTH, -1)) 
     311                                   size=(BUTTON_WIDTH, -1)) 
    310312        self.bt_remove.SetToolTipString("Delete data from the application") 
    311313        wx.EVT_BUTTON(self, self.bt_remove.GetId(), self.on_remove) 
    312314 
    313         #Send data to perspective button 
     315        # Send data to perspective button 
    314316        self.bt_import = wx.Button(self, wx.NewId(), "Send To", 
    315                                     size=(BUTTON_WIDTH, -1)) 
     317                                   size=(BUTTON_WIDTH, -1)) 
    316318        self.bt_import.SetToolTipString("Send Data set to active perspective") 
    317319        wx.EVT_BUTTON(self, self.bt_import.GetId(), self.on_import) 
    318320 
    319         #Choose perspective to be send data to combo box 
     321        # Choose perspective to be send data to combo box 
    320322        self.perspective_cbox = wx.ComboBox(self, -1, 
    321                                 style=wx.CB_READONLY) 
     323                                            style=wx.CB_READONLY) 
    322324        if not IS_MAC: 
    323325            self.perspective_cbox.SetMinSize((BUTTON_WIDTH*1.6, -1)) 
     
    325327                        self._on_perspective_selection) 
    326328 
    327         #Append data to current Graph Button 
     329        # Append data to current Graph Button 
    328330        self.bt_append_plot = wx.Button(self, wx.NewId(), "Append Plot To", 
    329331                                        size=(BUTTON_WIDTH, -1)) 
    330         self.bt_append_plot.SetToolTipString( \ 
    331                                 "Plot the selected data in the active panel") 
     332        self.bt_append_plot.SetToolTipString( 
     333            "Plot the selected data in the active panel") 
    332334        wx.EVT_BUTTON(self, self.bt_append_plot.GetId(), self.on_append_plot) 
    333335 
    334         #Create a new graph and send data to that new graph button 
     336        # Create a new graph and send data to that new graph button 
    335337        self.bt_plot = wx.Button(self, wx.NewId(), "New Plot", 
    336338                                 size=(BUTTON_WIDTH, -1)) 
     
    338340        wx.EVT_BUTTON(self, self.bt_plot.GetId(), self.on_plot) 
    339341 
    340         #Freeze current theory button - becomes a data set and stays on graph 
     342        # Freeze current theory button - becomes a data set and stays on graph 
    341343        self.bt_freeze = wx.Button(self, wx.NewId(), "Freeze Theory", 
    342344                                   size=(BUTTON_WIDTH, -1)) 
     
    347349        wx.EVT_BUTTON(self, self.bt_freeze.GetId(), self.on_freeze) 
    348350 
    349         #select plot to send to combo box (blank if no data) 
     351        # select plot to send to combo box (blank if no data) 
    350352        if sys.platform == 'darwin': 
    351353            self.cb_plotpanel = wx.ComboBox(self, -1, 
     
    353355        else: 
    354356            self.cb_plotpanel = wx.ComboBox(self, -1, 
    355                                             style=wx.CB_READONLY|wx.CB_SORT) 
     357                                            style=wx.CB_READONLY | wx.CB_SORT) 
    356358        wx.EVT_COMBOBOX(self.cb_plotpanel, -1, self._on_plot_selection) 
    357359        self.cb_plotpanel.Disable() 
    358360 
    359         #Help button 
     361        # Help button 
    360362        self.bt_help = wx.Button(self, wx.NewId(), "HELP", 
    361363                                 size=(BUTTON_WIDTH, -1)) 
    362364        self.bt_help.SetToolTipString("Help for the Data Explorer.") 
    363         wx.EVT_BUTTON(self,self.bt_help.GetId(), self.on_help) 
     365        wx.EVT_BUTTON(self, self.bt_help.GetId(), self.on_help) 
    364366 
    365367        self.sizer3.AddMany([(self.bt_add), 
     
    373375                             (self.bt_append_plot), 
    374376                             (self.cb_plotpanel, 
    375                               wx.EXPAND|wx.ADJUST_MINSIZE, 5), 
     377                              wx.EXPAND | wx.ADJUST_MINSIZE, 5), 
    376378                             ((5, 5)), 
    377379                             ((5, 5)), 
    378                              (self.bt_import, 0, wx.EXPAND|wx.RIGHT, 5), 
     380                             (self.bt_import, 0, wx.EXPAND | wx.RIGHT, 5), 
    379381                             (self.perspective_cbox, 
    380                               wx.EXPAND|wx.ADJUST_MINSIZE, 5), 
     382                              wx.EXPAND | wx.ADJUST_MINSIZE, 5), 
    381383                             ((10, 10)), 
    382384                             (self.sizer4), 
     
    401403        self.rb_batch_mode = wx.RadioButton(self, -1, 'Batch Mode') 
    402404        self.Bind(wx.EVT_RADIOBUTTON, self.on_single_mode, 
    403                      id=self.rb_single_mode.GetId()) 
     405                  id=self.rb_single_mode.GetId()) 
    404406        self.Bind(wx.EVT_RADIOBUTTON, self.on_batch_mode, 
    405                    id=self.rb_batch_mode.GetId()) 
     407                  id=self.rb_batch_mode.GetId()) 
    406408 
    407409        self.rb_single_mode.SetValue(not self.parent.batch_on) 
     
    433435        """ 
    434436        data = None 
    435         #selection = event.GetSelection() 
     437        # selection = event.GetSelection() 
    436438        id, _, _ = self.FindFocus().GetSelection().GetData() 
    437439        data_list, theory_list = \ 
    438                         self.parent.get_data_manager().get_by_id(id_list=[id]) 
     440            self.parent.get_data_manager().get_by_id(id_list=[id]) 
    439441        if data_list: 
    440442            data = data_list.values()[0] 
    441         if data == None: 
     443        if data is None: 
    442444            data = theory_list.values()[0][0] 
    443445        return data 
     
    461463        data = self._get_data_selection(event) 
    462464        from sas.sasgui.guiframe.local_perspectives.plotting.masking \ 
    463         import FloatPanel as Float3dDialog 
     465            import FloatPanel as Float3dDialog 
    464466 
    465467        panel = Float3dDialog(base=self, data=data, 
     
    476478        else: 
    477479            dimension = 1 
    478         #panel = QucikPlotDialog(base=self, data=data, 
     480        # panel = QucikPlotDialog(base=self, data=data, 
    479481        #                        dimension=dimension, id=wx.NewId()) 
    480482        frame = QucikPlotDialog(self, -1, "Plot " + data.name, 'log_{10}') 
    481483        self.parent.put_icon(frame) 
    482484        frame.add_plot(data) 
    483         #frame.SetTitle(title) 
     485        # frame.SetTitle(title) 
    484486        frame.Show(True) 
    485487        frame.SetFocus() 
    486         #panel.ShowModal() 
     488        # panel.ShowModal() 
    487489 
    488490    def on_data_info(self, event): 
     
    501503        """ 
    502504        data = self._get_data_selection(event) 
    503         #path = None 
     505        # path = None 
    504506        default_name = data.name 
    505507        if default_name.count('.') > 0: 
    506508            default_name = default_name.split('.')[0] 
    507509        default_name += "_out" 
    508         if self.parent != None: 
     510        if self.parent is not None: 
    509511            if issubclass(data.__class__, Data1D): 
    510512                self.parent.save_data1d(data, default_name) 
     
    523525        self.tree_ctrl.Bind(CT.EVT_TREE_ITEM_CHECKING, self.on_check_item) 
    524526        self.tree_ctrl.Bind(CT.EVT_TREE_ITEM_MENU, self.on_right_click_data) 
    525         ## Create context menu for page 
     527        # Create context menu for page 
    526528        self.data_menu = wx.Menu() 
    527529        id = wx.NewId() 
     
    558560        tree_ctrl_theory_label.SetForegroundColour('blue') 
    559561        self.tree_ctrl_theory = DataTreeCtrl(parent=self, 
    560                                                     style=wx.SUNKEN_BORDER) 
     562                                             style=wx.SUNKEN_BORDER) 
    561563        self.tree_ctrl_theory.Bind(CT.EVT_TREE_ITEM_CHECKING, 
    562                                                     self.on_check_item) 
     564                                   self.on_check_item) 
    563565        self.tree_ctrl_theory.Bind(CT.EVT_TREE_ITEM_MENU, 
    564566                                   self.on_right_click_theory) 
    565567        self.sizer1.Add(tree_ctrl_label, 0, wx.LEFT, 10) 
    566         self.sizer1.Add(self.tree_ctrl, 1, wx.EXPAND|wx.ALL, 10) 
     568        self.sizer1.Add(self.tree_ctrl, 1, wx.EXPAND | wx.ALL, 10) 
    567569        self.sizer1.Add(tree_ctrl_theory_label, 0,  wx.LEFT, 10) 
    568         self.sizer1.Add(self.tree_ctrl_theory, 1, wx.EXPAND|wx.ALL, 10) 
     570        self.sizer1.Add(self.tree_ctrl_theory, 1, wx.EXPAND | wx.ALL, 10) 
    569571 
    570572    def on_right_click_theory(self, event): 
     
    588590        Allow Editing Data 
    589591        """ 
    590         #selection = event.GetSelection() 
     592        # selection = event.GetSelection() 
    591593        is_data = True 
    592594        try: 
    593595            id, data_class_name, _ = self.tree_ctrl.GetSelection().GetData() 
    594596            data_list, _ = \ 
    595                         self.parent.get_data_manager().get_by_id(id_list=[id]) 
     597                self.parent.get_data_manager().get_by_id(id_list=[id]) 
    596598            if not data_list: 
    597599                is_data = False 
     
    610612        """ 
    611613        # Skipping the save state functionality for release 0.9.0 
    612         #return 
     614        # return 
    613615        pos = event.GetPosition() 
    614616        pos = self.ScreenToClient(pos) 
    615617        self.PopupMenu(self.popUpMenu, pos) 
    616  
    617618 
    618619    def on_check_item(self, event): 
     
    636637        if self.parent is None or \ 
    637638            not hasattr(self.parent, "get_current_perspective") or \ 
    638             len(self.list_of_perspective) == 0: 
     639                        len(self.list_of_perspective) == 0: 
    639640            return 
    640         if self.parent is not None and self.perspective_cbox  is not None: 
     641        if self.parent is not None and self.perspective_cbox is not None: 
    641642            for plug in self.list_of_perspective: 
    642643                if plug.get_perspective(): 
     
    666667                    s_path = str(path) 
    667668                    if state_id not in self.list_cb_data: 
    668                         #new state 
     669                        # new state 
    669670                        data_c = self.tree_ctrl.InsertItem(self.tree_ctrl.root, 
    670                                         0, data_name, ct_type=1, 
     671                                                           0, data_name, 
     672                                                           ct_type=1, 
    671673                                        data=(data_id, data_class, state_id)) 
    672674                        data_c.Check(True) 
    673675                        d_i_c = self.tree_ctrl.AppendItem(data_c, 'Info') 
    674676                        d_t_c = self.tree_ctrl.AppendItem(d_i_c, 
    675                                                       'Title: %s' % data_title) 
     677                                                          'Title: %s' % 
     678                                                          data_title) 
    676679                        r_n_c = self.tree_ctrl.AppendItem(d_i_c, 
    677                                                       'Run: %s' % data_run) 
     680                                                          'Run: %s' % data_run) 
    678681                        i_c_c = self.tree_ctrl.AppendItem(d_i_c, 
    679                                                       'Type: %s' % data_class) 
     682                                                          'Type: %s' % 
     683                                                          data_class) 
    680684                        p_c_c = self.tree_ctrl.AppendItem(d_i_c, 
    681                                                       "Path: '%s'" % s_path) 
     685                                                          "Path: '%s'" % s_path) 
    682686                        d_p_c = self.tree_ctrl.AppendItem(d_i_c, 'Process') 
    683687 
    684688                        for process in process_list: 
    685                             process_str = str(process).replace('\n',' ') 
    686                             if len(process_str)>20: 
    687                                 process_str = process_str[:20]+' [...]' 
     689                            process_str = str(process).replace('\n', ' ') 
     690                            if len(process_str) > 20: 
     691                                process_str = process_str[:20] + ' [...]' 
    688692                            self.tree_ctrl.AppendItem(d_p_c, process_str) 
    689693                        theory_child = self.tree_ctrl.AppendItem(data_c, 
     
    698702                                                       theory_child] 
    699703                    else: 
    700                         data_ctrl_list =  self.list_cb_data[state_id] 
    701                         #This state is already display replace it contains 
     704                        data_ctrl_list = self.list_cb_data[state_id] 
     705                        # This state is already display replace it contains 
    702706                        data_c, d_i_c, d_t_c, r_n_c,  i_c_c, p_c_c, d_p_c, _ \ 
    703707                                = data_ctrl_list 
     
    713717                            if not process.is_empty(): 
    714718                                _ = self.tree_ctrl.AppendItem(d_p_c, 
    715                                                               process.single_line_desc()) 
     719                                                    process.single_line_desc()) 
    716720                wx.CallAfter(self.append_theory, state_id, theory_list) 
    717721            # Sort by data name 
     
    757761                                       theory_list=theory_list) 
    758762 
    759  
    760763    def append_theory_helper(self, tree, root, state_id, theory_list): 
    761764        """ 
     
    763766        """ 
    764767        if state_id in self.list_cb_theory.keys(): 
    765             #update current list of theory for this data 
     768            # update current list of theory for this data 
    766769            theory_list_ctrl = self.list_cb_theory[state_id] 
    767770 
     
    777780                    theory_class = theory_data.__class__.__name__ 
    778781                    theory_id = theory_data.id 
    779                     #if theory_state is not None: 
     782                    # if theory_state is not None: 
    780783                    #    name = theory_state.model.name 
    781784                    temp = (theory_id, theory_class, state_id) 
    782785                if theory_id not in theory_list_ctrl: 
    783                     #add new theory 
     786                    # add new theory 
    784787                    t_child = tree.AppendItem(root, 
    785788                                                    name, ct_type=1, data=temp) 
     
    795798                                                   t_p_c] 
    796799                else: 
    797                     #replace theory 
     800                    # replace theory 
    798801                    t_child, i_c_c, t_p_c = theory_list_ctrl[theory_id] 
    799802                    tree.SetItemText(t_child, name) 
     
    805808 
    806809        else: 
    807             #data didn't have a theory associated it before 
     810            # data didn't have a theory associated it before 
    808811            theory_list_ctrl = {} 
    809812            for theory_id, item in theory_list.iteritems(): 
     
    813816                    theory_class = theory_data.__class__.__name__ 
    814817                    theory_id = theory_data.id 
    815                     #if theory_state is not None: 
     818                    # if theory_state is not None: 
    816819                    #    name = theory_state.model.name 
    817820                    temp = (theory_id, theory_class, state_id) 
     
    828831 
    829832                    theory_list_ctrl[theory_id] = [t_child, i_c_c, t_p_c] 
    830                 #self.list_cb_theory[data_id] = theory_list_ctrl 
     833                # self.list_cb_theory[data_id] = theory_list_ctrl 
    831834                self.list_cb_theory[state_id] = theory_list_ctrl 
    832  
    833  
    834835 
    835836    def set_data_helper(self): 
     
    889890            wx.PostEvent(self.parent, NewLoadDataEvent()) 
    890891 
    891  
    892     def on_remove(self, event, msg=""): 
     892    def on_remove(self, event, prompt=True): 
    893893        """ 
    894894        Get a list of item checked and remove them from the treectrl 
    895895        Ask the parent to remove reference to this item 
    896896        """ 
    897         if msg == "": 
     897        if prompt: 
    898898            msg = "This operation will delete the data sets checked " 
    899899            msg += "and all the dependents." 
    900         msg_box = wx.MessageDialog(None, msg, 'Warning', wx.OK|wx.CANCEL) 
    901         if msg_box.ShowModal() != wx.ID_OK: 
    902             return True 
     900            msg_box = wx.MessageDialog(None, msg, 'Warning', wx.OK|wx.CANCEL) 
     901            if msg_box.ShowModal() != wx.ID_OK: 
     902                return 
    903903 
    904904        data_to_remove, theory_to_remove, _ = self.set_data_helper() 
    905905        data_key = [] 
    906906        theory_key = [] 
    907         #remove  data from treectrl 
     907        # remove  data from treectrl 
    908908        for d_key, item in self.list_cb_data.iteritems(): 
    909909            data_c, _, _, _,  _, _, _, _ = item 
     
    916916        # Remove theory from treectrl 
    917917        for _, theory_dict in self.list_cb_theory.iteritems(): 
    918             for  key, value in theory_dict.iteritems(): 
     918            for key, value in theory_dict.iteritems(): 
    919919                item, _, _ = value 
    920920                if item.IsChecked(): 
     
    925925                    theory_key.append(key) 
    926926 
    927         #Remove data and related theory references 
     927        # Remove data and related theory references 
    928928        for key in data_key: 
    929929            del self.list_cb_data[key] 
    930930            if key in theory_key: 
    931931                del self.list_cb_theory[key] 
    932         #remove theory  references independently of data 
     932        # remove theory  references independently of data 
    933933        for key in theory_key: 
    934934            for _, theory_dict in self.list_cb_theory.iteritems(): 
    935935                if key in theory_dict: 
    936                     for  key, value in theory_dict.iteritems(): 
     936                    for key, value in theory_dict.iteritems(): 
    937937                        item, _, _ = value 
    938938                        if item.IsChecked(): 
     
    943943                    del theory_dict[key] 
    944944 
    945  
    946945        self.parent.remove_data(data_id=data_to_remove, 
    947946                                  theory_id=theory_to_remove) 
     
    954953        Get all select data and set them to the current active perspetive 
    955954        """ 
    956         if event != None: 
     955        if event is not None: 
    957956            event.Skip() 
    958957        data_id, theory_id, state_id = self.set_data_helper() 
     
    986985        On close 
    987986        """ 
    988         if event != None: 
     987        if event is not None: 
    989988            event.Skip() 
    990989        # send parent to update menu with no show nor hide action 
     
    10161015        from the combobox of the current panel 
    10171016        """ 
    1018         #name = event.name 
     1017        # name = event.name 
    10191018        caption = event.caption 
    10201019        if self.cb_plotpanel is not None: 
     
    10341033            if name_plot_panel not in self.cb_plotpanel.GetItems(): 
    10351034                self.cb_plotpanel.Append(name_plot_panel, value) 
    1036             if name != None and name == name_plot_panel: 
     1035            if name is not None and name == name_plot_panel: 
    10371036                self.cb_plotpanel.SetStringSelection(name_plot_panel) 
    10381037                break 
     
    10601059        On source combobox selection 
    10611060        """ 
    1062         if event != None: 
     1061        if event is not None: 
    10631062            combo = event.GetEventObject() 
    10641063            event.Skip() 
     
    11071106        running "file:///...." 
    11081107 
    1109     :param evt: Triggers on clicking the help button 
     1108    :param event: Triggers on clicking the help button 
    11101109    """ 
    11111110 
     
    11561155        """ 
    11571156        n_t = 0 
    1158         if self.tree_ctrl != None: 
     1157        if self.tree_ctrl is not None: 
    11591158            n_t = self.tree_ctrl.GetCount() 
    11601159        if n_t > 0 and len(self.list_of_perspective) > 0: 
     
    11751174        n_t = 0 
    11761175        n_t_t = 0 
    1177         if self.tree_ctrl != None: 
     1176        if self.tree_ctrl is not None: 
    11781177            n_t = self.tree_ctrl.GetCount() 
    1179         if self.tree_ctrl_theory != None: 
     1178        if self.tree_ctrl_theory is not None: 
    11801179            n_t_t = self.tree_ctrl_theory.GetCount() 
    11811180        if n_t + n_t_t <= 0: 
     
    11911190        n_t = 0 
    11921191        n_t_t = 0 
    1193         if self.tree_ctrl != None: 
     1192        if self.tree_ctrl is not None: 
    11941193            n_t = self.tree_ctrl.GetCount() 
    1195         if self.tree_ctrl_theory != None: 
     1194        if self.tree_ctrl_theory is not None: 
    11961195            n_t_t = self.tree_ctrl_theory.GetCount() 
    11971196        if n_t + n_t_t <= 0: 
     
    12151214        n_t_t = 0 
    12161215        n_l = 0 
    1217         if self.tree_ctrl_theory != None: 
     1216        if self.tree_ctrl_theory is not None: 
    12181217            n_t_t = self.tree_ctrl_theory.GetCount() 
    12191218        n_l = len(self.list_cb_theory) 
     
    12291228        n_t = 0 
    12301229        n_t_t = 0 
    1231         if self.tree_ctrl != None: 
     1230        if self.tree_ctrl is not None: 
    12321231            n_t = self.tree_ctrl.GetCount() 
    1233         if self.tree_ctrl_theory != None: 
     1232        if self.tree_ctrl_theory is not None: 
    12341233            n_t_t = self.tree_ctrl_theory.GetCount() 
    1235         if n_t + n_t_t > 0 and self.selection_cbox != None: 
     1234        if n_t + n_t_t > 0 and self.selection_cbox is not None: 
    12361235            self.selection_cbox.Enable() 
    12371236        else: 
     
    12551254            #self.bt_remove.Hide() 
    12561255            self.bt_add.Hide() 
    1257  
    12581256 
    12591257 
     
    12881286        if not data_list or len(data_list) <= 1: 
    12891287            return 
    1290         #add text 
     1288        # add text 
    12911289 
    12921290        text = "Deleting these file reset some panels.\n" 
     
    12961294        iy = 0 
    12971295        ix = 0 
    1298         #data_count = 0 
     1296        # data_count = 0 
    12991297        for (data_name, in_use, sub_menu) in range(len(data_list)): 
    1300             if in_use == True: 
     1298            if in_use: 
    13011299                ctrl_name = wx.StaticBox(self, -1, str(data_name)) 
    13021300                ctrl_in_use = wx.StaticBox(self, -1, " is used by ") 
    13031301                plug_name = str(sub_menu) + "\n" 
    1304                 #ctrl_sub_menu = wx.StaticBox(self, -1, plug_name) 
     1302                # ctrl_sub_menu = wx.StaticBox(self, -1, plug_name) 
    13051303                self.sizer.Add(ctrl_name, (iy, ix), 
    13061304                           (1, 1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     
    13131311            iy += 1 
    13141312        self._panel.SetSizer(self.sizer) 
    1315         #add sizer 
     1313        # add sizer 
    13161314        self._sizer_button.Add((20, 20), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    13171315        button_cancel = wx.Button(self, wx.ID_CANCEL, "Cancel") 
     
    13761374 
    13771375 
    1378  
    13791376from sas.sasgui.guiframe.dataFitting import Theory1D 
    13801377from sas.sasgui.guiframe.data_state import DataState 
     1378 
    13811379 
    13821380class State(): 
     
    13921390        return self.msg 
    13931391 
     1392 
    13941393def set_data_state(data=None, path=None, theory=None, state=None): 
    13951394    """ 
     
    14061405    app = wx.App() 
    14071406    try: 
    1408         #list_of_perspective = [('perspective2', False), ('perspective1', True)] 
     1407        # list_of_perspective = [('perspective2', False), ('perspective1', True)] 
    14091408        data_list1 = {} 
    14101409        # state 1 
     
    14211420        state1 = State() 
    14221421        data_list1['1'] = set_data_state(data1, path1, theory1, state1) 
    1423         #state 2 
     1422        # state 2 
    14241423        data1 = Data2D() 
    14251424        data1.name = "data2" 
     
    14291428        theory1.name = "CoreShell 07/24/25" 
    14301429        path1 = "path2" 
    1431         #state3 
     1430        # state3 
    14321431        state1 = State() 
    14331432        data_list1['2'] = set_data_state(data1, path1, theory1, state1) 
     
    14461445        process1.data = "07/22/2010" 
    14471446        data_list1['4'] = set_data_state(data1, path1, theory1, state1) 
    1448         #state 4 
     1447        # state 4 
    14491448        temp_data_list = {} 
    14501449        data1.name = "data5 erasing data2" 
    14511450        temp_data_list['4'] = set_data_state(data1, path1, theory1, state1) 
    1452         #state 5 
     1451        # state 5 
    14531452        data1 = Data2D() 
    14541453        data1.name = "data3" 
     
    14831482        window.load_data_list(list=temp_data_list) 
    14841483    except: 
    1485         #raise 
     1484        # raise 
    14861485        print "error", sys.exc_value 
    14871486 
  • src/sas/sasgui/guiframe/gui_manager.py

    ra4c2445 rc8e1996  
    33""" 
    44################################################################################ 
    5 #This software was developed by the University of Tennessee as part of the 
    6 #Distributed Data Analysis of Neutron Scattering Experiments (DANSE) 
    7 #project funded by the US National Science Foundation. 
     5# This software was developed by the University of Tennessee as part of the 
     6# Distributed Data Analysis of Neutron Scattering Experiments (DANSE) 
     7# project funded by the US National Science Foundation. 
    88# 
    9 #See the license text in license.txtz 
     9# See the license text in license.txtz 
    1010# 
    11 #copyright 2008, University of Tennessee 
     11# copyright 2008, University of Tennessee 
    1212################################################################################ 
    1313 
     
    2121import warnings 
    2222import re 
    23 warnings.simplefilter("ignore") 
    2423import logging 
    2524import httplib 
     
    4948from matplotlib import _pylab_helpers 
    5049 
     50warnings.simplefilter("ignore") 
     51 
    5152 
    5253def get_app_dir(): 
     
    8283    return app_path 
    8384 
     85 
    8486def get_user_directory(): 
    8587    """ 
     
    9092        os.makedirs(userdir) 
    9193    return userdir 
     94 
    9295 
    9396def _find_local_config(file, path): 
     
    113116 
    114117# GUI always starts from the App folder 
    115 #os.chdir(PATH_APP) 
     118# os.chdir(PATH_APP) 
    116119# Read in the local config, which can either be with the main 
    117120# application or in the installation directory 
     
    128131    logging.info("found local_config in %s" % PATH_APP) 
    129132 
    130 from sas.sasgui.guiframe.customdir  import SetupCustom 
     133from sas.sasgui.guiframe.customdir import SetupCustom 
    131134c_conf_dir = SetupCustom().setup_dir(PATH_APP) 
    132135custom_config = _find_local_config('custom_config', c_conf_dir) 
     
    141144    logging.info("using custom_config from %s" % c_conf_dir) 
    142145 
    143 #read some constants from config 
     146# read some constants from config 
    144147APPLICATION_STATE_EXTENSION = config.APPLICATION_STATE_EXTENSION 
    145148APPLICATION_NAME = config.__appname__ 
     
    169172    # custom open_path 
    170173    open_folder = custom_config.DEFAULT_OPEN_FOLDER 
    171     if open_folder != None and os.path.isdir(open_folder): 
     174    if open_folder is not None and os.path.isdir(open_folder): 
    172175        DEFAULT_OPEN_FOLDER = os.path.abspath(open_folder) 
    173176    else: 
     
    222225        CHILD_FRAME = wx.Frame 
    223226 
     227 
    224228class ViewerFrame(PARENT_FRAME): 
    225229    """ 
     
    235239        Initialize the Frame object 
    236240        """ 
    237         PARENT_FRAME.__init__(self, parent=parent, title=title, pos=pos, size=size) 
     241        PARENT_FRAME.__init__(self, parent=parent, title=title, 
     242                              pos=pos, size=size) 
    238243        # title 
    239244        self.title = title 
     
    256261        self.path = PATH_APP 
    257262        self.application_name = APPLICATION_NAME 
    258         ## Application manager 
     263        # Application manager 
    259264        self._input_file = None 
    260265        self.app_manager = None 
    261266        self._mgr = None 
    262         #add current perpsective 
     267        # add current perpsective 
    263268        self._current_perspective = None 
    264269        self._plotting_plugin = None 
    265270        self._data_plugin = None 
    266         #Menu bar and item 
     271        # Menu bar and item 
    267272        self._menubar = None 
    268273        self._file_menu = None 
     
    278283        self._toolbar_menu = None 
    279284        self._save_appl_menu = None 
    280         #tool bar 
     285        # tool bar 
    281286        self._toolbar = None 
    282287        # Status bar 
     
    286291        # plot duck cleanup option 
    287292        self.cleanup_plots = CLEANUP_PLOT 
    288         ## Find plug-ins 
     293        # Find plug-ins 
    289294        # Modify this so that we can specify the directory to look into 
    290295        self.plugins = [] 
    291         #add local plugin 
     296        # add local plugin 
    292297        self.plugins += self._get_local_plugins() 
    293298        self.plugins += self._find_plugins() 
    294         ## List of panels 
     299        # List of panels 
    295300        self.panels = {} 
    296301        # List of plot panels 
     
    304309        self.defaultPanel = None 
    305310        self.welcome_panel_class = None 
    306         #panel on focus 
     311        # panel on focus 
    307312        self.panel_on_focus = None 
    308         #control_panel on focus 
     313        # control_panel on focus 
    309314        self.cpanel_on_focus = None 
    310315 
    311316        self.loader = Loader() 
    312         #data manager 
     317        # data manager 
    313318        self.batch_on = False 
    314319        from sas.sasgui.guiframe.data_manager import DataManager 
    315320        self._data_manager = DataManager() 
    316         self._data_panel = None#DataPanel(parent=self) 
     321        self._data_panel = None  # DataPanel(parent=self) 
    317322        if self.panel_on_focus is not None: 
    318             self._data_panel.set_panel_on_focus(self.panel_on_focus.window_caption) 
     323            self._data_panel.set_panel_on_focus( 
     324                self.panel_on_focus.window_caption) 
    319325        # list of plot panels in schedule to full redraw 
    320326        self.schedule = False 
    321         #self.callback = True 
     327        # self.callback = True 
    322328        self._idle_count = 0 
    323329        self.schedule_full_draw_list = [] 
     
    333339        # Register to status events 
    334340        self.Bind(EVT_STATUS, self._on_status_event) 
    335         #Register add extra data on the same panel event on load 
     341        # Register add extra data on the same panel event on load 
    336342        self.Bind(EVT_PANEL_ON_FOCUS, self.set_panel_on_focus) 
    337343        self.Bind(EVT_APPEND_BOOKMARK, self.append_bookmark) 
     
    373379        # Adjust toolbar height 
    374380        toolbar = self.GetToolBar() 
    375         if toolbar != None: 
     381        if toolbar is not None: 
    376382            _, tb_h = toolbar.GetSizeTuple() 
    377383            height -= tb_h 
     
    386392                    fitpanel = item.fit_panel 
    387393 
    388         if fitpanel != None: 
     394        if fitpanel is not None: 
    389395            for i in range(0, fitpanel.GetPageCount()): 
    390396                fitpanel.GetPage(i)._populate_listbox() 
     
    413419        """ 
    414420        Display value of data into the application grid 
    415         :param data: dictionary of string and list of items 
     421        :param data_inputs: dictionary of string and list of items 
     422        :param details: descriptive string 
     423        :param file_name: file name 
     424        :param data_outputs: Data outputs 
    416425        """ 
    417426        self.batch_frame.set_data(data_inputs=data_inputs, 
     
    427436        """ 
    428437        path = None 
    429         if self._default_save_location == None: 
     438        if self._default_save_location is None: 
    430439            self._default_save_location = os.getcwd() 
    431440        wildcard = "(*.csv; *.txt)|*.csv; *.txt" 
     
    469478            line.strip() 
    470479            count = 0 
    471             if separator == None: 
     480            if separator is None: 
    472481                line.replace('\t', ' ') 
    473                 #found the first line containing the label 
     482                # found the first line containing the label 
    474483                col_name_toks = line.split() 
    475484                for item in col_name_toks: 
     
    480489            elif line.find(separator) != -1: 
    481490                if line.count(separator) >= 2: 
    482                     #found the first line containing the label 
     491                    # found the first line containing the label 
    483492                    col_name_toks = line.split(separator) 
    484493                    for item in col_name_toks: 
     
    534543            separator = "," 
    535544        fd.write(str(details)) 
    536         for col_name  in data.keys(): 
     545        for col_name in data.keys(): 
    537546            fd.write(str(col_name)) 
    538547            fd.write(separator) 
     
    597606        Set up custom configuration if exists 
    598607        """ 
    599         if custom_config == None: 
     608        if custom_config is None: 
    600609            return 
    601610 
     
    617626        Set default starting perspective 
    618627        """ 
    619         if custom_config == None: 
     628        if custom_config is None: 
    620629            return 
    621630        for plugin in self.plugins: 
     
    626635                    frame = plugin.get_frame() 
    627636                    frame.Show(True) 
    628                     #break 
     637                    # break 
    629638                else: 
    630639                    frame = plugin.get_frame() 
     
    683692            try: 
    684693                flag = self.panel_on_focus.get_save_flag() 
    685                 if self._save_appl_menu != None: 
     694                if self._save_appl_menu is not None: 
    686695                    self._save_appl_menu.Enable(flag) 
    687696 
     
    694703                                self.panel_on_focus is not None: 
    695704                    self.set_panel_on_focus_helper() 
    696                     #update toolbar 
     705                    # update toolbar 
    697706                    self._update_toolbar_helper() 
    698                     #update edit menu 
     707                    # update edit menu 
    699708                    self.enable_edit_menu() 
    700709            except wx._core.PyDeadObjectError: 
     
    711720        Send focusing on ID to data explorer 
    712721        """ 
    713         if self._data_panel != None: 
     722        if self._data_panel is not None: 
    714723            self._data_panel.set_panel_on_focus(name) 
    715724 
     
    720729        caption = self.panel_on_focus.window_caption 
    721730        self.send_focus_to_datapanel(caption) 
    722         #update combo 
     731        # update combo 
    723732        if self.panel_on_focus in self.plot_panels.values(): 
    724733            combo = self._data_panel.cb_plotpanel 
     
    739748        """ 
    740749        cpanel = panel 
    741         if self._toolbar != None and cpanel._bookmark_flag: 
    742             for item in  self._toolbar.get_bookmark_items(): 
     750        if self._toolbar is not None and cpanel._bookmark_flag: 
     751            for item in self._toolbar.get_bookmark_items(): 
    743752                self._toolbar.remove_bookmark_item(item) 
    744753            self._toolbar.add_bookmark_default() 
     
    841850        field = self.sb.get_msg_position() 
    842851        wx.Frame.PushStatusText(self, field=field, 
    843                                 string="FIXME - PushStatusText called without text") 
     852                                string= 
     853                                "FIXME - PushStatusText called without text") 
    844854 
    845855    def add_perspective(self, plugin): 
     
    866876        """ 
    867877        plugins = [] 
    868         #import guiframe local plugins 
    869         #check if the style contain guiframe.dataloader 
     878        # import guiframe local plugins 
     879        # check if the style contain guiframe.dataloader 
    870880        style1 = self.__gui_style & GUIFRAME.DATALOADER_ON 
    871881        style2 = self.__gui_style & GUIFRAME.PLOTTING_ON 
    872882        if style1 == GUIFRAME.DATALOADER_ON: 
    873883            try: 
    874                 from sas.sasgui.guiframe.local_perspectives.data_loader import data_loader 
     884                from sas.sasgui.guiframe.local_perspectives.data_loader \ 
     885                    import data_loader 
    875886                self._data_plugin = data_loader.Plugin() 
    876887                plugins.append(self._data_plugin) 
     
    881892        if style2 == GUIFRAME.PLOTTING_ON: 
    882893            try: 
    883                 from sas.sasgui.guiframe.local_perspectives.plotting import plotting 
     894                from sas.sasgui.guiframe.local_perspectives.plotting \ 
     895                    import plotting 
    884896                self._plotting_plugin = plotting.Plugin() 
    885897                plugins.append(self._plotting_plugin) 
     
    907919            else: 
    908920                file_list = [] 
    909             ## the default panel is the panel is the last plugin added 
     921            # the default panel is the panel is the last plugin added 
    910922            for item in file_list: 
    911923                toks = os.path.splitext(os.path.basename(item)) 
     
    914926                    if toks[1] == '.py' or toks[1] == '': 
    915927                        name = toks[0] 
    916                     #check the validity of the module name parsed 
    917                     #before trying to import it 
     928                    # check the validity of the module name parsed 
     929                    # before trying to import it 
    918930                    if name is None or name.strip() == '': 
    919931                        continue 
     
    941953                        logging.error(msg) 
    942954                    finally: 
    943                         if not file == None: 
     955                        if file is not None: 
    944956                            file.close() 
    945957        except: 
     
    956968        """ 
    957969        self._window_width, self._window_height = self.get_client_size() 
    958         ## Default size 
     970        # Default size 
    959971        if DATAPANEL_WIDTH < 0: 
    960972            panel_width = int(self._window_width * 0.25) 
     
    962974            panel_width = DATAPANEL_WIDTH 
    963975        panel_height = int(self._window_height) 
    964         if self._data_panel is not None  and (p == self._data_panel): 
     976        if self._data_panel is not None and (p == self._data_panel): 
    965977            return panel_width, panel_height 
    966978        if hasattr(p, "CENTER_PANE") and p.CENTER_PANE: 
     
    9941006        if self.welcome_panel_class is not None: 
    9951007            welcome_panel = MDIFrame(self, None, 'None', (100, 200)) 
    996             self.defaultPanel = self.welcome_panel_class(welcome_panel, -1, style=wx.RAISED_BORDER) 
     1008            self.defaultPanel = self.welcome_panel_class(welcome_panel, -1, 
     1009                                                         style=wx.RAISED_BORDER) 
    9971010            welcome_panel.set_panel(self.defaultPanel) 
    9981011            self.defaultPanel.set_frame(welcome_panel) 
     
    10101023                frame.SetPosition((0, mac_pos_y + size_t_bar)) 
    10111024            frame.Show(True) 
    1012         #add data panel 
     1025        # add data panel 
    10131026        win = MDIFrame(self, None, 'None', (100, 200)) 
    10141027        data_panel = DataPanel(parent=win, id=-1) 
     
    10181031        d_panel_width, h = self._get_panels_size(self._data_panel) 
    10191032        win.SetSize((d_panel_width, h)) 
    1020         is_visible = self.__gui_style & GUIFRAME.MANAGER_ON == GUIFRAME.MANAGER_ON 
     1033        is_visible = self.__gui_style & \ 
     1034                     GUIFRAME.MANAGER_ON == GUIFRAME.MANAGER_ON 
    10211035        if IS_WIN: 
    10221036            win.SetPosition((0, 0)) 
     
    10641078        Update the data. 
    10651079        """ 
    1066         prev_id, data_state = self._data_manager.update_data( \ 
     1080        prev_id, data_state = self._data_manager.update_data( 
    10671081                              prev_data=prev_data, new_data=new_data) 
    10681082 
     
    11151129        self._current_perspective.delete_data(data) 
    11161130 
    1117  
    11181131    def get_context_menu(self, plotpanel=None): 
    11191132        """ 
     
    11391152        menu_list = [] 
    11401153        item = self._current_perspective 
    1141         if item != None: 
     1154        if item is not None: 
    11421155            menu_list.extend(item.get_context_menu(plotpanel=plotpanel)) 
    11431156        return menu_list 
     
    11581171            self.cpanel_on_focus.SetFocus() 
    11591172 
    1160  
    11611173    def popup_panel(self, p): 
    11621174        """ 
     
    11701182        ID = wx.NewId() 
    11711183        self.panels[str(ID)] = p 
    1172         ## Check and set the size 
     1184        # Check and set the size 
    11731185        if PLOPANEL_WIDTH < 0: 
    11741186            p_panel_width = int(self._window_width * 0.45) 
     
    12091221        # Register for showing/hiding the panel 
    12101222        wx.EVT_MENU(self, ID, self.on_view) 
    1211         if p not in self.plot_panels.values() and p.group_id != None: 
     1223        if p not in self.plot_panels.values() and p.group_id is not None: 
    12121224            self.plot_panels[ID] = p 
    12131225            if len(self.plot_panels) == 1: 
     
    12151227                self.set_panel_on_focus(None) 
    12161228            if self._data_panel is not None and \ 
    1217                 self._plotting_plugin is not None: 
     1229                            self._plotting_plugin is not None: 
    12181230                ind = self._data_panel.cb_plotpanel.FindString('None') 
    12191231                if ind != wx.NOT_FOUND: 
     
    12581270        panel_name = 'No Panel on Focus' 
    12591271        c_panel = self.cpanel_on_focus 
    1260         if self._toolbar is  None: 
     1272        if self._toolbar is None: 
    12611273            return 
    12621274        if c_panel is not None: 
     
    13031315        """ 
    13041316        if self._menubar is None or self._current_perspective is None \ 
    1305             or self._menubar.GetMenuCount() == 0: 
     1317                or self._menubar.GetMenuCount() == 0: 
    13061318            return 
    1307         #replace or add a new menu for the current plugin 
     1319        # replace or add a new menu for the current plugin 
    13081320        pos = self._menubar.FindMenu(str(self._applications_menu_name)) 
    13091321        if pos == -1 and self._applications_menu_pos > 0: 
     
    13251337                for (menu, name) in menu_list: 
    13261338                    if self._applications_menu_pos == -1: 
    1327                         # Find the Analysis position and insert just after it if possible 
     1339                        # Find the Analysis position and insert just after it 
    13281340                        analysis_pos = self._menubar.FindMenu("Analysis") 
    13291341                        if analysis_pos == -1: 
     
    13341346                            self._applications_menu_pos = analysis_pos + 1 
    13351347                    else: 
    1336                         self._menubar.Insert(self._applications_menu_pos, menu, name) 
     1348                        self._menubar.Insert(self._applications_menu_pos, 
     1349                                             menu, name) 
    13371350                    self._applications_menu_name = name 
    13381351 
     
    13621375        if config._do_acknowledge: 
    13631376            wx_id = wx.NewId() 
    1364             self._help_menu.Append(wx_id, '&Acknowledge', 'Acknowledging SasView') 
     1377            self._help_menu.Append(wx_id, '&Acknowledge', 
     1378                                   'Acknowledging SasView') 
    13651379            wx.EVT_MENU(self, wx_id, self._onAcknowledge) 
    13661380 
     
    13791393        wx_id = wx.NewId() 
    13801394        self._help_menu.Append(wx_id, '&Check for update', 
    1381                                'Check for the latest version of %s' % config.__appname__) 
     1395                               'Check for the latest version of %s' % 
     1396                               config.__appname__) 
    13821397        wx.EVT_MENU(self, wx_id, self._check_update) 
    13831398        self._menubar.Append(self._help_menu, '&Help') 
     
    14001415        wx_id = wx.NewId() 
    14011416        self._data_panel_menu = self._view_menu.Append(wx_id, 
    1402                                                        '&Show Data Explorer', '') 
     1417                                                       '&Show Data Explorer', 
     1418                                                       '') 
    14031419        wx.EVT_MENU(self, wx_id, self.show_data_panel) 
    14041420        if style == GUIFRAME.MANAGER_ON: 
     
    14111427        style1 = self.__gui_style & GUIFRAME.TOOLBAR_ON 
    14121428        if style1 == GUIFRAME.TOOLBAR_ON: 
    1413             self._toolbar_menu = self._view_menu.Append(wx_id, '&Hide Toolbar', '') 
     1429            self._toolbar_menu = self._view_menu.Append(wx_id, '&Hide Toolbar', 
     1430                                                        '') 
    14141431        else: 
    1415             self._toolbar_menu = self._view_menu.Append(wx_id, '&Show Toolbar', '') 
     1432            self._toolbar_menu = self._view_menu.Append(wx_id, '&Show Toolbar', 
     1433                                                        '') 
    14161434        wx.EVT_MENU(self, wx_id, self._on_toggle_toolbar) 
    14171435 
    1418         if custom_config != None: 
     1436        if custom_config is not None: 
    14191437            self._view_menu.AppendSeparator() 
    14201438            wx_id = wx.NewId() 
     
    14271445        wx_id = wx.NewId() 
    14281446        self._view_menu.AppendSeparator() 
    1429         self._view_menu.Append(wx_id, 'Category Manager', 'Edit model categories') 
     1447        self._view_menu.Append(wx_id, 'Category Manager', 
     1448                               'Edit model categories') 
    14301449        wx.EVT_MENU(self, wx_id, self._on_category_manager) 
    14311450 
     
    14401459        self.batch_frame.Show(True) 
    14411460 
    1442     def  on_category_panel(self, event): 
     1461    def on_category_panel(self, event): 
    14431462        """ 
    14441463        On cat panel 
     
    14591478        """ 
    14601479        from sas.sasgui.guiframe.startup_configuration \ 
    1461         import StartupConfiguration as ConfDialog 
     1480            import StartupConfiguration as ConfDialog 
    14621481 
    14631482        dialog = ConfDialog(parent=self, gui=self.__gui_style) 
     
    14661485            dialog.write_custom_config() 
    14671486            # post event for info 
    1468             wx.PostEvent(self, StatusEvent(status="Wrote custom configuration", info='info')) 
     1487            wx.PostEvent(self, StatusEvent(status="Wrote custom configuration", 
     1488                                           info='info')) 
    14691489        dialog.Destroy() 
    14701490 
     
    14851505                    id = wx.NewId() 
    14861506                    if plug.use_data(): 
    1487                         self._applications_menu.InsertCheckItem(pos, id, plug.sub_menu, \ 
    1488                             "Switch to analysis: %s" % plug.sub_menu) 
     1507                        self._applications_menu.InsertCheckItem(pos, id, 
     1508                                                                plug.sub_menu, 
     1509                                    "Switch to analysis: %s" % plug.sub_menu) 
    14891510                        plug_data_count = True 
    14901511                        pos += 1 
    14911512                    else: 
    14921513                        plug_no_data_count = True 
    1493                         self._applications_menu.AppendCheckItem(id, plug.sub_menu, \ 
     1514                        self._applications_menu.AppendCheckItem(id, 
     1515                                                                plug.sub_menu, 
    14941516                            "Switch to analysis: %s" % plug.sub_menu) 
    14951517                    wx.EVT_MENU(self, id, plug.on_perspective) 
     
    14971519            if not plug_data_count or not plug_no_data_count: 
    14981520                self._applications_menu.RemoveItem(separator) 
    1499             #Windows introduces a "Window" menu item during the layout process 
    1500             #somehow.  We want it to be next to the last item with Help as 
    1501             #last. However Analysis gets stuck after Window in normal ordering 
    1502             #so force it to be next after the Tools menu item.  Should we add 
    1503             #another menu item will need to check if this is still where we  
    1504             #want Analysis.  This is NOT an issue on the Mac which does not 
    1505             #have the extra Window menu item. 
     1521            # Windows introduces a "Window" menu item during the layout process 
     1522            # somehow.  We want it to be next to the last item with Help as 
     1523            # last. However Analysis gets stuck after Window in normal ordering 
     1524            # so force it to be next after the Tools menu item.  Should we add 
     1525            # another menu item will need to check if this is still where we 
     1526            # want Analysis.  This is NOT an issue on the Mac which does not 
     1527            # have the extra Window menu item. 
    15061528            #      March 2016 Code Camp  -- PDB  
    15071529            Tools_pos = self._menubar.FindMenu("Tools") 
    1508             self._menubar.Insert(Tools_pos+1,self._applications_menu, 
     1530            self._menubar.Insert(Tools_pos+1, self._applications_menu, 
    15091531                                 '&Analysis') 
    15101532            self._check_applications_menu() 
     
    15271549            wx_id = wx.NewId() 
    15281550            hint_load_file = "read all analysis states saved previously" 
    1529             self._save_appl_menu = self._file_menu.Append(wx_id, '&Open Project', hint_load_file) 
     1551            self._save_appl_menu = self._file_menu.Append(wx_id, 
     1552                                                          '&Open Project', 
     1553                                                          hint_load_file) 
    15301554            wx.EVT_MENU(self, wx_id, self._on_open_state_project) 
    15311555 
     
    15361560            wx_id = wx.NewId() 
    15371561            self._save_appl_menu = self._file_menu.Append(wx_id, 
    1538                                                           '&Open Analysis', hint_load_file) 
     1562                                                          '&Open Analysis', 
     1563                                                          hint_load_file) 
    15391564            wx.EVT_MENU(self, wx_id, self._on_open_state_application) 
    15401565        if OPEN_SAVE_MENU: 
     
    15461571        if style1 == GUIFRAME.MULTIPLE_APPLICATIONS: 
    15471572            wx_id = wx.NewId() 
    1548             self._save_appl_menu = self._file_menu.Append(wx_id, \ 
    1549                 '&Save Analysis', 'Save state of the current active analysis panel') 
     1573            txt = '&Save Analysis' 
     1574            txt2 = 'Save state of the current active analysis panel' 
     1575            self._save_appl_menu = self._file_menu.Append(wx_id, txt, txt2) 
    15501576            wx.EVT_MENU(self, wx_id, self._on_save_application) 
    15511577        if not sys.platform == 'darwin': 
     
    15891615 
    15901616        self._edit_menu_copyas = wx.Menu() 
    1591         #Sub menu for Copy As... 
    1592         self._edit_menu_copyas.Append(GUIFRAME_ID.COPYEX_ID, 'Copy current tab to Excel', 
     1617        # Sub menu for Copy As... 
     1618        self._edit_menu_copyas.Append(GUIFRAME_ID.COPYEX_ID, 
     1619                                      'Copy current tab to Excel', 
    15931620                                      'Copy parameter values in tabular format') 
    15941621        wx.EVT_MENU(self, GUIFRAME_ID.COPYEX_ID, self.on_copy_panel) 
    15951622 
    1596         self._edit_menu_copyas.Append(GUIFRAME_ID.COPYLAT_ID, 'Copy current tab to LaTeX', 
     1623        self._edit_menu_copyas.Append(GUIFRAME_ID.COPYLAT_ID, 
     1624                                      'Copy current tab to LaTeX', 
    15971625                                      'Copy parameter values in tabular format') 
    15981626        wx.EVT_MENU(self, GUIFRAME_ID.COPYLAT_ID, self.on_copy_panel) 
    1599  
    16001627 
    16011628        self._edit_menu.AppendMenu(GUIFRAME_ID.COPYAS_ID, 'Copy Params as...', 
     
    16201647        Return the gui style 
    16211648        """ 
    1622         return  self.__gui_style 
     1649        return self.__gui_style 
    16231650 
    16241651    def _add_menu_data(self): 
     
    16751702            return 
    16761703        frame = self.panels['default'].get_frame() 
    1677         if frame == None: 
     1704        if frame is None: 
    16781705            return 
    16791706        # Show default panel 
     
    17081735                self.schedule_full_draw_list.remove(panel) 
    17091736 
    1710             #delete uid number not str(uid) 
     1737            # delete uid number not str(uid) 
    17111738            if ID in self.plot_panels.keys(): 
    17121739                del self.plot_panels[ID] 
     
    17341761            return 
    17351762 
    1736         #reading a state file 
     1763        # reading a state file 
    17371764        for plug in self.plugins: 
    17381765            reader, ext = plug.get_extensions() 
    17391766            if reader is not None: 
    1740                 #read the state of the single plugin 
     1767                # read the state of the single plugin 
    17411768                if extension == ext: 
    17421769                    reader.read(path) 
     
    17491776                        msg += "\n(%s)" % sys.exc_value 
    17501777                        wx.PostEvent(self, StatusEvent(status=msg, 
    1751                                                        info="error", type="stop")) 
     1778                                                       info="error", 
     1779                                                       type="stop")) 
    17521780                        return 
    17531781 
     
    17881816            basename = os.path.basename(path) 
    17891817            if APPLICATION_STATE_EXTENSION is not None \ 
    1790                 and basename.endswith(APPLICATION_STATE_EXTENSION): 
     1818                    and basename.endswith(APPLICATION_STATE_EXTENSION): 
    17911819                if is_project: 
    17921820                    for ID in self.plot_panels.keys(): 
     
    18581886        """ 
    18591887        path = None 
    1860         if self._default_save_location == None: 
     1888        if self._default_save_location is None: 
    18611889            self._default_save_location = os.getcwd() 
    18621890        wx.PostEvent(self, StatusEvent(status="Loading Analysis file...")) 
     
    18921920                    break 
    18931921            # Found the extension 
    1894             if ind != None: 
     1922            if ind is not None: 
    18951923                plug_wlist.remove(ind) 
    18961924                plug_wlist.insert(0, ind) 
     
    19101938        """ 
    19111939        path = None 
    1912         if self._default_save_location == None: 
     1940        if self._default_save_location is None: 
    19131941            self._default_save_location = os.getcwd() 
    19141942        msg = "This operation will set remove all data, plots and analyses from" 
    19151943        msg += " SasView before loading the project. Do you wish to continue?" 
    1916         self._data_panel.selection_cbox.SetValue('Select all Data') 
    1917         self._data_panel._on_selection_type(None) 
    1918         for _, theory_dict in self._data_panel.list_cb_theory.iteritems(): 
    1919             for  key, value in theory_dict.iteritems(): 
    1920                 item, _, _ = value 
    1921                 item.Check(True) 
    1922         if not self._data_panel.on_remove(None, msg): 
     1944        msg_box = wx.MessageDialog(None, msg, 'Warning', wx.OK | wx.CANCEL) 
     1945        if msg_box.ShowModal() == wx.ID_OK: 
     1946            self._data_panel.selection_cbox.SetValue('Select all Data') 
     1947            self._data_panel._on_selection_type(None) 
     1948            for _, theory_dict in self._data_panel.list_cb_theory.iteritems(): 
     1949                for key, value in theory_dict.iteritems(): 
     1950                    item, _, _ = value 
     1951                    item.Check(True) 
     1952            self._data_panel.on_remove(None, False) 
     1953 
    19231954            wx.PostEvent(self, StatusEvent(status="Loading Project file...")) 
    1924             dlg = wx.FileDialog(self, 
    1925                             "Choose a file", 
    1926                             self._default_save_location, "", 
    1927                             APPLICATION_WLIST) 
     1955            dlg = wx.FileDialog(self, "Choose a file", 
     1956                                self._default_save_location, "", 
     1957                                APPLICATION_WLIST) 
    19281958            if dlg.ShowModal() == wx.ID_OK: 
    19291959                path = dlg.GetPath() 
     
    19691999        save the state of the SasView as *.svs 
    19702000        """ 
    1971         if self._current_perspective is  None: 
     2001        if self._current_perspective is None: 
    19722002            return 
    19732003        wx.PostEvent(self, StatusEvent(status="Saving Project file...")) 
     
    19972027            extens = APPLICATION_STATE_EXTENSION 
    19982028            fName = os.path.splitext(path)[0] + extens 
    1999             if doc != None: 
     2029            if doc is not None: 
    20002030                fd = open(fName, 'w') 
    20012031                fd.write(doc.toprettyxml()) 
     
    20292059                    if data is not None: 
    20302060                        new_doc = reader.write_toXML(data, state) 
    2031                         if doc != None and hasattr(doc, "firstChild"): 
     2061                        if doc is not None and hasattr(doc, "firstChild"): 
    20322062                            child = new_doc.firstChild.firstChild 
    20332063                            doc.firstChild.appendChild(child) 
     
    20402070                if data is not None: 
    20412071                    new_doc = reader.write_toXML(data, state) 
    2042                     if doc != None and hasattr(doc, "firstChild"): 
     2072                    if doc is not None and hasattr(doc, "firstChild"): 
    20432073                        child = new_doc.firstChild.firstChild 
    20442074                        doc.firstChild.appendChild(child) 
     
    20952125            except: 
    20962126                logging.info("Failed to connect to www.sasview.org") 
    2097         self._process_version(version_info, standalone=event == None) 
     2127        self._process_version(version_info, standalone=event is None) 
    20982128 
    20992129    def _process_version(self, version_info, standalone=True): 
     
    21842214                    try: 
    21852215                        # Try an alternate method 
    2186                         logging.error("Could not open the tutorial pdf, trying xhtml2pdf") 
     2216                        logging.error( 
     2217                            "Could not open the tutorial pdf, trying xhtml2pdf") 
    21872218                        from xhtml2pdf import pisa 
    21882219                        pisa.startViewer(path) 
    21892220                    except: 
    2190                         logging.error("Could not open the tutorial pdf with xhtml2pdf") 
     2221                        logging.error( 
     2222                            "Could not open the tutorial pdf with xhtml2pdf") 
    21912223                        msg = "This feature requires 'PDF Viewer'\n" 
    21922224                        wx.MessageBox(msg, 'Error') 
     
    21982230                    try: 
    21992231                        # Try an alternate method 
    2200                         logging.error("Could not open the tutorial pdf, trying xhtml2pdf") 
     2232                        logging.error( 
     2233                            "Could not open the tutorial pdf, trying xhtml2pdf") 
    22012234                        from xhtml2pdf import pisa 
    22022235                        pisa.startViewer(path) 
    22032236                    except: 
    2204                         logging.error("Could not open the tutorial pdf with xhtml2pdf") 
    2205                         msg = "This feature requires the 'Preview' application\n" 
     2237                        logging.error( 
     2238                            "Could not open the tutorial pdf with xhtml2pdf") 
     2239                        msg = "This feature requires the Preview application\n" 
    22062240                        wx.MessageBox(msg, 'Error') 
    22072241 
     
    22182252        from documentation_window import DocumentationWindow 
    22192253        _TreeLocation = "user/user.html" 
    2220         DocumentationWindow(self, -1, _TreeLocation, "", "SasView Documentation") 
     2254        DocumentationWindow(self, -1, _TreeLocation, "", 
     2255                            "SasView Documentation") 
    22212256 
    22222257    def set_manager(self, manager): 
     
    22522287                if self.panels[item].ALWAYS_ON: 
    22532288                    continue 
    2254             if self.panels[item] == None: 
     2289            if self.panels[item] is None: 
    22552290                continue 
    22562291            if self.panels[item].window_name in panels: 
     
    22612296                # always show the data panel if enable 
    22622297                style = self.__gui_style & GUIFRAME.MANAGER_ON 
    2263                 if (style == GUIFRAME.MANAGER_ON) and self.panels[item] == self._data_panel: 
     2298                if (style == GUIFRAME.MANAGER_ON) \ 
     2299                        and self.panels[item] == self._data_panel: 
    22642300                    if 'data_panel' in self.panels.keys(): 
    22652301                        frame = self.panels['data_panel'].get_frame() 
    2266                         if frame == None: 
     2302                        if frame is None: 
    22672303                            continue 
    22682304                        flag = frame.IsShown() 
     
    22702306                else: 
    22712307                    frame = self.panels[item].get_frame() 
    2272                     if frame == None: 
     2308                    if frame is None: 
    22732309                        continue 
    22742310 
     
    22802316        show the data panel 
    22812317        """ 
    2282         if self._data_panel_menu == None: 
     2318        if self._data_panel_menu is None: 
    22832319            return 
    22842320        label = self._data_panel_menu.GetText() 
     
    23102346        :param data_list: dictionary of data's ID and value Data 
    23112347        """ 
    2312         #Store data into manager 
     2348        # Store data into manager 
    23132349        self.add_data_helper(data_list) 
    23142350        # set data in the data panel 
     
    23162352            data_state = self._data_manager.get_data_state(data_list.keys()) 
    23172353            self._data_panel.load_data_list(data_state) 
    2318         #if the data panel is shown wait for the user to press a button 
    2319         #to send data to the current perspective. if the panel is not 
    2320         #show  automatically send the data to the current perspective 
     2354        # if the data panel is shown wait for the user to press a button 
     2355        # to send data to the current perspective. if the panel is not 
     2356        # show  automatically send the data to the current perspective 
    23212357        style = self.__gui_style & GUIFRAME.MANAGER_ON 
    23222358        if style == GUIFRAME.MANAGER_ON: 
    2323             #wait for button press from the data panel to set_data 
     2359            # wait for button press from the data panel to set_data 
    23242360            if self._data_panel is not None: 
    23252361                self._data_panel.frame.Show(True) 
    23262362        else: 
    2327             #automatically send that to the current perspective 
     2363            # automatically send that to the current perspective 
    23282364            self.set_data(data_id=data_list.keys()) 
    23292365 
     
    23862422                                                       info='warning')) 
    23872423            else: 
    2388                 #if not append then new plot 
     2424                # if not append then new plot 
    23892425                from sas.sasgui.guiframe.dataFitting import Data2D 
    23902426                if issubclass(Data2D, new_plot.__class__): 
    2391                     #for 2 D always plot in a separated new plot 
     2427                    # for 2 D always plot in a separated new plot 
    23922428                    new_plot.group_id = wx.NewId() 
    23932429                else: 
     
    24202456                                                group_id=group_id, 
    24212457                                                action='remove')) 
    2422                 #remove res plot: Todo: improve 
     2458                # remove res plot: Todo: improve 
    24232459                wx.CallAfter(self._remove_res_plot, new_plot.id) 
    24242460        self._data_manager.delete_data(data_id=data_id, 
     
    24622498            mypath = os.path.basename(path) 
    24632499 
    2464             #Instantiate a loader 
     2500            # Instantiate a loader 
    24652501            loader = Loader() 
    24662502            ext_format = ".txt" 
     
    24822518        dlg.Destroy() 
    24832519 
    2484  
    24852520    def _onsaveTXT(self, data, path): 
    24862521        """ 
     
    24892524        .. todo:: Refactor and remove this method. See 'TODO' in _onSave. 
    24902525        """ 
    2491         if not path == None: 
     2526        if path is not None: 
    24922527            out = open(path, 'w') 
    24932528            has_errors = True 
    2494             if data.dy == None or data.dy == []: 
     2529            if data.dy is None or data.dy == []: 
    24952530                has_errors = False 
    24962531            # Sanity check 
     
    25022537                    has_errors = False 
    25032538            if has_errors: 
    2504                 if data.dx != None and data.dx != []: 
     2539                if data.dx is not None and data.dx != []: 
    25052540                    out.write("<X>   <Y>   <dY>   <dX>\n") 
    25062541                else: 
     
    25112546            for i in range(len(data.x)): 
    25122547                if has_errors: 
    2513                     if data.dx != None and data.dx != []: 
    2514                         if  data.dx[i] != None: 
     2548                    if data.dx is not None and data.dx != []: 
     2549                        if data.dx[i] is not None: 
    25152550                            out.write("%g  %g  %g  %g\n" % (data.x[i], 
    25162551                                                            data.y[i], 
     
    25432578                                           info="error")) 
    25442579            raise ValueError, msg 
    2545         ## text = str(data) 
     2580        # text = str(data) 
    25462581        text = data.__str__() 
    25472582        text += 'Data Min Max:\n' 
    25482583        text += 'X_min = %s:  X_max = %s\n' % (xmin, max(data.x)) 
    25492584        text += 'Y_min = %s:  Y_max = %s\n' % (ymin, max(data.y)) 
    2550         if data.dy != None: 
     2585        if data.dy is not None: 
    25512586            text += 'dY_min = %s:  dY_max = %s\n' % (min(data.dy), max(data.dy)) 
    25522587        text += '\nData Points:\n' 
    25532588        x_st = "X" 
    25542589        for index in range(len(data.x)): 
    2555             if data.dy != None and len(data.dy) > index: 
     2590            if data.dy is not None and len(data.dy) > index: 
    25562591                dy_val = data.dy[index] 
    25572592            else: 
    25582593                dy_val = 0.0 
    2559             if data.dx != None and len(data.dx) > index: 
     2594            if data.dx is not None and len(data.dx) > index: 
    25602595                dx_val = data.dx[index] 
    25612596            else: 
    25622597                dx_val = 0.0 
    2563             if data.dxl != None and len(data.dxl) > index: 
     2598            if data.dxl is not None and len(data.dxl) > index: 
    25642599                if index == 0: 
    25652600                    x_st = "Xl" 
    25662601                dx_val = data.dxl[index] 
    2567             elif data.dxw != None and len(data.dxw) > index: 
     2602            elif data.dxw is not None and len(data.dxw) > index: 
    25682603                if index == 0: 
    25692604                    x_st = "Xw" 
     
    26052640            mypath = os.path.basename(path) 
    26062641 
    2607             #Instantiate a loader 
     2642            # Instantiate a loader 
    26082643            loader = Loader() 
    26092644 
     
    26422677            y_val = data.qy_data[index] 
    26432678            i_val = data.data[index] 
    2644             if data.err_data != None: 
     2679            if data.err_data is not None: 
    26452680                di_val = data.err_data[index] 
    2646             if data.dqx_data != None: 
     2681            if data.dqx_data is not None: 
    26472682                dx_val = data.dqx_data[index] 
    2648             if data.dqy_data != None: 
     2683            if data.dqy_data is not None: 
    26492684                dy_val = data.dqy_data[index] 
    26502685 
     
    26812716                    for name in self._current_perspective.get_perspective(): 
    26822717                        frame = panel.get_frame() 
    2683                         if frame != None: 
     2718                        if frame is not None: 
    26842719                            if name == panel.window_name: 
    26852720                                panel.on_set_focus(event=None) 
     
    26912726                self._data_panel.set_active_perspective(name) 
    26922727                self._check_applications_menu() 
    2693             #Set the SasView title 
     2728            # Set the SasView title 
    26942729            self._set_title_name(name) 
    26952730 
     
    27232758        """ 
    27242759 
    2725         if self.panel_on_focus not in self._plotting_plugin.plot_panels.values(): 
     2760        if self.panel_on_focus \ 
     2761                not in self._plotting_plugin.plot_panels.values(): 
    27262762            return 
     2763        check = "Theory1D" 
    27272764        is_theory = len(self.panel_on_focus.plots) <= 1 and \ 
    2728             self.panel_on_focus.plots.values()[0].__class__.__name__ == "Theory1D" 
     2765            self.panel_on_focus.plots.values()[0].__class__.__name__ == check 
    27292766 
    27302767        is_data2d = hasattr(new_plot, 'data') 
     
    27342771        has_meta_data = hasattr(new_plot, 'meta_data') 
    27352772 
    2736         #disable_add_data if the data is being recovered from  a saved state file. 
     2773        # disable_add_data if the data is being recovered from  a saved state 
    27372774        is_state_data = False 
    27382775        if has_meta_data: 
    27392776            if 'invstate' in new_plot.meta_data: 
    27402777                is_state_data = True 
    2741             if  'prstate' in new_plot.meta_data: 
     2778            if 'prstate' in new_plot.meta_data: 
    27422779                is_state_data = True 
    2743             if  'fitstate' in new_plot.meta_data: 
     2780            if 'fitstate' in new_plot.meta_data: 
    27442781                is_state_data = True 
    27452782 
    2746         return is_data1d and not is_data2d and not is_theory and not is_state_data 
     2783        return is_data1d and not is_data2d and not is_theory \ 
     2784               and not is_state_data 
    27472785 
    27482786    def check_multimode(self, perspective=None): 
     
    27502788        Check the perspective have batch mode capablitity 
    27512789        """ 
    2752         if perspective == None or self._data_panel == None: 
     2790        if perspective is None or self._data_panel is None: 
    27532791            return 
    27542792        flag = perspective.get_batch_capable() 
     
    27772815            self._edit_menu.Enable(GUIFRAME_ID.PASTE_ID, flag) 
    27782816 
    2779             #Copy menu 
     2817            # Copy menu 
    27802818            flag = self.cpanel_on_focus.get_copy_flag() 
    27812819            self._edit_menu_copyas.Enable(GUIFRAME_ID.COPYEX_ID, flag) 
     
    29082946            if data_panel.cb_plotpanel is not None: 
    29092947                # Check if any panel has the same caption 
    2910                 has_newstring = data_panel.cb_plotpanel.FindString\ 
    2911                                                             (str(new_caption)) 
     2948                has_newstring = data_panel.cb_plotpanel.FindString( 
     2949                    str(new_caption)) 
    29122950                caption = new_caption 
    29132951                if has_newstring != wx.NOT_FOUND: 
     
    30263064        drag 
    30273065        """ 
    3028         #Not implemeted 
     3066        # Not implemeted 
    30293067 
    30303068    def enable_reset(self): 
     
    30393077        """ 
    30403078        size_y = 0 
    3041         if self.GetToolBar() != None and self.GetToolBar().IsShown(): 
     3079        if self.GetToolBar() is not None and self.GetToolBar().IsShown(): 
    30423080            if not IS_LINUX: 
    30433081                _, size_y = self.GetToolBar().GetSizeTuple() 
     
    30543092        # append this panel in the schedule list if not in yet 
    30553093        if func == 'append': 
    3056             if not panel in self.schedule_full_draw_list: 
     3094            if panel not in self.schedule_full_draw_list: 
    30573095                self.schedule_full_draw_list.append(panel) 
    30583096        # remove this panel from schedule list 
     
    30743112 
    30753113        count = len(self.schedule_full_draw_list) 
    3076         #if not self.schedule: 
     3114        # if not self.schedule: 
    30773115        if count < 1: 
    30783116            self.set_schedule(False) 
     
    30893127                if ind == count: 
    30903128                    return 
    3091         #Simple redraw only for a panel shown 
     3129        # Simple redraw only for a panel shown 
     3130 
    30923131        def f_draw(panel): 
    30933132            """ 
     
    31023141                    # draw if possible 
    31033142                    panel.set_resizing(False) 
    3104                     #panel.Show(True) 
     3143                    # panel.Show(True) 
    31053144                    panel.draw_plot() 
    31063145                # Check if the panel is not shown 
     
    31373176        Set focus on a plot panel 
    31383177        """ 
    3139         if panel == None: 
     3178        if panel is None: 
    31403179            return 
    3141         #self.set_plot_unfocus() 
     3180        # self.set_plot_unfocus() 
    31423181        panel.on_set_focus(None) 
    31433182        # set focusing panel 
     
    31723211        try: 
    31733212            # check if it is time to redraw 
    3174             if self.GetCapture() == None: 
     3213            if self.GetCapture() is None: 
    31753214                # Draw plot, changes resizing too 
    31763215                self.full_draw() 
     
    31803219        # restart idle 
    31813220        self._redraw_idle(*args, **kwargs) 
    3182  
    31833221 
    31843222    def _redraw_idle(self, *args, **kwargs): 
     
    31953233    the GUI manager 
    31963234    """ 
    3197     ## Internal nickname for the window, used by the AUI manager 
     3235    # Internal nickname for the window, used by the AUI manager 
    31983236    window_name = "default" 
    3199     ## Name to appear on the window title bar 
     3237    # Name to appear on the window title bar 
    32003238    window_caption = "Welcome panel" 
    3201     ## Flag to tell the AUI manager to put this panel in the center pane 
     3239    # Flag to tell the AUI manager to put this panel in the center pane 
    32023240    CENTER_PANE = True 
     3241 
    32033242    def __init__(self, parent, *args, **kwds): 
    32043243        wx.Panel.__init__(self, parent, *args, **kwds) 
    32053244        PanelBase.__init__(self, parent) 
    3206  
    32073245 
    32083246 
     
    32363274        try: 
    32373275            if os.path.isfile(SPLASH_SCREEN_PATH): 
    3238                 self.s_screen = self.display_splash_screen(parent=self.frame, 
    3239                                                            path=SPLASH_SCREEN_PATH) 
     3276                self.s_screen = \ 
     3277                    self.display_splash_screen(parent=self.frame, 
     3278                                               path=SPLASH_SCREEN_PATH) 
    32403279            else: 
    32413280                self.frame.Show() 
     
    33003339                            os.remove(file_path) 
    33013340                except: 
    3302                     logging.error("gui_manager.clean_plugin_models:\n  %s" \ 
     3341                    logging.error("gui_manager.clean_plugin_models:\n  %s" 
    33033342                                  % sys.exc_value) 
    33043343 
     
    33143353        Build the GUI 
    33153354        """ 
    3316         #try to load file at the start 
     3355        # try to load file at the start 
    33173356        self.open_file() 
    33183357        self.frame.build_gui() 
     
    33903429        # Return the suggested position and size for the application frame. 
    33913430        return (posX, posY), (customWidth, customHeight), is_maximized 
    3392  
    33933431 
    33943432    def display_splash_screen(self, parent, 
     
    34273465        return s_screen 
    34283466 
    3429  
    34303467    def on_close_splash_screen(self, event): 
    34313468        """ 
     
    34473484        """ 
    34483485        # Initialize the Frame object 
    3449         CHILD_FRAME.__init__(self, parent=parent, id=wx.ID_ANY, title=title, size=size) 
     3486        CHILD_FRAME.__init__(self, parent=parent, id=wx.ID_ANY, 
     3487                             title=title, size=size) 
    34503488        self.parent = parent 
    34513489        self.name = "Untitled" 
    34523490        self.batch_on = self.parent.batch_on 
    34533491        self.panel = panel 
    3454         if panel != None: 
     3492        if panel is not None: 
    34553493            self.set_panel(panel) 
    34563494        self.Show(False) 
  • src/sas/sasgui/perspectives/fitting/basepage.py

    r313c5c9 rc8e1996  
    1919 
    2020from sas.sasgui.guiframe.panel_base import PanelBase 
    21 from sas.sasgui.guiframe.utils import format_number, check_float, IdList, check_int 
     21from sas.sasgui.guiframe.utils import format_number, check_float, IdList, \ 
     22    check_int 
    2223from sas.sasgui.guiframe.events import PanelOnFocusEvent 
    2324from sas.sasgui.guiframe.events import StatusEvent 
     
    4243_QMAX_DEFAULT = 0.5 
    4344_NPTS_DEFAULT = 50 
    44 #Control panel width 
     45# Control panel width 
    4546if sys.platform.count("win32") > 0: 
    4647    PANEL_WIDTH = 450 
     
    5758    This class provide general structure of  fitpanel page 
    5859    """ 
    59     ## Internal name for the AUI manager 
     60    # Internal name for the AUI manager 
    6061    window_name = "Fit Page" 
    61     ## Title to appear on top of the window 
     62    # Title to appear on top of the window 
    6263    window_caption = "Fit Page " 
    6364 
     
    7576        PanelBase.__init__(self, parent) 
    7677        self.SetupScrolling() 
    77         #Set window's font size 
     78        # Set window's font size 
    7879        self.SetWindowVariant(variant=FONT_VARIANT) 
    7980        self.SetBackgroundColour(color) 
    8081 
    8182        self._ids = iter(self._id_pool) 
    82         ## parent of the page 
     83        # parent of the page 
    8384        self.parent = parent 
    84         ## manager is the fitting plugin 
    85         ## owner of the page (fitting plugin) 
     85        # manager is the fitting plugin 
     86        # owner of the page (fitting plugin) 
    8687        self.event_owner = None 
    87         ## current model 
     88        # current model 
    8889        self.model = None 
    8990        self.m_name = None 
    9091        self.index_model = None 
    9192        self.panel = None 
    92         ## data 
     93        # data 
    9394        self.data = None 
    94         #list of available data 
     95        # list of available data 
    9596        self.data_list = [] 
    9697        self.mask = None 
    9798        self.uid = wx.NewId() 
    9899        self.graph_id = None 
    99         #Q range for data set 
     100        # Q range for data set 
    100101        self.qmin_data_set = numpy.inf 
    101102        self.qmax_data_set = None 
    102103        self.npts_data_set = 0 
    103         ## Q range 
     104        # Q range 
    104105        self.qmin = None 
    105106        self.qmax = None 
     
    107108        self.qmin_x = _QMIN_DEFAULT 
    108109        self.npts_x = _NPTS_DEFAULT 
    109         ## total number of point: float 
     110        # total number of point: float 
    110111        self.npts = None 
    111112        self.num_points = None 
    112         ## smear default 
     113        # smear default 
    113114        self.current_smearer = None 
    114         ## 2D smear accuracy default 
     115        # 2D smear accuracy default 
    115116        self.smear2d_accuracy = 'Low' 
    116         ## slit smear: 
     117        # slit smear: 
    117118        self.dxl = None 
    118119        self.dxw = None 
    119         ## pinhole smear 
     120        # pinhole smear 
    120121        self.dx_min = None 
    121122        self.dx_max = None 
    122         ##semar attrbs 
     123        # smear attrbs 
    123124        self.enable_smearer = None 
    124125        self.disable_smearer = None 
    125126        self.pinhole_smearer = None 
    126127        self.slit_smearer = None 
    127         ##weigth attrbs 
     128        # weight attrbs 
    128129        self.dI_noweight = None 
    129130        self.dI_didata = None 
    130131        self.dI_sqrdata = None 
    131132        self.dI_idata = None 
    132         ##other attrbs 
     133        # other attrbs 
    133134        self.dq_l = None 
    134135        self.dq_r = None 
     
    149150        self.disp_cb_dict = {} 
    150151 
    151         #self.state = PageState(parent=parent) 
    152         ## dictionary containing list of models 
     152        # self.state = PageState(parent=parent) 
     153        # dictionary containing list of models 
    153154        self.model_list_box = {} 
    154155 
    155         ## Data member to store the dispersion object created 
     156        # Data member to store the dispersion object created 
    156157        self._disp_obj_dict = {} 
    157         ## selected parameters to apply dispersion 
     158        # selected parameters to apply dispersion 
    158159        self.disp_cb_dict = {} 
    159         ## smearer object 
     160        # smearer object 
    160161        self.enable2D = False 
    161162        self._has_magnetic = False 
     
    165166        self.structurebox = None 
    166167        self.categorybox = None 
    167         ##list of model parameters. each item must have same length 
    168         ## each item related to a given parameters 
    169         ##[cb state, name, value, "+/-", error of fit, min, max , units] 
     168        # list of model parameters. each item must have same length 
     169        # each item related to a given parameters 
     170        # [cb state, name, value, "+/-", error of fit, min, max , units] 
    170171        self.parameters = [] 
    171172        # non-fittable parameter whose value is astring 
    172173        self.str_parameters = [] 
    173         ## list of parameters to fit , must be like self.parameters 
     174        # list of parameters to fit , must be like self.parameters 
    174175        self.param_toFit = [] 
    175         ## list of looking like parameters but with non fittable parameters info 
     176        # list of looking like parameters but with non fittable parameters info 
    176177        self.fixed_param = [] 
    177         ## list of looking like parameters but with  fittable parameters info 
     178        # list of looking like parameters but with  fittable parameters info 
    178179        self.fittable_param = [] 
    179         ##list of dispersion parameters 
     180        # list of dispersion parameters 
    180181        self.disp_list = [] 
    181182        self.disp_name = "" 
    182183 
    183         ## list of orientation parameters 
     184        # list of orientation parameters 
    184185        self.orientation_params = [] 
    185186        self.orientation_params_disp = [] 
     
    188189#       and this - commenting out on 4/8/2014 by PDB.  Remove once clear 
    189190#       it is pointless. 
    190 #        if self.model != None: 
     191#        if self.model is not None: 
    191192#            self.disp_list = self.model.getDispParamList() 
    192193        self.temp_multi_functional = False 
    193         ##enable model 2D draw 
     194        # enable model 2D draw 
    194195        self.enable2D = False 
    195         ## check that the fit range is correct to plot the model again 
     196        # check that the fit range is correct to plot the model again 
    196197        self.fitrange = True 
    197         ## Create memento to save the current state 
     198        # Create memento to save the current state 
    198199        self.state = PageState(parent=self.parent, 
    199200                               model=self.model, data=self.data) 
    200         ## flag to determine if state has change 
     201        # flag to determine if state has change 
    201202        self.state_change = False 
    202         ## save customized array 
     203        # save customized array 
    203204        self.values = {}   # type: Dict[str, List[float, ...]] 
    204205        self.weights = {}   # type: Dict[str, List[float, ...]] 
    205         ## retrieve saved state 
     206        # retrieve saved state 
    206207        self.number_saved_state = 0 
    207         ## dictionary of saved state 
     208        # dictionary of saved state 
    208209        self.saved_states = {} 
    209         ## Create context menu for page 
     210        # Create context menu for page 
    210211        self.popUpMenu = wx.Menu() 
    211212 
     
    220221        self.popUpMenu.AppendSeparator() 
    221222 
    222         ## Default locations 
     223        # Default locations 
    223224        self._default_save_location = os.getcwd() 
    224         ## save initial state on context menu 
    225         #self.onSave(event=None) 
     225        # save initial state on context menu 
     226        # self.onSave(event=None) 
    226227        self.Bind(wx.EVT_CONTEXT_MENU, self.onContextMenu) 
    227228 
     
    229230        self.Bind(wx.EVT_LEFT_DOWN, self.on_left_down) 
    230231 
    231         ## create the basic structure of the panel with empty sizer 
     232        # create the basic structure of the panel with empty sizer 
    232233        self.define_page_structure() 
    233         ## drawing Initial dispersion parameters sizer 
     234        # drawing Initial dispersion parameters sizer 
    234235        self.set_dispers_sizer() 
    235236 
    236         ## layout 
     237        # layout 
    237238        self.set_layout() 
    238239 
     
    260261                    self._create_default_1d_data() 
    261262 
    262             if self.model != None: 
     263            if self.model is not None: 
    263264                if not self.data.is_data: 
    264                     self._manager.page_finder[self.uid].set_fit_data(data=\ 
    265                                                                 [self.data]) 
     265                    self._manager.page_finder[self.uid].set_fit_data( 
     266                        data=[self.data]) 
    266267            self.on_smear_helper(update=True) 
    267268            self.state.enable_smearer = self.enable_smearer.GetValue() 
     
    325326        self.data.id = str(self.uid) + " data" 
    326327        self.data.group_id = str(self.uid) + " Model2D" 
    327         ## Default values 
     328        # Default values 
    328329        self.data.detector.append(Detector()) 
    329330        index = len(self.data.detector) - 1 
     
    342343        x = numpy.linspace(start=xmin, stop=xmax, num=qstep, endpoint=True) 
    343344        y = numpy.linspace(start=ymin, stop=ymax, num=qstep, endpoint=True) 
    344         ## use data info instead 
     345        # use data info instead 
    345346        new_x = numpy.tile(x, (len(y), 1)) 
    346347        new_y = numpy.tile(y, (len(x), 1)) 
     
    383384        Update menu1 on cliking the page tap 
    384385        """ 
    385         if self._manager.menu1 != None: 
    386             chain_menu = self._manager.menu1.FindItemById(\ 
     386        if self._manager.menu1 is not None: 
     387            chain_menu = self._manager.menu1.FindItemById( 
    387388                                                   self._manager.id_reset_flag) 
    388389            chain_menu.Enable(self.batch_on) 
    389390            sim_menu = self._manager.menu1.FindItemById(self._manager.id_simfit) 
    390391            flag = self.data.is_data\ 
    391                             and (self.model != None) 
     392                            and (self.model is not None) 
    392393            sim_menu.Enable(not self.batch_on and flag) 
    393394            batch_menu = \ 
     
    530531        fill sizer containing dispersity info 
    531532        """ 
    532         #print "==== entering set_dispers_sizer ===" 
     533        # print "==== entering set_dispers_sizer ===" 
    533534        self.sizer4.Clear(True) 
    534535        name = "Polydispersity and Orientational Distribution" 
     
    536537        box_description.SetForegroundColour(wx.BLUE) 
    537538        boxsizer1 = wx.StaticBoxSizer(box_description, wx.VERTICAL) 
    538         #---------------------------------------------------- 
     539        # ---------------------------------------------------- 
    539540        self.disable_disp = wx.RadioButton(self, wx.ID_ANY, 'Off', (10, 10), 
    540541                                           style=wx.RB_GROUP) 
     
    556557        self.Bind(wx.EVT_RADIOBUTTON, self._set_dipers_Param, 
    557558                  id=self.enable_disp.GetId()) 
    558         #MAC needs SetValue 
     559        # MAC needs SetValue 
    559560        self.disable_disp.SetValue(True) 
    560561        sizer_dispersion = wx.BoxSizer(wx.HORIZONTAL) 
     
    568569        sizer_dispersion.Add(self.disp_help_bt) 
    569570 
    570         ## fill a sizer for dispersion 
     571        # fill a sizer for dispersion 
    571572        boxsizer1.Add(sizer_dispersion, 0, 
    572573                      wx.TOP|wx.BOTTOM|wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 
     
    575576 
    576577        boxsizer1.Add(self.sizer4_4) 
    577         #----------------------------------------------------- 
     578        # ----------------------------------------------------- 
    578579        self.sizer4.Add(boxsizer1, 0, wx.EXPAND | wx.ALL, 10) 
    579580        self.sizer4_4.Layout() 
     
    582583 
    583584        self.Refresh() 
    584         ## saving the state of enable dispersity button 
     585        # saving the state of enable dispersity button 
    585586        self.state.enable_disp = self.enable_disp.GetValue() 
    586587        self.state.disable_disp = self.disable_disp.GetValue() 
     
    592593        """ 
    593594        menu = event.GetEventObject() 
    594         ## post help message for the selected model 
     595        # post help message for the selected model 
    595596        msg = menu.GetHelpString(event.GetId()) 
    596597        msg += " reloaded" 
     
    599600        name = menu.GetLabel(event.GetId()) 
    600601        self._on_select_model_helper() 
    601         if self.model != None: 
     602        if self.model is not None: 
    602603            self.m_name = self.model.name 
    603604        if name in self.saved_states.keys(): 
    604605            previous_state = self.saved_states[name] 
    605             ## reset state of checkbox,textcrtl  and  regular parameters value 
     606            # reset state of checkbox,textcrtl  and  regular parameters value 
    606607 
    607608            self.reset_page(previous_state) 
     
    626627        # Ask the user the location of the file to write to. 
    627628        path = None 
    628         if self.parent != None: 
     629        if self.parent is not None: 
    629630            self._default_save_location = \ 
    630631                        self._manager.parent._default_save_location 
     
    636637            self._default_save_location = os.path.dirname(path) 
    637638            self._manager.parent._default_save_location = \ 
    638                                 self._default_save_location 
     639                self._default_save_location 
    639640        else: 
    640641            return None 
     
    643644        # Make sure the ext included in the file name 
    644645        fName = os.path.splitext(path)[0] + extens 
    645         #the manager write the state into file 
     646        # the manager write the state into file 
    646647        self._manager.save_fit_state(filepath=fName, fitstate=new_state) 
    647648        return new_state 
     
    651652        Copy Parameter values to the clipboad 
    652653        """ 
    653         if event != None: 
     654        if event is not None: 
    654655            event.Skip() 
    655656        # It seems MAC needs wxCallAfter 
     
    667668        Paste Parameter values to the panel if possible 
    668669        """ 
    669         #if event != None: 
     670        # if event is not None: 
    670671        #    event.Skip() 
    671672        # It seems MAC needs wxCallAfter for the setvalues 
     
    673674        wx.CallAfter(self.get_paste) 
    674675        # messages depending on the flag 
    675         #self._copy_info(True) 
     676        # self._copy_info(True) 
    676677 
    677678    def _copy_info(self, flag): 
     
    682683        """ 
    683684        # messages depending on the flag 
    684         if flag == None: 
     685        if flag is None: 
    685686            msg = " Parameter values are copied to the clipboard..." 
    686687            infor = 'warning' 
     
    710711        save history of the data and model 
    711712        """ 
    712         if self.model == None: 
     713        if self.model is None: 
    713714            msg = "Can not bookmark; Please select Data and Model first..." 
    714715            wx.MessageBox(msg, 'Info') 
     
    716717        self.save_current_state() 
    717718        new_state = self.state.clone() 
    718         ##Add model state on context menu 
     719        # Add model state on context menu 
    719720        self.number_saved_state += 1 
    720721        current_time, current_date = self._get_time_stamp() 
    721         #name= self.model.name+"[%g]"%self.number_saved_state 
     722        # name= self.model.name+"[%g]"%self.number_saved_state 
    722723        name = "Fitting: %g]" % self.number_saved_state 
    723724        name += self.model.__class__.__name__ 
     
    725726        self.saved_states[name] = new_state 
    726727 
    727         ## Add item in the context menu 
     728        # Add item in the context menu 
    728729        msg = "Model saved at %s on %s" % (current_time, current_date) 
    729         ## post help message for the selected model 
     730        # post help message for the selected model 
    730731        msg += " Saved! right click on this page to retrieve this model" 
    731732        wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
     
    761762        """ 
    762763        try: 
    763             if path == None: 
     764            if path is None: 
    764765                status = " Selected Distribution was not loaded: %s" % path 
    765766                wx.PostEvent(self._manager.parent, 
     
    796797        Store current state 
    797798        """ 
    798         ## save model option 
    799         if self.model != None: 
     799        # save model option 
     800        if self.model is not None: 
    800801            self.disp_list = self.model.getDispParamList() 
    801802            self.state.disp_list = copy.deepcopy(self.disp_list) 
    802803            self.state.model = self.model.clone() 
    803804 
    804             #model combobox: complex code because of mac's silent error 
    805             if self.structurebox != None: 
     805            # model combobox: complex code because of mac's silent error 
     806            if self.structurebox is not None: 
    806807                if self.structurebox.IsShown(): 
    807808                    self.state.structurecombobox = 'None' 
    808809                    s_select = self.structurebox.GetSelection() 
    809810                    if s_select > 0: 
    810                         self.state.structurecombobox = self.structurebox.\ 
    811                         GetString(s_select) 
    812             if self.formfactorbox != None: 
     811                        self.state.structurecombobox = \ 
     812                            self.structurebox.GetString(s_select) 
     813            if self.formfactorbox is not None: 
    813814                f_select = self.formfactorbox.GetSelection() 
    814815                if f_select > 0: 
    815                     self.state.formfactorcombobox = self.formfactorbox.\ 
    816                     GetString(f_select) 
    817         if self.categorybox != None: 
     816                    self.state.formfactorcombobox = \ 
     817                        self.formfactorbox.GetString(f_select) 
     818        if self.categorybox is not None: 
    818819            cb_select = self.categorybox.GetSelection() 
    819820            if cb_select > 0: 
    820                 self.state.categorycombobox = self.categorybox.\ 
    821                 GetString(cb_select) 
     821                self.state.categorycombobox = \ 
     822                    self.categorybox.GetString(cb_select) 
    822823 
    823824        self.state.enable2D = copy.deepcopy(self.enable2D) 
    824825        self.state.values = copy.deepcopy(self.values) 
    825826        self.state.weights = copy.deepcopy(self.weights) 
    826         ## save data 
     827        # save data 
    827828        self.state.data = copy.deepcopy(self.data) 
    828829        self.state.qmax_x = self.qmax_x 
     
    859860            self.state.values = copy.deepcopy(self.values) 
    860861            self.state.weights = copy.deepcopy(self.weights) 
    861         ## save plotting range 
     862        # save plotting range 
    862863        self._save_plotting_range() 
    863864 
     
    869870        self.state.str_parameters = [] 
    870871 
    871         ## save checkbutton state and txtcrtl values 
     872        # save checkbutton state and txtcrtl values 
    872873        self._copy_parameters_state(self.str_parameters, 
    873874                                    self.state.str_parameters) 
     
    881882                                    self.state.fittable_param) 
    882883        self._copy_parameters_state(self.fixed_param, self.state.fixed_param) 
    883         #save chisqr 
     884        # save chisqr 
    884885        self.state.tcChi = self.tcChi.GetValue() 
    885886 
     
    888889        Store current state for fit_page 
    889890        """ 
    890         ## save model option 
    891         if self.model != None: 
     891        # save model option 
     892        if self.model is not None: 
    892893            self.disp_list = self.model.getDispParamList() 
    893894            self.state.disp_list = copy.deepcopy(self.disp_list) 
     
    897898        self.state.values = copy.deepcopy(self.values) 
    898899        self.state.weights = copy.deepcopy(self.weights) 
    899         ## save data 
     900        # save data 
    900901        self.state.data = copy.deepcopy(self.data) 
    901902 
     
    918919        self.state.dI_sqrdata = copy.deepcopy(self.dI_sqrdata.GetValue()) 
    919920        self.state.dI_idata = copy.deepcopy(self.dI_idata.GetValue()) 
    920         if hasattr(self, "disp_box") and self.disp_box != None: 
     921        if hasattr(self, "disp_box") and self.disp_box is not None: 
    921922            self.state.disp_box = self.disp_box.GetCurrentSelection() 
    922923 
    923924            if len(self.disp_cb_dict) > 0: 
    924925                for k, v in self.disp_cb_dict.iteritems(): 
    925                     if v == None: 
     926                    if v is None: 
    926927                        self.state.disp_cb_dict[k] = v 
    927928                    else: 
     
    937938            self.state.weights = copy.deepcopy(self.weights) 
    938939 
    939         ## save plotting range 
     940        # save plotting range 
    940941        self._save_plotting_range() 
    941942 
    942         ## save checkbutton state and txtcrtl values 
     943        # save checkbutton state and txtcrtl values 
    943944        self._copy_parameters_state(self.orientation_params, 
    944945                                    self.state.orientation_params) 
     
    959960            msg = "Please load Data and select Model to start..." 
    960961            wx.MessageBox(msg, 'Info') 
    961             return  True 
     962            return True 
    962963 
    963964    def set_model_state(self, state): 
     
    968969        self.disp_list = state.disp_list 
    969970 
    970         ## fill model combobox 
     971        # fill model combobox 
    971972        self._show_combox_helper() 
    972         #select the current model 
     973        # select the current model 
    973974        try: 
    974975            # to support older version 
     
    10091010        self.structurebox.SetSelection(structfactor_pos) 
    10101011 
    1011         if state.multi_factor != None: 
     1012        if state.multi_factor is not None: 
    10121013            self.multifactorbox.SetSelection(state.multi_factor) 
    10131014 
    1014         ## reset state of checkbox,textcrtl  and  regular parameters value 
     1015        # reset state of checkbox,textcrtl  and  regular parameters value 
    10151016        self._reset_parameters_state(self.orientation_params_disp, 
    10161017                                     state.orientation_params_disp) 
     
    10201021                                     state.str_parameters) 
    10211022        self._reset_parameters_state(self.parameters, state.parameters) 
    1022         ## display dispersion info layer 
     1023        # display dispersion info layer 
    10231024        self.enable_disp.SetValue(state.enable_disp) 
    10241025        self.disable_disp.SetValue(state.disable_disp) 
    10251026 
    1026         if hasattr(self, "disp_box") and self.disp_box != None: 
     1027        if hasattr(self, "disp_box") and self.disp_box is not None: 
    10271028            self.disp_box.SetSelection(state.disp_box) 
    10281029            n = self.disp_box.GetCurrentSelection() 
     
    10361037 
    10371038                    if hasattr(self.disp_cb_dict[item], "SetValue"): 
    1038                         self.disp_cb_dict[item].SetValue(\ 
     1039                        self.disp_cb_dict[item].SetValue( 
    10391040                                                    state.disp_cb_dict[item]) 
    10401041                        # Create the dispersion objects 
    10411042                        disp_model = POLYDISPERSITY_MODELS['array']() 
    10421043                        if hasattr(state, "values") and \ 
    1043                                  self.disp_cb_dict[item].GetValue() == True: 
     1044                                 self.disp_cb_dict[item].GetValue() is True: 
    10441045                            if len(state.values) > 0: 
    10451046                                self.values = state.values 
     
    10521053                        self._disp_obj_dict[item] = disp_model 
    10531054                        # Set the new model as the dispersion object 
    1054                         #for the selected parameter 
     1055                        # for the selected parameter 
    10551056                        self.model.set_dispersion(item, disp_model) 
    10561057 
     
    10621063                for item in keys: 
    10631064                    if item in self.disp_list and \ 
    1064                         not item in self.model.details: 
     1065                            item not in self.model.details: 
    10651066                        self.model.details[item] = ["", None, None] 
    10661067                self.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
    10671068                self.state.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
    1068         ## smearing info  restore 
     1069        # smearing info  restore 
    10691070        if hasattr(self, "enable_smearer"): 
    1070             ## set smearing value whether or not the data 
    1071             #contain the smearing info 
     1071            # set smearing value whether or not the data 
     1072            # contain the smearing info 
    10721073            self.enable_smearer.SetValue(state.enable_smearer) 
    10731074            self.disable_smearer.SetValue(state.disable_smearer) 
     
    10811082        self.dI_idata.SetValue(state.dI_idata) 
    10821083 
    1083         ## we have two more options for smearing 
     1084        # we have two more options for smearing 
    10841085        if self.pinhole_smearer.GetValue(): 
    10851086            self.onPinholeSmear(event=None) 
     
    10871088            self.onSlitSmear(event=None) 
    10881089 
    1089         ## reset state of checkbox,textcrtl  and dispersity parameters value 
     1090        # reset state of checkbox,textcrtl  and dispersity parameters value 
    10901091        self._reset_parameters_state(self.fittable_param, state.fittable_param) 
    10911092        self._reset_parameters_state(self.fixed_param, state.fixed_param) 
    10921093 
    1093         ## draw the model with previous parameters value 
     1094        # draw the model with previous parameters value 
    10941095        self._onparamEnter_helper() 
    10951096        self.select_param(event=None) 
    1096         #Save state_fit 
     1097        # Save state_fit 
    10971098        self.save_current_state_fit() 
    10981099        self._lay_out() 
     
    11081109                if state.formfactorcombobox in list_item: 
    11091110                    return self.categorybox.Items.index(key) 
     1111        return 0 
    11101112 
    11111113    def reset_page_helper(self, state): 
     
    11181120            state of the graphic interface 
    11191121        """ 
    1120         if state == None: 
     1122        if state is None: 
    11211123            return 
    11221124        # set data, etc. from the state 
     
    11241126        data = state.data 
    11251127 
    1126         if data == None: 
     1128        if data is None: 
    11271129            data_min = state.qmin 
    11281130            data_max = state.qmax 
     
    11481150        self.disp_list = state.disp_list 
    11491151 
    1150         ## fill model combobox 
     1152        # fill model combobox 
    11511153        self._show_combox_helper() 
    1152         #select the current model 
     1154        # select the current model 
    11531155        try: 
    11541156            # to support older version 
    11551157            category_pos = int(state.categorycombobox) 
    11561158        except: 
    1157             state.formfactorcombobox = unicode(state.formfactorcombobox.lower()) 
     1159            state.formfactorcombobox = state.formfactorcombobox.lower() 
     1160            state.formfactorcombobox = \ 
     1161                state.formfactorcombobox.replace('model', '') 
     1162            state.formfactorcombobox = unicode(state.formfactorcombobox) 
    11581163            state.categorycombobox = unicode(state.categorycombobox) 
    1159             category_pos = 0 
    11601164            if state.categorycombobox in self.categorybox.Items: 
    11611165                category_pos = self.categorybox.Items.index( 
     
    11801184        self.formfactorbox.Select(formfactor_pos) 
    11811185 
     1186        structfactor_pos = 0 
    11821187        try: 
    11831188            # to support older version 
     
    11851190        except: 
    11861191            if state.structurecombobox is not None: 
    1187                 structfactor_pos = 0 
    11881192                state.structurecombobox = unicode(state.structurecombobox) 
    11891193                for ind_struct in range(self.structurebox.GetCount()): 
    11901194                    if self.structurebox.GetString(ind_struct) == \ 
    1191                                                         (state.structurecombobox): 
     1195                                                    (state.structurecombobox): 
    11921196                        structfactor_pos = int(ind_struct) 
    11931197                        break 
     
    11951199        self.structurebox.SetSelection(structfactor_pos) 
    11961200 
    1197         if state.multi_factor != None: 
     1201        if state.multi_factor is not None: 
    11981202            self.multifactorbox.SetSelection(state.multi_factor) 
    11991203 
    1200         #draw the panel according to the new model parameter 
     1204        # draw the panel according to the new model parameter 
    12011205        self._on_select_model(event=None) 
    12021206 
    12031207        # take care of 2D button 
    1204         if data == None and self.model_view.IsEnabled(): 
     1208        if data is None and self.model_view.IsEnabled(): 
    12051209            if self.enable2D: 
    12061210                self.model_view.SetLabel("2D Mode") 
     
    12081212                self.model_view.SetLabel("1D Mode") 
    12091213 
    1210         ## reset state of checkbox,textcrtl  and  regular parameters value 
     1214        # reset state of checkbox,textcrtl  and  regular parameters value 
    12111215        self._reset_parameters_state(self.orientation_params_disp, 
    12121216                                     state.orientation_params_disp) 
     
    12161220                                     state.str_parameters) 
    12171221        self._reset_parameters_state(self.parameters, state.parameters) 
    1218         ## display dispersion info layer 
     1222        # display dispersion info layer 
    12191223        self.enable_disp.SetValue(state.enable_disp) 
    12201224        self.disable_disp.SetValue(state.disable_disp) 
     
    12241228            self._set_dipers_Param(event=None) 
    12251229            self._reset_page_disp_helper(state) 
    1226         ##plotting range restore 
     1230        # plotting range restore 
    12271231        self._reset_plotting_range(state) 
    1228         ## smearing info  restore 
     1232        # smearing info  restore 
    12291233        if hasattr(self, "enable_smearer"): 
    1230             ## set smearing value whether or not the data 
    1231             #contain the smearing info 
     1234            # set smearing value whether or not the data 
     1235            # contain the smearing info 
    12321236            self.enable_smearer.SetValue(state.enable_smearer) 
    12331237            self.disable_smearer.SetValue(state.disable_smearer) 
     
    12471251            self.dI_idata.SetValue(False) 
    12481252 
    1249         ## we have two more options for smearing 
     1253        # we have two more options for smearing 
    12501254        if self.pinhole_smearer.GetValue(): 
    12511255            self.dx_min = state.dx_min 
    12521256            self.dx_max = state.dx_max 
    1253             if self.dx_min != None: 
     1257            if self.dx_min is not None: 
    12541258                self.smear_pinhole_min.SetValue(str(self.dx_min)) 
    1255             if self.dx_max != None: 
     1259            if self.dx_max is not None: 
    12561260                self.smear_pinhole_max.SetValue(str(self.dx_max)) 
    12571261            self.onPinholeSmear(event=None) 
     
    12591263            self.dxl = state.dxl 
    12601264            self.dxw = state.dxw 
    1261             if self.dxl != None: 
     1265            if self.dxl is not None: 
    12621266                self.smear_slit_height.SetValue(str(self.dxl)) 
    1263             if self.dxw != None: 
     1267            if self.dxw is not None: 
    12641268                self.smear_slit_width.SetValue(str(self.dxw)) 
    12651269            else: 
     
    12671271            self.onSlitSmear(event=None) 
    12681272 
    1269         ## reset state of checkbox,textcrtl  and dispersity parameters value 
     1273        # reset state of checkbox,textcrtl  and dispersity parameters value 
    12701274        self._reset_parameters_state(self.fittable_param, state.fittable_param) 
    12711275        self._reset_parameters_state(self.fixed_param, state.fixed_param) 
    12721276 
    1273         ## draw the model with previous parameters value 
     1277        # draw the model with previous parameters value 
    12741278        self._onparamEnter_helper() 
    1275         #reset the value of chisqr when not consistent with the value computed 
     1279        # reset the value of chisqr when not consistent with the value computed 
    12761280        self.tcChi.SetValue(str(self.state.tcChi)) 
    1277         ## reset context menu items 
     1281        # reset context menu items 
    12781282        self._reset_context_menu() 
    12791283 
    1280         ## set the value of the current state to the state given as parameter 
     1284        # set the value of the current state to the state given as parameter 
    12811285        self.state = state.clone() 
    12821286        self.state.m_name = self.m_name 
     
    12891293        for item in keys: 
    12901294            if item in self.disp_list and \ 
    1291                 not item in self.model.details: 
     1295                            item not in self.model.details: 
    12921296                self.model.details[item] = ["", None, None] 
    1293         #for k,v in self.state.disp_cb_dict.iteritems(): 
     1297        # for k,v in self.state.disp_cb_dict.iteritems(): 
    12941298        self.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
    12951299        self.state.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
     
    12981302 
    12991303        for key, disp_type in state._disp_obj_dict.iteritems(): 
    1300             #disp_model = disp 
     1304            # disp_model = disp 
    13011305            disp_model = POLYDISPERSITY_MODELS[disp_type]() 
    13021306            self._disp_obj_dict[key] = disp_model 
     
    13071311                self.model.set_dispersion(param_name, disp_model) 
    13081312                self.model._persistency_dict[key] = \ 
    1309                                  [state.values, state.weights] 
     1313                    [state.values, state.weights] 
    13101314            except Exception: 
    13111315                logging.error(traceback.format_exc()) 
    13121316            selection = self._find_polyfunc_selection(disp_model) 
    13131317            for list in self.fittable_param: 
    1314                 if list[1] == key and list[7] != None: 
     1318                if list[1] == key and list[7] is not None: 
    13151319                    list[7].SetSelection(selection) 
    13161320                    # For the array disp_model, set the values and weights 
     
    13411345        open a dialog file to selected the customized dispersity 
    13421346        """ 
    1343         if self.parent != None: 
     1347        if self.parent is not None: 
    13441348            self._default_save_location = \ 
    13451349                        self._manager.parent.get_save_location() 
     
    13601364        for name, _ in self.state.saved_states.iteritems(): 
    13611365            self.number_saved_state += 1 
    1362             ## Add item in the context menu 
     1366            # Add item in the context menu 
    13631367            wx_id = ids.next() 
    13641368            msg = 'Save model and state %g' % self.number_saved_state 
     
    13771381        save radiobutton containing the type model that can be selected 
    13781382        """ 
    1379         #self.state.shape_rbutton = self.shape_rbutton.GetValue() 
    1380         #self.state.shape_indep_rbutton = self.shape_indep_rbutton.GetValue() 
    1381         #self.state.struct_rbutton = self.struct_rbutton.GetValue() 
    1382         #self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 
     1383        # self.state.shape_rbutton = self.shape_rbutton.GetValue() 
     1384        # self.state.shape_indep_rbutton = self.shape_indep_rbutton.GetValue() 
     1385        # self.state.struct_rbutton = self.struct_rbutton.GetValue() 
     1386        # self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 
    13831387        self.state.structurecombobox = self.structurebox.GetLabel() 
    13841388        self.state.formfactorcombobox = self.formfactorbox.GetLabel() 
    13851389        self.state.categorycombobox = self.categorybox.GetLabel() 
    13861390 
    1387         ## post state to fit panel 
     1391        # post state to fit panel 
    13881392        event = PageInfoEvent(page=self) 
    13891393        wx.PostEvent(self.parent, event) 
     
    13971401        self.state.npts = self.npts_x 
    13981402 
    1399     def _onparamEnter_helper(self,is_modified = False): 
     1403    def _onparamEnter_helper(self, is_modified=False): 
    14001404        """ 
    14011405        check if values entered by the user are changed and valid to replot 
     
    14031407        """ 
    14041408        # Flag to register when a parameter has changed. 
    1405         #is_modified = False 
     1409        # is_modified = False 
    14061410        self.fitrange = True 
    14071411        is_2Ddata = False 
    1408         #self._undo.Enable(True) 
     1412        # self._undo.Enable(True) 
    14091413        # check if 2d data 
    14101414        if self.data.__class__.__name__ == "Data2D": 
    14111415            is_2Ddata = True 
    1412         if self.model != None: 
    1413             #Either we get a is_modified = True passed in because 
    1414             #_update_paramv_on_fit() has been called already or 
     1416        if self.model is not None: 
     1417            # Either we get a is_modified = True passed in because 
     1418            # _update_paramv_on_fit() has been called already or 
    14151419            # we need to check here ourselves. 
    14161420            if not is_modified: 
     
    14391443                self.fitrange = False 
    14401444 
    1441             ## if any value is modify draw model with new value 
     1445            # if any value is modify draw model with new value 
    14421446            if not self.fitrange: 
    1443                 #self.btFit.Disable() 
     1447                # self.btFit.Disable() 
    14441448                if is_2Ddata: 
    14451449                    self.btEditMask.Disable() 
     
    14551459                self.Refresh() 
    14561460 
    1457         #logging.info("is_modified flag set to %g",is_modified) 
     1461        # logging.info("is_modified flag set to %g",is_modified) 
    14581462        return is_modified 
    14591463 
     
    14621466        make sure that update param values just before the fitting 
    14631467        """ 
    1464         #flag for qmin qmax check values 
     1468        # flag for qmin qmax check values 
    14651469        flag = True 
    14661470        self.fitrange = True 
    14671471        is_modified = False 
    14681472 
    1469         #wx.PostEvent(self._manager.parent, StatusEvent(status=" \ 
    1470         #updating ... ",type="update")) 
    1471  
    1472         ##So make sure that update param values on_Fit. 
    1473         #self._undo.Enable(True) 
    1474         if self.model != None: 
     1473        # wx.PostEvent(self._manager.parent, StatusEvent(status=" \ 
     1474        # updating ... ",type="update")) 
     1475 
     1476        # So make sure that update param values on_Fit. 
     1477        # self._undo.Enable(True) 
     1478        if self.model is not None: 
    14751479            if self.Npts_total.GetValue() != self.Npts_fit.GetValue(): 
    14761480                if not self.data.is_data: 
    1477                     self._manager.page_finder[self.uid].set_fit_data(data=\ 
    1478                                                                 [self.data]) 
    1479             ##Check the values 
     1481                    self._manager.page_finder[self.uid].set_fit_data( 
     1482                        data=[self.data]) 
     1483            # Check the values 
    14801484            is_modified = (self._check_value_enter(self.fittable_param) 
    1481                             or self._check_value_enter(self.fixed_param) 
    1482                             or self._check_value_enter(self.parameters)) 
     1485                           or self._check_value_enter(self.fixed_param) 
     1486                           or self._check_value_enter(self.parameters)) 
    14831487 
    14841488            # If qmin and qmax have been modified, update qmin and qmax and 
     
    15211525                                              enable_smearer=enable_smearer, 
    15221526                                              draw=False) 
    1523                     if self.data != None: 
    1524                         index_data = ((self.qmin_x <= self.data.x) & \ 
     1527                    if self.data is not None: 
     1528                        index_data = ((self.qmin_x <= self.data.x) & 
    15251529                                      (self.data.x <= self.qmax_x)) 
    1526                         val = str(len(self.data.x[index_data == True])) 
     1530                        val = str(len(self.data.x[index_data is True])) 
    15271531                        self.Npts_fit.SetValue(val) 
    15281532                    else: 
     
    15441548            flag = False 
    15451549 
    1546         #For invalid q range, disable the mask editor and fit button, vs. 
     1550        # For invalid q range, disable the mask editor and fit button, vs. 
    15471551        if not self.fitrange: 
    15481552            if self._is_2D(): 
    15491553                self.btEditMask.Disable() 
    15501554        else: 
    1551             if self._is_2D() and  self.data.is_data and not self.batch_on: 
     1555            if self._is_2D() and self.data.is_data and not self.batch_on: 
    15521556                self.btEditMask.Enable(True) 
    15531557 
     
    15621566            logging.error(traceback.format_exc()) 
    15631567 
    1564         return flag,is_modified 
     1568        return flag, is_modified 
    15651569 
    15661570    def _reset_parameters_state(self, listtorestore, statelist): 
     
    15761580            item_page = listtorestore[j] 
    15771581            item_page_info = statelist[j] 
    1578             ##change the state of the check box for simple parameters 
    1579             if item_page[0] != None: 
     1582            # change the state of the check box for simple parameters 
     1583            if item_page[0] is not None: 
    15801584                item_page[0].SetValue(item_page_info[0]) 
    1581             if item_page[2] != None: 
     1585            if item_page[2] is not None: 
    15821586                item_page[2].SetValue(item_page_info[2]) 
    15831587                if item_page[2].__class__.__name__ == "ComboBox": 
     
    15851589                        fun_val = self.model.fun_list[item_page_info[2]] 
    15861590                        self.model.setParam(item_page_info[1], fun_val) 
    1587             if item_page[3] != None: 
    1588                 ## show or hide text +/- 
     1591            if item_page[3] is not None: 
     1592                # show or hide text +/- 
    15891593                if item_page_info[2]: 
    15901594                    item_page[3].Show(True) 
    15911595                else: 
    15921596                    item_page[3].Hide() 
    1593             if item_page[4] != None: 
    1594                 ## show of hide the text crtl for fitting error 
     1597            if item_page[4] is not None: 
     1598                # show of hide the text crtl for fitting error 
    15951599                if item_page_info[4][0]: 
    15961600                    item_page[4].Show(True) 
     
    15981602                else: 
    15991603                    item_page[3].Hide() 
    1600             if item_page[5] != None: 
    1601                 ## show of hide the text crtl for fitting error 
     1604            if item_page[5] is not None: 
     1605                # show of hide the text crtl for fitting error 
    16021606                item_page[5].Show(item_page_info[5][0]) 
    16031607                item_page[5].SetValue(item_page_info[5][1]) 
    16041608 
    1605             if item_page[6] != None: 
    1606                 ## show of hide the text crtl for fitting error 
     1609            if item_page[6] is not None: 
     1610                # show of hide the text crtl for fitting error 
    16071611                item_page[6].Show(item_page_info[6][0]) 
    16081612                item_page[6].SetValue(item_page_info[6][1]) 
     
    16201624            item_page = listtorestore[j] 
    16211625            item_page_info = statelist[j] 
    1622             ##change the state of the check box for simple parameters 
    1623  
    1624             if item_page[0] != None: 
     1626            # change the state of the check box for simple parameters 
     1627 
     1628            if item_page[0] is not None: 
    16251629                item_page[0].SetValue(format_number(item_page_info[0], True)) 
    16261630 
    1627             if item_page[2] != None: 
     1631            if item_page[2] is not None: 
    16281632                param_name = item_page_info[1] 
    16291633                value = item_page_info[2] 
     
    16481652 
    16491653            checkbox_state = None 
    1650             if item[0] != None: 
     1654            if item[0] is not None: 
    16511655                checkbox_state = item[0].GetValue() 
    16521656            parameter_name = item[1] 
    16531657            parameter_value = None 
    1654             if item[2] != None: 
     1658            if item[2] is not None: 
    16551659                parameter_value = item[2].GetValue() 
    16561660            static_text = None 
    1657             if item[3] != None: 
     1661            if item[3] is not None: 
    16581662                static_text = item[3].IsShown() 
    16591663            error_value = None 
    16601664            error_state = None 
    1661             if item[4] != None: 
     1665            if item[4] is not None: 
    16621666                error_value = item[4].GetValue() 
    16631667                error_state = item[4].IsShown() 
     
    16651669            min_value = None 
    16661670            min_state = None 
    1667             if item[5] != None: 
     1671            if item[5] is not None: 
    16681672                min_value = item[5].GetValue() 
    16691673                min_state = item[5].IsShown() 
     
    16711675            max_value = None 
    16721676            max_state = None 
    1673             if item[6] != None: 
     1677            if item[6] is not None: 
    16741678                max_value = item[6].GetValue() 
    16751679                max_state = item[6].IsShown() 
    16761680            unit = None 
    1677             if item[7] != None: 
     1681            if item[7] is not None: 
    16781682                unit = item[7].GetLabel() 
    16791683 
     
    16831687                              [max_state, max_value], unit]) 
    16841688 
    1685  
    16861689    def _draw_model(self, update_chisqr=True, source='model'): 
    16871690        """ 
     
    17021705        :param chisqr: update chisqr value [bool] 
    17031706        """ 
    1704         #if self.check_invalid_panel(): 
     1707        # if self.check_invalid_panel(): 
    17051708        #    return 
    1706         if self.model != None: 
     1709        if self.model is not None: 
    17071710            temp_smear = None 
    17081711            if hasattr(self, "enable_smearer"): 
     
    17161719            is_2d = self._is_2D() 
    17171720            self._manager.draw_model(self.model, 
    1718                                     data=self.data, 
    1719                                     smearer=temp_smear, 
    1720                                     qmin=float(self.qmin_x), 
    1721                                     qmax=float(self.qmax_x), 
    1722                                     page_id=self.uid, 
    1723                                     toggle_mode_on=toggle_mode_on, 
    1724                                     state=self.state, 
    1725                                     enable2D=is_2d, 
    1726                                     update_chisqr=update_chisqr, 
    1727                                     source='model', 
    1728                                     weight=weight) 
     1721                                     data=self.data, 
     1722                                     smearer=temp_smear, 
     1723                                     qmin=float(self.qmin_x), 
     1724                                     qmax=float(self.qmax_x), 
     1725                                     page_id=self.uid, 
     1726                                     toggle_mode_on=toggle_mode_on, 
     1727                                     state=self.state, 
     1728                                     enable2D=is_2d, 
     1729                                     update_chisqr=update_chisqr, 
     1730                                     source='model', 
     1731                                     weight=weight) 
    17291732 
    17301733    def _on_show_sld(self, event=None): 
     
    17361739 
    17371740        from sas.sasgui.plottools import Data1D as pf_data1d 
    1738         #from sas.sasgui.perspectives.theory.profile_dialog import SLDPanel 
     1741        # from sas.sasgui.perspectives.theory.profile_dialog import SLDPanel 
    17391742        from sas.sasgui.guiframe.local_perspectives.plotting.profile_dialog \ 
    1740         import SLDPanel 
     1743            import SLDPanel 
    17411744        sld_data = pf_data1d(x, y) 
    17421745        sld_data.name = 'SLD' 
     
    17911794        self.structurebox.Disable() 
    17921795        self.formfactorbox.Clear() 
    1793         if mod_cat == None: 
     1796        if mod_cat is None: 
    17941797            return 
    17951798        m_list = [] 
     
    18531856        """ 
    18541857        tcrtl = event.GetEventObject() 
    1855         #Clear msg if previously shown. 
     1858        # Clear msg if previously shown. 
    18561859        msg = "" 
    18571860        wx.PostEvent(self.parent, StatusEvent(status=msg)) 
     
    18721875                    tcrtl.SetBackgroundColour("pink") 
    18731876                    msg = "Model Error: wrong value entered: %s" % \ 
    1874                                     sys.exc_info()[1] 
     1877                          sys.exc_info()[1] 
    18751878                    wx.PostEvent(self.parent, StatusEvent(status=msg)) 
    18761879                    return 
     
    18801883                wx.PostEvent(self.parent, StatusEvent(status=msg)) 
    18811884                return 
    1882             #Check if # of points for theory model are valid(>0). 
    1883             if self.npts != None: 
     1885            # Check if # of points for theory model are valid(>0). 
     1886            if self.npts is not None: 
    18841887                if check_float(self.npts): 
    18851888                    temp_npts = float(self.npts.GetValue()) 
     
    18971900        wx.PostEvent(self.parent, event) 
    18981901        self.state_change = False 
    1899         #Draw the model for a different range 
     1902        # Draw the model for a different range 
    19001903        if not self.data.is_data: 
    19011904            self.create_default_data() 
     
    19081911 
    19091912        tcrtl = event.GetEventObject() 
    1910         #Clear msg if previously shown. 
     1913        # Clear msg if previously shown. 
    19111914        msg = "" 
    19121915        wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
     
    19291932                    tcrtl.SetBackgroundColour("pink") 
    19301933                    msg = "Model Error: wrong value entered: %s" % \ 
    1931                                         sys.exc_info()[1] 
     1934                          sys.exc_info()[1] 
    19321935                    wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    19331936                    return 
     
    19371940                wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    19381941                return 
    1939             #Check if # of points for theory model are valid(>0). 
     1942            # Check if # of points for theory model are valid(>0). 
    19401943            if self.Npts_total.IsEditable(): 
    19411944                if check_float(self.Npts_total): 
     
    19551958        wx.PostEvent(self.parent, event) 
    19561959        self.state_change = False 
    1957         #Draw the model for a different range 
     1960        # Draw the model for a different range 
    19581961        self.create_default_data() 
    19591962        self._draw_model() 
     
    19631966        call back for model selection 
    19641967        """ 
    1965         ## reset dictionary containing reference to dispersion 
     1968        # reset dictionary containing reference to dispersion 
    19661969        self._disp_obj_dict = {} 
    19671970        self.disp_cb_dict = {} 
    19681971        self.temp_multi_functional = False 
    19691972        f_id = self.formfactorbox.GetCurrentSelection() 
    1970         #For MAC 
     1973        # For MAC 
    19711974        form_factor = None 
    19721975        if f_id >= 0: 
     
    19751978        if form_factor is None or \ 
    19761979            not hasattr(form_factor, 'is_form_factor') or \ 
    1977             not form_factor.is_form_factor: 
     1980                not form_factor.is_form_factor: 
    19781981            self.structurebox.Hide() 
    19791982            self.text2.Hide() 
     
    19871990            self.text2.Enable() 
    19881991 
    1989         if form_factor != None: 
     1992        if form_factor is not None: 
    19901993            # set multifactor for Mutifunctional models 
    19911994            if form_factor.is_multiplicity_model: 
     
    19951998                self._set_multfactor_combobox(multiplicity) 
    19961999                self._show_multfactor_combobox() 
    1997                 #ToDo: this info should be called directly from the model 
     2000                # ToDo: this info should be called directly from the model 
    19982001                text = form_factor.multiplicity_info[1]  # 'No. of Shells: ' 
    19992002 
     
    20042007 
    20052008                self.multi_factor = self.multifactorbox.GetClientData(m_id) 
    2006                 if self.multi_factor == None: 
     2009                if self.multi_factor is None: 
    20072010                    self.multi_factor = 0 
    20082011                self.multifactorbox.SetSelection(m_id) 
     
    20102013                text = '' 
    20112014                if form_factor.multiplicity_info[0] == \ 
    2012                                         len(form_factor.multiplicity_info[2]): 
     2015                        len(form_factor.multiplicity_info[2]): 
    20132016                    text = form_factor.multiplicity_info[2][self.multi_factor] 
    20142017                self.mutifactor_text1.SetLabel(text) 
     
    20312034        struct_factor = self.structurebox.GetClientData(s_id) 
    20322035 
    2033         if  struct_factor != None: 
     2036        if struct_factor is not None: 
    20342037            from sasmodels.sasview_model import MultiplicationModel 
    20352038            self.model = MultiplicationModel(form_factor(self.multi_factor), 
     
    20382041            if len(form_factor.non_fittable) > 0: 
    20392042                self.temp_multi_functional = True 
    2040         elif form_factor != None: 
     2043        elif form_factor is not None: 
    20412044            if self.multi_factor is not None: 
    20422045                self.model = form_factor(self.multi_factor) 
     
    20532056        else: 
    20542057            self._has_magnetic = False 
    2055         ## post state to fit panel 
     2058        # post state to fit panel 
    20562059        self.state.parameters = [] 
    20572060        self.state.model = self.model 
     
    20632066        self.Layout() 
    20642067 
    2065  
    20662068    def _validate_qrange(self, qmin_ctrl, qmax_ctrl): 
    20672069        """ 
     
    20832085            qmax = float(qmax_ctrl.GetValue()) 
    20842086            if qmin < qmax: 
    2085                 #Make sure to set both colours white. 
     2087                # Make sure to set both colours white. 
    20862088                qmin_ctrl.SetBackgroundColour(wx.WHITE) 
    20872089                qmin_ctrl.Refresh() 
     
    21032105        If valid, setvalues Npts_fit otherwise post msg. 
    21042106        """ 
    2105         #default flag 
     2107        # default flag 
    21062108        flag = True 
    21072109        # Theory 
    2108         if self.data == None and self.enable2D: 
     2110        if self.data is None and self.enable2D: 
    21092111            return flag 
    21102112        for data in self.data_list: 
     
    21122114            radius = numpy.sqrt(data.qx_data * data.qx_data + 
    21132115                                data.qy_data * data.qy_data) 
    2114             #get unmasked index 
     2116            # get unmasked index 
    21152117            index_data = (float(self.qmin.GetValue()) <= radius) & \ 
    2116                             (radius <= float(self.qmax.GetValue())) 
     2118                         (radius <= float(self.qmax.GetValue())) 
    21172119            index_data = (index_data) & (data.mask) 
    21182120            index_data = (index_data) & (numpy.isfinite(data.data)) 
     
    21302132                flag = False 
    21312133            else: 
    2132                 self.Npts_fit.SetValue(str(len(index_data[index_data == True]))) 
     2134                self.Npts_fit.SetValue(str(len(index_data[index_data is True]))) 
    21332135                self.fitrange = True 
    21342136 
     
    21402142        If valid, setvalues Npts_fit otherwise post msg. 
    21412143        """ 
    2142         #default flag 
     2144        # default flag 
    21432145        flag = True 
    21442146        # Theory 
    2145         if self.data == None: 
     2147        if self.data is None: 
    21462148            return flag 
    21472149        for data in self.data_list: 
    21482150            # q value from qx and qy 
    21492151            radius = data.x 
    2150             #get unmasked index 
     2152            # get unmasked index 
    21512153            index_data = (float(self.qmin.GetValue()) <= radius) & \ 
    2152                             (radius <= float(self.qmax.GetValue())) 
     2154                         (radius <= float(self.qmax.GetValue())) 
    21532155            index_data = (index_data) & (numpy.isfinite(data.y)) 
    21542156 
     
    21652167                flag = False 
    21662168            else: 
    2167                 self.Npts_fit.SetValue(str(len(index_data[index_data == True]))) 
     2169                self.Npts_fit.SetValue(str(len(index_data[index_data is True]))) 
    21682170                self.fitrange = True 
    21692171 
     
    21852187        is_modified = False 
    21862188        for item in list: 
    2187             #skip angle parameters for 1D 
     2189            # skip angle parameters for 1D 
    21882190            if not self.enable2D and item in self.orientation_params: 
    21892191                continue 
     
    22302232                    max_ctrl.SetBackgroundColour("pink") 
    22312233                    max_ctrl.Refresh() 
    2232                     #msg = "Invalid fit range for %s: min must be smaller than max"%name 
    2233                     #wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
     2234                    # msg = "Invalid fit range for %s: min must be smaller 
     2235                    # than max"%name 
     2236                    # wx.PostEvent(self._manager.parent, 
     2237                    # StatusEvent(status=msg)) 
    22342238                    continue 
    22352239 
     
    22492253                    # The configuration has changed but it won't change the 
    22502254                    # computed curve so no need to set is_modified to True 
    2251                     #is_modified = True 
     2255                    # is_modified = True 
    22522256                    self.model.details[name][1:3] = low, high 
    22532257 
     
    22672271        Redraw the model with the default dispersity (Gaussian) 
    22682272        """ 
    2269         ## On selction if no model exists. 
    2270         if self.model == None: 
     2273        # On selction if no model exists. 
     2274        if self.model is None: 
    22712275            self.disable_disp.SetValue(True) 
    22722276            msg = "Please select a Model first..." 
     
    22782282        self._reset_dispersity() 
    22792283 
    2280         if self.model == None: 
     2284        if self.model is None: 
    22812285            self.model_disp.Hide() 
    22822286            self.sizer4_4.Clear(True) 
     
    22842288 
    22852289        if self.enable_disp.GetValue(): 
    2286             ## layout for model containing no dispersity parameters 
     2290            # layout for model containing no dispersity parameters 
    22872291 
    22882292            self.disp_list = self.model.getDispParamList() 
     
    22912295                self._layout_sizer_noDipers() 
    22922296            else: 
    2293                 ## set gaussian sizer 
     2297                # set gaussian sizer 
    22942298                self._on_select_Disp(event=None) 
    22952299        else: 
    22962300            self.sizer4_4.Clear(True) 
    22972301 
    2298         ## post state to fit panel 
     2302        # post state to fit panel 
    22992303        self.save_current_state() 
    2300         if event != None: 
     2304        if event is not None: 
    23012305            event = PageInfoEvent(page=self) 
    23022306            wx.PostEvent(self.parent, event) 
    2303         #draw the model with the current dispersity 
    2304  
    2305         #Wojtek P, Oct 8, 2016: Calling draw_model seems to be unessecary. 
    2306         #By comenting it we save an extra Iq calculation 
    2307         #self._draw_model() 
    2308  
    2309         ## Need to use FitInside again here to replace the next four lines. 
    2310         ## Otherwised polydispersity off does not resize the scrollwindow. 
    2311         ## PDB Nov 28, 2015 
     2307        # draw the model with the current dispersity 
     2308 
     2309        # Wojtek P, Oct 8, 2016: Calling draw_model seems to be unessecary. 
     2310        # By comenting it we save an extra Iq calculation 
     2311        # self._draw_model() 
     2312 
     2313        # Need to use FitInside again here to replace the next four lines. 
     2314        # Otherwised polydispersity off does not resize the scrollwindow. 
     2315        # PDB Nov 28, 2015 
    23122316        self.FitInside() 
    23132317#        self.sizer4_4.Layout() 
     
    23532357        self.weights = {} 
    23542358 
    2355         #from sas.models.dispersion_models import GaussianDispersion 
     2359        # from sas.models.dispersion_models import GaussianDispersion 
    23562360        from sasmodels.weights import GaussianDispersion 
    23572361        if len(self.disp_cb_dict) == 0: 
     
    23742378                    logging.error(traceback.format_exc()) 
    23752379 
    2376         ## save state into 
     2380        # save state into 
    23772381        self.save_current_state() 
    23782382        self.Layout() 
     
    23862390        self._set_sizer_dispersion() 
    23872391 
    2388         ## Redraw the model 
     2392        # Redraw the model 
    23892393        self._draw_model() 
    2390         #self._undo.Enable(True) 
     2394        # self._undo.Enable(True) 
    23912395        event = PageInfoEvent(page=self) 
    23922396        wx.PostEvent(self.parent, event) 
     
    24032407        """ 
    24042408        # get ready for new event 
    2405         if event != None: 
     2409        if event is not None: 
    24062410            event.Skip() 
    24072411        # Get event object 
     
    24162420            dispersity = disp_box.GetClientData(selection) 
    24172421 
    2418             #disp_model =  GaussianDispersion() 
     2422            # disp_model =  GaussianDispersion() 
    24192423            disp_model = dispersity() 
    24202424            # Get param names to reset the values of the param 
     
    24292433            else: 
    24302434                self._del_array_values(name1) 
    2431                 #self._reset_array_disp(param_name) 
     2435                # self._reset_array_disp(param_name) 
    24322436                self._disp_obj_dict[name1] = disp_model 
    24332437                self.model.set_dispersion(param_name, disp_model) 
     
    25132517        if path is None: 
    25142518            self.disp_cb_dict[name].SetValue(False) 
    2515             #self.noDisper_rbox.SetValue(True) 
     2519            # self.noDisper_rbox.SetValue(True) 
    25162520            return 
    25172521        self._default_save_location = os.path.dirname(path) 
    2518         if self._manager != None: 
     2522        if self._manager is not None: 
    25192523            self._manager.parent._default_save_location = \ 
    25202524                             self._default_save_location 
     
    25332537        wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
    25342538        self._set_array_disp_model(name=name, disp=disp, 
    2535                                     values=values, weights=weights) 
     2539                                   values=values, weights=weights) 
    25362540        return basename 
    25372541 
     
    25522556        # Store the object to make it persist outside the 
    25532557        # scope of this method 
    2554         #TODO: refactor model to clean this up? 
     2558        # TODO: refactor model to clean this up? 
    25552559        self.state.values = {} 
    25562560        self.state.weights = {} 
     
    25592563 
    25602564        # Set the new model as the dispersion object for the 
    2561         #selected parameter 
    2562         #self.model.set_dispersion(p, disp_model) 
     2565        # selected parameter 
     2566        # self.model.set_dispersion(p, disp_model) 
    25632567        # Store a reference to the weights in the model object 
    2564         #so that 
     2568        # so that 
    25652569        # it's not lost when we use the model within another thread. 
    25662570        self.state.model = self.model.clone() 
    25672571        self.model._persistency_dict[name.split('.')[0]] = \ 
    2568                                         [values, weights] 
     2572            [values, weights] 
    25692573        self.state.model._persistency_dict[name.split('.')[0]] = \ 
    2570                                         [values, weights] 
     2574            [values, weights] 
    25712575 
    25722576    def _del_array_values(self, name=None): 
     
    26062610            Layout after self._draw_model 
    26072611        """ 
    2608         if ON_MAC == True: 
     2612        if ON_MAC is True: 
    26092613            time.sleep(1) 
    26102614 
     
    26282632        """ 
    26292633        flag = True 
    2630         ##For 3 different cases: Data2D, Data1D, and theory 
    2631         if self.model == None: 
     2634        # For 3 different cases: Data2D, Data1D, and theory 
     2635        if self.model is None: 
    26322636            msg = "Please select a model first..." 
    26332637            wx.MessageBox(msg, 'Info') 
     
    26412645            self.qmin_x = data_min 
    26422646            self.qmax_x = math.sqrt(x * x + y * y) 
    2643             #self.data.mask = numpy.ones(len(self.data.data),dtype=bool) 
     2647            # self.data.mask = numpy.ones(len(self.data.data),dtype=bool) 
    26442648            # check smearing 
    26452649            if not self.disable_smearer.GetValue(): 
    2646                 ## set smearing value whether or 
     2650                # set smearing value whether or 
    26472651                # not the data contain the smearing info 
    26482652                if self.pinhole_smearer.GetValue(): 
     
    26512655                    flag = True 
    26522656 
    2653         elif self.data == None: 
     2657        elif self.data is None: 
    26542658            self.qmin_x = _QMIN_DEFAULT 
    26552659            self.qmax_x = _QMAX_DEFAULT 
     
    26622666            # check smearing 
    26632667            if not self.disable_smearer.GetValue(): 
    2664                 ## set smearing value whether or 
     2668                # set smearing value whether or 
    26652669                # not the data contain the smearing info 
    26662670                if self.slit_smearer.GetValue(): 
     
    26732677            flag = False 
    26742678 
    2675         if flag == False: 
     2679        if flag is False: 
    26762680            msg = "Cannot Plot :Must enter a number!!!  " 
    26772681            wx.PostEvent(self._manager.parent, StatusEvent(status=msg)) 
     
    26902694        self.state.qmax = self.qmax_x 
    26912695 
    2692         #reset the q range values 
     2696        # reset the q range values 
    26932697        self._reset_plotting_range(self.state) 
    26942698        self._draw_model() 
     
    27312735                logging.error(traceback.format_exc()) 
    27322736        # Make sure the resduals plot goes to the last 
    2733         if res_item != None: 
     2737        if res_item is not None: 
    27342738            graphs.append(res_item[0]) 
    27352739            canvases.append(res_item[1]) 
     
    27502754        the # to the browser. 
    27512755 
    2752         :param evt: on Help Button pressed event 
    2753         """ 
    2754  
    2755         if self.model != None: 
     2756        :param event: on Help Button pressed event 
     2757        """ 
     2758 
     2759        if self.model is not None: 
    27562760            name = self.formfactorbox.GetValue() 
    2757             _TreeLocation = 'user/models/'+ name.lower()+'.html' 
     2761            _TreeLocation = 'user/models/' + name.lower()+'.html' 
    27582762            _doc_viewer = DocumentationWindow(self, wx.ID_ANY, _TreeLocation, 
    27592763                                              "", name + " Help") 
     
    27622766            _doc_viewer = DocumentationWindow(self, wx.ID_ANY, _TreeLocation, 
    27632767                                              "", "General Model Help") 
    2764  
    27652768 
    27662769    def on_model_help_clicked(self, event): 
     
    27742777        give the message that none is available. 
    27752778 
    2776         :param evt: on Description Button pressed event 
    2777         """ 
    2778  
    2779         if self.model == None: 
     2779        :param event: on Description Button pressed event 
     2780        """ 
     2781 
     2782        if self.model is None: 
    27802783            name = 'index.html' 
    27812784        else: 
     
    27842787        msg = 'Model description:\n' 
    27852788        info = "Info" 
    2786         if self.model != None: 
    2787 #                frame.Destroy() 
     2789        if self.model is not None: 
     2790            # frame.Destroy() 
    27882791            if str(self.model.description).rstrip().lstrip() == '': 
    27892792                msg += "Sorry, no information is available for this model." 
     
    28542857            for key in self.model.magnetic_params: 
    28552858                if key.count('M0') > 0: 
    2856                     #reset mag value to zero fo safety 
     2859                    # reset mag value to zero fo safety 
    28572860                    self.model.setParam(key, 0.0) 
    28582861 
    28592862        self.Show(False) 
    28602863        self.set_model_param_sizer(self.model) 
    2861         #self._set_sizer_dispersion() 
     2864        # self._set_sizer_dispersion() 
    28622865        self.state.magnetic_on = self.magnetic_on 
    28632866        self.SetupScrolling() 
     
    28742877        running "file:///...." 
    28752878 
    2876         :param evt: Triggers on clicking ? in polydispersity box 
     2879        :param event: Triggers on clicking ? in polydispersity box 
    28772880        """ 
    28782881 
     
    29122915        content = 'sasview_parameter_values:' 
    29132916        # Do it if params exist 
    2914         if  self.parameters != []: 
     2917        if self.parameters: 
    29152918 
    29162919            # go through the parameters 
     
    29562959 
    29572960        # Do it if params exist 
    2958         if  self.parameters != []: 
     2961        if self.parameters: 
    29592962 
    29602963            for param in self.parameters: 
    2961                 content += param[1] #parameter name 
     2964                content += param[1]  # parameter name 
    29622965                content += tab 
    29632966                content += param[1] + "_err" 
     
    29662969            content += crlf 
    29672970 
    2968             #row of values and errors... 
     2971            # row of values and errors... 
    29692972            for param in self.parameters: 
    2970                 content += param[2].GetValue() #value 
     2973                content += param[2].GetValue()  # value 
    29712974                content += tab 
    2972                 content += param[4].GetValue() #error 
     2975                content += param[4].GetValue()  # error 
    29732976                content += tab 
    29742977 
     
    29762979        else: 
    29772980            return False 
    2978  
    29792981 
    29802982    def get_copy_latex(self): 
     
    29983000 
    29993001        # Do it if params exist 
    3000         if  self.parameters != []: 
     3002        if self.parameters: 
    30013003 
    30023004            content += '{|' 
     
    30073009 
    30083010            for index, param in enumerate(self.parameters): 
    3009                 content += param[1].replace('_', '\_') #parameter name 
     3011                content += param[1].replace('_', '\_')  # parameter name 
    30103012                content += ' & ' 
    30113013                content += param[1].replace('_', '\_') + "\_err" 
     
    30153017            content += crlf 
    30163018 
    3017             #row of values and errors... 
     3019            # row of values and errors... 
    30183020            for index, param in enumerate(self.parameters): 
    3019                 content += param[2].GetValue() #parameter value 
     3021                content += param[2].GetValue()  # parameter value 
    30203022                content += ' & ' 
    3021                 content += param[4].GetValue() #parameter error 
     3023                content += param[4].GetValue()  # parameter error 
    30223024                if index < len(self.parameters) - 1: 
    30233025                    content += ' & ' 
     
    30303032        else: 
    30313033            return False 
    3032  
    30333034 
    30343035    def set_clipboard(self, content=None): 
     
    30773078            # 1D 
    30783079            else: 
    3079                 ## for 1D all parameters except orientation 
     3080                # for 1D all parameters except orientation 
    30803081                if not item[1] in orient_param: 
    30813082                    try: 
     
    31093110            except Exception: 
    31103111                logging.error(traceback.format_exc()) 
    3111             content += name + ',' + str(check) + ',' +\ 
    3112                     value + disfunc + ',' + bound_lo + ',' +\ 
    3113                     bound_hi + ':' 
     3112            content += name + ',' + str(check) + ',' + value + disfunc + ',' + \ 
     3113                       bound_lo + ',' + bound_hi + ':' 
    31143114 
    31153115        return content 
     
    31893189 
    31903190        # Do it if params exist 
    3191         if  self.parameters != []: 
     3191        if self.parameters: 
    31923192            # go through the parameters 
    31933193            self._get_paste_helper(self.parameters, 
     
    32373237                                pd = int(pd) 
    32383238                        except Exception: 
    3239                             #continue 
     3239                            # continue 
    32403240                            if not pd and pd != '': 
    32413241                                continue 
     
    32653265                    else: 
    32663266                        is_true = None 
    3267                     if is_true != None: 
     3267                    if is_true is not None: 
    32683268                        item[0].SetValue(is_true) 
    32693269            # 1D 
    32703270            else: 
    3271                 ## for 1D all parameters except orientation 
     3271                # for 1D all parameters except orientation 
    32723272                if not item[1] in orient_param: 
    32733273                    name = item[1] 
     
    32783278                        pd = value[0] 
    32793279                        if name.count('.') > 0: 
    3280                             # If this is parameter.width, then pd may be a floating 
    3281                             # point value or it may be an array distribution. 
    3282                             # Nothing to do for parameter.npts or parameter.nsigmas. 
     3280                            # If this is parameter.width, then pd may be a 
     3281                            # floating point value or it may be an array 
     3282                            # distribution. Nothing to do for parameter.npts or 
     3283                            # parameter.nsigmas. 
    32833284                            try: 
    32843285                                pd = float(pd) 
     
    32863287                                    pd = int(pd) 
    32873288                            except: 
    3288                                 #continue 
     3289                                # continue 
    32893290                                if not pd and pd != '': 
    32903291                                    continue 
     
    33143315                        else: 
    33153316                            is_true = None 
    3316                         if is_true != None: 
     3317                        if is_true is not None: 
    33173318                            item[0].SetValue(is_true) 
    33183319 
     
    33813382            logging.error(traceback.format_exc()) 
    33823383            print "Error in BasePage._paste_poly_help: %s" % \ 
    3383                                     sys.exc_info()[1] 
     3384                  sys.exc_info()[1] 
    33843385 
    33853386    def _set_disp_cb(self, isarray, item): 
     
    34473448        self.categorybox.Clear() 
    34483449        cat_list = sorted(self.master_category_dict.keys()) 
    3449         if not uncat_str in cat_list: 
     3450        if uncat_str not in cat_list: 
    34503451            cat_list.append(uncat_str) 
    34513452 
     
    34573458            self.categorybox.SetSelection(0) 
    34583459        else: 
    3459             self.categorybox.SetSelection(\ 
     3460            self.categorybox.SetSelection( 
    34603461                self.categorybox.GetSelection()) 
    3461         #self._on_change_cat(None) 
     3462        # self._on_change_cat(None) 
    34623463 
    34633464    def _on_change_cat(self, event): 
     
    34673468        self.model_name = None 
    34683469        category = self.categorybox.GetStringSelection() 
    3469         if category == None: 
     3470        if category is None: 
    34703471            return 
    34713472        self.model_box.Clear() 
     
    34783479        else: 
    34793480            for (model, enabled) in sorted(self.master_category_dict[category], 
    3480                                       key=lambda name: name[0]): 
     3481                                           key=lambda name: name[0]): 
    34813482                if(enabled): 
    34823483                    self.model_box.Append(model) 
     
    34873488        """ 
    34883489        # This should only be called once per fit tab 
    3489         #print "==== Entering _fill_model_sizer" 
    3490         ##Add model function Details button in fitpanel. 
    3491         ##The following 3 lines are for Mac. Let JHC know before modifying... 
     3490        # print "==== Entering _fill_model_sizer" 
     3491        # Add model function Details button in fitpanel. 
     3492        # The following 3 lines are for Mac. Let JHC know before modifying... 
    34923493        title = "Model" 
    34933494        self.formfactorbox = None 
     
    35213522        self._populate_listbox() 
    35223523        wx.EVT_COMBOBOX(self.categorybox, wx.ID_ANY, self._show_combox) 
    3523         #self.shape_rbutton = wx.RadioButton(self, wx.ID_ANY, 'Shapes', 
     3524        # self.shape_rbutton = wx.RadioButton(self, wx.ID_ANY, 'Shapes', 
    35243525        #                                     style=wx.RB_GROUP) 
    3525         #self.shape_indep_rbutton = wx.RadioButton(self, wx.ID_ANY, 
     3526        # self.shape_indep_rbutton = wx.RadioButton(self, wx.ID_ANY, 
    35263527        #                                          "Shape-Independent") 
    3527         #self.struct_rbutton = wx.RadioButton(self, wx.ID_ANY, 
     3528        # self.struct_rbutton = wx.RadioButton(self, wx.ID_ANY, 
    35283529        #                                     "Structure Factor ") 
    3529         #self.plugin_rbutton = wx.RadioButton(self, wx.ID_ANY, 
     3530        # self.plugin_rbutton = wx.RadioButton(self, wx.ID_ANY, 
    35303531        #                                     "Uncategorized") 
    35313532 
    3532         #self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
     3533        # self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
    35333534        #                   id=self.shape_rbutton.GetId()) 
    3534         #self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
     3535        # self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
    35353536        #                    id=self.shape_indep_rbutton.GetId()) 
    3536         #self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
     3537        # self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
    35373538        #                    id=self.struct_rbutton.GetId()) 
    3538         #self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
     3539        # self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
    35393540        #                    id=self.plugin_rbutton.GetId()) 
    3540         #MAC needs SetValue 
     3541        # MAC needs SetValue 
    35413542 
    35423543        show_cat_button = wx.Button(self, wx.ID_ANY, "Modify") 
    35433544        cat_tip = "Modify model categories \n" 
    35443545        cat_tip += "(also accessible from the menu bar)." 
    3545         show_cat_button.SetToolTip( wx.ToolTip(cat_tip) ) 
     3546        show_cat_button.SetToolTip(wx.ToolTip(cat_tip)) 
    35463547        show_cat_button.Bind(wx.EVT_BUTTON, self._on_modify_cat) 
    35473548        sizer_cat_box.Add(self.categorybox, 1, wx.RIGHT, 3) 
    3548         sizer_cat_box.Add((10,10)) 
     3549        sizer_cat_box.Add((10, 10)) 
    35493550        sizer_cat_box.Add(show_cat_button) 
    3550         #self.shape_rbutton.SetValue(True) 
     3551        # self.shape_rbutton.SetValue(True) 
    35513552 
    35523553        sizer_radiobutton = wx.GridSizer(2, 2, 5, 5) 
    3553         #sizer_radiobutton.Add(self.shape_rbutton) 
    3554         #sizer_radiobutton.Add(self.shape_indep_rbutton) 
    3555         sizer_radiobutton.Add((5,5)) 
     3554        # sizer_radiobutton.Add(self.shape_rbutton) 
     3555        # sizer_radiobutton.Add(self.shape_indep_rbutton) 
     3556        sizer_radiobutton.Add((5, 5)) 
    35563557        sizer_radiobutton.Add(self.model_view, 1, wx.RIGHT, 5) 
    3557         #sizer_radiobutton.Add(self.plugin_rbutton) 
    3558         #sizer_radiobutton.Add(self.struct_rbutton) 
    3559 #        sizer_radiobutton.Add((5,5)) 
     3558        # sizer_radiobutton.Add(self.plugin_rbutton) 
     3559        # sizer_radiobutton.Add(self.struct_rbutton) 
     3560        # sizer_radiobutton.Add((5,5)) 
    35603561        sizer_radiobutton.Add(self.model_help, 1, wx.RIGHT | wx.LEFT, 5) 
    3561 #        sizer_radiobutton.Add((5,5)) 
     3562        # sizer_radiobutton.Add((5,5)) 
    35623563        sizer_radiobutton.Add(self.model_func, 1, wx.RIGHT, 5) 
    35633564        sizer_cat.Add(sizer_cat_box, 1, wx.LEFT, 2.5) 
     
    35753576        self.formfactorbox = wx.ComboBox(self, wx.ID_ANY, style=wx.CB_READONLY) 
    35763577        self.formfactorbox.SetToolTip(wx.ToolTip("Select a Model")) 
    3577         if self.model != None: 
     3578        if self.model is not None: 
    35783579            self.formfactorbox.SetValue(self.model.name) 
    35793580        self.structurebox = wx.ComboBox(self, wx.ID_ANY, style=wx.CB_READONLY) 
     
    35843585        wx.EVT_COMBOBOX(self.structurebox, wx.ID_ANY, self._on_select_model) 
    35853586        wx.EVT_COMBOBOX(self.multifactorbox, wx.ID_ANY, self._on_select_model) 
    3586         ## check model type to show sizer 
    3587         if self.model != None: 
     3587        # check model type to show sizer 
     3588        if self.model is not None: 
    35883589            print "_set_model_sizer_selection: disabled." 
    3589             #self._set_model_sizer_selection(self.model) 
     3590            # self._set_model_sizer_selection(self.model) 
    35903591 
    35913592        sizer_selection.Add(self.text1) 
     
    36823683        """ 
    36833684 
     3685 
    36843686class ModelTextCtrl(wx.TextCtrl): 
    36853687    """ 
     
    36943696 
    36953697    """ 
    3696     ## Set to True when the mouse is clicked while whole string is selected 
     3698    # Set to True when the mouse is clicked while whole string is selected 
    36973699    full_selection = False 
    3698     ## Call back for EVT_SET_FOCUS events 
     3700    # Call back for EVT_SET_FOCUS events 
    36993701    _on_set_focus_callback = None 
    37003702 
     
    37183720            if set_focus_callback is None else set_focus_callback 
    37193721        self.Bind(wx.EVT_SET_FOCUS, self._on_set_focus) 
    3720         self.Bind(wx.EVT_KILL_FOCUS, self._silent_kill_focus \ 
    3721             if kill_focus_callback is None else kill_focus_callback) 
    3722         self.Bind(wx.EVT_TEXT_ENTER, parent._onparamEnter \ 
    3723             if text_enter_callback is None else text_enter_callback) 
     3722        self.Bind(wx.EVT_KILL_FOCUS, self._silent_kill_focus 
     3723        if kill_focus_callback is None else kill_focus_callback) 
     3724        self.Bind(wx.EVT_TEXT_ENTER, parent._onparamEnter 
     3725        if text_enter_callback is None else text_enter_callback) 
    37243726        if not ON_MAC: 
    3725             self.Bind(wx.EVT_LEFT_UP, self._highlight_text \ 
    3726                 if mouse_up_callback is None else mouse_up_callback) 
     3727            self.Bind(wx.EVT_LEFT_UP, self._highlight_text 
     3728            if mouse_up_callback is None else mouse_up_callback) 
    37273729 
    37283730    def _on_set_focus(self, event): 
     
    37643766 
    37653767        event.Skip() 
    3766         #pass 
     3768        # pass 
  • src/sas/sasgui/perspectives/fitting/fitpage.py

    r3bec50a rc8e1996  
    1414from sasmodels.weights import MODELS as POLYDISPERSITY_MODELS 
    1515 
    16 from sas.sasgui.guiframe.events import StatusEvent 
    17 from sas.sasgui.guiframe.events import NewPlotEvent 
    18 from sas.sasgui.guiframe.events import PlotQrangeEvent 
     16from sas.sasgui.guiframe.events import StatusEvent, NewPlotEvent, \ 
     17    PlotQrangeEvent 
    1918from sas.sasgui.guiframe.dataFitting import check_data_validity 
    20 from sas.sasgui.guiframe.utils import format_number 
    21 from sas.sasgui.guiframe.utils import check_float 
     19from sas.sasgui.guiframe.utils import format_number, check_float 
    2220from sas.sasgui.guiframe.documentation_window import DocumentationWindow 
     21 
     22from sas.sasgui.perspectives.fitting.basepage import BasicPage as BasicPage 
     23from sas.sasgui.perspectives.fitting.basepage import PageInfoEvent as \ 
     24    PageInfoEvent 
     25from sas.sascalc.data_util.qsmearing import smear_selection 
     26from .basepage import ModelTextCtrl 
    2327 
    2428(Chi2UpdateEvent, EVT_CHI2_UPDATE) = wx.lib.newevent.NewEvent() 
     
    2832SMEAR_SIZE_H = 0.00 
    2933 
    30 from sas.sasgui.perspectives.fitting.basepage import BasicPage as BasicPage 
    31 from sas.sasgui.perspectives.fitting.basepage import PageInfoEvent as PageInfoEvent 
    32 from sas.sascalc.data_util.qsmearing import smear_selection 
    33 from .basepage import ModelTextCtrl 
    34  
    3534 
    3635class FitPage(BasicPage): 
     
    4948        BasicPage.__init__(self, parent, color=color) 
    5049 
    51         ## draw sizer 
     50        # draw sizer 
    5251        self._fill_data_sizer() 
    5352        self.is_2D = None 
     
    7271        self.enable_fit_button() 
    7372        self.fill_data_combobox(data_list=self.data_list) 
    74         #create a default data for an empty panel 
     73        # create a default data for an empty panel 
    7574        self.create_default_data() 
    7675        self._manager.frame.Bind(wx.EVT_SET_FOCUS, self.on_set_focus) 
     
    105104        self.data_box_description.SetForegroundColour(dname_color) 
    106105        boxsizer1 = wx.StaticBoxSizer(self.data_box_description, wx.VERTICAL) 
    107         #---------------------------------------------------------- 
     106        # ---------------------------------------------------------- 
    108107        sizer_data = wx.BoxSizer(wx.HORIZONTAL) 
    109108        self.dataSource = wx.ComboBox(self, wx.ID_ANY, style=wx.CB_READONLY) 
     
    134133        self.enable_datasource() 
    135134        if len(data_list) > 0: 
    136             #find the maximum range covering all data 
     135            # find the maximum range covering all data 
    137136            qmin, qmax, npts = self.compute_data_set_range(data_list) 
    138137            self.qmin_data_set = qmin 
     
    185184 
    186185        :return: True or False 
    187  
    188186        """ 
    189187        if self.data.__class__.__name__ == "Data2D" or \ 
     
    199197        buttons, xi^2, number of points etc. 
    200198        """ 
    201         is_2Ddata = False 
     199        is_2d_data = False 
    202200 
    203201        # Check if data is 2D 
    204202        if self.data.__class__.__name__ == "Data2D" or \ 
    205203                        self.enable2D: 
    206             is_2Ddata = True 
     204            is_2d_data = True 
    207205 
    208206        title = "Fitting" 
    209         #smear messages & titles 
     207        # smear messages & titles 
    210208        smear_message_none = "No smearing is selected..." 
    211209        smear_message_dqdata = "The dQ data is being used for smearing..." 
     
    225223        self._get_smear_info() 
    226224 
    227         #Sizers 
     225        # Sizers 
    228226        box_description_range = wx.StaticBox(self, wx.ID_ANY, str(title)) 
    229227        box_description_range.SetForegroundColour(wx.BLUE) 
     
    244242        sizer_weighting = wx.BoxSizer(wx.HORIZONTAL) 
    245243        weighting_box.SetMinSize((_DATA_BOX_WIDTH, 40)) 
    246         #Filling the sizer containing weighting info. 
     244        # Filling the sizer containing weighting info. 
    247245        self.dI_noweight = wx.RadioButton(self, wx.ID_ANY, 
    248246                                          'No Weighting', style=wx.RB_GROUP) 
     
    286284                        self._on_select_accuracy) 
    287285 
    288         #Fit button 
     286        # Fit button 
    289287        self.btFit = wx.Button(self, self._ids.next(), 'Fit') 
    290288        self.default_bt_colour = self.btFit.GetDefaultAttributes() 
     
    292290        self.btFit.SetToolTipString("Start fitting.") 
    293291 
    294         #General Help button 
     292        # General Help button 
    295293        self.btFitHelp = wx.Button(self, wx.ID_ANY, 'Help') 
    296294        self.btFitHelp.SetToolTipString("General fitting help.") 
    297295        self.btFitHelp.Bind(wx.EVT_BUTTON, self._onFitHelp) 
    298296         
    299         #Resolution Smearing Help button (for now use same technique as 
    300         #used for dI help to get tiniest possible button that works 
    301         #both on MAC and PC.  Should completely rewrite the fitting sizer  
    302         #in future.  This is minimum to get out release 3.1 
     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 
    303301        #        comment June 14, 2015     --- PDB 
    304302        if sys.platform.count("win32") > 0: 
    305             size_q = (20, 15)  #on PC 
     303            size_q = (20, 15)  # on PC 
    306304        else: 
    307             size_q = (30, 20)  #on MAC 
     305            size_q = (30, 20)  # on MAC 
    308306        self.btSmearHelp = wx.Button(self, wx.ID_ANY, '?', 
    309307                                     style=wx.BU_EXACTFIT, size=size_q) 
     
    311309        self.btSmearHelp.Bind(wx.EVT_BUTTON, self._onSmearHelp) 
    312310         
    313         #textcntrl for custom resolution 
     311        # textcntrl for custom resolution 
    314312        self.smear_pinhole_max = ModelTextCtrl(self, wx.ID_ANY, 
    315313                            size=(_BOX_WIDTH - 25, 20), 
     
    329327                            text_enter_callback=self.onSlitSmear) 
    330328 
    331         ## smear 
     329        # smear 
    332330        self.smear_data_left = BGTextCtrl(self, wx.ID_ANY, 
    333331                                          size=(_BOX_WIDTH - 25, 20), style=0) 
     
    337335        self.smear_data_right.SetValue(str(self.dq_r)) 
    338336 
    339         #set default values for smear 
     337        # set default values for smear 
    340338        self.smear_pinhole_max.SetValue(str(self.dx_max)) 
    341339        self.smear_pinhole_min.SetValue(str(self.dx_min)) 
     
    343341        self.smear_slit_width.SetValue(str(self.dxw)) 
    344342 
    345         #Filling the sizer containing instruments smearing info. 
     343        # Filling the sizer containing instruments smearing info. 
    346344        self.disable_smearer = wx.RadioButton(self, wx.ID_ANY, 
    347345                                              'None', style=wx.RB_GROUP) 
    348346        self.enable_smearer = wx.RadioButton(self, wx.ID_ANY, 'Use dQ Data') 
    349         #self.enable_smearer.SetToolTipString( 
    350         #"Click to use the loaded dQ data for smearing.") 
     347        # self.enable_smearer.SetToolTipString( 
     348        # "Click to use the loaded dQ data for smearing.") 
    351349        self.pinhole_smearer = wx.RadioButton(self, wx.ID_ANY, 
    352350                                              'Custom Pinhole Smear') 
    353         #self.pinhole_smearer.SetToolTipString 
    354         #("Click to input custom resolution for pinhole smearing.") 
     351        # self.pinhole_smearer.SetToolTipString 
     352        # ("Click to input custom resolution for pinhole smearing.") 
    355353        self.slit_smearer = wx.RadioButton(self, wx.ID_ANY, 'Custom Slit Smear') 
    356         #self.slit_smearer.SetToolTipString 
    357         #("Click to input custom resolution for slit smearing.") 
     354        # self.slit_smearer.SetToolTipString 
     355        # ("Click to input custom resolution for slit smearing.") 
    358356        self.Bind(wx.EVT_RADIOBUTTON, self.onSmear, 
    359357                  id=self.disable_smearer.GetId()) 
     
    378376        self.Npts_fit = BGTextCtrl(self, wx.ID_ANY, "-", size=(75, 20), style=0) 
    379377        self.Npts_fit.SetToolTipString( 
    380                             " Npts : number of points selected for fitting") 
     378            " Npts : number of points selected for fitting") 
    381379        self.Npts_total = ModelTextCtrl(self, wx.ID_ANY, size=(_BOX_WIDTH, 20), 
    382                             style=wx.TE_PROCESS_ENTER, 
    383                             text_enter_callback=self._onQrangeEnter) 
     380                                        style=wx.TE_PROCESS_ENTER, 
     381                                        text_enter_callback=self._onQrangeEnter) 
    384382        self.Npts_total.SetValue(format_number(self.npts_x)) 
    385         self.Npts_total.SetToolTipString(\ 
    386                                 " Total Npts : total number of data points") 
     383        self.Npts_total.SetToolTipString( 
     384            " Total Npts : total number of data points") 
    387385 
    388386        # Update and Draw button 
     
    429427        self.smear_description_2d_y = wx.StaticText(self, wx.ID_ANY, 
    430428                            smear_message_2d_y_title, style=wx.ALIGN_LEFT) 
    431         self.smear_description_2d_y.SetToolTipString(\ 
     429        self.smear_description_2d_y.SetToolTipString( 
    432430                                    " dQs(perpendicular) in q_phi direction.") 
    433431        self.smear_description_pin_min = wx.StaticText(self, wx.ID_ANY, 
     
    440438                        smear_message_slit_width_title, style=wx.ALIGN_LEFT) 
    441439 
    442         #arrange sizers 
     440        # arrange sizers 
    443441        self.sizer_set_smearer.Add(sizer_smearer) 
    444442        self.sizer_set_smearer.Add((10, 10)) 
    445443        self.sizer_set_smearer.Add(self.smear_description_none, 
    446                                     0, wx.CENTER, 10) 
     444                                   0, wx.CENTER, 10) 
    447445        self.sizer_set_smearer.Add(self.smear_description_dqdata, 
    448                                     0, wx.CENTER, 10) 
     446                                   0, wx.CENTER, 10) 
    449447        self.sizer_set_smearer.Add(self.smear_description_2d, 
    450                                     0, wx.CENTER, 10) 
     448                                   0, wx.CENTER, 10) 
    451449        self.sizer_new_smear.Add(self.smear_description_type, 
    452                                   0, wx.CENTER, 10) 
     450                                 0, wx.CENTER, 10) 
    453451        self.sizer_new_smear.Add(self.smear_description_accuracy_type, 
    454                                   0, wx.CENTER, 10) 
     452                                 0, wx.CENTER, 10) 
    455453        self.sizer_new_smear.Add(self.smear_accuracy) 
    456454        self.sizer_new_smear.Add(self.smear_description_smear_type, 
    457                                   0, wx.CENTER, 10) 
     455                                 0, wx.CENTER, 10) 
    458456        self.sizer_new_smear.Add((15, -1)) 
    459         self.sizer_new_smear.Add(self.smear_description_2d_x, 
    460                                   0, wx.CENTER, 10) 
     457        self.sizer_new_smear.Add(self.smear_description_2d_x, 0, wx.CENTER, 10) 
    461458        self.sizer_new_smear.Add(self.smear_description_pin_min, 
    462                                   0, wx.CENTER, 10) 
     459                                 0, wx.CENTER, 10) 
    463460        self.sizer_new_smear.Add(self.smear_description_slit_height, 
    464                                   0, wx.CENTER, 10) 
    465  
    466         self.sizer_new_smear.Add(self.smear_pinhole_min, 
    467                                   0, wx.CENTER, 10) 
    468         self.sizer_new_smear.Add(self.smear_slit_height, 
    469                                   0, wx.CENTER, 10) 
    470         self.sizer_new_smear.Add(self.smear_data_left, 
    471                                   0, wx.CENTER, 10) 
     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) 
    472466        self.sizer_new_smear.Add((20, -1)) 
    473467        self.sizer_new_smear.Add(self.smear_description_2d_y, 
    474                                   0, wx.CENTER, 10) 
     468                                 0, wx.CENTER, 10) 
    475469        self.sizer_new_smear.Add(self.smear_description_pin_max, 
    476                                   0, wx.CENTER, 10) 
     470                                 0, wx.CENTER, 10) 
    477471        self.sizer_new_smear.Add(self.smear_description_slit_width, 
    478                                   0, wx.CENTER, 10) 
     472                                 0, wx.CENTER, 10) 
    479473 
    480474        self.sizer_new_smear.Add(self.smear_pinhole_max, 0, wx.CENTER, 10) 
     
    501495 
    502496        # Show only the relevant smear messages, etc 
    503         if self.current_smearer == None: 
    504             if not is_2Ddata: 
     497        if self.current_smearer is None: 
     498            if not is_2d_data: 
    505499                self.smear_description_none.Show(True) 
    506500                self.enable_smearer.Disable() 
     
    508502                self.smear_description_none.Show(True) 
    509503                self.slit_smearer.Disable() 
    510             if self.data == None: 
     504            if self.data is None: 
    511505                self.slit_smearer.Disable() 
    512506                self.pinhole_smearer.Disable() 
     
    515509            self._show_smear_sizer() 
    516510        boxsizer_range.Add(self.sizer_set_masking) 
    517         #2D data? default 
    518         is_2Ddata = False 
    519  
    520         #check if it is 2D data 
     511        # 2D data? default 
     512        is_2d_data = False 
     513 
     514        # check if it is 2D data 
    521515        if self.data.__class__.__name__ == "Data2D" or self.enable2D: 
    522             is_2Ddata = True 
     516            is_2d_data = True 
    523517 
    524518        self.sizer5.Clear(True) 
     
    568562        sizer.Add(wx.StaticText(self, wx.ID_ANY, ' Max[1/A]')) 
    569563        sizer.Add(self.EditMask_title) 
    570         sizer.Add((-1,5)) 
     564        sizer.Add((-1, 5)) 
    571565 
    572566        sizer.Add(self.reset_qrange) 
     
    574568        sizer.Add(self.qmax) 
    575569        sizer.Add(self.btEditMask) 
    576         sizer.Add((-1,5)) 
    577  
    578         sizer.AddMany(5*[(-1,5)]) 
     570        sizer.Add((-1, 5)) 
     571 
     572        sizer.AddMany(5*[(-1, 5)]) 
    579573 
    580574        sizer.Add(box_description_1, 0, 0) 
     
    582576        sizer.Add(self.points_sizer, 0, 0) 
    583577        sizer.Add(self.draw_button, 0, 0) 
    584         sizer.Add((-1,5)) 
     578        sizer.Add((-1, 5)) 
    585579         
    586580        sizer.Add(self.tcChi, 0, 0) 
     
    592586        boxsizer_range.Add(sizer_chi2) 
    593587        boxsizer_range.Add(sizer) 
    594         if is_2Ddata: 
     588        if is_2d_data: 
    595589            self.btEditMask.Enable() 
    596590            self.EditMask_title.Enable() 
     
    598592            self.btEditMask.Disable() 
    599593            self.EditMask_title.Disable() 
    600         ## save state 
     594        # save state 
    601595        self.save_current_state() 
    602596        self.sizer5.Add(boxsizer_range, 0, wx.EXPAND | wx.ALL, 10) 
    603597        self.sizer5.Layout() 
    604598 
    605  
    606599    def _set_sizer_dispersion(self): 
    607600        """ 
     
    613606 
    614607        self.sizer4_4.Clear(True) 
    615         if self.model == None: 
    616             ##no model is selected 
     608        if self.model is None: 
     609            # no model is selected 
    617610            return 
    618611        if not self.enable_disp.GetValue(): 
    619             ## the user didn't select dispersity display 
     612            # the user didn't select dispersity display 
    620613            return 
    621614 
    622615        self._reset_dispersity() 
    623616 
    624         ## fill a sizer with the combobox to select dispersion type 
     617        # fill a sizer with the combobox to select dispersion type