Index: src/sas/sascalc/data_util/qsmearing.py
===================================================================
--- src/sas/sascalc/data_util/qsmearing.py	(revision f8aa738fc96212318518aaa88e9bdeaac7010fbb)
+++ src/sas/sascalc/data_util/qsmearing.py	(revision 392056d78a94493937466859b311c0df0d631351)
@@ -5,5 +5,5 @@
 #This software was developed by the University of Tennessee as part of the
 #Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
-#project funded by the US National Science Foundation. 
+#project funded by the US National Science Foundation.
 #See the license text in license.txt
 #copyright 2008, University of Tennessee
@@ -13,6 +13,7 @@
 import logging
 import sys
+from sasmodels import sesans
 
-from sasmodels.resolution import Slit1D, Pinhole1D
+from sasmodels.resolution import Slit1D, Pinhole1D, SESANS1D
 from sasmodels.resolution2d import Pinhole2D
 
@@ -48,4 +49,12 @@
 
     # Look for resolution smearing data
+    _found_sesans = False
+    if data.dx is not None and data.meta_data['loader']=='SESANS':
+        if data.dx[0] > 0.0:
+            _found_sesans = True
+
+    if _found_sesans == True:
+        return sesans_smear(data, model)
+
     _found_resolution = False
     if data.dx is not None and len(data.dx) == len(data.x):
@@ -92,5 +101,14 @@
         self.model = model
         self.resolution = resolution
-        self.offset = numpy.searchsorted(self.resolution.q_calc, self.resolution.q[0])
+        if hasattr(self.resolution, 'data'):
+            if self.resolution.data.meta_data['loader'] == 'SESANS':
+                self.offset = 0
+            # This is default behaviour, for future resolution/transform functions this needs to be revisited.
+            else:
+                self.offset = numpy.searchsorted(self.resolution.q_calc, self.resolution.q[0])
+        else:
+            self.offset = numpy.searchsorted(self.resolution.q_calc, self.resolution.q[0])
+
+        #self.offset = numpy.searchsorted(self.resolution.q_calc, self.resolution.q[0])
 
     def apply(self, iq_in, first_bin=0, last_bin=None):
@@ -126,4 +144,5 @@
         q[first:last+1].
         """
+
         q = self.resolution.q
         first = numpy.searchsorted(q, q_min)
@@ -142,2 +161,11 @@
     width = data.dx if data.dx is not None else 0
     return PySmear(Pinhole1D(q, width), model)
+
+def sesans_smear(data, model=None):
+    #This should be calculated characteristic length scale
+    #Probably not a data prameter either
+    #Need function to calculate this based on model
+    #Here assume a number
+    Rmax = 1000000
+    q_calc = sesans.make_q(data.sample.zacceptance, Rmax)
+    return PySmear(SESANS1D(data,q_calc),model)
Index: src/sas/sascalc/dataloader/data_info.py
===================================================================
--- src/sas/sascalc/dataloader/data_info.py	(revision 1b1a1c1f5fa5d17a2e503d0e1803259f57dc943a)
+++ src/sas/sascalc/dataloader/data_info.py	(revision 1fac6c09c8ab1f0c228d078ee755bc91242e2fdc)
@@ -25,58 +25,4 @@
 import numpy
 import math
-
-class plottable_sesans1D(object):
-    """
-    SESANS is a place holder for 1D SESANS plottables.
-
-    #TODO: This was directly copied from the plottables_1D. Modified Somewhat.
-    #Class has been updated.
-    """
-    # The presence of these should be mutually
-    # exclusive with the presence of Qdev (dx)
-    x = None
-    y = None
-    lam = None
-    dx = None
-    dy = None
-    dlam = None
-    ## Slit smearing length
-    dxl = None
-    ## Slit smearing width
-    dxw = None
-
-    # Units
-    _xaxis = ''
-    _xunit = ''
-    _yaxis = ''
-    _yunit = ''
-
-    def __init__(self, x, y, lam, dx=None, dy=None, dlam=None):
-#        print "SESANS plottable working"
-        self.x = numpy.asarray(x)
-        self.y = numpy.asarray(y)
-        self.lam = numpy.asarray(lam)
-        if dx is not None:
-            self.dx = numpy.asarray(dx)
-        if dy is not None:
-            self.dy = numpy.asarray(dy)
-        if dlam is not None:
-            self.dlam = numpy.asarray(dlam)
-
-    def xaxis(self, label, unit):
-        """
-        set the x axis label and unit
-        """
-        self._xaxis = label
-        self._xunit = unit
-
-    def yaxis(self, label, unit):
-        """
-        set the y axis label and unit
-        """
-        self._yaxis = label
-        self._yunit = unit
-
-
 class plottable_1D(object):
     """
