Index: sansview/docs/note2.txt
===================================================================
--- sansview/docs/note2.txt	(revision b30f001fa5fa36cb40396b5855f07fb22b7ab742)
+++ sansview/docs/note2.txt	(revision 49b7efafaf85104da14dbd13a5e42b2aced5de46)
@@ -1,1 +1,4 @@
 1- the combox must contains class.__name__ or model name?
+2- model plugin need dataplugin 's modules 
+3- sort combox list
+4- use 2 combo box instead?
Index: sansview/perspectives/fitting/fitpage.py
===================================================================
--- sansview/perspectives/fitting/fitpage.py	(revision 1b07935d9fc66943962a7fbfdb0f3368a1b27b9b)
+++ sansview/perspectives/fitting/fitpage.py	(revision 49b7efafaf85104da14dbd13a5e42b2aced5de46)
@@ -224,14 +224,16 @@
         id=0
         self.model_list_box=dict
-        for item in self.model_list_box.itervalues():
+        list_name=[]
+        for item in  self.model_list_box.itervalues():
             if hasattr(item, "name"):
                 name = item.name
             else:
                 name = item.__name__
-            
+            list_name.append(name)
+        list_name.sort()   
+        for name in list_name:
             self.modelbox.Insert(name,int(id))
             id+=1
-            
-            wx.EVT_COMBOBOX(self.modelbox,-1, self._on_select_model) 
+        wx.EVT_COMBOBOX(self.modelbox,-1, self._on_select_model) 
         return 0
     
@@ -254,5 +256,4 @@
             except:
                 raise #ValueError,"model.name is not equal to model class name"
-
 
     
Index: sansview/perspectives/fitting/fitpanel.py
===================================================================
--- sansview/perspectives/fitting/fitpanel.py	(revision 1c66bc5463120559c44cc2d7ab6476632eebcdff)
+++ sansview/perspectives/fitting/fitpanel.py	(revision 49b7efafaf85104da14dbd13a5e42b2aced5de46)
@@ -92,5 +92,5 @@
         
         
-    def add_model_page(self,model,page_title):
+    def add_model_page(self,model,description,page_title):
         """
             Add a model page only one  to display any model selected from the menu or the page combo box.
@@ -101,5 +101,5 @@
         if  page_title !=self.draw_model_name or self.draw_model_name ==None: 
             from modelpage import ModelPage
-            panel = ModelPage(self.nb,model, -1)
+            panel = ModelPage(self.nb,model,description, -1)
             panel.set_manager(self.manager)
             panel.set_owner(self.event_owner)
@@ -111,5 +111,5 @@
                 if self.nb.GetPageText(i)==self.page_name:
                     page=self.nb.GetPage(i)
-                    page.set_page(model)
+                    page.set_page(model,description)
                     break
                 
Index: sansview/perspectives/fitting/fitting.py
===================================================================
--- sansview/perspectives/fitting/fitting.py	(revision 060b857e0892ecb70b79b6029b040c9fb57e76c5)
+++ sansview/perspectives/fitting/fitting.py	(revision 49b7efafaf85104da14dbd13a5e42b2aced5de46)
@@ -49,5 +49,5 @@
         self.standalone=True
         ## Fit engine
-        self._fit_engine = 'park'
+        self._fit_engine = 'scipy'
         # Log startup
         logging.info("Fitting plug-in started")   
@@ -208,5 +208,4 @@
           
         """
-       
         try:
             for page, value in self.page_finder.iteritems():
@@ -547,6 +546,8 @@
         #name = evt.model.__class__.__name__
         name="Model View"
-        self.fit_panel.add_model_page(evt.model,name)       
-        self.draw_model(evt.model)
+        model=evt.modelinfo.model()
+        description=evt.modelinfo.description
+        self.fit_panel.add_model_page(model,description,name)       
+        self.draw_model(model)
         
     def draw_model(self,model):
