Index: src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision 9d266d2a26a5ec599562e4892355fd031c3ef5ff)
+++ src/sas/qtgui/Perspectives/Fitting/FittingWidget.py	(revision e1e3e09a03e38fca76bc8ef51c8bfcc5d6441d3c)
@@ -30,4 +30,5 @@
 from sas.qtgui.Perspectives.Fitting.FittingLogic import FittingLogic
 from sas.qtgui.Perspectives.Fitting import FittingUtilities
+from SmearingWidget import SmearingWidget
 
 TAB_MAGNETISM = 4
@@ -91,4 +92,11 @@
         self.communicate = self.parent.communicate
 
+        # Smearing widget
+        layout = QtGui.QGridLayout()
+        self.smearing_widget = SmearingWidget(self)
+        layout.addWidget(self.smearing_widget) 
+        #self.tabFitting.removeTab(2)
+        self.tabFitting.insertTab(2, self.smearing_widget, "Resolution")
+
         # Define bold font for use in various controls
         self.boldFont=QtGui.QFont()
@@ -161,5 +169,16 @@
         self.logic.data = GuiUtils.dataFromItem(value)
 
+        # Overwrite data type descriptor
+        self.is2D = True if isinstance(self.logic.data, Data2D) else False
+
         self.data_is_loaded = True
+
+        # Enable/disable UI components
+        self.setEnablementOnDataLoad()
+
+    def setEnablementOnDataLoad(self):
+        """
+        Enable/disable various UI elements based on data loaded
+        """
         # Tag along functionality
         self.label.setText("Data loaded from: ")
@@ -173,4 +192,36 @@
         self.txtNptsFit.setEnabled(False)
         self.chkLogData.setEnabled(False)
+        # Switch off Data2D control
+        self.chk2DView.setEnabled(False)
+        self.chk2DView.setVisible(False)
+        self.chkMagnetism.setEnabled(True)
+
+        # Weighting and smearing controls
+        if self.is2D:
+            #self.slit_smearer.Disable()
+            #self.pinhole_smearer.Enable(True)
+            #self.default_mask = copy.deepcopy(self.data.mask)
+            if self.logic.data.err_data is None or\
+                    numpy.all(err == 1 for err in self.logic.data.err_data) or \
+                    not numpy.any(self.logic.data.err_data):
+                self.rbWeighting2.setEnabled(False)
+                self.rbWeighting1.setChecked(True)
+            else:
+                self.rbWeighting2.setEnabled(True)
+                self.rbWeighting2.setChecked(True)
+        else:
+            #self.slit_smearer.Enable(True)
+            #self.pinhole_smearer.Enable(True)
+            if self.logic.data.dy is None or\
+                    numpy.all(self.logic.data.dy == 1) or\
+                    not numpy.any(self.logic.data.dy):
+                self.rbWeighting2.setEnabled(False)
+                self.rbWeighting1.setChecked(True)
+            else:
+                self.rbWeighting2.setEnabled(True)
+                self.rbWeighting2.setChecked(True)
+
+        # Smearing tab
+        self.smearing_widget.updateSmearing(self.data)
 
     def acceptsData(self):
@@ -211,5 +262,6 @@
         self.is2D = isChecked
         # Reload the current model
-        self.onSelectModel()
+        if self.kernel_module:
+            self.onSelectModel()
 
     def toggleLogData(self, isChecked):
@@ -242,4 +294,6 @@
         self.weightingGroup.addButton(self.rbWeighting3)
         self.weightingGroup.addButton(self.rbWeighting4)
+        # Smearing tab
+        self.smearing_widget.updateSmearing(self.data)
 
     def initializeSignals(self):
@@ -251,5 +305,5 @@
         self.cbCategory.currentIndexChanged.connect(self.onSelectCategory)
         self.cbModel.currentIndexChanged.connect(self.onSelectModel)
-        self.cbSmearing.currentIndexChanged.connect(self.onSelectSmearing)
+        #self.cbSmearing.currentIndexChanged.connect(self.onSelectSmearing)
         # Checkboxes
         self.chk2DView.toggled.connect(self.toggle2D)
@@ -266,6 +320,6 @@
         self.txtMinRange.editingFinished.connect(self.onMinRange)
         self.txtMaxRange.editingFinished.connect(self.onMaxRange)
-        self.txtSmearUp.editingFinished.connect(self.onSmearUp)
-        self.txtSmearDown.editingFinished.connect(self.onSmearDown)
+        #self.txtSmearUp.editingFinished.connect(self.onSmearUp)
+        #self.txtSmearDown.editingFinished.connect(self.onSmearDown)
         # Button groups
         self.weightingGroup.buttonClicked.connect(self.onWeightingChoice)
@@ -717,6 +771,8 @@
         # Check the state of the Weighting radio buttons
         button_id = self.weightingGroup.checkedId()
+        # Cast the id to a valid index
         button_id = abs(button_id + 2)
         if button_id == 0:
+            # No weight added
             return
         # Send original data for weighting