@@ -94,4 +40,9 @@
     dxw = None
 
+    ## SESANS specific params (wavelengths for spin echo length calculation)
+
+    lam = None
+    dlam = None
+
     # Units
     _xaxis = ''
@@ -100,5 +51,5 @@
     _yunit = ''
 
-    def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None):
+    def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None, lam=None, dlam=None):
         self.x = numpy.asarray(x)
         self.y = numpy.asarray(y)
@@ -111,4 +62,8 @@
         if dxw is not None:
             self.dxw = numpy.asarray(dxw)
+        if lam is not None:
+            self.lam = numpy.asarray(lam)
+        if dlam is not None:
+            self.dlam = numpy.asarray(dlam)
 
     def xaxis(self, label, unit):
@@ -736,14 +691,29 @@
         return self._perform_union(other)
 
-class SESANSData1D(plottable_sesans1D, DataInfo):
-    """
-    SESANS 1D data class
-    """
-    x_unit = 'nm'
-    y_unit = 'pol'
-
-    def __init__(self, x=None, y=None, lam=None, dx=None, dy=None, dlam=None):
+class Data1D(plottable_1D, DataInfo):
+    """
+    1D data class
+    """
+    #if plottable_1D.lam is None: # This means it's SANS data!
+     #   x_unit = '1/A'
+      #  y_unit = '1/cm'
+    #elif plottable_1D.lam is not None: # This means it's SESANS data!
+     #   x_unit = 'A'
+      #  y_unit = 'pol'
+    #else: # and if it's neither, you get punished!
+     #   raise(TypeError,'This is neither SANS nor SESANS data, what the hell are you doing??')
+
+    def __init__(self, x=None, y=None, dx=None, dy=None, lam=None, dlam=None, isSesans=False):
+        self.isSesans = isSesans
         DataInfo.__init__(self)
-        plottable_sesans1D.__init__(self, x, y, lam, dx, dy, dlam)
+        plottable_1D.__init__(self, x, y, dx, dy,None, None, lam, dlam)
+        if self.isSesans:
+            x_unit = 'A'
+            y_unit = 'pol'
+        elif not self.isSesans: # it's SANS data! (Could also be simple else statement, but i prefer exhaustive conditionals...-JHB)
+            x_unit = '1/A'
+            y_unit = '1/cm'
+        else: # and if it's neither, you get punished!
+            raise(TypeError,'This is neither SANS nor SESANS data, what the hell are you doing??')
 
     def __str__(self):
@@ -759,60 +729,4 @@
         return _str
 
