Index: src/sas/sasgui/perspectives/fitting/basepage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/basepage.py	(revision 4c3be25d8a666eaaf1edd8b30db518e151535fe6)
+++ src/sas/sasgui/perspectives/fitting/basepage.py	(revision 6df015de019813c258c44d7e00fec9ab5a313bd9)
@@ -143,4 +143,5 @@
         self.theory_qmin_x = None
         self.theory_qmax_x = None
+        self.cb1 = None
         self.btEditMask = None
         self.btFit = None
@@ -474,4 +475,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)
@@ -482,4 +484,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))
@@ -490,4 +493,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)
@@ -1196,4 +1200,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
 
@@ -1221,4 +1228,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
@@ -1276,4 +1289,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
@@ -1406,4 +1422,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):
         """
@@ -1503,4 +1523,7 @@
             else:
                 self.fitrange = False
+
+            if not self.data.is_data:
+                is_modified = True
 
             ## if any value is modify draw model with new value
@@ -1519,6 +1542,4 @@
                 self._draw_model()
                 self.Refresh()
-
-        logging.info("is_modified flag set to %g",is_modified)
         return is_modified
 
@@ -2540,6 +2561,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
@@ -3696,4 +3719,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 4c3be25d8a666eaaf1edd8b30db518e151535fe6)
+++ src/sas/sasgui/perspectives/fitting/fitpage.py	(revision 6df015de019813c258c44d7e00fec9ab5a313bd9)
@@ -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,60 @@
         self.parent.on_set_focus(event)
         self.on_tap_focus()
+
+    def onTrafo(self, event):
+        """
+        On Weighting radio button event, sets the weightbt_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 +683,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 +1028,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 +1039,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 +2754,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 +2867,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 +2974,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 +3008,5 @@
         self.text2_4.Hide()
 
-        CHECK_STATE = False
+        CHECK_STATE = self.cb1.GetValue()
         for item in keys:
 
