Changeset ea5fa58 in sasview for fittingview/src


Ignore:
Timestamp:
Sep 20, 2012 1:22:02 PM (12 years ago)
Author:
Jae Cho <jhjcho@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
bda809e
Parents:
b71a53b
Message:

category stuffs start working in interp. environment

Location:
fittingview/src/sans/perspectives/fitting
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • fittingview/src/sans/perspectives/fitting/basepage.py

    rdf7a7e3 rea5fa58  
    22Base Page for fitting 
    33""" 
    4  
    54import sys 
    65import os 
     
    2726from sans.perspectives.fitting.pagestate import PageState 
    2827from sans.guiframe.CategoryInstaller import CategoryInstaller 
    29  
    30  
    3128 
    3229(PageInfoEvent, EVT_PAGE_INFO) = wx.lib.newevent.NewEvent() 
     
    137134        self.sld_axes = None 
    138135        self.multi_factor = None 
    139         self.model_name = None 
    140         self.model_dict = {} 
    141136        
    142137        self.disp_cb_dict = {} 
     
    155150        self.formfactorbox = None 
    156151        self.structurebox = None 
     152        self.categorybox = None 
    157153        ##list of model parameters. each item must have same length 
    158154        ## each item related to a given parameters 
     
    170166        self.disp_list = [] 
    171167        self.disp_name = "" 
    172  
    173         ## category stuff 
    174         self.category_box = None 
    175         self.model_box = None 
    176168         
    177169        ## list of orientation parameters 
     
    226218        ## layout 
    227219        self.set_layout() 
    228  
    229  
    230220     
    231221    def set_index_model(self, index): 
     
    474464        self.model_list_box = page_info.model_list_box 
    475465        ## Data member to store the dispersion object created 
    476  
     466        self.populate_box(dict=self.model_list_box) 
    477467         
    478468    def onContextMenu(self, event): 
     
    577567        self.state.manager = manager 
    578568         
    579     def populate_box(self, m_dict): 
     569    def populate_box(self, dict): 
    580570        """ 
    581571        Store list of model 
     
    584574         
    585575        """ 
    586         self.model_list_box = m_dict 
    587         # self.state.model_list_box = self.model_list_box 
    588         # self.initialize_combox() 
     576        self.model_list_box = dict 
     577        self.state.model_list_box = self.model_list_box 
     578        self.initialize_combox() 
    589579         
    590580    def set_model_dictionary(self, model_dict): 
     
    603593        if self.model_list_box is None: 
    604594            return 
     595        if len(self.model_list_box) > 0: 
     596            self._populate_box(self.formfactorbox, 
     597                               self.model_list_box["Shapes"]) 
    605598        
    606599        if len(self.model_list_box) > 0: 
     
    901894                        self.state.structurecombobox = self.structurebox.\ 
    902895                        GetString(s_select) 
    903             # if self.formfactorbox != None: 
    904             #     f_select = self.formfactorbox.GetSelection() 
    905             #     if f_select > 0: 
    906             self.state.formfactorcombobox = \ 
    907                 self.model_box.GetStringSelection() 
    908                          
     896            if self.formfactorbox != None: 
     897                f_select = self.formfactorbox.GetSelection() 
     898                if f_select > 0: 
     899                        self.state.formfactorcombobox = self.formfactorbox.\ 
     900                        GetString(f_select) 
     901        if self.categorybox != None: 
     902                cb_select = self.categorybox.GetSelection() 
     903                if cb_select > 0: 
     904                        self.state.categorycombobox = self.categorybox.\ 
     905                        GetString(cb_select)                 
    909906        #save radiobutton state for model selection 
    910         # ILL 
    911         # self.state.shape_rbutton = self.shape_rbutton.GetValue() 
    912         # self.state.shape_indep_rbutton = self.shape_indep_rbutton.GetValue() 
    913         # self.state.struct_rbutton = self.struct_rbutton.GetValue() 
    914         # self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 
     907        #self.state.shape_rbutton = self.shape_rbutton.GetValue() 
     908        #self.state.shape_indep_rbutton = self.shape_indep_rbutton.GetValue() 
     909        #self.state.struct_rbutton = self.struct_rbutton.GetValue() 
     910        #self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 
    915911         
    916912        self.state.enable2D = copy.deepcopy(self.enable2D) 
     
    10611057        self.disp_list = state.disp_list 
    10621058       
     1059        ## set the state of the radio box 
     1060        #self.shape_rbutton.SetValue(state.shape_rbutton) 
     1061        #self.shape_indep_rbutton.SetValue(state.shape_indep_rbutton) 
     1062        #self.struct_rbutton.SetValue(state.struct_rbutton) 
     1063        #self.plugin_rbutton.SetValue(state.plugin_rbutton) 
     1064         
     1065        ## fill model combobox 
    10631066        self._show_combox_helper() 
    1064  
    1065         # select the model in the gui 
    1066         self._regenerate_model_dict() 
    1067         if(len(self.by_model_dict[state.formfactorcombobox]) == 0): 
    1068             self.category_box.SetStringSelection('Uncategorized') 
    1069             self.model_box.SetStringSelection(state.formfactorcombobox) 
    1070         else: 
    1071             self.category_box.SetStringSelection(\ 
    1072                 self.by_model_dict[state.formfactorcombobox][0] ) 
    1073             self.model_box.SetStringSelection(state.formfactorcombobox) 
    1074          
    1075  
     1067        #select the current model 
     1068        try: 
     1069            # to support older version 
     1070            category_pos = int(state.categorycombobox) 
     1071        except: 
     1072            category_pos = 0 
     1073            for ind_cat in range(self.categorybox.GetCount()): 
     1074                if self.categorycombobox.GetString(ind_form) == \ 
     1075                                        state.categorycombobox: 
     1076                    category_pos = int(ind_cat) 
     1077                    break 
     1078             
     1079        self.categorybox.Select(category_pos) 
     1080        try: 
     1081            # to support older version 
     1082            formfactor_pos = int(state.formfactorcombobox) 
     1083        except: 
     1084            formfactor_pos = 0 
     1085            for ind_form in range(self.formfactorbox.GetCount()): 
     1086                if self.formfactorbox.GetString(ind_form) == \ 
     1087                                        state.formfactorcombobox: 
     1088                    formfactor_pos = int(ind_form) 
     1089                    break 
     1090             
     1091        self.formfactorbox.Select(formfactor_pos) 
     1092         
    10761093        try: 
    10771094            # to support older version 
     
    11181135                                                    state.disp_cb_dict[item]) 
    11191136                        # Create the dispersion objects 
    1120                         from sans.models.dispersion_models \ 
    1121                             import ArrayDispersion 
     1137                        from sans.models.dispersion_models import ArrayDispersion 
    11221138                        disp_model = ArrayDispersion() 
    11231139                        if hasattr(state, "values") and \ 
     
    12181234        self.disp_list = state.disp_list 
    12191235       
     1236        ## set the state of the radio box 
     1237        #self.shape_rbutton.SetValue(state.shape_rbutton) 
     1238        #self.shape_indep_rbutton.SetValue(state.shape_indep_rbutton) 
     1239        #self.struct_rbutton.SetValue(state.struct_rbutton) 
     1240        #self.plugin_rbutton.SetValue(state.plugin_rbutton) 
    12201241         
    12211242        ## fill model combobox 
    12221243        self._show_combox_helper() 
    12231244        #select the current model 
    1224  
    1225  
    1226         self._regenerate_model_dict() 
    1227         if(len(self.by_model_dict[state.formfactorcombobox]) == 0): 
    1228             self.category_box.SetStringSelection('Uncategorized') 
    1229             self.model_box.SetStringSelection(state.formfactorcombobox) 
    1230         else: 
    1231             self.category_box.SetStringSelection(\ 
    1232                 self.by_model_dict[state.formfactorcombobox][0] ) 
    1233             self.model_box.SetStringSelection(state.formfactorcombobox) 
    1234  
     1245        try: 
     1246            # to support older version 
     1247            category_pos = int(state.categorycombobox) 
     1248        except: 
     1249            category_pos = 0 
     1250            for ind_cat in range(self.categorybox.GetCount()): 
     1251                if self.categorybox.GetString(ind_cat) == \ 
     1252                                        state.categorycombobox: 
     1253                    category_pos = int(ind_cat) 
     1254                    break 
     1255             
     1256        self.categorybox.Select(category_pos) 
     1257        self._show_combox(None) 
     1258        try: 
     1259            # to support older version 
     1260            formfactor_pos = int(state.formfactorcombobox) 
     1261        except: 
     1262            formfactor_pos = 0 
     1263            for ind_form in range(self.formfactorbox.GetCount()): 
     1264                if self.formfactorbox.GetString(ind_form) == \ 
     1265                                                    (state.formfactorcombobox): 
     1266                    formfactor_pos = int(ind_form) 
     1267                    break 
     1268             
     1269        self.formfactorbox.Select(formfactor_pos) 
     1270         
    12351271        try: 
    12361272            # to support older version 
     
    14321468        save radiobutton containing the type model that can be selected 
    14331469        """ 
    1434         # self.state.shape_rbutton = self.shape_rbutton.GetValue() 
    1435         # self.state.shape_indep_rbutton = self.shape_indep_rbutton.GetValue() 
    1436         # self.state.struct_rbutton = self.struct_rbutton.GetValue() 
    1437         # self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 
     1470        #self.state.shape_rbutton = self.shape_rbutton.GetValue() 
     1471        #self.state.shape_indep_rbutton = self.shape_indep_rbutton.GetValue() 
     1472        #self.state.struct_rbutton = self.struct_rbutton.GetValue() 
     1473        #self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 
    14381474        self.state.structurecombobox = self.structurebox.GetLabel() 
    1439         self.state.formfactorcombobox = self.model_box.GetStringSelection() 
     1475        self.state.formfactorcombobox = self.formfactorbox.GetLabel() 
     1476        self.state.categorycombobox = self.categorybox.GetLabel() 
    14401477        
    14411478        ## post state to fit panel 
     
    17721809            class_name = model.p_model.__class__ 
    17731810            name = model.p_model.name 
    1774 #            self.formfactorbox.Clear() 
     1811            self.formfactorbox.Clear() 
    17751812             
    17761813            for k, list in self.model_list_box.iteritems(): 
    17771814                if k in["P(Q)*S(Q)", "Shapes"] and \ 
    17781815                    class_name in self.model_list_box["Shapes"]: 
    1779 #                    self.shape_rbutton.SetValue(True) 
     1816                    self.shape_rbutton.SetValue(True) 
    17801817                    ## fill the form factor list with new model 
    1781                     # self._populate_box(self.formfactorbox, 
    1782                     #                    self.model_list_box["Shapes"]) 
    1783                     # items = self.formfactorbox.GetItems() 
    1784                     # ## set comboxbox to the selected item 
    1785                     # for i in range(len(items)): 
    1786                     #     if items[i] == str(name): 
    1787                     #         self.formfactorbox.SetSelection(i) 
    1788                     #         break 
     1818                    self._populate_box(self.formfactorbox, 
     1819                                       self.model_list_box["Shapes"]) 
     1820                    items = self.formfactorbox.GetItems() 
     1821                    ## set comboxbox to the selected item 
     1822                    for i in range(len(items)): 
     1823                        if items[i] == str(name): 
     1824                            self.formfactorbox.SetSelection(i) 
     1825                            break 
    17891826                    return 
    1790                 # elif k == "Shape-Independent": 
    1791                 #     self.shape_indep_rbutton.SetValue(True) 
    1792                 # elif k == "Structure Factors": 
    1793                 #     self.struct_rbutton.SetValue(True) 
    1794                 # elif k == "Multi-Functions": 
    1795                 #     continue 
    1796                 # else: 
    1797                 #     self.plugin_rbutton.SetValue(True) 
     1827                elif k == "Shape-Independent": 
     1828                    self.shape_indep_rbutton.SetValue(True) 
     1829                elif k == "Structure Factors": 
     1830                    self.struct_rbutton.SetValue(True) 
     1831                elif k == "Multi-Functions": 
     1832                    continue 
     1833                else: 
     1834                    self.plugin_rbutton.SetValue(True) 
    17981835                
    1799                 # if class_name in list: 
    1800                 #     # ## fill the form factor list with new model 
    1801                 #     # self._populate_box(self.formfactorbox, list) 
    1802                 #     # items = self.formfactorbox.GetItems() 
    1803                 #     # ## set comboxbox to the selected item 
    1804                 #     # for i in range(len(items)): 
    1805                 #     #     if items[i] == str(name): 
    1806                 #     #         self.formfactorbox.SetSelection(i) 
    1807                 #     #         break 
    1808                 #     # break 
    1809                 #     else: 
     1836                if class_name in list: 
     1837                    ## fill the form factor list with new model 
     1838                    self._populate_box(self.formfactorbox, list) 
     1839                    items = self.formfactorbox.GetItems() 
     1840                    ## set comboxbox to the selected item 
     1841                    for i in range(len(items)): 
     1842                        if items[i] == str(name): 
     1843                            self.formfactorbox.SetSelection(i) 
     1844                            break 
     1845                    break 
     1846        else: 
    18101847            ## Select the model from the menu 
    18111848            class_name = model.__class__ 
    18121849            name = model.name 
    1813 ##            self.formfactorbox.Clear() 
    1814 #            items = self.formfactorbox.GetItems() 
     1850            self.formfactorbox.Clear() 
     1851            items = self.formfactorbox.GetItems() 
    18151852     
    18161853            for k, list in self.model_list_box.iteritems(): 
     
    18301867                        self.text2.Disable() 
    18311868                         
    1832 #                    self.shape_rbutton.SetValue(True) 
     1869                    self.shape_rbutton.SetValue(True) 
    18331870                    ## fill the form factor list with new model 
    1834                     # self._populate_box(self.formfactorbox, 
    1835                     #                    self.model_list_box["Shapes"]) 
    1836                     # items = self.formfactorbox.GetItems() 
    1837                     # ## set comboxbox to the selected item 
    1838                     # for i in range(len(items)): 
    1839                     #     if items[i] == str(name): 
    1840                     #         self.formfactorbox.SetSelection(i) 
    1841                     #         break 
     1871                    self._populate_box(self.formfactorbox, 
     1872                                       self.model_list_box["Shapes"]) 
     1873                    items = self.formfactorbox.GetItems() 
     1874                    ## set comboxbox to the selected item 
     1875                    for i in range(len(items)): 
     1876                        if items[i] == str(name): 
     1877                            self.formfactorbox.SetSelection(i) 
     1878                            break 
    18421879                    return 
    1843                 # elif k == "Shape-Independent": 
    1844                 #     self.shape_indep_rbutton.SetValue(True) 
    1845                 # elif k == "Structure Factors": 
    1846                 #     self.struct_rbutton.SetValue(True) 
    1847                 # elif k == "Multi-Functions": 
    1848                 #     continue 
    1849                 # else: 
    1850                 #     self.plugin_rbutton.SetValue(True) 
     1880                elif k == "Shape-Independent": 
     1881                    self.shape_indep_rbutton.SetValue(True) 
     1882                elif k == "Structure Factors": 
     1883                    self.struct_rbutton.SetValue(True) 
     1884                elif k == "Multi-Functions": 
     1885                    continue 
     1886                else: 
     1887                    self.plugin_rbutton.SetValue(True) 
    18511888                if class_name in list: 
    18521889                    self.structurebox.SetSelection(0) 
     
    18541891                    self.text2.Disable() 
    18551892                    ## fill the form factor list with new model 
    1856                     # self._populate_box(self.formfactorbox, list) 
    1857                     # items = self.formfactorbox.GetItems() 
     1893                    self._populate_box(self.formfactorbox, list) 
     1894                    items = self.formfactorbox.GetItems() 
    18581895                    ## set comboxbox to the selected item 
    1859                     # for i in range(len(items)): 
    1860                     #     if items[i] == str(name): 
    1861                     #         self.formfactorbox.SetSelection(i) 
    1862                     #         break 
     1896                    for i in range(len(items)): 
     1897                        if items[i] == str(name): 
     1898                            self.formfactorbox.SetSelection(i) 
     1899                            break 
    18631900                    break 
    18641901                 
     
    19531990        if self.multifactorbox.IsShown(): 
    19541991            self.multifactorbox.Hide() 
    1955  
     1992     
     1993    def formfactor_combo_init(self): 
     1994        """ 
     1995        First time calls _show_combox_helper 
     1996        """ 
     1997        self._show_combox(None) 
     1998                 
    19561999    def _show_combox_helper(self): 
    19572000        """ 
    19582001        Fill panel's combo box according to the type of model selected 
    19592002        """ 
    1960 #         if self.shape_rbutton.GetValue(): 
    1961 #             ##fill the combobox with form factor list 
    1962 #             self.structurebox.SetSelection(0) 
    1963 #             self.structurebox.Disable() 
    1964 #             # self.formfactorbox.Clear() 
    1965 #             # self._populate_box(self.formfactorbox, 
    1966 #             #                    self.model_list_box["Shapes"]) 
    1967 #         if self.shape_indep_rbutton.GetValue(): 
    1968 #             ##fill the combobox with shape independent  factor list 
    1969 #             self.structurebox.SetSelection(0) 
    1970 #             self.structurebox.Disable() 
    1971 # #            self.formfactorbox.Clear() 
    1972 #             self._populate_box(self.formfactorbox, 
    1973 #                              self.model_list_box["Shape-Independent"]) 
    1974 #         if self.struct_rbutton.GetValue(): 
    1975 #             ##fill the combobox with structure factor list 
    1976 #             self.structurebox.SetSelection(0) 
    1977 #             self.structurebox.Disable() 
    1978 #  #           self.formfactorbox.Clear() 
    1979 #             self._populate_box(self.formfactorbox, 
    1980 #                                self.model_list_box["Structure Factors"]) 
    1981 #         if self.plugin_rbutton.GetValue(): 
    1982 #             ##fill the combobox with form factor list 
    1983 #             self.structurebox.Disable() 
    1984 #   #          self.formfactorbox.Clear() 
    1985 #             self._populate_box(self.formfactorbox, 
    1986 #                                self.model_list_box["Customized Models"]) 
     2003        custom_model = 'Customized Models' 
     2004        mod_cat = self.categorybox.GetStringSelection() 
     2005        self.structurebox.SetSelection(0) 
     2006        self.structurebox.Disable() 
     2007        self.formfactorbox.Clear() 
     2008        if mod_cat == None: 
     2009            return 
     2010        m_list = [] 
     2011        try: 
     2012            if mod_cat == custom_model: 
     2013                for model in self.model_list_box[mod_cat]: 
     2014                    str_m = str(model).split(".")[0] 
     2015                    #self.model_box.Append(str_m) 
     2016                    m_list.append(self.model_dict[str_m]) 
     2017            else: 
     2018                for (model, enabled) in self.master_category_dict[mod_cat]: 
     2019                    if enabled: 
     2020                        m_list.append(self.model_dict[model]) 
     2021                    else: 
     2022                        msg = "This model is diabled by Category Manager."  
     2023                        wx.PostEvent(self.parent.parent, 
     2024                                     StatusEvent(status=msg, info="error")) 
     2025        except: 
     2026            msg = "%s\n" % (sys.exc_value) 
     2027            wx.PostEvent(self.parent.parent, 
     2028                         StatusEvent(status=msg, info="error")) 
     2029        self._populate_box(self.formfactorbox, m_list) 
    19872030         
    19882031    def _show_combox(self, event=None): 
     
    20002043        self.Refresh() 
    20012044   
    2002     def _populate_box(self, combobox, model_list): 
     2045    def _populate_box(self, combobox, list): 
    20032046        """ 
    20042047        fill combox box with dict item 
     
    20082051        """ 
    20092052        mlist = [] 
    2010         for models in model_list: 
     2053        for models in list: 
    20112054            model = models() 
    20122055            name = model.__class__.__name__ 
     
    21392182        """ 
    21402183        ## reset dictionary containing reference to dispersion 
    2141         if self.model_name == None: 
    2142             return 
    2143  
    21442184        self._disp_obj_dict = {} 
    21452185        self.disp_cb_dict = {} 
    21462186        self.temp_multi_functional = False 
    2147  
    2148         form_factor = self.model_dict[self.model_name] 
     2187        f_id = self.formfactorbox.GetCurrentSelection() 
     2188        #For MAC 
     2189        form_factor = None 
     2190        if f_id >= 0: 
     2191            form_factor = self.formfactorbox.GetClientData(f_id) 
    21492192 
    21502193        if not form_factor in  self.model_list_box["multiplication"]: 
     
    21602203            self.text2.Enable() 
    21612204             
    2162  
    2163  
    21642205        if form_factor != None: 
    21652206            # set multifactor for Mutifunctional models 
     
    23392380        return flag 
    23402381     
    2341     def _check_value_enter(self, m_list, modified): 
    2342         """ 
    2343         :param m_list: model parameter and panel info 
    2344         :Note: each item of the m_list should be as follow: 
     2382    def _check_value_enter(self, list, modified): 
     2383        """ 
     2384        :param list: model parameter and panel info 
     2385        :Note: each item of the list should be as follow: 
    23452386            item=[check button state, parameter's name, 
    23462387                paramater's value, string="+/-", 
     
    23512392        """ 
    23522393        is_modified = modified 
    2353         if len(m_list) == 0: 
     2394        if len(list) == 0: 
    23542395            return is_modified 
    2355         for item in m_list: 
     2396        for item in list: 
    23562397            #skip angle parameters for 1D 
    23572398            if not self.enable2D: 
     
    29032944        if self.model == None: 
    29042945            name = 'FuncHelp' 
    2905  
     2946        else: 
     2947            name = self.formfactorbox.GetValue() 
    29062948        frame = HelpWindow(None, -1, pageToOpen=model_path) 
    2907         # If model name exists and model is not a custom model 
    2908         # if frame.rhelp.HasAnchor(name) and not self.plugin_rbutton.GetValue(): 
    2909         #     frame.Show(True) 
    2910         #     frame.rhelp.ScrollToAnchor(name) 
    2911         # else: 
    2912         #     if self.model != None: 
    2913         #         frame.Destroy() 
    2914         #         msg = 'Model description:\n' 
    2915         #         if str(self.model.description).rstrip().lstrip() == '': 
    2916         #             msg += "Sorry, no information is available for this model." 
    2917         #         else: 
    2918         #             msg += self.model.description + '\n' 
    2919         #         info = "Info" 
    2920         #         wx.MessageBox(msg, info) 
    2921         #     else: 
    2922         #         frame.Show(True) 
    2923      
     2949        if frame.rhelp.HasAnchor(name): 
     2950            frame.Show(True) 
     2951            frame.rhelp.ScrollToAnchor(name) 
     2952        else: 
     2953            if self.model != None: 
     2954                frame.Destroy() 
     2955                msg = 'Model description:\n' 
     2956                if str(self.model.description).rstrip().lstrip() == '': 
     2957                    msg += "Sorry, no information is available for this model." 
     2958                else: 
     2959                    msg += self.model.description + '\n' 
     2960                info = "Info" 
     2961                wx.MessageBox(msg, info) 
     2962            else: 
     2963                frame.Show(True) 
     2964 
     2965             
    29242966    def on_pd_help_clicked(self, event): 
    29252967        """ 
     
    32973339        return 
    32983340 
     3341 
     3342 
     3343 
    32993344    def _read_category_info(self): 
    33003345        """ 
     
    33073352        self.model_enabled_dict = defaultdict(bool) 
    33083353 
    3309         categorization_file = CategoryInstaller.get_user_file() 
    3310  
    3311  
    33123354        try: 
     3355            categorization_file = CategoryInstaller.get_user_file() 
     3356            if not os.path.isfile(categorization_file): 
     3357                categorization_file = CategoryInstaller.get_default_file() 
    33133358            cat_file = open(categorization_file, 'rb') 
    33143359                             
     
    33173362 
    33183363        except IOError: 
     3364            raise 
    33193365            print 'Problem reading in category file.' 
    33203366            print 'We even looked for it, made sure it was there.' 
     
    33303376        self.by_model_dict = defaultdict(list) 
    33313377        for category in self.master_category_dict: 
    3332             for (model,enabled) in self.master_category_dict[category]: 
     3378            for (model, enabled) in self.master_category_dict[category]: 
    33333379                self.by_model_dict[model].append(category) 
    33343380                self.model_enabled_dict[model] = enabled 
     
    33383384        fills out the category list box 
    33393385        """ 
     3386        uncat_str = 'Customized Models' 
    33403387        self._read_category_info() 
    33413388 
    3342         self.category_box.Clear() 
     3389        self.categorybox.Clear() 
    33433390        cat_list = sorted(self.master_category_dict.keys()) 
    3344         cat_list.append('Customized') 
    3345  
     3391        if not uncat_str in cat_list: 
     3392            cat_list.append(uncat_str) 
     3393         
    33463394        for category in cat_list: 
    33473395            if category != '': 
    3348                 self.category_box.Append(category) 
    3349  
    3350         if self.category_box.GetSelection() == wx.NOT_FOUND: 
    3351             self.category_box.SetSelection(0) 
     3396                self.categorybox.Append(category) 
     3397 
     3398        if self.categorybox.GetSelection() == wx.NOT_FOUND: 
     3399            self.categorybox.SetSelection(0) 
    33523400        else: 
    3353             self.category_box.SetSelection( \ 
    3354                 self.category_box.GetSelection()) 
    3355  
    3356         self._on_change_cat(None) 
     3401            self.categorybox.SetSelection( \ 
     3402                self.categorybox.GetSelection()) 
     3403 
     3404        #self._on_change_cat(None) 
    33573405 
    33583406 
     
    33623410        """ 
    33633411        self.model_name = None 
    3364         category = self.category_box.GetStringSelection() 
     3412        category = self.categorybox.GetStringSelection() 
    33653413        if category == None: 
    33663414            return 
    33673415        self.model_box.Clear() 
    33683416 
    3369         if category == 'Customized': 
    3370             for model in self.model_list_box["Customized Models"]: 
     3417        if category == 'Customized Models': 
     3418            for model in self.model_list_box[category]: 
    33713419                str_m = str(model).split(".")[0] 
    33723420                self.model_box.Append(str_m) 
     
    33793427                    self.model_box.Append(model) 
    33803428 
     3429 
     3430 
     3431 
    33813432    def _fill_model_sizer(self, sizer): 
    33823433        """ 
    33833434        fill sizer containing model info 
    33843435        """ 
    3385  
    33863436        ##Add model function Details button in fitpanel. 
    33873437        ##The following 3 lines are for Mac. Let JHC know before modifying... 
     
    33913441        self.mbox_description = wx.StaticBox(self, -1, str(title)) 
    33923442        boxsizer1 = wx.StaticBoxSizer(self.mbox_description, wx.VERTICAL) 
     3443        sizer_cat = wx.BoxSizer(wx.HORIZONTAL) 
    33933444        self.mbox_description.SetForegroundColour(wx.RED) 
    33943445        id = wx.NewId() 
     
    34013452        hint = "toggle view of model from 1D to 2D  or 2D to 1D" 
    34023453        self.model_view.SetToolTipString(hint) 
    3403  
    3404          
    3405         # ILL mod starts here - Aug 2012 
    3406  
    3407  
    3408         cat_text = wx.StaticText(self, -1, 'Category') 
    3409         mod_text = wx.StaticText(self, -1, 'Model') 
    3410          
    3411         id = wx.NewId() 
    3412         self.category_box = wx.ListBox(self, size=(150, 100)) 
    3413         self.category_box.Bind(wx.EVT_LISTBOX, self._on_change_cat) 
    3414         self.model_box = wx.ListBox(self, -1, size=(150, 100)) 
    3415         self.model_box.Bind(wx.EVT_LISTBOX, self._on_select_model) 
    3416  
    3417         sizer_radiobutton = wx.GridSizer(2, 3, 5, 5) 
    3418         hbox1 = wx.BoxSizer(wx.HORIZONTAL) 
    3419         hbox2 = wx.BoxSizer(wx.HORIZONTAL) 
    3420         vbox1 = wx.BoxSizer(wx.VERTICAL) 
    3421         vbox2 = wx.BoxSizer(wx.VERTICAL) 
    3422         vbox3 = wx.BoxSizer(wx.VERTICAL) 
    3423  
    3424         vbox1.Add(cat_text, border = 5, flag = wx.EXPAND | wx.ALL) 
    3425         vbox2.Add(mod_text, border=5, flag = wx.EXPAND | wx.ALL) 
    3426         vbox3.Add(self.model_view, flag= wx.ALL | wx.ALIGN_LEFT 
    3427                   , border =5) 
    3428         vbox1.Add(self.category_box, border = 5, flag = wx.EXPAND | wx.ALL) 
    3429         vbox2.Add(self.model_box, flag = wx.EXPAND | wx.ALL, border = 5) 
    3430         vbox3.Add(self.model_help, border = 5,  
    3431                   flag = wx.LEFT | wx.ALIGN_LEFT ) 
    3432  
    3433         hbox1.Add(vbox1, border = 5, flag = wx.EXPAND | wx.ALL) 
    3434         hbox1.Add(vbox2, border = 5, flag = wx.EXPAND | wx.ALL) 
    3435         hbox1.Add(vbox3, border = 5, flag = wx.EXPAND | wx.ALL) 
    3436  
     3454         
     3455        cat_set_box = wx.StaticBox(self, -1, 'Category') 
     3456        sizer_cat_box = wx.StaticBoxSizer(cat_set_box, wx.HORIZONTAL) 
     3457        sizer_cat_box.SetMinSize((200, 50)) 
     3458        self.categorybox = wx.ComboBox(self, -1, style=wx.CB_READONLY) 
     3459        self._populate_listbox() 
     3460        wx.EVT_COMBOBOX(self.categorybox, -1, self._show_combox) 
     3461        #self.shape_rbutton = wx.RadioButton(self, -1, 'Shapes', 
     3462        #                                     style=wx.RB_GROUP) 
     3463        #self.shape_indep_rbutton = wx.RadioButton(self, -1, 
     3464        #                                          "Shape-Independent") 
     3465        #self.struct_rbutton = wx.RadioButton(self, -1, "Structure Factor ") 
     3466        #self.plugin_rbutton = wx.RadioButton(self, -1, "Uncategorized") 
     3467                 
     3468        #self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
     3469        #                   id=self.shape_rbutton.GetId()) 
     3470        #self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
     3471        #                    id=self.shape_indep_rbutton.GetId()) 
     3472        #self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
     3473        #                    id=self.struct_rbutton.GetId()) 
     3474        #self.Bind(wx.EVT_RADIOBUTTON, self._show_combox, 
     3475        #                    id=self.plugin_rbutton.GetId()) 
     3476        #MAC needs SetValue 
     3477        sizer_cat_box.Add(self.categorybox, 1, wx.LEFT|wx.RIGHT|wx.EXPAND, 2.5) 
     3478        #self.shape_rbutton.SetValue(True) 
     3479       
     3480        sizer_radiobutton = wx.GridSizer(2, 2, 5, 5) 
     3481 
     3482        #sizer_radiobutton.Add(self.shape_rbutton) 
     3483        #sizer_radiobutton.Add(self.shape_indep_rbutton) 
     3484        sizer_radiobutton.Add((5,5)) 
     3485        sizer_radiobutton.Add(self.model_view, 1, wx.RIGHT, 15) 
     3486        #sizer_radiobutton.Add(self.plugin_rbutton) 
     3487        #sizer_radiobutton.Add(self.struct_rbutton) 
     3488        sizer_radiobutton.Add((5,5)) 
     3489        sizer_radiobutton.Add(self.model_help, 1, wx.RIGHT, 15) 
     3490        sizer_cat.Add(sizer_cat_box, 1, wx.LEFT, 2.5) 
     3491        sizer_cat.Add(sizer_radiobutton) 
    34373492        sizer_selection = wx.BoxSizer(wx.HORIZONTAL) 
    34383493        mutifactor_selection = wx.BoxSizer(wx.HORIZONTAL) 
    34393494         
    34403495        self.text1 = wx.StaticText(self, -1, "") 
    3441         self.text2 = wx.StaticText(self, -1, "P(Q)*S(Q) ") 
     3496        self.text2 = wx.StaticText(self, -1, "P(Q)*S(Q)") 
    34423497        self.mutifactor_text = wx.StaticText(self, -1, "No. of Shells: ") 
    34433498        self.mutifactor_text1 = wx.StaticText(self, -1, "") 
     
    34453500        self.show_sld_button.Bind(wx.EVT_BUTTON, self._on_show_sld) 
    34463501 
     3502        self.formfactorbox = wx.ComboBox(self, -1, style=wx.CB_READONLY) 
     3503        if self.model != None: 
     3504            self.formfactorbox.SetValue(self.model.name) 
    34473505        self.structurebox = wx.ComboBox(self, -1, style=wx.CB_READONLY) 
    34483506        self.multifactorbox = wx.ComboBox(self, -1, style=wx.CB_READONLY) 
    34493507        self.initialize_combox() 
     3508        wx.EVT_COMBOBOX(self.formfactorbox, -1, self._on_select_model) 
    34503509 
    34513510        wx.EVT_COMBOBOX(self.structurebox, -1, self._on_select_model) 
    34523511        wx.EVT_COMBOBOX(self.multifactorbox, -1, self._on_select_model) 
    34533512        ## check model type to show sizer 
    3454  
    3455         hbox2.Add(self.text2, border = 5, flag = wx.EXPAND | wx.ALL ) 
    3456         hbox2.Add(self.structurebox, border = 5, flag = wx.EXPAND | \ 
    3457                       wx.ALL ) 
    3458          
    34593513        if self.model != None: 
    3460             self._set_model_sizer_selection(self.model) 
    3461          
    3462         self._populate_listbox() 
    3463          
     3514            print "_set_model_sizer_selection: disabled." 
     3515            #self._set_model_sizer_selection(self.model) 
     3516         
     3517        sizer_selection.Add(self.text1) 
     3518        sizer_selection.Add((10, 5)) 
     3519        sizer_selection.Add(self.formfactorbox) 
     3520        sizer_selection.Add((5, 5)) 
     3521        sizer_selection.Add(self.text2) 
     3522        sizer_selection.Add((5, 5)) 
     3523        sizer_selection.Add(self.structurebox) 
    34643524        
    3465         mutifactor_selection.Add((10, 5)) 
     3525        mutifactor_selection.Add((13, 5)) 
    34663526        mutifactor_selection.Add(self.mutifactor_text) 
    34673527        mutifactor_selection.Add(self.multifactorbox) 
     
    34713531        mutifactor_selection.Add(self.show_sld_button) 
    34723532 
    3473         boxsizer1.Add(hbox1, flag = wx.EXPAND) 
    3474         boxsizer1.Add(hbox2, flag = wx.EXPAND) 
     3533        boxsizer1.Add(sizer_cat) 
    34753534        boxsizer1.Add((10, 10)) 
    3476  
     3535        boxsizer1.Add(sizer_selection) 
     3536        boxsizer1.Add((10, 10)) 
    34773537        boxsizer1.Add(mutifactor_selection) 
    34783538         
  • fittingview/src/sans/perspectives/fitting/fitpage.py

    rdf7a7e3 rea5fa58  
    3636    """ 
    3737 
    38     def __init__(self, parent, m_dict, color='rand'): 
     38    def __init__(self, parent, color='rand'): 
    3939        """ 
    4040        Initialization of the Panel 
    4141        """ 
    4242        BasicPage.__init__(self, parent, color=color) 
    43         self.populate_box(m_dict) 
    44  
     43         
    4544        ## draw sizer 
    4645        self._fill_data_sizer() 
     
    6867        #create a default data for an empty panel 
    6968        self.create_default_data() 
    70  
     69     
    7170    def enable_fit_button(self): 
    7271        """ 
     
    10881087        call back for model selection 
    10891088        """ 
    1090         # if we're just clearing the box then do nothing 
    1091         if self.model_box.GetCount() == 0 or \ 
    1092                 self.model_box.GetStringSelection() == '': 
    1093             return 
    1094  
    1095  
    10961089        self.Show(False) 
    10971090        copy_flag = False 
    10981091        is_poly_enabled = None 
    10991092        if event != None: 
    1100             # if (event.GetEventObject() == self.formfactorbox\ 
    1101             #             and self.structurebox.GetLabel() != 'None')\ 
    1102             #             or event.GetEventObject() == self.structurebox\ 
    1103             #             or event.GetEventObject() == self.multifactorbox: 
    1104             copy_flag = self.get_copy_params() 
    1105             is_poly_enabled = self.enable_disp.GetValue() 
    1106  
    1107         self.model_name = self.model_box.GetStringSelection() 
     1093            if (event.GetEventObject() == self.formfactorbox\ 
     1094                        and self.structurebox.GetLabel() != 'None')\ 
     1095                        or event.GetEventObject() == self.structurebox\ 
     1096                        or event.GetEventObject() == self.multifactorbox: 
     1097                copy_flag = self.get_copy_params() 
     1098                is_poly_enabled = self.enable_disp.GetValue() 
     1099 
    11081100        self._on_select_model_helper() 
    11091101        self.set_model_param_sizer(self.model) 
     
    11241116     
    11251117        self.state.structurecombobox = self.structurebox.GetLabel() 
    1126         self.state.formfactorcombobox = self.model_box.GetStringSelection() 
     1118        self.state.formfactorcombobox = self.formfactorbox.GetLabel() 
    11271119        self.enable_fit_button() 
    11281120        if self.model != None: 
     
    11831175            wx.PostEvent(self.parent, new_event) 
    11841176            #update list of plugins if new plugin is available 
    1185             # if self.plugin_rbutton.GetValue(): 
    1186             #     temp = self.parent.update_model_list() 
    1187             #     if temp: 
    1188             #         self.model_list_box = temp 
    1189                     # current_val = self.formfactorbox.GetLabel() 
    1190                     # pos = self.formfactorbox.GetSelection() 
    1191                     # self._show_combox_helper() 
    1192                     # self.formfactorbox.SetSelection(pos) 
    1193                     # self.formfactorbox.SetValue(current_val) 
     1177            custom_model = 'Customized Models' 
     1178            mod_cat = self.categorybox.GetStringSelection() 
     1179            if mod_cat == custom_model: 
     1180                temp = self.parent.update_model_list() 
     1181                if temp: 
     1182                    self.model_list_box = temp 
     1183                    current_val = self.formfactorbox.GetLabel() 
     1184                    pos = self.formfactorbox.GetSelection() 
     1185                    self._show_combox_helper() 
     1186                    self.formfactorbox.SetSelection(pos) 
     1187                    self.formfactorbox.SetValue(current_val) 
    11941188            # when select a model only from guictr/button 
    11951189            if is_poly_enabled != None: 
     
    18221816            self.dI_idata.Enable(True) 
    18231817               
    1824 #            self.formfactorbox.Enable() 
     1818            self.formfactorbox.Enable() 
    18251819            self.structurebox.Enable() 
    18261820            data_name = self.data.name 
  • fittingview/src/sans/perspectives/fitting/fitpanel.py

    rdf7a7e3 rea5fa58  
    4848        self.menu_mng = models.ModelManager() 
    4949        self.model_list_box = self.menu_mng.get_model_list() 
     50        #pageClosedEvent = nb.EVT_FLATNOTEBOOK_PAGE_CLOSING 
    5051        self.model_dictionary = self.menu_mng.get_model_dictionary() 
    51         #pageClosedEvent = nb.EVT_FLATNOTEBOOK_PAGE_CLOSING 
    5252        self.pageClosedEvent = wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE 
    5353         
     
    305305                page.set_manager(self._manager) 
    306306 
    307     def set_model_list(self, m_dict): 
     307    def set_model_list(self, dict): 
    308308        """ 
    309309        copy a dictionary of model into its own dictionary 
     
    312312        as value 
    313313        """ 
    314         self.model_list_box = m_dict 
     314        self.model_list_box = dict 
    315315         
    316316    def set_model_dict(self, m_dict): 
     
    368368        else: 
    369369        """ 
    370  
    371370        from fitpage import FitPage 
    372         panel = FitPage(parent=self, m_dict = self.model_list_box) 
    373  
     371        panel = FitPage(parent=self) 
    374372        if self.batch_on: 
    375373            self.batch_page_index += 1 
     
    384382        panel._set_save_flag(not panel.batch_on) 
    385383        panel.set_model_dictionary(self.model_dictionary) 
     384        panel.populate_box(dict=self.model_list_box) 
     385        panel.formfactor_combo_init() 
    386386        panel.set_manager(self._manager) 
    387387        panel.window_caption = caption 
  • fittingview/src/sans/perspectives/fitting/fitting.py

    rdf7a7e3 rea5fa58  
    321321        Update custom model list in the fitpage combo box 
    322322        """ 
     323        custom_model = 'Customized Models' 
    323324        try: 
    324325            # Update edit menus 
     
    332333                        page.model_list_box = temp 
    333334                        current_val = page.formfactorbox.GetLabel() 
    334                         if page.plugin_rbutton.GetValue(): 
     335                        #if page.plugin_rbutton.GetValue(): 
     336                        mod_cat = page.categorybox.GetStringSelection() 
     337                        if mod_cat == custom_model: 
    335338                            #pos = page.formfactorbox.GetSelection() 
    336339                            page._show_combox_helper() 
  • fittingview/src/sans/perspectives/fitting/models.py

    rdf7a7e3 rea5fa58  
    679679        self.stored_plugins = self.findModels() 
    680680        self.plugins = self.stored_plugins.values() 
    681  
     681        for name, plug in self.stored_plugins.iteritems(): 
     682            self.model_dictionary[name] = plug 
     683             
    682684        self._get_multifunc_models() 
    683685        
     
    710712                    self.stored_plugins[name] = plug 
    711713                    self.plugins.append(plug) 
     714                    self.model_dictionary[name] = plug 
    712715            self.model_combobox.set_list("Customized Models", self.plugins) 
    713716            return self.model_combobox.get_list() 
     
    725728                if name == stored_name: 
    726729                    del self.stored_plugins[name] 
     730                    del self.model_dictionary[name] 
    727731                    break 
    728732            self.stored_plugins[name] = plug 
    729733            self.plugins.append(plug) 
     734            self.model_dictionary[name] = plug 
    730735 
    731736        self.model_combobox.reset_list("Customized Models", self.plugins) 
  • fittingview/src/sans/perspectives/fitting/pagestate.py

    r7c720e9 rea5fa58  
    4444                      ["qmax", "qmax", "float"], 
    4545                      ["npts", "npts", "float"], 
    46                       ["shape_rbutton", "shape_rbutton", "bool"], 
    47                       ["shape_indep_rbutton", "shape_indep_rbutton", "bool"], 
    48                       ["plugin_rbutton", "plugin_rbutton", "bool"], 
    49                       ["struct_rbutton", "struct_rbutton", "bool"], 
     46                      #["shape_rbutton", "shape_rbutton", "bool"], 
     47                      #["shape_indep_rbutton", "shape_indep_rbutton", "bool"], 
     48                      #["plugin_rbutton", "plugin_rbutton", "bool"], 
     49                      #["struct_rbutton", "struct_rbutton", "bool"], 
     50                      ["categorycombobox", "categorycombobox", "string"], 
    5051                      ["formfactorcombobox", "formfactorcombobox", "string"], 
    5152                      ["structurecombobox", "structurecombobox", "string"], 
     
    224225        ## save selection of combobox 
    225226        self.formfactorcombobox = None 
     227        self.categorycombobox = None 
    226228        self.structurecombobox = None 
    227229 
    228230        ## radio box to select type of model 
    229         self.shape_rbutton = False 
    230         self.shape_indep_rbutton = False 
    231         self.struct_rbutton = False 
    232         self.plugin_rbutton = False 
     231        #self.shape_rbutton = False 
     232        #self.shape_indep_rbutton = False 
     233        #self.struct_rbutton = False 
     234        #self.plugin_rbutton = False 
    233235        ## the indice of the current selection 
    234236        self.disp_box = 0 
     
    281283        obj.engine_type = copy.deepcopy(self.engine_type) 
    282284         
     285        obj.categorycombobox = self.categorycombobox 
    283286        obj.formfactorcombobox = self.formfactorcombobox 
    284287        obj.structurecombobox = self.structurecombobox 
    285288         
    286         obj.shape_rbutton = self.shape_rbutton 
    287         obj.shape_indep_rbutton = self.shape_indep_rbutton 
    288         obj.struct_rbutton = self.struct_rbutton 
    289         obj.plugin_rbutton = self.plugin_rbutton 
     289        #obj.shape_rbutton = self.shape_rbutton 
     290        #obj.shape_indep_rbutton = self.shape_indep_rbutton 
     291        #obj.struct_rbutton = self.struct_rbutton 
     292        #obj.plugin_rbutton = self.plugin_rbutton 
    290293         
    291294        obj.manager = self.manager 
     
    380383        else: 
    381384            rep += "model name : None\n" 
    382         rep += "model type (form factor) selected: %s\n" % self.shape_rbutton  
     385        #rep += "model type (form factor) selected: %s\n" % self.shape_rbutton  
    383386        rep += "multi_factor : %s\n" % str(self.multi_factor) 
    384         rep += "model type (shape independent) selected: %s\n" % self.shape_indep_rbutton 
    385         rep += "model type (structure factor) selected: %s\n" % self.struct_rbutton 
    386         rep += "model type (plug-in ) selected: %s\n" % self.plugin_rbutton 
     387        rep += "model type (Category) selected: %s\n" % self.categorycombobox 
     388        #rep += "model type (shape independent) selected: %s\n" % self.shape_indep_rbutton 
     389        #rep += "model type (structure factor) selected: %s\n" % self.struct_rbutton 
     390        #rep += "model type (plug-in ) selected: %s\n" % self.plugin_rbutton 
    387391        rep += "data : %s\n" % str(self.data) 
    388392        rep += "Plotting Range: min: %s, max: %s, steps: %s\n" % (str(self.qmin), 
Note: See TracChangeset for help on using the changeset viewer.