-    def clone_without_data(self, length=0, clone=None):
-        """
-        Clone the current object, without copying the data (which
-        will be filled out by a subsequent operation).
-        The data arrays will be initialized to zero.
-
-        :param length: length of the data array to be initialized
-        :param clone: if provided, the data will be copied to clone
-        """
-        from copy import deepcopy
-        if clone is None or not issubclass(clone.__class__, Data1D):
-            x = numpy.zeros(length)
-            dx = numpy.zeros(length)
-            y = numpy.zeros(length)
-            dy = numpy.zeros(length)
-            clone = Data1D(x, y, dx=dx, dy=dy)
-
-        clone.title = self.title
-        clone.run = self.run
-        clone.filename = self.filename
-        clone.instrument = self.instrument
-        clone.notes = deepcopy(self.notes)
-        clone.process = deepcopy(self.process)
-        clone.detector = deepcopy(self.detector)
-        clone.sample = deepcopy(self.sample)
-        clone.source = deepcopy(self.source)
-        clone.collimation = deepcopy(self.collimation)
-        clone.trans_spectrum = deepcopy(self.trans_spectrum)
-        clone.meta_data = deepcopy(self.meta_data)
-        clone.errors = deepcopy(self.errors)
-
-        return clone
-
-class Data1D(plottable_1D, DataInfo):
-    """
-    1D data class
-    """
-    x_unit = '1/A'
-    y_unit = '1/cm'
-
-    def __init__(self, x, y, dx=None, dy=None):
-        DataInfo.__init__(self)
-        plottable_1D.__init__(self, x, y, dx, dy)
-
-    def __str__(self):
-        """
-        Nice printout
-        """
-        _str = "%s\n" % DataInfo.__str__(self)
-        _str += "Data:\n"
-        _str += "   Type:         %s\n" % self.__class__.__name__
-        _str += "   X-axis:       %s\t[%s]\n" % (self._xaxis, self._xunit)
-        _str += "   Y-axis:       %s\t[%s]\n" % (self._yaxis, self._yunit)
-        _str += "   Length:       %g\n" % len(self.x)
-        return _str
-
     def is_slit_smeared(self):
         """
@@ -843,5 +757,7 @@
             y = numpy.zeros(length)
             dy = numpy.zeros(length)
-            clone = Data1D(x, y, dx=dx, dy=dy)
+            lam = numpy.zeros(length)
+            dlam = numpy.zeros(length)
+            clone = Data1D(x, y, lam=lam, dx=dx, dy=dy, dlam=dlam )
 
         clone.title = self.title
Index: src/sas/sascalc/dataloader/readers/sesans_reader.py
===================================================================
--- src/sas/sascalc/dataloader/readers/sesans_reader.py	(revision 1c0e3b00657233c26bdd975c429cd05561a5c4b8)
+++ src/sas/sascalc/dataloader/readers/sesans_reader.py	(revision 392056d78a94493937466859b311c0df0d631351)
@@ -8,5 +8,5 @@
 import numpy
 import os
-from sas.sascalc.dataloader.data_info import SESANSData1D
+from sas.sascalc.dataloader.data_info import Data1D
 
 # Check whether we have a converter available
@@ -84,5 +84,5 @@
                 tdx = numpy.zeros(0)
 #                print "all good"
-                output = SESANSData1D(x=x, y=y, lam=lam, dy=dy, dx=dx, dlam=dlam)
+                output = Data1D(x=x, y=y, lam=lam, dy=dy, dx=dx, dlam=dlam, isSesans=True )
 #                print output                
                 self.filename = output.filename = basename
@@ -121,10 +121,17 @@
                         paramvals.append(toks[1])
                     if len(toks)>5:
+                       #zvals.append(toks[0])
+                        #dzvals.append(toks[1])
+                        #lamvals.append(toks[2])
+                        #dlamvals.append(toks[3])
+                        #Pvals.append(toks[4])
+                        #dPvals.append(toks[5])
+
                         zvals.append(toks[0])
-                        dzvals.append(toks[1])
-                        lamvals.append(toks[2])
-                        dlamvals.append(toks[3])
-                        Pvals.append(toks[4])
-                        dPvals.append(toks[5])
+                        dzvals.append(toks[3])
+                        lamvals.append(toks[4])
+                        dlamvals.append(toks[5])
+                        Pvals.append(toks[1])
+                        dPvals.append(toks[2])
                     else:
                         continue
@@ -140,6 +147,8 @@
                 default_z_unit = "A"
                 data_conv_P = None
-                default_p_unit = " "
+                default_p_unit = " " # Adjust unit for axis (L^-3)
                 lam_unit = lam_header[1].replace("[","").replace("]","")
+                if lam_unit == 'AA':
+                    lam_unit = 'A'
                 varheader=[zvals[0],dzvals[0],lamvals[0],dlamvals[0],Pvals[0],dPvals[0]]
                 valrange=range(1, len(zvals))
@@ -161,4 +170,5 @@
                 output.x, output.x_unit = self._unit_conversion(x, lam_unit, default_z_unit)
                 output.y = y
+                output.y_unit = '\AA^{-2} cm^{-1}' # output y_unit erbij
                 output.dx, output.dx_unit = self._unit_conversion(dx, lam_unit, default_z_unit)
                 output.dy = dy
@@ -166,14 +176,14 @@
                 output.dlam, output.dlam_unit = self._unit_conversion(dlam, lam_unit, default_z_unit)
 
-                output.xaxis("\rm{z}", output.x_unit)
-                output.yaxis("\\rm{P/P0}", output.y_unit)
+                output.xaxis("\\rm{z}", output.x_unit)
+                output.yaxis("\\rm{ln(P)/(t \lambda^2)}", output.y_unit) # Adjust label to ln P/(lam^2 t), remove lam column refs
                 # Store loading process information
                 output.meta_data['loader'] = self.type_name
-                output.sample.thickness = float(paramvals[6])
+                #output.sample.thickness = float(paramvals[6])
                 output.sample.name = paramvals[1]
                 output.sample.ID = paramvals[0]
                 zaccept_unit_split = paramnames[7].split("[")
                 zaccept_unit = zaccept_unit_split[1].replace("]","")
-                if zaccept_unit.strip() == '\AA^-1':
+                if zaccept_unit.strip() == '\AA^-1' or zaccept_unit.strip() == '\A^-1':
                     zaccept_unit = "1/A"
                 output.sample.zacceptance=(float(paramvals[7]),zaccept_unit)
Index: src/sas/sascalc/fit/AbstractFitEngine.py
===================================================================
--- src/sas/sascalc/fit/AbstractFitEngine.py	(revision fc18690cd84cc4dd6e33a9d344f47b08cef71290)
+++ src/sas/sascalc/fit/AbstractFitEngine.py	(revision 79885018e2047aef9517748c8de7eccc28d1305e)
@@ -131,5 +131,5 @@
         a way to get residuals from data.
     """
