Index: sansview/perspectives/fitting/basepage.py
===================================================================
--- sansview/perspectives/fitting/basepage.py	(revision 8bd4dc0e0dfc8c4076af08af780c5468f3b06bb7)
+++ sansview/perspectives/fitting/basepage.py	(revision 0a518e4cbef9e9914e02929382a6c5c5a54c4166)
@@ -87,4 +87,5 @@
         self.sizer4 = wx.BoxSizer(wx.VERTICAL)
         self.sizer5 = wx.BoxSizer(wx.VERTICAL)
+        self.sizer6 = wx.BoxSizer(wx.VERTICAL)
         
         self.sizer0.SetMinSize((375,-1))
@@ -94,4 +95,5 @@
         self.sizer4.SetMinSize((375,-1))
         self.sizer5.SetMinSize((375,-1))
+        self.sizer6.SetMinSize((375,-1))
         
         self.vbox.Add(self.sizer0)
@@ -101,4 +103,5 @@
         self.vbox.Add(self.sizer4)
         self.vbox.Add(self.sizer5)
+        self.vbox.Add(self.sizer6)
         
     def set_layout(self):
@@ -116,4 +119,5 @@
         self.SetScrollbars(20,20,200,100)
         self.Layout()   
+        self.SetAutoLayout(True)
          
     def set_owner(self,owner):
@@ -171,5 +175,5 @@
         import sans.models.dispersion_models 
         self.polydisp= sans.models.dispersion_models.models
-        self.disp_box = wx.ComboBox(self, -1,style=wx.CB_READONLY)
+        self.disp_box = wx.ComboBox(self, -1)
         self.disp_box.SetValue("GaussianModel")
         
@@ -199,5 +203,7 @@
         self.sizer4.Add(boxsizer1,0, wx.EXPAND | wx.ALL, 10)
         self.sizer4.Layout()
+       
         self.SetScrollbars(20,20,200,100)
+        
     
     def select_disp_angle(self, event): 
@@ -322,4 +328,5 @@
             is_modified =self._check_value_enter( self.parameters ,is_modified)        
            
+            self.Layout()
             # Here we should check whether the boundaries have been modified.
             # If qmin and qmax have been modified, update qmin and qmax and 
@@ -574,5 +581,13 @@
             self.structurebox.Show(True)
             self.text2.Show(True)
-       
+            ## draw empty model
+            from sans.models.NullModel import NullModel
+            self.model = NullModel()
+            self.model.name = "Select P(Q) and S(Q)"
+            self.set_model_param_sizer(self.model)
+            self.sizer4_4.Clear()
+            self.sizer4.Layout()
+            self._draw_model()
+            
         self.set_scroll()
         
@@ -589,7 +604,8 @@
             model= models()
             name = model.__class__.__name__
-            if hasattr(model, "name"):
-                name = model.name
-            combobox.Append(name,models)
+            if models.__name__!="NoStructure":
+                if hasattr(model, "name"):
+                    name = model.name
+                combobox.Append(name,models)
             
         wx.EVT_COMBOBOX(combobox,-1, self._on_select_model) 
@@ -607,10 +623,13 @@
        
         if self.multip_cb.GetValue():
-            if struct_factor != None and struct_factor.__name__ != "NoStructure":
+            if struct_factor != None and form_factor != None:
                 from sans.models.MultiplicationModel import MultiplicationModel
-                if form_factor != None:
-                    self.model= MultiplicationModel(form_factor(),struct_factor())
-            msg= "select one P(Q) and one S(Q) to plot"
-            wx.PostEvent(self.parent.parent, StatusEvent(status= msg))
+                self.model= MultiplicationModel(form_factor(),struct_factor())
+            else:
+                from sans.models.NullModel import NullModel
+                self.model = NullModel()
+                self.model.name = "Select P(Q) and S(Q)"
+                msg= "select one P(Q) and one S(Q) to plot"
+                wx.PostEvent(self.parent.parent, StatusEvent(status= msg))
         else:
             if form_factor != None:
@@ -636,15 +655,23 @@
         for item in list:
             try:
