Index: sansview/perspectives/fitting/old_fitpanel.py
===================================================================
--- sansview/perspectives/fitting/old_fitpanel.py	(revision 2a8fac139d8cc1f41446e9eeb7178b18ec8186aa)
+++ sansview/perspectives/fitting/old_fitpanel.py	(revision 2a8fac139d8cc1f41446e9eeb7178b18ec8186aa)
@@ -0,0 +1,240 @@
+import wx
+import wx.aui
+import wx.lib
+import numpy
+import string ,re
+#import models
+_BOX_WIDTH = 80
+
+(FitPageEvent, EVT_FIT_PAGE)   = wx.lib.newevent.NewEvent()
+class FitPanel(wx.aui.AuiNotebook):    
+#class FitPanel(wx.aui.AuiNotebook,wx.panel):
+    """
+        FitPanel class contains fields allowing to fit  models and  data
+        @note: For Fit to be performed the user should check at least one parameter
+        on fit Panel window.
+       
+    """
+    ## Internal name for the AUI manager
+    window_name = "Fit panel"
+    ## Title to appear on top of the window
+    window_caption = "Fit Panel "
+    CENTER_PANE = True
+    def __init__(self, parent, *args, **kwargs):
+        
+        wx.aui.AuiNotebook.__init__(self,parent,-1, style=wx.aui.AUI_NB_SCROLL_BUTTONS )
+        #wx.aui.AuiNotebook.__init__(self,parent,-1, style=wx.aui.AUI_NB_DEFAULT_STYLE  )
+        
+        
+        self.manager=None
+        self.parent=parent
+        self.event_owner=None
+        
+        pageClosedEvent = wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE
+        self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.onClosePage)
+        #Creating the default page --welcomed page
+        from sans.guiframe.welcome_panel import PanelAbout
+        self.about_page = PanelAbout(self, -1)
+        self.AddPage(self.about_page,"welcome!")
+        #self.about_page.Disable()
+        #Creating a page for simultaneous fitting
+        from simfitpage import SimultaneousFitPage
+        self.sim_page = SimultaneousFitPage(self, id=-1)
+        self.AddPage(self.sim_page,"Simultaneous Fit")
+        
+        self._mgr = wx.aui.AuiManager(self)
+
+        
+        #dictionary of miodel {model class name, model class}
+        self.model_list_box={}
+        # save the title of the last page tab added
+        self.fit_page_name=None
+        self.draw_model_name=None
+        #model page info
+        self.model_page_number=None
+       
+        self.model_page=None
+        # increment number for model name
+        self.count=0
+        #updating the panel
+        self.Update()
+        self.Center()
+    def onClosePage(self, event):
+        self.ToggleWindowStyle(wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB)
+        #print "went here",self.get_current_page(), self.GetPage(0)
+        #event.Skip()
+        if self.GetPageCount() <= 2:
+            #print "wente here"
+            
+            # Prevent last tab from being closed
+            self.ToggleWindowStyle(~wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB)
+            
+
+   
+
+
+        
+    def set_manager(self, manager):
+        """
+             set panel manager
+             @param manager: instance of plugin fitting
+        """
+        self.manager = manager
+        self.sim_page.set_manager(manager)
+        
+    def set_owner(self,owner):
+        """ 
+            set and owner for fitpanel
+            @param owner: the class responsible of plotting
+        """
+        self.event_owner=owner
+      
+        
+    def add_fit_page( self,data ):
+        """ 
+            Add a fitting page on the notebook contained by fitpanel
+            @param panel: contains in the page to add
+            @param name: title of the page tab
+            @return panel : page just added for futher used. is used by fitting module
+        """     
+        try:
+            name = data.name # item in Data1D
+        except:
+            name = 'Fit'
+        
+        if self.fit_page_name != name:
+            #self.about_page.Disable()
+            from fitpage1D import FitPage1D
+            panel = FitPage1D(self,data, -1)
+            panel.name=name
+            #m_name= "M"+str(self.count)  
+            panel.set_manager(self.manager)
+            panel.set_owner(self.event_owner)
+            
+            self.AddPage(page=panel,caption=name,select=True)
+            panel.populate_box( self.model_list_box)
+            self.fit_page_name = name
+            EVT_FIT_PAGE
+            return panel #,m_name
+        else:
+            return None #, None
+        
+    def _help_add_model_page(self,model,description,page_title, qmin=0, qmax=0.1, npts=50):
+        """
+            #TODO: fill in description
+            
+            @param qmin: mimimum Q
+            @param qmax: maximum Q
+            @param npts: number of Q points
+        """
+        from modelpage import ModelPage
+        #print "fitpanel model", model
+        panel = ModelPage(self,model,page_title, -1)
+        panel.set_manager(self.manager)
+        panel.set_owner(self.event_owner)
+        self.AddPage(page=panel,caption="Model",select=True)
+        panel.populate_box( self.model_list_box)
+        panel.name = page_title
+        self.draw_model_name=page_title
+        self.model_page_number=self.GetSelection()
+        self.model_page=self.GetPage(self.GetSelection())
+        
+        
+        # Set the range used to plot models
+        self.model_page.set_range(qmin, qmax, npts)
+        
+        # We just created a model page, we are ready to plot the model
+        #self.manager.draw_model(model, model.name)
+        #FOR PLUGIN  for somereason model.name is = BASEcomponent
+        self.manager.draw_model(model, page_title)
+        
+        
+    def add_model_page(self,model,description,page_title, qmin=0, qmax=0.1, npts=50, topmenu=False):
+        """
+            Add a model page only one  to display any model selected from the menu or the page combo box.
+            when this page is closed than the user will be able to open a new one
+            
+            @param model: the model for which paramters will be changed
+            @param page_title: the name of the page
+            @param description: [Coder: fill your description!]
+            @param page_title: [Coder: fill your description!]
+            @param qmin: mimimum Q
+            @param qmax: maximum Q
+            @param npts: number of Q points
+        """
+        print "self.draw_model_name none",self.draw_model_name
+        if topmenu==True:
+            if  self.draw_model_name ==None:
+                print "self.draw_model_name none"
+                self._help_add_model_page(model,description,page_title, qmin=qmin, qmax=qmax, npts=npts)
+            else:
+                #self.model_page.name=page_title
+                #self.draw_model_name=page_title
+                #print "wnent here self.draw_model_name ",self.draw_model_name,self.model_page.name,self.model_page
+                
+                self.model_page.select_model(model, page_title)
+          
+    def get_current_page(self):
+        """
+            @return the current page selected
+        """
+        #return self.nb.GetCurrentPage()
+        return self.GetPage(self.GetSelection() )
+  
+    
+    def onClose(self, page=None,page_number=None):
+        """
+             close the current page except the simpage. remove each check box link to the model
+             selected on that page. remove its reference into page_finder (fitting module)
+        """
+        print "model page", page_number, page, self.draw_model_name
+        if page!=None and page_number!=None:
+            i=self.DeletePage(page_number)
+            #self.nb.RemovePage(page_number)
+            #page.Destroy()
+            self.model_page_number=None
+            self.model_page=None
+            self.draw_model_name=None
+            print"self.draw_model_name",self.draw_model_name
+            return 
+        try:
+            sim_page = self.GetPage(1)
+            selected_page = self.GetPage(self.GetSelection())
+            print "sim_page ",sim_page ,selected_page
+            if sim_page != selected_page:
+                print "sim_page ",sim_page ,selected_page
+                # remove the check box link to the model name of this page (selected_page)
+                sim_page.remove_model(selected_page)
+                #remove that page from page_finder of fitting module
+                page_finder=self.manager.get_page_finder() 
+                for page, value in page_finder.iteritems():
+                    if page==selected_page:
+                        del page_finder[page]
+                        break
+                #Delete the page from notebook
+                page_number = self.GetSelection()
+                print "on close",selected_page.name,self.GetPageText(page_number),self.draw_model_name
+                if selected_page.name== self.draw_model_name:
+                    print "went here"
+                    self.draw_model_name=None
+                    self.model_page=None
+                if  page_number == 1:
+                    self.model_page=None
+                    self.draw_model_name=None
+                #selected_page.Destroy()
+                #self.RemovePage(page_number)
+                i=self.DeletePage(page_number)
+                #self.count =self.count -1 
+                self.fit_page_name=None
+        except:
+            raise
+        #print "fitpanel", self.draw_model_name 
+        
+    def set_model_list(self,dict):
+         """ 
+             copy a dictionary of model into its own dictionary
+             @param dict: dictionnary made of model name as key and model class
+             as value
+         """
+         self.model_list_box = dict
+  