-    def __init__(self, x, y, dx=None, dy=None, smearer=None, data=None):
+    def __init__(self, x, y, dx=None, dy=None, smearer=None, data=None, lam=None, dlam=None):
         """
             :param smearer: is an object of class QSmearer or SlitSmearer
@@ -152,5 +152,5 @@
                 
         """
-        Data1D.__init__(self, x=x, y=y, dx=dx, dy=dy)
+        Data1D.__init__(self, x=x, y=y, dx=dx, dy=dy, lam=lam,dlam=dlam)
         self.num_points = len(x)
         self.sas_data = data
Index: src/sas/sascalc/fit/BumpsFitting.py
===================================================================
--- src/sas/sascalc/fit/BumpsFitting.py	(revision b699768550de9d4b35b087234ec1d2a461922bab)
+++ src/sas/sascalc/fit/BumpsFitting.py	(revision 79885018e2047aef9517748c8de7eccc28d1305e)
@@ -26,5 +26,4 @@
 from bumps import parameter
 from bumps.fitproblem import FitProblem
-
 
 from sas.sascalc.fit.AbstractFitEngine import FitEngine
Index: src/sas/sasgui/guiframe/dataFitting.py
===================================================================
--- src/sas/sasgui/guiframe/dataFitting.py	(revision 9b6d62d61651fd47f2c1045d4d7ac93baea0c533)
+++ src/sas/sasgui/guiframe/dataFitting.py	(revision 1fac6c09c8ab1f0c228d078ee755bc91242e2fdc)
@@ -17,5 +17,5 @@
     """
     """
-    def __init__(self, x=None, y=None, dx=None, dy=None):
+    def __init__(self, x=None, y=None, dx=None, dy=None, lam=None, dlam=None, isSesans=False):
         """
         """
@@ -24,6 +24,7 @@
         if y is None:
             y = []
-        PlotData1D.__init__(self, x, y, dx, dy)
-        LoadData1D.__init__(self, x, y, dx, dy)
+        self.isSesans = isSesans
+        PlotData1D.__init__(self, x, y, dx, dy, lam, dlam)
+        LoadData1D.__init__(self, x, y, dx, dy, lam, dlam, isSesans)
         self.id = None
         self.list_group_id = []
@@ -68,5 +69,5 @@
         # First, check the data compatibility
         dy, dy_other = self._validity_check(other)