-                 name = str(item[1])
-                 value= float(item[2].GetValue())
-                 # If the value of the parameter has changed,
-                 # update the model and set the is_modified flag
-                 if value != self.model.getParam(name):
-                     self.model.setParam(name,value)
-                     is_modified = True    
+                if hasattr(self,"text2_3"):
+                    self.text2_3.Hide()
+                if item[3]!=None:
+                    item[3].Hide()
+                if item[4]!=None:
+                    item[4].Clear()
+                    item[4].Hide()
+                name = str(item[1])
+                value= float(item[2].GetValue())
+                # If the value of the parameter has changed,
+                # update the model and set the is_modified flag
+                if value != self.model.getParam(name):
+                    self.model.setParam(name,value)
+                    is_modified = True    
             except:
                 msg= "Model Drawing  Error:wrong value entered : %s"% sys.exc_value
                 wx.PostEvent(self.parent.parent, StatusEvent(status = msg ))
                 return 
+        
         return is_modified 
         
@@ -676,7 +703,8 @@
                 self._draw_model()
             
-            self.sizer4_4.Layout()
             self.sizer4.Layout()
+            self.Layout()
             self.SetScrollbars(20,20,200,100)
+            
         
         
@@ -694,5 +722,5 @@
         model_disp = wx.StaticText(self, -1, 'No PolyDispersity for this model')
         self.sizer4_4.Add(model_disp,( iy, ix),(1,1),  wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
-        self.sizer4_4.Layout()
+        #self.sizer4_4.Layout()
         self.sizer4.Layout()
         self.SetScrollbars(20,20,200,100)
Index: sansview/perspectives/fitting/fitpage.py
===================================================================
--- sansview/perspectives/fitting/fitpage.py	(revision 24cab5d43036889beb9faa8fa4bc1d1d4e9dd0c3)
+++ sansview/perspectives/fitting/fitpage.py	(revision 0a518e4cbef9e9914e02929382a6c5c5a54c4166)
@@ -307,4 +307,5 @@
         self.sizer4.Layout()
         self.SetScrollbars(20,20,200,100)
+     
         
     def _onFit(self, event):     
@@ -384,11 +385,17 @@
         is_modified = False
         has_error = False
+        self.text2_3.Hide()
+        if self.text_disp_1 !=None:
+            self.text_disp_1.Hide()
         #set the panel when fit result are float not list
         if out.__class__==numpy.float64:
             self.param_toFit[0][2].SetValue(format_number(out))
             self.param_toFit[0][2].Refresh()
+            
+            self.param_toFit[0][4].Clear()
+            self.param_toFit[0][4].Hide()
             if cov !=None :
                 self.text2_3.Show(True)
-                if self.text_disp_1!=None:
+                if self.text_disp_1 !=None:
                     self.text_disp_1.Show(True)
                     
@@ -402,4 +409,8 @@
             #Set the panel when fit result are list
             for item in self.param_toFit:
+                ## reset error value to initial state
+                item[4].Clear()
+                item[4].Hide()
+                item[4].Refresh()
                 if( out != None ) and len(out)<=len(self.param_toFit)and i < len(out):
                     item[2].SetValue(format_number(self.model.getParam(item[1])))
@@ -420,5 +431,4 @@
         
         self.sizer3.Layout()
-        #self.sizer4_4.Layout()
         self.sizer4.Layout()
         self.SetScrollbars(20,20,200,100)
Index: sansview/perspectives/fitting/fitting.py
===================================================================
--- sansview/perspectives/fitting/fitting.py	(revision 24cab5d43036889beb9faa8fa4bc1d1d4e9dd0c3)
+++ sansview/perspectives/fitting/fitting.py	(revision 0a518e4cbef9e9914e02929382a6c5c5a54c4166)
@@ -524,14 +524,13 @@
         ## draw model 1D with smeared data
         data =  self.page_finder[current_pg].get_plotted_data()
-        list = self.page_finder[current_pg].get_model()
+        model = self.page_finder[current_pg].get_model()
         ## if user has already selected a model to plot
         ## redraw the model with data smeared
-        if len(list)>0:
-            model = list[0]
-            smearer =self.page_finder[current_pg].get_smearer()
-            if smearer != None:
-                self.draw_model( model=model, data= data, smearer= smearer,
-                    qmin= qmin, qmax= qmax)
-    
+        
+        smearer =self.page_finder[current_pg].get_smearer()
+        if smearer != None:
+            self.draw_model( model=model, data= data, smearer= smearer,
+                qmin= qmin, qmax= qmax)
+
     
     