Index: sansview/perspectives/fitting/modelpage.py
===================================================================
--- sansview/perspectives/fitting/modelpage.py	(revision 060b857e0892ecb70b79b6029b040c9fb57e76c5)
+++ sansview/perspectives/fitting/modelpage.py	(revision 49b7efafaf85104da14dbd13a5e42b2aced5de46)
@@ -39,5 +39,5 @@
     
     
-    def __init__(self, parent,model, *args, **kwargs):
+    def __init__(self, parent,model,description, *args, **kwargs):
         wx.Panel.__init__(self, parent, *args, **kwargs)
         """ 
@@ -50,11 +50,14 @@
         self.vbox  = wx.BoxSizer(wx.VERTICAL)
         self.sizer3 = wx.GridBagSizer(5,5)
+        self.sizer1 = wx.GridBagSizer(5,5)
         self.sizer2 = wx.GridBagSizer(5,5)
         self.modelbox = wx.ComboBox(self, -1)
         id = wx.NewId()
         self.vbox.Add(self.sizer3)
+        self.vbox.Add(self.sizer1)
         self.vbox.Add(self.sizer2)
         ix = 0
         iy = 1
+       
         self.sizer3.Add(wx.StaticText(self,-1,'Model'),(iy,ix),(1,1)\
                   , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
@@ -67,5 +70,6 @@
         # model on which the fit would be performed
         self.model=model
-        self.set_panel(model)
+        self.description=description
+        self.set_panel(model,description)
         # preview selected model name
         self.prevmodel_name=model.__class__.__name__
@@ -117,7 +121,8 @@
         return 0
    
-    def set_page(self, model):
+    def set_page(self, model,description):
         print " modelpage: set_page was called",model
         self.model=model
+        self.description=description
         if hasattr(self.model, "name"):
             name = self.model.name
@@ -125,5 +130,5 @@
             name = self.model.__class__.__name__
         self.modelbox.SetValue(name)
-        self.set_panel(self.model)
+        self.set_panel(self.model,description)
         self.manager.draw_model(self.model)
     def _on_select_model(self,event):
@@ -178,5 +183,5 @@
         
         
-    def set_panel(self,model):
+    def set_panel(self,model,description=None):
         """
             Build the panel from the model content
@@ -185,4 +190,5 @@
     
         self.sizer2.Clear(True)
+        self.sizer1.Clear(True)
         self.parameters = []
         self.param_toFit=[]
@@ -192,5 +198,13 @@
         iy = 1
         ix = 0