-        result = Data1D(x=[], y=[], dx=None, dy=None)
+        result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=None)
         result.clone_without_data(length=len(self.x), clone=self)
         result.copy_from_datainfo(data1d=self)
@@ -115,7 +116,11 @@
         # First, check the data compatibility
         self._validity_check_union(other)
-        result = Data1D(x=[], y=[], dx=None, dy=None)
+        result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=None)
         tot_length = len(self.x) + len(other.x)
         result = self.clone_without_data(length=tot_length, clone=result)
+        if self.dlam == None or other.dlam is None:
+            result.dlam = None
+        else:
+            result.dlam = numpy.zeros(tot_length)
         if self.dy == None or other.dy is None:
             result.dy = None
@@ -141,4 +146,9 @@
         result.y = numpy.append(self.y, other.y)
         result.y = result.y[ind]
+        result.lam = numpy.append(self.lam, other.lam)
+        result.lam = result.lam[ind]
+        if result.dlam != None:
+            result.dlam = numpy.append(self.dlam, other.dlam)
+            result.dlam = result.dlam[ind]
         if result.dy != None:
             result.dy = numpy.append(self.dy, other.dy)
@@ -260,7 +270,11 @@
         # First, check the data compatibility
         self._validity_check_union(other)
-        result = Data1D(x=[], y=[], dx=None, dy=None)
+        result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=[])
         tot_length = len(self.x)+len(other.x)
         result.clone_without_data(length=tot_length, clone=self)
+        if self.dlam == None or other.dlam is None:
+            result.dlam = None
+        else:
+            result.dlam = numpy.zeros(tot_length)
         if self.dy == None or other.dy is None:
             result.dy = None
@@ -285,4 +299,6 @@
         result.y = numpy.append(self.y, other.y)
         result.y = result.y[ind]
+        result.lam = numpy.append(self.lam, other.lam)
+        result.lam = result.lam[ind]
         if result.dy != None:
             result.dy = numpy.append(self.dy, other.dy)
Index: src/sas/sasgui/guiframe/data_manager.py
===================================================================
--- src/sas/sasgui/guiframe/data_manager.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/guiframe/data_manager.py	(revision 1fac6c09c8ab1f0c228d078ee755bc91242e2fdc)
@@ -62,6 +62,8 @@
         if issubclass(Data2D, data.__class__):
             new_plot = Data2D(image=None, err_image=None) 
-        else: 
-            new_plot = Data1D(x=[], y=[], dx=None, dy=None)
+        elif data.meta_data['loader'] == 'SESANS':
+            new_plot = Data1D(x=[], y=[], dx=None, dy=None, lam=None, dlam=None, isSesans=True)
+        else:
+            new_plot = Data1D(x=[], y=[], dx=None, dy=None, lam=None, dlam=None) #SESANS check???
            
         new_plot.copy_from_datainfo(data)
Index: src/sas/sasgui/perspectives/fitting/basepage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/basepage.py	(revision f22b43c5dab96bd151987be4415dee98e74b2c29)
+++ src/sas/sasgui/perspectives/fitting/basepage.py	(revision f22b43c5dab96bd151987be4415dee98e74b2c29)
@@ -142,4 +142,5 @@
         self.theory_qmin_x = None
         self.theory_qmax_x = None
+        self.cb1 = None
         self.btEditMask = None
         self.btFit = None
@@ -280,6 +281,8 @@
                            num=self.npts_x, endpoint=True)
         self.data = Data1D(x=x)
-        self.data.xaxis('\\rm{Q}', "A^{-1}")
-        self.data.yaxis('\\rm{Intensity}', "cm^{-1}")
+        #self.data.xaxis('\\rm{Q}', "A^{-1}")
+        self.data.xaxis('\\rm{X}', "")
+        #self.data.yaxis('\\rm{Intensity}', "cm^{-1}")
+        self.data.yaxis('\\rm{Y}', "")
         self.data.is_data = False
         self.data.id = str(self.uid) + " data"
@@ -306,6 +309,8 @@
                            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.xaxis('\\rm{Q}', "A^{-1}")
+        #self.data.yaxis('\\rm{Intensity}', "cm^{-1}")
+        self.data.xaxis('\\rm{X}', "")
+        self.data.yaxis('\\rm{Y}', "")
         self.data.is_data = False
         self.data.id = str(self.uid) + " data"
