Changeset 49b7efa in sasview for sansview


Ignore:
Timestamp:
Sep 11, 2008 5:13:32 PM (16 years ago)
Author:
Gervaise Alina <gervyh@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
388309d
Parents:
b30f001
Message:

working on model window display

Location:
sansview
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • sansview/docs/note2.txt

    rb30f001 r49b7efa  
    111- the combox must contains class.__name__ or model name? 
     22- model plugin need dataplugin 's modules  
     33- sort combox list 
     44- use 2 combo box instead? 
  • sansview/perspectives/fitting/fitpage.py

    r1b07935d r49b7efa  
    224224        id=0 
    225225        self.model_list_box=dict 
    226         for item in self.model_list_box.itervalues(): 
     226        list_name=[] 
     227        for item in  self.model_list_box.itervalues(): 
    227228            if hasattr(item, "name"): 
    228229                name = item.name 
    229230            else: 
    230231                name = item.__name__ 
    231              
     232            list_name.append(name) 
     233        list_name.sort()    
     234        for name in list_name: 
    232235            self.modelbox.Insert(name,int(id)) 
    233236            id+=1 
    234              
    235             wx.EVT_COMBOBOX(self.modelbox,-1, self._on_select_model)  
     237        wx.EVT_COMBOBOX(self.modelbox,-1, self._on_select_model)  
    236238        return 0 
    237239     
     
    254256            except: 
    255257                raise #ValueError,"model.name is not equal to model class name" 
    256  
    257258 
    258259     
  • sansview/perspectives/fitting/fitpanel.py

    r1c66bc5 r49b7efa  
    9292         
    9393         
    94     def add_model_page(self,model,page_title): 
     94    def add_model_page(self,model,description,page_title): 
    9595        """ 
    9696            Add a model page only one  to display any model selected from the menu or the page combo box. 
     
    101101        if  page_title !=self.draw_model_name or self.draw_model_name ==None:  
    102102            from modelpage import ModelPage 
    103             panel = ModelPage(self.nb,model, -1) 
     103            panel = ModelPage(self.nb,model,description, -1) 
    104104            panel.set_manager(self.manager) 
    105105            panel.set_owner(self.event_owner) 
     
    111111                if self.nb.GetPageText(i)==self.page_name: 
    112112                    page=self.nb.GetPage(i) 
    113                     page.set_page(model) 
     113                    page.set_page(model,description) 
    114114                    break 
    115115                 
  • sansview/perspectives/fitting/fitting.py

    r060b857 r49b7efa  
    4949        self.standalone=True 
    5050        ## Fit engine 
    51         self._fit_engine = 'park' 
     51        self._fit_engine = 'scipy' 
    5252        # Log startup 
    5353        logging.info("Fitting plug-in started")    
     
    208208           
    209209        """ 
    210         
    211210        try: 
    212211            for page, value in self.page_finder.iteritems(): 
     
    547546        #name = evt.model.__class__.__name__ 
    548547        name="Model View" 
    549         self.fit_panel.add_model_page(evt.model,name)        
    550         self.draw_model(evt.model) 
     548        model=evt.modelinfo.model() 
     549        description=evt.modelinfo.description 
     550        self.fit_panel.add_model_page(model,description,name)        
     551        self.draw_model(model) 
    551552         
    552553    def draw_model(self,model): 
  • sansview/perspectives/fitting/modelpage.py

    r060b857 r49b7efa  
    3939     
    4040     
    41     def __init__(self, parent,model, *args, **kwargs): 
     41    def __init__(self, parent,model,description, *args, **kwargs): 
    4242        wx.Panel.__init__(self, parent, *args, **kwargs) 
    4343        """  
     
    5050        self.vbox  = wx.BoxSizer(wx.VERTICAL) 
    5151        self.sizer3 = wx.GridBagSizer(5,5) 
     52        self.sizer1 = wx.GridBagSizer(5,5) 
    5253        self.sizer2 = wx.GridBagSizer(5,5) 
    5354        self.modelbox = wx.ComboBox(self, -1) 
    5455        id = wx.NewId() 
    5556        self.vbox.Add(self.sizer3) 
     57        self.vbox.Add(self.sizer1) 
    5658        self.vbox.Add(self.sizer2) 
    5759        ix = 0 
    5860        iy = 1 
     61        
    5962        self.sizer3.Add(wx.StaticText(self,-1,'Model'),(iy,ix),(1,1)\ 
    6063                  , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     
    6770        # model on which the fit would be performed 
    6871        self.model=model 
    69         self.set_panel(model) 
     72        self.description=description 
     73        self.set_panel(model,description) 
    7074        # preview selected model name 
    7175        self.prevmodel_name=model.__class__.__name__ 
     
    117121        return 0 
    118122    
    119     def set_page(self, model): 
     123    def set_page(self, model,description): 
    120124        print " modelpage: set_page was called",model 
    121125        self.model=model 
     126        self.description=description 
    122127        if hasattr(self.model, "name"): 
    123128            name = self.model.name 
     
    125130            name = self.model.__class__.__name__ 
    126131        self.modelbox.SetValue(name) 
    127         self.set_panel(self.model) 
     132        self.set_panel(self.model,description) 
    128133        self.manager.draw_model(self.model) 
    129134    def _on_select_model(self,event): 
     
    178183         
    179184         
    180     def set_panel(self,model): 
     185    def set_panel(self,model,description=None): 
    181186        """ 
    182187            Build the panel from the model content 
     
    185190     
    186191        self.sizer2.Clear(True) 
     192        self.sizer1.Clear(True) 
    187193        self.parameters = [] 
    188194        self.param_toFit=[] 
     
    192198        iy = 1 
    193199        ix = 0 
    194          
     200        self.cb0 = wx.StaticText(self, -1,'Model Description:') 
     201        self.sizer1.Add(self.cb0,(iy, ix),(1,1),\ 
     202                          wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     203        ix += 1 
     204        self.cb01 = wx.StaticText(self, -1,str(description)) 
     205        self.sizer1.Add(self.cb01,(iy, ix),(1,1),\ 
     206                          wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     207        ix = 0 
     208        iy = 1 
    195209        self.cb1 = wx.StaticText(self, -1,'Parameters') 
    196210        self.sizer2.Add(self.cb1,(iy, ix),(1,1),\ 
  • sansview/perspectives/fitting/models.py

    rb30f001 r49b7efa  
    55 
    66(ModelEvent, EVT_MODEL) = wx.lib.newevent.NewEvent() 
     7class ModelInfo(object): 
     8    def __init__(self,model,description=None): 
     9        self.model=model 
     10        self.description=description 
     11    def set_description(self, descrition): 
     12        self.description =str(description) 
     13    def get_description(self): 
     14        return self.description 
    715def log(message): 
    816    print message 
     
    5260    ## Dictionary of models 
    5361    model_list = {} 
     62    indep_model_list = {} 
    5463    model_list_box = {} 
    5564    custom_models={} 
    5665    plugins=[] 
     66    indep_model=[] 
    5767    ## Event owner 
    5868    event_owner = None 
     
    6878        self.model_list = {} 
    6979        self.model_list_box = {} 
     80        model_info="shape-based models" 
    7081        from sans.models.CylinderModel import CylinderModel 
    71         self.model_list[str(wx.NewId())] = CylinderModel  
     82        self.model_list[str(wx.NewId())] = ModelInfo(CylinderModel , model_info) 
    7283       
    7384        from sans.models.SphereModel import SphereModel 
    74         self.model_list[str(wx.NewId())] = SphereModel 
     85        self.model_list[str(wx.NewId())] =  ModelInfo(SphereModel , model_info) 
    7586    
    7687        from sans.guitools.LineModel import LineModel 
    77         self.model_list[str(wx.NewId())]  = LineModel 
    78         self.plugins =findModels() 
     88        self.model_list[str(wx.NewId())]  = ModelInfo(LineModel , model_info) 
     89        model_info="shape-independent models" 
     90        from sans.models.Lorentzian import Lorentzian 
     91        self.indep_model.append( ModelInfo(Lorentzian , model_info) ) 
    7992         
    80         print "models: plugings",self.plugins 
     93        #Looking for plugins 
     94        self.plugins = findModels() 
     95        
    8196        return 0 
    8297 
     
    91106            @return: the next free event ID following the new menu events 
    92107        """ 
    93          
    94108        self._getModelList() 
    95109        self.event_owner = event_owner 
     110         
    96111        shape_submenu= wx.Menu()  
    97112        indep_submenu = wx.Menu() 
    98113        added_models = wx.Menu() 
     114         
    99115        for id_str,value in self.model_list.iteritems(): 
    100116            item = self.model_list[id_str] 
    101              
    102             name = item.__name__ 
     117            name = item.model.__name__ 
    103118            if hasattr(item, "name"): 
    104                 name = item.name 
    105                  
    106             self.model_list_box[name] =value 
    107  
    108                 
     119                name = item.model.name 
     120            self.model_list_box[name] =value.model 
    109121            shape_submenu.Append(int(id_str), name, name) 
    110122            wx.EVT_MENU(event_owner, int(id_str), self._on_model) 
    111123        modelmenu.AppendMenu(wx.NewId(), "Shapes...", shape_submenu, "List of shape-based models") 
    112         modelmenu.AppendMenu(wx.NewId(), "Shape-independent...", indep_submenu, "List of shape-independent models") 
    113124         
    114125        id = wx.NewId() 
     126        if len(self.indep_model_list) == 0: 
     127            print "models: self.indep_model",self.indep_model 
     128            for item in self.indep_model: 
     129                if item not in self.indep_model_list.values(): 
     130                    self.indep_model_list[str(id)] = item 
     131                    self.model_list[str(id)]=item 
     132                    if hasattr(item, "name"): 
     133                        name = item.model.name 
     134                    else: 
     135                        name = item.model.__name__ 
     136                    indep_submenu.Append(id,name, name) 
     137                    self.model_list_box[name] =item.model 
     138                    wx.EVT_MENU(event_owner, int(id), self._on_model) 
     139                    id = wx.NewId()          
     140        modelmenu.AppendMenu(wx.NewId(), "Shape-independent...", indep_submenu, "List of shape-independent models") 
     141        model_info="additional models" 
     142        id = wx.NewId() 
    115143        if len(self.custom_models) == 0: 
    116             print self.plugins 
    117144            for item in self.plugins: 
    118                 if item not in self.custom_models.keys(): 
     145                if item not in self.custom_models.values(): 
    119146                    self.custom_models[str(id)] = item 
    120                     self.model_list[str(id)]=item 
    121                     added_models.Append(id, item.name, item.name) 
     147                     
     148                    self.model_list[str(id)]=ModelInfo(item,model_info) 
     149                    if hasattr(item, "name"): 
     150                        name = item.name 
     151                    else: 
     152                        name = item.__name__ 
     153                    added_models.Append(id, name, name) 
     154                    self.model_list_box[name] =item 
    122155                    wx.EVT_MENU(event_owner, int(id), self._on_model) 
    123156                    id = wx.NewId() 
    124         
    125             
    126157        modelmenu.AppendMenu(wx.NewId(),"Added models...", added_models, "List of additional models") 
    127          
    128158         
    129159         
     
    142172            #evt = ModelEvent(model=self.model_list[str(evt.GetId())]()) 
    143173            
    144             model = self.model_list[str(evt.GetId())]() 
    145             evt = ModelEvent(model=model) 
     174            model = self.model_list[str(evt.GetId())] 
     175            evt = ModelEvent(modelinfo=model) 
    146176            wx.PostEvent(self.event_owner, evt) 
    147177         
Note: See TracChangeset for help on using the changeset viewer.