Index: src/sas/qtgui/MainWindow/GuiManager.py
===================================================================
--- src/sas/qtgui/MainWindow/GuiManager.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/MainWindow/GuiManager.py	(revision 2d0e0c1e4de934db698b53bdbcf78d1630a996ab)
@@ -612,5 +612,6 @@
         """
         """
-        print("actionFit_Options TRIGGERED")
+        if getattr(self._current_perspective, "fit_options_widget"):
+            self._current_perspective.fit_options_widget.show()
         pass
 
Index: src/sas/qtgui/Perspectives/Fitting/FittingOptions.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingOptions.py	(revision 2d0e0c1e4de934db698b53bdbcf78d1630a996ab)
+++ src/sas/qtgui/Perspectives/Fitting/FittingOptions.py	(revision 2d0e0c1e4de934db698b53bdbcf78d1630a996ab)
@@ -0,0 +1,136 @@
+# global
+import sys
+import os
+from PyQt4 import QtCore
+from PyQt4 import QtGui
+from PyQt4 import QtWebKit
+
+from sas.qtgui.UI import images_rc
+from sas.qtgui.UI import main_resources_rc
+#from bumps.fitters import FITTERS, FIT_AVAILABLE_IDS, FIT_ACTIVE_IDS, FIT_DEFAULT_ID
+from bumps import fitters
+import bumps.options
+
+from sas.qtgui.Perspectives.Fitting.UI.FittingOptionsUI import Ui_FittingOptions
+
+# Set the default optimizer
+fitters.FIT_DEFAULT_ID = 'lm'
+
+class FittingOptions(QtGui.QDialog, Ui_FittingOptions):
+    """
+    Hard-coded version of the fit options dialog available from BUMPS.
+    This should be make more "dynamic".
+    bumps.options.FIT_FIELDS gives mapping between parameter names, parameter strings and field type
+     (double line edit, integer line edit, combo box etc.), e.g.
+        FIT_FIELDS = dict(
+            samples = ("Samples", parse_int),
+            xtol = ("x tolerance", float))
+
+    bumps.fitters.<algorithm>.settings gives mapping between algorithm, parameter name and default value:
+        e.g.
+        settings = [('steps', 1000), ('starts', 1), ('radius', 0.15), ('xtol', 1e-6), ('ftol', 1e-8)]
+    """
+    fit_option_changed = QtCore.pyqtSignal(str, dict)
+
+    def __init__(self, parent=None, config=None):
+        super(FittingOptions, self).__init__(parent)
+        self.setupUi(self)
+
+        self.config = config
+
+        # no reason to have this widget resizable
+        self.setFixedSize(self.minimumSizeHint())
+
+        self.setWindowTitle("Fitting Options")
+
+        # Fill up the algorithm combo, based on what BUMPS says is available
+        self.cbAlgorithm.addItems([n.name for n in fitters.FITTERS if n.id in fitters.FIT_ACTIVE_IDS])
+
+        # Handle the Apply button click
+        self.buttonBox.button(QtGui.QDialogButtonBox.Ok).clicked.connect(self.onApply)
+
+        # Handle the combo box changes
+        self.cbAlgorithm.currentIndexChanged.connect(self.onAlgorithmChange)
+
+        # Set the default index
+        default_name = [n.name for n in fitters.FITTERS if n.id == fitters.FIT_DEFAULT_ID][0]
+        default_index = self.cbAlgorithm.findText(default_name)
+        self.cbAlgorithm.setCurrentIndex(default_index)
+        self.current_fitter_id = fitters.FIT_DEFAULT_ID
+
+        # Fill in options for all active fitters
+        #[self.updateWidgetFromBumps(fitter_id) for fitter_id in fitters.FIT_ACTIVE_IDS]
+
+    def onAlgorithmChange(self, index):
+        """
+        Change the page in response to combo box index
+        """
+        # Find the algorithm ID from name
+        self.current_fitter_id = \
+            [n.id for n in fitters.FITTERS if n.name == str(self.cbAlgorithm.currentText())][0]
+
+        # find the right stacked widget
+        widget_name = "self.page_"+str(self.current_fitter_id)
+
+        # Convert the name into widget instance
+        widget_to_activate = eval(widget_name)
+
+        # Select the requested widget
+        self.stackedWidget.setCurrentIndex(self.stackedWidget.indexOf(widget_to_activate))
+
+        self.updateWidgetFromBumps(self.current_fitter_id)
+
+    def onApply(self):
+        """
+        Update the fitter object in perspective
+        """
+        self.fit_option_changed.emit(self.cbAlgorithm.currentText(), {})
+
+        # or just do it locally
+        for option in self.config.values[self.current_fitter_id].iterkeys():
+            widget = self.widgetFromOption(option)
+            new_value = ""
+            if isinstance(widget, QtGui.QComboBox):
+                new_value = widget.currentText()
+            else:
+                new_value = float(widget.text())
+            self.config.values[self.current_fitter_id][option] = new_value
+
+    def widgetFromOption(self, option_id):
+        """
+        returns widget's element linked to the given option_id
+        """
+        return eval('self.' + option_id + '_' + self.current_fitter_id)
+
+    def getResults(self):
+        """
+        Sends back the current choice of parameters
+        """
+        algorithm = self.cbAlgorithm.currentText()
+        return algorithm
+
+    def updateWidgetFromBumps(self, fitter_id):
+        """
+        Given the ID of the current optimizer, fetch the values
+        and update the widget
+        """
+        options = self.config.values[fitter_id]
+        for option in options.iterkeys():
+            # Find the widget name of the option
+            # e.g. 'samples' for 'dream' is 'self.samples_dream'
+            widget_name = 'self.'+option+'_'+fitter_id
+            if isinstance(bumps.options.FIT_FIELDS[option][1], bumps.options.ChoiceList):
+                control = eval(widget_name)
+                control.setCurrentIndex(control.findText(str(options[option])))
+            else:
+                eval(widget_name).setText(str(options[option]))
+
+        pass
+
+    def updateBumpsOptions(self, optimizer_id):
+        """
+        Given the ID of the optimizer, gather widget's values
+        and update the bumps options
+        """
+        pass
+
Index: src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py	(revision 125c4be1f2a9bcc043693f90241343f185040dde)
+++ src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py	(revision 2d0e0c1e4de934db698b53bdbcf78d1630a996ab)
@@ -4,7 +4,11 @@
 from PyQt4 import QtGui
 