@@ -426,4 +431,5 @@
         self.sizer2 = wx.BoxSizer(wx.VERTICAL)
         self.sizer3 = wx.BoxSizer(wx.VERTICAL)
+        self.sizerTrafo = wx.BoxSizer(wx.VERTICAL)
         self.sizer4 = wx.BoxSizer(wx.VERTICAL)
         self.sizer5 = wx.BoxSizer(wx.VERTICAL)
@@ -434,4 +440,5 @@
         self.sizer2.SetMinSize((PANEL_WIDTH, -1))
         self.sizer3.SetMinSize((PANEL_WIDTH, -1))
+        self.sizerTrafo.SetMinSize((PANEL_WIDTH, -1))
         self.sizer4.SetMinSize((PANEL_WIDTH, -1))
         self.sizer5.SetMinSize((PANEL_WIDTH, -1))
@@ -442,4 +449,5 @@
         self.vbox.Add(self.sizer2)
         self.vbox.Add(self.sizer3)
+        self.vbox.Add(self.sizerTrafo)
         self.vbox.Add(self.sizer4)
         self.vbox.Add(self.sizer5)
@@ -1122,4 +1130,7 @@
         # set data, etc. from the state
         # reset page between theory and fitting from bookmarking
+        #if state.data == None:
+        #    data = None
+        #else:
         data = state.data
 
@@ -1147,4 +1158,10 @@
         self.disp_cb_dict = state.disp_cb_dict
         self.disp_list = state.disp_list
+
+        ## set the state of the radio box
+        #self.shape_rbutton.SetValue(state.shape_rbutton)
+        #self.shape_indep_rbutton.SetValue(state.shape_indep_rbutton)
+        #self.struct_rbutton.SetValue(state.struct_rbutton)
+        #self.plugin_rbutton.SetValue(state.plugin_rbutton)
 
         ## fill model combobox
@@ -1207,4 +1224,7 @@
             else:
                 self.model_view.SetLabel("1D Mode")
+
+        ## set the select all check box to the a given state
+        self.cb1.SetValue(state.cb1)
 
         ## reset state of checkbox,textcrtl  and  regular parameters value
@@ -1337,4 +1357,8 @@
                             logging.error(traceback.format_exc())
 
+        # Make sure the check box updated when all checked
+        if self.cb1.GetValue():
+            self.select_all_param(None)
+
     def _selectDlg(self):
         """
@@ -1439,4 +1463,7 @@
                 self.fitrange = False
 
+            if not self.data.is_data:
+                is_modified = True
+
             ## if any value is modify draw model with new value
             if not self.fitrange:
@@ -1454,6 +1481,4 @@
                 self._draw_model()
                 self.Refresh()
-
-        #logging.info("is_modified flag set to %g",is_modified)
         return is_modified
 
@@ -2477,6 +2502,8 @@
                         item[2].Enable()
 
-            # Make sure the check box updated
-            self.get_all_checked_params()
+            # Make sure the check box updated when all checked
+            if self.cb1.GetValue():
+                #self.select_all_param(None)
+                self.get_all_checked_params()
 
             # update params
@@ -3657,4 +3684,8 @@
         call back for model selection if implemented
         """