Index: src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py	(revision e1e3e09a03e38fca76bc8ef51c8bfcc5d6441d3c)
+++ src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py	(revision e1e3e09a03e38fca76bc8ef51c8bfcc5d6441d3c)
@@ -0,0 +1,152 @@
+"""
+Widget/logic for smearing data.
+"""
+from PyQt4 import QtGui
+from PyQt4 import QtCore
+
+from sas.sasgui.guiframe.dataFitting import Data1D
+from sas.sasgui.guiframe.dataFitting import Data2D
+
+# Local UI
+from UI.SmearingWidgetUI import Ui_SmearingWidgetUI
+
+class DataWidgetMapper(QtGui.QDataWidgetMapper):
+    def addMapping(self, widget, section, propertyName=None):
+        if propertyName is None:
+            super(DataWidgetMapper, self).addMapping(widget, section)
+        else:
+            super(DataWidgetMapper, self).addMapping(widget, section, propertyName)
+
+        if isinstance(widget, QtGui.QComboBox):
+            delegate = self.itemDelegate()
+            widget.currentIndexChanged.connect(lambda: delegate.commitData.emit(widget))
+
+SMEARING_1D = ["Custom Pinhole Smear", "Custom Slit Smear"]
+SMEARING_2D = ["Custom Pinhole Smear"]
+
+MODEL = [
+    'SMEARING',
+    'PINHOLE_MIN',
+    'PINHOLE_MAX',
+    'ACCURACY']
+
+class SmearingWidget(QtGui.QWidget, Ui_SmearingWidgetUI):
+    def __init__(self, parent=None):
+        super(SmearingWidget, self).__init__()
+
+        self.setupUi(self)
+        self.cbSmearing.currentIndexChanged.connect(self.onIndexChange)
+        self.cbSmearing.setCurrentIndex(0)
+        self.is_data = None
+        self.model = None
+        self.mapper = None
+
+        self.initModel()
+        self.initMapper()
+
+    def initModel(self):
+        """
+        Initialize the state
+        """
+        self.model = QtGui.QStandardItemModel()
+        for model_item in xrange(len(MODEL)):
+            self.model.setItem(model_item, QtGui.QStandardItem())
+
+        self.model.dataChanged.connect(self.onModelChange)
+
+        ##self.modelReset()
+
+    def initMapper(self):
+        """
+        Initialize model item <-> UI element mapping
+        """
+        #self.mapper = QtGui.QDataWidgetMapper(self)
+        self.mapper = DataWidgetMapper(self)
+
+        self.mapper.setModel(self.model)
+        self.mapper.setOrientation(QtCore.Qt.Vertical)
+
+        self.mapper.addMapping(self.txtSmearUp,   MODEL.index('PINHOLE_MIN'))
+        self.mapper.addMapping(self.txtSmearDown, MODEL.index('PINHOLE_MAX'))
+        self.mapper.addMapping(self.cbSmearing,   MODEL.index('SMEARING'))
+        self.mapper.addMapping(self.cbAccuracy,   MODEL.index('ACCURACY'))
+        self.mapper.toFirst()
+
+    def updateSmearing(self, data=None):
+        """
+        Update control elements based on data passed
+        """
+        self.cbSmearing.clear()
+        self.cbSmearing.addItem("None")
+        self.cbAccuracy.setVisible(False)
+
+        if data is None:
+            self.setElementsVisibility(False)
+        elif isinstance(data, Data1D):
+            self.cbSmearing.addItems(SMEARING_1D)
+            self.is_data = Data1D
+        else:
+            self.cbSmearing.addItems(SMEARING_2D)
+            self.is_data = Data2D
+        self.cbSmearing.setCurrentIndex(0)
+
+    def onIndexChange(self, index):
+        """
+        Callback for smearing combobox index change
+        """
+        if index == 0:
+            self.setElementsVisibility(False)
+            return
+        elif index == 1:
+            self.setElementsVisibility(True)
+            self.setPinholeLabels()
+        elif index == 2:
+            self.setElementsVisibility(True)
+            self.setSlitLabels()
+
+    def onModelChange(self, top, bottom):
+        """
+        """
+        print "MODEL CHANGED: ", top, bottom
+        pass
+
+    def setElementsVisibility(self, visible):
+        """
+        Labels and linedits visibility control
+        """
+        self.lblSmearDown.setVisible(visible)
+        self.lblSmearUp.setVisible(visible)
+        self.txtSmearDown.setVisible(visible)
+        self.txtSmearUp.setVisible(visible)
+        self.label_14.setVisible(visible)
+        self.label_15.setVisible(visible)
+        self.setAccuracyVisibility()
+
+    def setAccuracyVisibility(self):
+        """
+        Accuracy combobox visibility
+        """
+        if self.is_data == Data2D and self.cbSmearing.currentIndex() == 1:
+            self.cbAccuracy.setVisible(True)
+        else:
+            self.cbAccuracy.setVisible(False)
+
+    def setPinholeLabels(self):
+        """
+        Use pinhole labels
+        """
+        self.lblSmearUp.setText('<html><head/><body><p>dQ<span style=" vertical-align:sub;">low</span></p></body></html>')
+        self.lblSmearDown.setText('<html><head/><body><p>dQ<span style=" vertical-align:sub;">high</span></p></body></html>')
+
+    def setSlitLabels(self):
+        """
+        Use pinhole labels
+        """
+        self.lblSmearUp.setText('Slit height')
+        self.lblSmearDown.setText('Slit width')
+
+    def state(self):
+        """
+        Returns current state of controls
+        """
+        
Index: src/sas/qtgui/Perspectives/Fitting/UI/FittingWidgetUI.ui
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UI/FittingWidgetUI.ui	(revision 9d266d2a26a5ec599562e4892355fd031c3ef5ff)
+++ src/sas/qtgui/Perspectives/Fitting/UI/FittingWidgetUI.ui	(revision e1e3e09a03e38fca76bc8ef51c8bfcc5d6441d3c)
@@ -561,115 +561,4 @@
       </layout>
      </widget>
