Index: src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 224113016392685e3f7af17220091d29d434e19e)
+++ src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 00b3b40a41d26d36637a576b838e176e2d2d8347)
@@ -370,7 +370,5 @@
 
         # Update state stack
-        if self.undo_supported:
-            state = self.currentState()
-            self.pushFitPage(state)
+        self.updateUndo()
 
     def onSelectStructureFactor(self):
@@ -429,7 +427,12 @@
         name_index = self._poly_model.index(model_row, 0)
         # Extract changed value. Assumes proper validation by QValidator/Delegate
-        # Checkbox in column 0
+        # TODO: abstract away hardcoded column numbers
         if model_column == 0:
+            # Is the parameter checked for fitting?
             value = item.checkState()
+            # TODO: add the param to self.params_for_fitting
+        elif model_column == 6:
+            value = item.text()
+            # TODO: Modify Npts/Nsigs based on function choice
         else:
             try:
@@ -866,12 +869,14 @@
             return
         parameter_name = str(self._model_model.data(name_index).toPyObject()) # sld, background etc.
-        property_name = str(self._model_model.headerData(1, model_column).toPyObject()) # Value, min, max, etc.
-
+        property_index = self._model_model.headerData(1, model_column).toInt()[0]-1 # Value, min, max, etc.
+
+        # Update the parameter value - note: this supports +/-inf as well
         self.kernel_module.params[parameter_name] = value
 
-        # TODO: update min/max based on property_name
         # min/max to be changed in self.kernel_module.details[parameter_name] = ['Ang', 0.0, inf]
-        # magnetic params in self.kernel_module.details['M0:parameter_name'] = value
-        # multishell params in self.kernel_module.details[??] = value
+        self.kernel_module.details[parameter_name][property_index] = value
+
+        # TODO: magnetic params in self.kernel_module.details['M0:parameter_name'] = value
+        # TODO: multishell params in self.kernel_module.details[??] = value
 
         # Force the chart update when actual parameters changed
@@ -880,7 +885,5 @@
 
         # Update state stack
-        if self.undo_supported:
-            state = self.currentState()
-            self.pushFitPage(state)
+        self.updateUndo()
 
     def checkboxSelected(self, item):
@@ -943,10 +946,5 @@
         Update a QStandardModelIndex containing model data
         """
-        if fitted_data.name is None:
-            name = self.nameForFittedData(self.logic.data.filename)
-            fitted_data.title = name
-            fitted_data.name = name
-        else:
-            name = fitted_data.name
+        name = self.nameFromData(fitted_data)
         # Make this a line if no other defined
         if hasattr(fitted_data, 'symbol') and fitted_data.symbol is None:
@@ -959,6 +957,15 @@
         Create a QStandardModelIndex containing model data
         """
+        name = self.nameFromData(fitted_data)
+        # Notify the GUI manager so it can create the theory model in DataExplorer
+        new_item = GuiUtils.createModelItemWithPlot(QtCore.QVariant(fitted_data), name=name)
+        self.communicate.updateTheoryFromPerspectiveSignal.emit(new_item)
+
+    def nameFromData(self, fitted_data):
+        """
+        Return name for the dataset. Terribly impure function.
+        """
         if fitted_data.name is None:
-            name = self.nameForFittedData(self.kernel_module.name)
+            name = self.nameForFittedData(self.logic.data.filename)
             fitted_data.title = name
             fitted_data.name = name
@@ -966,7 +973,5 @@
         else:
             name = fitted_data.name
-        # Notify the GUI manager so it can create the theory model in DataExplorer
-        new_item = GuiUtils.createModelItemWithPlot(QtCore.QVariant(fitted_data), name=name)
-        self.communicate.updateTheoryFromPerspectiveSignal.emit(new_item)
+        return name
 
     def methodCalculateForData(self):
@@ -1258,4 +1263,12 @@
         # TODO: add polidyspersity and magnetism
 
+
+    def updateUndo(self):
+        """
+        Create a new state page and add it to the stack
+        """
+        if self.undo_supported:
+            self.pushFitPage(self.currentState())
+
     def currentState(self):
         """