+    def select_all_param(self, event):
+        """
+        set to true or false all checkBox if implemented
+        """
     def get_weight_flag(self):
         """
Index: src/sas/sasgui/perspectives/fitting/fitpage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/fitpage.py	(revision 3bec50ae2f0e34d160b7c5524ce22736baa10388)
+++ src/sas/sasgui/perspectives/fitting/fitpage.py	(revision 3bec50ae2f0e34d160b7c5524ce22736baa10388)
@@ -55,4 +55,7 @@
         self.weightbt_string = None
         self.m_name = None
+        # transform implementation
+        self._fill_Trafo_sizer()
+       # self.Trafobt_string()
         # get smear info from data
         self._get_smear_info()
@@ -92,4 +95,61 @@
         self.parent.on_set_focus(event)
         self.on_tap_focus()
+
+    def onTrafo(self, event):
+        """
+        On Trafo radio button event, sets the Trafobt_string
+        """
+        self.Trafobt_string = event.GetEventObject().GetLabelText()
+        self._set_Trafo()
+
+    def _fill_Trafo_sizer(self):
+
+        title = "Transform"
+        box_description_trafo = wx.StaticBox(self, wx.ID_ANY, str(title))
+        box_description_trafo.SetForegroundColour(wx.BLUE)
+        #boxsizer_trafo = wx.StaticBoxSizer(box_description_trafo, wx.VERTICAL)
+        boxsizer_trafo = wx.StaticBoxSizer(box_description_trafo, wx.HORIZONTAL)
+        #sizer_trafo = wx.StaticBoxSizer(box_description_trafo, wx.HORIZONTAL)
+        #weighting_set_box = wx.StaticBox(self, wx.ID_ANY,
+         #                              'Select the type of SESANS analysis')
+
+        #sizer_weighting = wx.BoxSizer(wx.HORIZONTAL)
+          #      weighting_box.SetMinSize((_DATA_BOX_WIDTH, 60))
+
+        #For every radio button (each statement x3):
+        self.no_transform = wx.RadioButton(self, wx.ID_ANY,
+                                                  'None', style=wx.RB_GROUP)
+
+        #self.Bind(wx.EVT_RADIOBUTTON, self.onTrafo,
+         #                 id=self.no_transform.GetId())
+        self.hankel = wx.RadioButton(self, wx.ID_ANY,
+                                                  'Hankel')
+        #self.Bind(wx.EVT_RADIOBUTTON, self.onTrafo,
+        #                  id=self.hankel.GetId())
+        self.cosine = wx.RadioButton(self, wx.ID_ANY,
+                                                  'Cosine')
+        #self.Bind(wx.EVT_RADIOBUTTON, self.onTrafo,
+         #                 id=self.cosine.GetId())
+
+        #Not sure about this (only once though)
+        self.no_transform.SetValue(True)
+
+        #For every radio button (each statement x3):
+        boxsizer_trafo.Add(self.no_transform, 0, wx.LEFT, 10)
+        boxsizer_trafo.Add((14, 10))
+        boxsizer_trafo.Add(self.hankel)
+        boxsizer_trafo.Add((14, 10))
+        boxsizer_trafo.Add(self.cosine)
+        boxsizer_trafo.Add((14, 10))
+            #Default for weighting is False, but these need to be on by default!
+        self.no_transform.Enable(True)
+
+        #Not sure about this (only once though)
+        #weighting_box.Add(sizer_trafo)
+
+        self.sizerTrafo.Clear(True)
+        self.sizerTrafo.Add(boxsizer_trafo, 0, wx.EXPAND | wx.ALL, 10)
+        #self.sizerTrafo.Add(sizer_trafo, 0, wx.EXPAND | wx.ALL, 10)
+        self.sizerTrafo.Layout()
 
     def _fill_data_sizer(self):
@@ -624,5 +684,5 @@
         ## fill a sizer with the combobox to select dispersion type
         model_disp = wx.StaticText(self, wx.ID_ANY, 'Function')
-        CHECK_STATE = False
+        CHECK_STATE = self.cb1.GetValue()
 
         ix = 0
@@ -969,4 +1029,5 @@
         self.state.model = self.model.clone()
         ## save state into
+        self.state.cb1 = self.cb1.GetValue()
         self._copy_parameters_state(self.parameters, self.state.parameters)
         self._copy_parameters_state(self.orientation_params_disp,
@@ -979,4 +1040,5 @@
                      StatusEvent(status=" Selected Distribution: Gaussian"))
         #Fill the list of fittable parameters
+        #self.select_all_param(event=None)
         self.get_all_checked_params()
         self.Layout()
@@ -2693,4 +2755,71 @@
         self._manager.set_param2fit(self.uid, param2fit)
 
+    def select_all_param(self, event):
+        """
+        set to true or false all checkBox given the main checkbox value cb1
+        """
+        self.param_toFit = []
+        if  self.parameters != []:
+            if  self.cb1.GetValue():
+                for item in self.parameters:
+                    if item[0].IsShown():
+                        ## for data2D select all to fit
+                        if self.data.__class__.__name__ == "Data2D" or \
+                                self.enable2D:
+                            item[0].SetValue(True)
+                            self.param_toFit.append(item)
+                        else:
+                            ## for 1D all parameters except orientation
+                            if not item in self.orientation_params:
+                                item[0].SetValue(True)
+                                self.param_toFit.append(item)
+                    else:
+                        item[0].SetValue(False)
+                #if len(self.fittable_param)>0:
+                for item in self.fittable_param:
+                    if item[0].IsShown():
+                        if self.data.__class__.__name__ == "Data2D" or \
+                                self.enable2D:
+                            item[0].SetValue(True)
+                            self.param_toFit.append(item)
+                            try:
+                                if len(self.values[item[1]]) > 0:
+                                    item[0].SetValue(False)
+                            except:
+                                pass
+
+                        else:
+                            ## for 1D all parameters except orientation
+                            if not item in self.orientation_params_disp:
+                                item[0].SetValue(True)
+                                self.param_toFit.append(item)
+                                try:
+                                    if len(self.values[item[1]]) > 0:
+                                        item[0].SetValue(False)
+                                except:
+                                    pass
+                    else:
+                        item[0].SetValue(False)
+
+            else:
+                for item in self.parameters:
+                    item[0].SetValue(False)
+                for item in self.fittable_param:
+                    item[0].SetValue(False)
+                self.param_toFit = []
+
+        self.save_current_state_fit()
+
+        if event != None:
+            #self._undo.Enable(True)
+            ## post state to fit panel
+            event = PageInfoEvent(page=self)
+            wx.PostEvent(self.parent, event)
+        param2fit = []
+        for item in self.param_toFit:
+            if item[0] and item[0].IsShown():
+                param2fit.append(item[1])
+        self.parent._manager.set_param2fit(self.uid, param2fit)
+
     def select_param(self, event):
         """
