Index: sansview/perspectives/fitting/basepage.py
===================================================================
--- sansview/perspectives/fitting/basepage.py	(revision 69f908499f567cefb9ec80e66741cacf79c8051b)
+++ sansview/perspectives/fitting/basepage.py	(revision ba1f0b24608060d5541e7447d9f19042c3fb21b4)
@@ -2503,5 +2503,4 @@
         else:
             name = self.model.__class__.__name__
-            print "name",name
 
         frame = HelpWindow(None, -1,  pageToOpen=model_path)    
Index: sansview/perspectives/fitting/fitpage.py
===================================================================
--- sansview/perspectives/fitting/fitpage.py	(revision 06aa2eebf623f81dee00e5affc154c98e8b53d0a)
+++ sansview/perspectives/fitting/fitpage.py	(revision ba1f0b24608060d5541e7447d9f19042c3fb21b4)
@@ -16,6 +16,6 @@
 _BOX_WIDTH = 76
 _DATA_BOX_WIDTH = 300
-SMEAR_SIZE_L = 0.005
-SMEAR_SIZE_H = 0.006
+SMEAR_SIZE_L = 0.00
+SMEAR_SIZE_H = 0.00
 
 import basepage
@@ -72,5 +72,6 @@
         
         """
-        if self.data.__class__.__name__ =="Data2D":
+        if self.data.__class__.__name__ == "Data2D" or \
+                        self.enable2D:
             return True
         return False
@@ -100,5 +101,6 @@
         
         # Check if data is 2D
-        if self.data.__class__.__name__ == 'Data2D':
+        if self.data.__class__.__name__ ==  "Data2D" or \
+                        self.enable2D:
             is_2Ddata = True
             
@@ -315,5 +317,6 @@
         
         #check if it is 2D data
-        if self.data.__class__.__name__ == 'Data2D':
+        if self.data.__class__.__name__ ==  "Data2D" or \
+                        self.enable2D:
             is_2Ddata = True
             
@@ -758,5 +761,6 @@
                                            wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 
                                            5)
-                        if self.data.__class__.__name__ =="Data2D":
+                        if self.data.__class__.__name__ ==  "Data2D" or \
+                                    self.enable2D:
                             cb.Show(True)
                         elif cb.IsShown():
@@ -769,5 +773,6 @@
                         ctl1.SetToolTipString(poly_tip)
                         ctl1.SetValue(str (format_number(value, True)))
-                        if self.data.__class__.__name__ =="Data2D":
+                        if self.data.__class__.__name__ == "Data2D" or \
+                                    self.enable2D:
                             if first_orient:
                                 values.SetLabel('PD[ratio], Sig[deg]')
@@ -820,5 +825,6 @@
                         ctl4.Hide()
                         
-                        if self.data.__class__.__name__ =="Data2D":
+                        if self.data.__class__.__name__ ==  "Data2D" or \
+                                self.enable2D:
                             ctl3.Show(True)
                             ctl4.Show(True) 
@@ -832,5 +838,6 @@
                             
                             Tctl.SetValue(str (format_number(value)))
-                            if self.data.__class__.__name__ =="Data2D":
+                            if self.data.__class__.__name__ ==  "Data2D" or \
+                                    self.enable2D:
                                 Tctl.Show(True)
                             else:
@@ -851,5 +858,6 @@
                             
                             Tct2.SetValue(str (format_number(value)))
-                            if self.data.__class__.__name__ =="Data2D":
+                            if self.data.__class__.__name__ ==  "Data2D" or \
+                                    self.enable2D:
                                 Tct2.Show(True)
                             else:
@@ -880,5 +888,6 @@
                                             text2, ctl2, ctl3, ctl4, disp_box])
                        
-                if self.data.__class__.__name__ =="Data2D":
+                if self.data.__class__.__name__ == "Data2D" or \
+                                self.enable2D:
                     disp_box.Show(True)
                 else:
@@ -1117,6 +1126,8 @@
                         flag1 = self.update_pinhole_smear()
                         flag = flag or flag1
-                elif self.data.__class__.__name__ !="Data2D":
+                elif self.data.__class__.__name__ !=  "Data2D" and \
+                        not self.enable2D:
                     self._manager.set_smearer(smearer=temp_smearer, 
+                                              enable2D=self.enable2D,
                                               uid=self.uid,
                                              qmin= float(self.qmin_x),
@@ -1216,5 +1227,6 @@
             # check for 2d
             if self.data is not None:
-                if self.data.__class__.__name__ =="Data2D":
+                if self.data.__class__.__name__ == "Data2D" or \
+                        self.enable2D:
                     # set mask   
                     radius= numpy.sqrt( self.data.qx_data*self.data.qx_data + 
@@ -1268,5 +1280,6 @@
             for item in self.parameters:
                 #Skip t ifhe angle parameters if 1D data
-                if self.data.__class__.__name__ !="Data2D":
+                if self.data.__class__.__name__ !=  "Data2D" and \
+                        not self.enable2D:
                     if item in self.orientation_params:
                         continue
@@ -1283,5 +1296,6 @@
             for item in self.fittable_param:
                 #Skip t ifhe angle parameters if 1D data
-                if self.data.__class__.__name__ !="Data2D":
+                if self.data.__class__.__name__ !=  "Data2D" and \
+                        not self.enable2D:
                     if item in self.orientation_params:
                         continue
@@ -1324,5 +1338,6 @@
         if self.data is None:
             return
-        elif self.data.__class__.__name__ == 'Data2D':  
+        elif self.data.__class__.__name__ ==  "Data2D" or \
+                        self.enable2D:  
             if data.dqx_data == None or  data.dqy_data ==None: 
                 return
@@ -1537,5 +1552,5 @@
         if data is None:
             return
-        self.smearer = smear_selection(self.data, self.model)
+        self.smearer = smear_selection(data, self.model)
         self.disable_smearer.SetValue(True)
         if self.smearer == None:
@@ -1571,8 +1586,11 @@
             self._set_save_flag(True)
             self._set_preview_flag(True)
+
             self._set_smear(data)
             # more disables for 2D
-            if self.data.__class__.__name__ =="Data2D":   
+            if self.data.__class__.__name__ ==  "Data2D" or \
+                        self.enable2D:
                 self.slit_smearer.Disable()
+                self.pinhole_smearer.Enable(True) 
                 self.default_mask = copy.deepcopy(self.data.mask)
             else:
@@ -1683,5 +1701,6 @@
         npts2fit = 0
         qmin,qmax = self.get_range()
-        if self.data.__class__.__name__ =="Data2D": 
+        if self.data.__class__.__name__ == "Data2D" or \
+                        self.enable2D:
             radius= numpy.sqrt( self.data.qx_data*self.data.qx_data + 
                                 self.data.qy_data*self.data.qy_data )
@@ -1719,5 +1738,8 @@
             return self.param_toFit
         else:
-            raise ValueError,"missing parameter to fit"    
+            msg = "missing parameters to fit"  
+            wx.MessageBox(msg, 'warning')
+            return False
+            #raise ValueError,"missing parameters to fit"    
       
     def onsetValues(self, chisqr, p_name, out, cov):
@@ -2000,4 +2022,5 @@
         ## set smearing value whether or not the data contain the smearing info
         self._manager.set_smearer(smearer=self.current_smearer,
+                                 enable2D=self.enable2D,
                                  qmin=float(self.qmin_x),
                                  qmax= float(self.qmax_x),
@@ -2134,5 +2157,6 @@
             of the values entered for slit smear
         """