+from bumps import options
+from bumps import fitters
+
 import sas.qtgui.Utilities.ObjectLibrary as ObjectLibrary
 
 from sas.qtgui.Perspectives.Fitting.FittingWidget import FittingWidget
+from sas.qtgui.Perspectives.Fitting.FittingOptions import FittingOptions
 from sas.qtgui.Perspectives.Fitting import ModelUtilities
 
@@ -45,4 +49,12 @@
         self._allow_close = False
 
+        # Fit options - uniform for all tabs
+        self.fit_options = options.FIT_CONFIG
+        self.fit_options_widget = FittingOptions(self, config=self.fit_options)
+        self.fit_options.selected_id = fitters.LevenbergMarquardtFit.id
+
+        # Listen to GUI Manager signal updating fit options
+        self.fit_options_widget.fit_option_changed.connect(self.onFittingOptionsChange)
+
         self.menu_manager = ModelUtilities.ModelManager()
         # TODO: reuse these in FittingWidget properly
@@ -50,5 +62,14 @@
         self.model_dictionary = self.menu_manager.get_model_dictionary()
 
+        #self.setWindowTitle('Fit panel - Active Fitting Optimizer: %s' % self.optimizer)
+        self.updateWindowTitle()
+
+    def updateWindowTitle(self):
+        """
+        Update the window title with the current optimizer name
+        """
+        self.optimizer = self.fit_options.selected_name
         self.setWindowTitle('Fit panel - Active Fitting Optimizer: %s' % self.optimizer)
+
 
     def setClosable(self, value=True):
@@ -137,2 +158,16 @@
             else:
                 self.addFit(data)