@@ -2739,4 +2868,10 @@
         if len(self.fittable_param) > 0:
             len_orient_para *= 2
+        #Set the value of checkbox that selected every checkbox or not
+        if len(self.parameters) + len(self.fittable_param) - len_orient_para \
+            == len(self.param_toFit):
+            self.cb1.SetValue(True)
+        else:
+            self.cb1.SetValue(False)
 
         self.save_current_state_fit()
@@ -2840,6 +2975,12 @@
         iy = 0
         ix = 0
-        sizer.Add(wx.StaticText(self, wx.ID_ANY, 'Parameter'),
-                  (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0)
+        select_text = "Select All"
+        self.cb1 = wx.CheckBox(self, wx.ID_ANY, str(select_text), (10, 10))
+        wx.EVT_CHECKBOX(self, self.cb1.GetId(), self.select_all_param)
+        self.cb1.SetToolTipString("To check/uncheck all the boxes below.")
+        self.cb1.SetValue(True)
+
+        sizer.Add(self.cb1, (iy, ix), (1, 1), \
+                             wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 5)
         ix += 1
         self.text2_2 = wx.StaticText(self, wx.ID_ANY, 'Value')
@@ -2868,5 +3009,5 @@
         self.text2_4.Hide()
 
-        CHECK_STATE = False
+        CHECK_STATE = self.cb1.GetValue()
         for item in keys:
 
Index: src/sas/sasgui/plottools/plottables.py
===================================================================
--- src/sas/sasgui/plottools/plottables.py	(revision 8abd96d6ebdf20551265a5a33a9fd0d56ebe5584)
+++ src/sas/sasgui/plottools/plottables.py	(revision 1fac6c09c8ab1f0c228d078ee755bc91242e2fdc)
@@ -1022,5 +1022,5 @@
     """
 
-    def __init__(self, x, y, dx=None, dy=None):
+    def __init__(self, x, y, dx=None, dy=None, lam=None, dlam=None):
         """
         Draw points specified by x[i],y[i] in the current color/symbol.
@@ -1036,6 +1036,8 @@
         self.x = x
         self.y = y
+        self.lam = lam
         self.dx = dx
         self.dy = dy
+        self.dlam = dlam
         self.source = None
         self.detector = None