-        
+        self.cb0 = wx.StaticText(self, -1,'Model Description:')
+        self.sizer1.Add(self.cb0,(iy, ix),(1,1),\
+                          wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
+        ix += 1
+        self.cb01 = wx.StaticText(self, -1,str(description))
+        self.sizer1.Add(self.cb01,(iy, ix),(1,1),\
+                          wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
+        ix = 0
+        iy = 1
         self.cb1 = wx.StaticText(self, -1,'Parameters')
         self.sizer2.Add(self.cb1,(iy, ix),(1,1),\
Index: sansview/perspectives/fitting/models.py
===================================================================
--- sansview/perspectives/fitting/models.py	(revision b30f001fa5fa36cb40396b5855f07fb22b7ab742)
+++ sansview/perspectives/fitting/models.py	(revision 49b7efafaf85104da14dbd13a5e42b2aced5de46)
@@ -5,4 +5,12 @@
 
 (ModelEvent, EVT_MODEL) = wx.lib.newevent.NewEvent()
+class ModelInfo(object):
+    def __init__(self,model,description=None):
+        self.model=model
+        self.description=description
+    def set_description(self, descrition):
+        self.description =str(description)
+    def get_description(self):
+        return self.description
 def log(message):
     print message
@@ -52,7 +60,9 @@
     ## Dictionary of models
     model_list = {}
+    indep_model_list = {}
     model_list_box = {}
     custom_models={}
     plugins=[]
+    indep_model=[]
     ## Event owner
     event_owner = None
@@ -68,15 +78,20 @@
         self.model_list = {}
         self.model_list_box = {}
+        model_info="shape-based models"
         from sans.models.CylinderModel import CylinderModel
-        self.model_list[str(wx.NewId())] = CylinderModel 
+        self.model_list[str(wx.NewId())] = ModelInfo(CylinderModel , model_info)
       
         from sans.models.SphereModel import SphereModel
-        self.model_list[str(wx.NewId())] = SphereModel
+        self.model_list[str(wx.NewId())] =  ModelInfo(SphereModel , model_info)
    
         from sans.guitools.LineModel import LineModel
-        self.model_list[str(wx.NewId())]  = LineModel
-        self.plugins =findModels()
+        self.model_list[str(wx.NewId())]  = ModelInfo(LineModel , model_info)
+        model_info="shape-independent models"
+        from sans.models.Lorentzian import Lorentzian
+        self.indep_model.append( ModelInfo(Lorentzian , model_info) )
         
-        print "models: plugings",self.plugins
+        #Looking for plugins
+        self.plugins = findModels()
+       
         return 0
 
@@ -91,39 +106,54 @@
             @return: the next free event ID following the new menu events
         """
-        
         self._getModelList()
         self.event_owner = event_owner
+        
         shape_submenu= wx.Menu() 
         indep_submenu = wx.Menu()
         added_models = wx.Menu()
+        
         for id_str,value in self.model_list.iteritems():
             item = self.model_list[id_str]
-            
-            name = item.__name__
+            name = item.model.__name__
             if hasattr(item, "name"):
-                name = item.name
-                
-            self.model_list_box[name] =value
-
-               
+                name = item.model.name
+            self.model_list_box[name] =value.model
             shape_submenu.Append(int(id_str), name, name)
             wx.EVT_MENU(event_owner, int(id_str), self._on_model)
         modelmenu.AppendMenu(wx.NewId(), "Shapes...", shape_submenu, "List of shape-based models")
-        modelmenu.AppendMenu(wx.NewId(), "Shape-independent...", indep_submenu, "List of shape-independent models")
         
         id = wx.NewId()
+        if len(self.indep_model_list) == 0:
+            print "models: self.indep_model",self.indep_model
+            for item in self.indep_model:
+                if item not in self.indep_model_list.values():
+                    self.indep_model_list[str(id)] = item
+                    self.model_list[str(id)]=item
+                    if hasattr(item, "name"):
+                        name = item.model.name
+                    else:
+                        name = item.model.__name__
+                    indep_submenu.Append(id,name, name)
+                    self.model_list_box[name] =item.model
+                    wx.EVT_MENU(event_owner, int(id), self._on_model)
+                    id = wx.NewId()         
+        modelmenu.AppendMenu(wx.NewId(), "Shape-independent...", indep_submenu, "List of shape-independent models")
+        model_info="additional models"
+        id = wx.NewId()
         if len(self.custom_models) == 0:
-            print self.plugins
             for item in self.plugins:
-                if item not in self.custom_models.keys():
+                if item not in self.custom_models.values():
                     self.custom_models[str(id)] = item
-                    self.model_list[str(id)]=item
-                    added_models.Append(id, item.name, item.name)
+                    
+                    self.model_list[str(id)]=ModelInfo(item,model_info)
+                    if hasattr(item, "name"):
+                        name = item.name
+                    else:
+                        name = item.__name__
+                    added_models.Append(id, name, name)
+                    self.model_list_box[name] =item
                     wx.EVT_MENU(event_owner, int(id), self._on_model)
                     id = wx.NewId()
-       
-           
         modelmenu.AppendMenu(wx.NewId(),"Added models...", added_models, "List of additional models")
-        
         
         
@@ -142,6 +172,6 @@
             #evt = ModelEvent(model=self.model_list[str(evt.GetId())]())
            
-            model = self.model_list[str(evt.GetId())]()
-            evt = ModelEvent(model=model)
+            model = self.model_list[str(evt.GetId())]
+            evt = ModelEvent(modelinfo=model)
             wx.PostEvent(self.event_owner, evt)
         