+
+    def onFittingOptionsChange(self, fit_engine, fit_options):
+        """
+        """
+        fitter = [f.id for f in options.FITTERS if f.name == str(fit_engine)][0]
+
+        # set the optimizer
+        self.fit_options.selected_id = str(fitter)
+        # set the options
+        #
+        # Update the title
+        self.updateWindowTitle()
+
+        pass
Index: src/sas/qtgui/Perspectives/Fitting/UI/FittingOptionsUI.ui
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UI/FittingOptionsUI.ui	(revision 2d0e0c1e4de934db698b53bdbcf78d1630a996ab)
+++ src/sas/qtgui/Perspectives/Fitting/UI/FittingOptionsUI.ui	(revision 2d0e0c1e4de934db698b53bdbcf78d1630a996ab)
@@ -0,0 +1,491 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FittingOptions</class>
+ <widget class="QDialog" name="FittingOptions">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>503</width>
+    <height>672</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <property name="windowIcon">
+   <iconset>
+    <normaloff>:/res/ball.ico</normaloff>:/res/ball.ico</iconset>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_12">
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Fit Algorithms </string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_9">
+      <item row="0" column="0">
+       <widget class="QComboBox" name="cbAlgorithm">
+        <property name="sizeAdjustPolicy">
+         <enum>QComboBox::AdjustToContents</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QStackedWidget" name="stackedWidget">
+        <property name="frameShape">
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="currentIndex">
+         <number>0</number>
+        </property>
+        <widget class="QWidget" name="page_dream">
+         <layout class="QGridLayout" name="gridLayout_2">
+          <item row="0" column="0">
+           <widget class="QGroupBox" name="groupBox_2">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="title">
+             <string>DREAM</string>
+            </property>
+            <layout class="QGridLayout" name="gridLayout">
+             <item row="0" column="0">
+              <widget class="QLabel" name="label">
+               <property name="text">
+                <string>Samples:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QLineEdit" name="samples_dream"/>
+             </item>
+             <item row="1" column="0">
+              <widget class="QLabel" name="label_2">
+               <property name="text">
+                <string>Burn-in Steps:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QLineEdit" name="burn_dream"/>
+             </item>
+             <item row="2" column="0">
+              <widget class="QLabel" name="label_3">
+               <property name="text">
+                <string>Population:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1">
+              <widget class="QLineEdit" name="pop_dream"/>
+             </item>
+             <item row="3" column="0">
+              <widget class="QLabel" name="label_4">
+               <property name="text">
+                <string>Initializer:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="3" column="1">
+              <widget class="QComboBox" name="init_dream">
+               <item>
+                <property name="text">
+                 <string>eps</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>lhs</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>cov</string>
+                </property>
+               </item>
+               <item>
+                <property name="text">
+                 <string>radom</string>
+                </property>
+               </item>
+              </widget>
+             </item>
+             <item row="4" column="0">
+              <widget class="QLabel" name="label_5">
+               <property name="text">
+                <string>Thinning:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="4" column="1">
+              <widget class="QLineEdit" name="thin_dream"/>
+             </item>
+             <item row="5" column="0">
+              <widget class="QLabel" name="label_6">
+               <property name="text">
+                <string>Steps:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="5" column="1">
+              <widget class="QLineEdit" name="steps_dream"/>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="verticalSpacer_5">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>268</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+        <widget class="QWidget" name="page_lm">
+         <layout class="QGridLayout" name="gridLayout_4">
+          <item row="0" column="0">
+           <widget class="QGroupBox" name="groupBox_3">
+            <property name="title">
+             <string>Levenberg</string>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_3">
+             <item row="0" column="0">
+              <widget class="QLabel" name="label_7">
+               <property name="text">
+                <string>Steps:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QLineEdit" name="steps_lm"/>
+             </item>
+             <item row="1" column="0">
+              <widget class="QLabel" name="label_8">
+               <property name="text">
+                <string>f(x) tolerance:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QLineEdit" name="ftol_lm"/>
+             </item>
+             <item row="2" column="0">
+              <widget class="QLabel" name="label_9">
+               <property name="text">
+                <string>x tolerance:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1">
+              <widget class="QLineEdit" name="xtol_lm"/>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="verticalSpacer_2">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>434</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+        <widget class="QWidget" name="page_newton">
+         <layout class="QGridLayout" name="gridLayout_7">
+          <item row="0" column="0">
+           <widget class="QGroupBox" name="groupBox_5">
+            <property name="title">
+             <string>Quasi-Newton BFGS </string>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_5">
+             <item row="0" column="0">
+              <widget class="QLabel" name="label_10">
+               <property name="text">
+                <string>Steps:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QLineEdit" name="steps_newton"/>
+             </item>
+             <item row="1" column="0">
+              <widget class="QLabel" name="label_13">
+               <property name="text">
+                <string>Starts:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QLineEdit" name="starts_newton"/>
+             </item>
+             <item row="2" column="0">
+              <widget class="QLabel" name="label_11">
+               <property name="text">
+                <string>f(x) tolerance:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1">
+              <widget class="QLineEdit" name="ftol_newton"/>
+             </item>
+             <item row="3" column="0">
+              <widget class="QLabel" name="label_12">
+               <property name="text">
+                <string>x tolerance:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="3" column="1">
+              <widget class="QLineEdit" name="xtol_newton"/>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="verticalSpacer">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>68</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+        <widget class="QWidget" name="page_de">
+         <layout class="QGridLayout" name="gridLayout_8">
+          <item row="0" column="0">
+           <widget class="QGroupBox" name="groupBox_6">
+            <property name="title">
+             <string>Differential Evolution</string>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_6">
+             <item row="0" column="0">
+              <widget class="QLabel" name="label_14">
+               <property name="text">
+                <string>Steps:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QLineEdit" name="steps_de"/>
+             </item>
+             <item row="1" column="0">
+              <widget class="QLabel" name="label_15">
+               <property name="text">
+                <string>Population:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QLineEdit" name="pop_de"/>
+             </item>
+             <item row="2" column="0">
+              <widget class="QLabel" name="label_18">
+               <property name="text">
+                <string>Crossover ratio:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1">
+              <widget class="QLineEdit" name="CR_de"/>
+             </item>
+             <item row="3" column="0">
+              <widget class="QLabel" name="label_19">
+               <property name="text">
+                <string>Scale:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="3" column="1">
+              <widget class="QLineEdit" name="F_de"/>
+             </item>
+             <item row="4" column="0">
+              <widget class="QLabel" name="label_16">
+               <property name="text">
+                <string>f(x) tolerance:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="4" column="1">
+              <widget class="QLineEdit" name="ftol_de"/>
+             </item>
+             <item row="5" column="0">
+              <widget class="QLabel" name="label_17">
+               <property name="text">
+                <string>x tolerance:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="5" column="1">
+              <widget class="QLineEdit" name="xtol_de"/>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="verticalSpacer_3">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>356</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+        <widget class="QWidget" name="page_amoeba">
+         <layout class="QGridLayout" name="gridLayout_10">
+          <item row="0" column="0">
+           <widget class="QGroupBox" name="groupBox_7">
+            <property name="title">
+             <string>Nelder-Mead Simplex</string>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_11">
+             <item row="0" column="0">
+              <widget class="QLabel" name="label_20">
+               <property name="text">
+                <string>Steps:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QLineEdit" name="steps_amoeba"/>
+             </item>
+             <item row="1" column="0">
+              <widget class="QLabel" name="label_21">
+               <property name="text">
+                <string>Starts:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QLineEdit" name="starts_amoeba"/>
+             </item>
+             <item row="2" column="0">
+              <widget class="QLabel" name="label_22">
+               <property name="text">
+                <string>Simplex radius:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1">
+              <widget class="QLineEdit" name="radius_amoeba"/>
+             </item>
+             <item row="3" column="0">
+              <widget class="QLabel" name="label_24">
+               <property name="text">
+                <string>f(x) tolerance:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="3" column="1">
+              <widget class="QLineEdit" name="ftol_amoeba"/>
+             </item>
+             <item row="4" column="0">
+              <widget class="QLabel" name="label_25">
+               <property name="text">
+                <string>x tolerance:</string>
+               </property>
+              </widget>
+             </item>
+             <item row="4" column="1">
+              <widget class="QLineEdit" name="xtol_amoeba"/>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="verticalSpacer_4">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>382</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>FittingOptions</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>FittingOptions</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