-        if self.data.__class__.__name__ == "Data2D":
+        if self.data.__class__.__name__ ==  "Data2D" or \
+                        self.enable2D:
             return
         temp_smearer = None
@@ -2172,4 +2196,5 @@
         ## set smearing value whether or not the data contain the smearing info
         self._manager.set_smearer(smearer=self.current_smearer, 
+                                 enable2D=self.enable2D,
                                  qmin=float(self.qmin_x), 
                                  qmax= float(self.qmax_x),
@@ -2259,9 +2284,8 @@
         self.Layout()
         ## set smearing value whether or not the data contain the smearing info
-        self._manager.set_smearer(uid=self.uid, smearer=temp_smearer, qmin= float(self.qmin_x),
+        self._manager.set_smearer(uid=self.uid, smearer=temp_smearer,
+                        enable2D=self.enable2D,
+                        qmin= float(self.qmin_x),
                         qmax= float(self.qmax_x), draw=True) 
-        
-        ##Calculate chi2
-        #self.compute_chisqr(smearer= temp_smearer)
         
         self.state.enable_smearer=  self.enable_smearer.GetValue()
@@ -2300,5 +2324,6 @@
                 for item in self.parameters:
                     ## for data2D select all to fit
-                    if self.data.__class__.__name__=="Data2D":
+                    if self.data.__class__.__name__==  "Data2D" or \
+                            self.enable2D:
                         item[0].SetValue(True)
                         self.param_toFit.append(item )
@@ -2310,5 +2335,6 @@
                 #if len(self.fittable_param)>0:
                 for item in self.fittable_param:
-                    if self.data.__class__.__name__=="Data2D":
+                    if self.data.__class__.__name__== "Data2D" or \
+                            self.enable2D:
                         item[0].SetValue(True)
                         self.param_toFit.append(item )
@@ -2353,5 +2379,6 @@
         for item in self.parameters:
             #Skip t ifhe angle parameters if 1D data
-            if self.data.__class__.__name__ !="Data2D":
+            if self.data.__class__.__name__ != "Data2D" and\
+                        not self.enable2D:
                 if item in self.orientation_params:
                     continue
@@ -2369,5 +2396,6 @@
         for item in self.fittable_param:
             #Skip t ifhe angle parameters if 1D data
-            if self.data.__class__.__name__ !="Data2D":
+            if self.data.__class__.__name__ !=  "Data2D" and\
+                        not self.enable2D:
                 if item in self.orientation_params:
                     continue
@@ -2381,5 +2409,6 @@
 
         #Calculate num. of angle parameters 
-        if self.data.__class__.__name__ =="Data2D":  
+        if self.data.__class__.__name__ ==  "Data2D" or \
+                       self.enable2D:
             len_orient_para = 0
         else:
@@ -2634,5 +2663,6 @@
                 sizer.Add(orient_angle,(iy, ix),(1,1), 
                           wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
-                if not self.data.__class__.__name__ =="Data2D":
+                if not self.data.__class__.__name__ == "Data2D" and \
+                        not self.enable2D:
                     orient_angle.Hide()
                 else:
@@ -2655,5 +2685,6 @@
                     cb.SetToolTipString("Check mark to fit")
                     wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param)
-                    if self.data.__class__.__name__ =="Data2D":
+                    if self.data.__class__.__name__ == "Data2D" or \
+                            self.enable2D:
                         cb.Show(True)
                     else:
@@ -2669,5 +2700,6 @@
                     ctl1.SetToolTipString("Hit 'Enter' after typing.")
                     ctl1.SetValue(format_number(value, True))
-                    if self.data.__class__.__name__ =="Data2D":
+                    if self.data.__class__.__name__ == "Data2D" or \
+                            self.enable2D:
                         ctl1.Show(True)
                     else:
@@ -2705,5 +2737,6 @@
                     ctl4.Hide()
                     
-                    if self.data.__class__.__name__ =="Data2D":                      
+                    if self.data.__class__.__name__ == "Data2D" or \
+                            self.enable2D:                     
                         ctl3.Show(True)
                         ctl4.Show(True)
@@ -2717,5 +2750,6 @@
                     else:
                         units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT)
-                    if self.data.__class__.__name__ =="Data2D":
+                    if self.data.__class__.__name__ == "Data2D" or \
+                            self.enable2D:
                         units.Show(True)
                     
@@ -2789,9 +2823,16 @@
             self.model_view.SetLabel("Switch to 1D")
             self.enable2D = True
+              
         else:
             self.model_view.SetLabel("Switch to 2D")
             self.enable2D = False
+
+        self.set_model_param_sizer(self.model)
+        self._set_sizer_dispersion()  
         self._draw_model()
-
+        
+        
+        self.state.enable2D =  copy.deepcopy(self.enable2D)
+        
 class BGTextCtrl(wx.TextCtrl):
     """
Index: sansview/perspectives/fitting/fitproblem.py
===================================================================
--- sansview/perspectives/fitting/fitproblem.py	(revision e88ebfd2e12449882f12bc250cc13a70851e559f)
+++ sansview/perspectives/fitting/fitproblem.py	(revision ba1f0b24608060d5541e7447d9f19042c3fb21b4)
@@ -29,4 +29,7 @@
         self.qmax = None
         
+        # 1D or 2D
+        self.enable2D = False
+        
     def clone(self):
         """
@@ -48,4 +51,5 @@
         obj.qmin = copy.deepcopy(self.qmin)
         obj.qmax = copy.deepcopy(self.qmax)
+        obj.enable2D = copy.deepcopy(self.enable2D)
         return obj
         
@@ -112,5 +116,10 @@
         """
         self.theory_data = copy.deepcopy(data)
-      
+        
+    def set_enable2D(self, enable2D):
+        """
+        """
+        self.enable2D = enable2D
+         
     def get_theory_data(self):
         """
@@ -191,4 +200,8 @@
         """
         return self.fit_tab_caption
+    
+    def get_enable2D(self):
+        """
+        """
+        return self.enable2D
    
-   
Index: sansview/perspectives/fitting/fitting.py
===================================================================
--- sansview/perspectives/fitting/fitting.py	(revision f932c02ba89fbb2edf23482f8b275c10454e593b)
+++ sansview/perspectives/fitting/fitting.py	(revision ba1f0b24608060d5541e7447d9f19042c3fb21b4)
@@ -486,5 +486,6 @@
                         panel. _on_fit_complete()
   
-    def set_smearer(self, uid, smearer, qmin=None, qmax=None, draw=True):
+    def set_smearer(self, uid, smearer, qmin=None, qmax=None, draw=True, 
+                    enable2D=False):
         """
         Get a smear object and store it to a fit problem
@@ -497,4 +498,5 @@
             raise ValueError, msg
         self.page_finder[uid].set_smearer(smearer)
+        self.page_finder[uid].set_enable2D(enable2D)
         if draw:
             ## draw model 1D with smeared data
@@ -503,8 +505,14 @@
             if model is None:
                 return
+            enable1D = True
+            enable2D = self.page_finder[uid].get_enable2D()
+            if enable2D:
+                enable1D = False
+
             ## if user has already selected a model to plot
             ## redraw the model with data smeared
             smear = self.page_finder[uid].get_smearer()
             self.draw_model(model=model, data=data, page_id=uid, smearer=smear,
+                enable1D=enable1D, enable2D=enable2D,
                 qmin=qmin, qmax=qmax)
 
@@ -533,5 +541,4 @@
         if data.__class__.__name__ == "Data1D" or not enable2D:    
             ## draw model 1D with no loaded data
-            
             self._draw_model1D(model=model, 
                                data=data,
@@ -547,5 +554,5 @@
         else:     
             ## draw model 2D with no initial data
-             self._draw_model2D(model=model,
+            self._draw_model2D(model=model,
                                 page_id=page_id,
                                 data=data,
@@ -595,4 +602,8 @@
                     page = self.fit_panel.get_page_by_id(page_id)
                     templist = page.get_param_list()
+                    # missing fit parameters
+                    #if not templist:
+                    #    return
+                    # have the list
                     for element in templist:
                         name = str(element[1])
@@ -607,9 +618,9 @@
                     current_page_id = page_id
             except:
-                raise
-                #msg= "%s error: %s" % (engineType, sys.exc_value)
-                #wx.PostEvent(self.parent, StatusEvent(status=msg, info="error",
-                #                                      type="stop"))
-                #return 
+                #raise
+                msg= "%s error: %s" % (engineType, sys.exc_value)
+                wx.PostEvent(self.parent, StatusEvent(status=msg, info="error",
+                                                      type="stop"))
+                return 
         ## If a thread is already started, stop it
         #if self.calc_fit!= None and self.calc_fit.isrunning():
@@ -1083,5 +1094,5 @@
         if model == None:
             return
-       
+
         if self.page_finder[uid].get_model() is None:
             model.name = "M" + str(self.index_model)
@@ -1392,5 +1403,4 @@
             if (self.calc_2D is not None) and self.calc_2D.isrunning():
                 self.calc_2D.stop()
-
             self.calc_2D = Calc2D(x=x,
                                     y=y,
