Index: fittingview/src/sans/perspectives/fitting/basepage.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/basepage.py	(revision 0d795bf88257ddf5d466f4260fcb82263670543e)
+++ fittingview/src/sans/perspectives/fitting/basepage.py	(revision cb270ad27e17b8390da5c566dbcff97450db0c7d)
@@ -239,5 +239,9 @@
                 self._create_default_2d_data()
             else:
-                self._create_default_1d_data()
+                if self.pointsbox.GetValue():
+                    self._create_log_1d_data()
+                else:
+                    self._create_default_1d_data()
+                        
             if self.model != None:
                 if not self.data.is_data:
@@ -265,5 +269,31 @@
         self.data.id = str(self.uid) + " data"
         self.data.group_id = str(self.uid) + " Model1D"
-       
+         
+    def _create_log_1d_data(self):
+        """
+        Create log-spaced data for fitting perspective
+        Only when the page is on theory mode.
+        :warning: This data is never plotted.
+        
+        """
+        if self.qmin_x >= 1.e-10:
+            qmin = numpy.log10(self.qmin_x)
+        else:
+            qmin = -10.    
+            
+        if self.qmax_x <= 1.e10:
+            qmax = numpy.log10(self.qmax_x)
+        else:
+            qmax = 10. 
+               
+        x = numpy.logspace(start=qmin, stop=qmax,
+                           num=self.npts_x, endpoint=True, base=10.0)
+        self.data = Data1D(x=x)
+        self.data.xaxis('\\rm{Q}', "A^{-1}")
+        self.data.yaxis('\\rm{Intensity}', "cm^{-1}")
+        self.data.is_data = False
+        self.data.id = str(self.uid) + " data"
+        self.data.group_id = str(self.uid) + " Model1D"
+      
     def _create_default_2d_data(self):
         """
@@ -2936,4 +2966,9 @@
         self._draw_model()
         
+    def select_log(self, event):
+        """
+        Log checked to generate log spaced points for theory model
+        """
+
     def get_images(self):
         """
Index: fittingview/src/sans/perspectives/fitting/fitpage.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitpage.py	(revision 0d795bf88257ddf5d466f4260fcb82263670543e)
+++ fittingview/src/sans/perspectives/fitting/fitpage.py	(revision cb270ad27e17b8390da5c566dbcff97450db0c7d)
@@ -348,5 +348,5 @@
         sizer_smearer.Add((10, 10))
         
-        # StaticText for chi2, N(for fitting), Npts
+        # StaticText for chi2, N(for fitting), Npts + Log/linear spacing
         self.tcChi = BGTextCtrl(self, -1, "-", size=(75, 20), style=0)
         self.tcChi.SetToolTipString("Chi2/Npts(Fit)")
@@ -361,5 +361,5 @@
         self.Npts_total.SetToolTipString(\
                                 " Total Npts : total number of data points")
-        
+                
         # Update and Draw button
         self.draw_button = wx.Button(self, wx.NewId(),
@@ -369,13 +369,23 @@
         self.draw_button.SetToolTipString("Compute and Draw.")
         
+        self.points_sizer = wx.BoxSizer(wx.HORIZONTAL) 
+        self.pointsbox = wx.CheckBox(self, -1, 'Log?', (10, 10))
+        self.pointsbox.SetValue(False)
+        self.pointsbox.SetToolTipString("Check mark to use log spaced points")
+        wx.EVT_CHECKBOX(self, self.pointsbox.GetId(), self.select_log)
+        
+        self.points_sizer.Add(wx.StaticText(self, -1, 'Npts    '))
+        self.points_sizer.Add(self.pointsbox)
+
         box_description_1 = wx.StaticText(self, -1, '   Chi2/Npts')
         box_description_2 = wx.StaticText(self, -1, 'Npts(Fit)')
-        box_description_3 = wx.StaticText(self, -1, 'Total Npts')
-        box_description_3.SetToolTipString( \
-                                " Total Npts : total number of data points")
+        #box_description_3 = wx.StaticText(self, -1, 'Total Npts')
+        #box_description_3.SetToolTipString( \
+        #                        " Total Npts : total number of data points")
         
         sizer_fit.Add(box_description_1, 0, 0)
         sizer_fit.Add(box_description_2, 0, 0)
-        sizer_fit.Add(box_description_3, 0, 0)
+        sizer_fit.Add(self.points_sizer, 0, 0)
+        #sizer_fit.Add(box_description_3, 0, 0)
         sizer_fit.Add(self.draw_button, 0, 0)
         sizer_fit.Add(self.tcChi, 0, 0)
@@ -528,5 +538,5 @@
         self.btEditMask.SetToolTipString("Edit Mask.")
         self.EditMask_title = wx.StaticText(self, -1, ' Masking(2D)')
-
+        
         sizer.Add(wx.StaticText(self, -1, '   Q range'))
         sizer.Add(wx.StaticText(self, -1, ' Min[1/A]'))
@@ -1848,4 +1858,5 @@
         
         self.Npts_total.Bind(wx.EVT_MOUSE_EVENTS, self._npts_click)
+        self.pointsbox.Disable()
         self.dataSource.SetValue(data_name)
         self.state.data = data
@@ -2648,5 +2659,5 @@
                 param2fit.append(item[1])
         self.parent._manager.set_param2fit(self.uid, param2fit)
-
+    
     def select_param(self, event):
         """