-     <widget class="QWidget" name="tab_5">
-      <attribute name="title">
-       <string>Resolution</string>
-      </attribute>
-      <layout class="QGridLayout" name="gridLayout_14">
-       <item row="0" column="0">
-        <widget class="QGroupBox" name="groupBox_4">
-         <property name="title">
-          <string>Instrumental Smearing</string>
-         </property>
-         <layout class="QGridLayout" name="gridLayout_13">
-          <item row="0" column="0">
-           <widget class="QComboBox" name="cbSmearing">
-            <property name="currentIndex">
-             <number>0</number>
-            </property>
-            <item>
-             <property name="text">
-              <string>None</string>
-             </property>
-            </item>
-            <item>
-             <property name="text">
-              <string>Use dQ Data</string>
-             </property>
-            </item>
-            <item>
-             <property name="text">
-              <string>Custom Pinhole Smear</string>
-             </property>
-            </item>
-            <item>
-             <property name="text">
-              <string>Custom Slit Smear</string>
-             </property>
-            </item>
-           </widget>
-          </item>
-          <item row="0" column="1">
-           <layout class="QGridLayout" name="gridLayout_11">
-            <item row="0" column="0">
-             <widget class="QLabel" name="lblSmearUp">
-              <property name="text">
-               <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;dQ&lt;span style=&quot; vertical-align:sub;&quot;&gt;low&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="1">
-             <widget class="QLineEdit" name="txtSmearUp"/>
-            </item>
-            <item row="0" column="2">
-             <widget class="QLabel" name="label_14">
-              <property name="text">
-               <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ã
-&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="0">
-             <widget class="QLabel" name="lblSmearDown">
-              <property name="text">
-               <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;dQ&lt;span style=&quot; vertical-align:sub;&quot;&gt;high&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="1">
-             <widget class="QLineEdit" name="txtSmearDown"/>
-            </item>
-            <item row="1" column="2">
-             <widget class="QLabel" name="label_15">
-              <property name="text">
-               <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ã
-&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item row="0" column="2">
-           <spacer name="horizontalSpacer_2">
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>71</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-         </layout>
-         <zorder>cbSmearing</zorder>
-         <zorder>horizontalSpacer_2</zorder>
-        </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>340</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </widget>
      <widget class="QWidget" name="tab_4">
       <attribute name="title">
Index: src/sas/qtgui/Perspectives/Fitting/UI/SmearingWidgetUI.ui
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UI/SmearingWidgetUI.ui	(revision e1e3e09a03e38fca76bc8ef51c8bfcc5d6441d3c)
+++ src/sas/qtgui/Perspectives/Fitting/UI/SmearingWidgetUI.ui	(revision e1e3e09a03e38fca76bc8ef51c8bfcc5d6441d3c)
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SmearingWidgetUI</class>
+ <widget class="QWidget" name="SmearingWidgetUI">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>542</width>
+    <height>270</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_2">
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="groupBox_4">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title">
+      <string>Instrumental Smearing</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0">
+       <widget class="QComboBox" name="cbSmearing">
+        <property name="currentIndex">
+         <number>0</number>
+        </property>
+        <property name="sizeAdjustPolicy">
+         <enum>QComboBox::AdjustToContents</enum>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Use dQ Data</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Custom Pinhole Smear</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Custom Slit Smear</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <layout class="QGridLayout" name="gridLayout_11">
+        <item row="0" column="0">
+         <widget class="QLabel" name="lblSmearUp">
+          <property name="text">
+           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;dQ&lt;span style=&quot; vertical-align:sub;&quot;&gt;low&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QLineEdit" name="txtSmearUp"/>
+        </item>
+        <item row="0" column="2">
+         <widget class="QLabel" name="label_14">
+          <property name="text">
+           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ã
+&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="lblSmearDown">
+          <property name="text">
+           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;dQ&lt;span style=&quot; vertical-align:sub;&quot;&gt;high&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QLineEdit" name="txtSmearDown"/>
+        </item>
+        <item row="1" column="2">
+         <widget class="QLabel" name="label_15">
+          <property name="text">
+           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ã
+&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="2">
+       <widget class="QComboBox" name="cbAccuracy">
+        <item>
+         <property name="text">
+          <string>Low</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Medium</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>High</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Extra high</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="0" column="3">
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>71</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </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>162</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
