Index: src/sas/qtgui/GUITests.py
===================================================================
--- src/sas/qtgui/GUITests.py	(revision 64f1e93f1ae889a528e0186e82bbbc473c1cc6ee)
+++ src/sas/qtgui/GUITests.py	(revision 3b7b21819920f53359a9aa32d2375d265b2fd88d)
@@ -10,4 +10,5 @@
 from UnitTesting import TestUtilsTest
 from UnitTesting import PlotHelperTest
+from UnitTesting import PlotterBaseTest
 from UnitTesting import PlotterTest
 from UnitTesting import Plotter2DTest
@@ -28,4 +29,5 @@
         unittest.makeSuite(TestUtilsTest.TestUtilsTest,        'test'),
         unittest.makeSuite(PlotHelperTest.PlotHelperTest,       'test'),
+        unittest.makeSuite(PlotterBaseTest.PlotterBaseTest,     'test'),
         unittest.makeSuite(PlotterTest.PlotterTest,          'test'),
         unittest.makeSuite(Plotter2DTest.Plotter2DTest,        'test'),
Index: src/sas/qtgui/Plotter.py
===================================================================
--- src/sas/qtgui/Plotter.py	(revision fecfe283c4a23a8b1ec879117e43b24a7fce28a4)
+++ src/sas/qtgui/Plotter.py	(revision 3b7b21819920f53359a9aa32d2375d265b2fd88d)
@@ -67,6 +67,6 @@
 
         # Include scaling (log vs. linear)
-        ax.set_yscale(self.xscale)
         ax.set_xscale(self.xscale)
+        ax.set_yscale(self.yscale)
 
         # refresh canvas
Index: src/sas/qtgui/PlotterBase.py
===================================================================
--- src/sas/qtgui/PlotterBase.py	(revision b4b858983df5213b5ee684697424f220b75bac44)
+++ src/sas/qtgui/PlotterBase.py	(revision 3b7b21819920f53359a9aa32d2375d265b2fd88d)
@@ -27,20 +27,16 @@
         self.figure = plt.figure()
 
-        # this is the Canvas Widget that displays the `figure`
-        # it takes the `figure` instance as a parameter to __init__
+        # Define canvas for the figure to be placed on
         self.canvas = FigureCanvas(self.figure)
 
-        # this is the Navigation widget
-        # it takes the Canvas widget and a parent
+        # ... and the toolbar with all the default MPL buttons
         self.toolbar = NavigationToolbar(self.canvas, self)
 
-        self.properties = ScaleProperties(self)
-
-        # set the layout
+        # Set the layout and place the canvas widget in it.
         layout = QtGui.QVBoxLayout()
         layout.setMargin(0)
         layout.addWidget(self.canvas)
 
-        # defaults
+        # 1D plotter defaults
         self.current_plot = 111
         self._data = [] # Original 1D/2D object
@@ -56,8 +52,18 @@
         self.y_label = "log10(y)"
 
+        # Pre-define the Scale properties dialog
+        self.properties = ScaleProperties(self,
+                                          init_scale_x=self.x_label,
+                                          init_scale_y=self.y_label)
+
         # default color map
         self.cmap = DEFAULT_CMAP
 
+        # Add the axes object -> subplot
+        # TODO: self.ax will have to be tracked and exposed
+        # to enable subplot specific operations
         self.ax = self.figure.add_subplot(self.current_plot)
+
+        # Set the background color to white
         self.canvas.figure.set_facecolor('#FFFFFF')
 
@@ -65,10 +71,8 @@
             # set the layout
             layout.addWidget(self.toolbar)
-            # Notify the helper
-            PlotHelper.addPlot(self)
             # Add the context menu
             self.contextMenu()
-            # Notify the listeners
-            self.manager.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots())
+            # Notify PlotHelper about the new plot
+            self.upatePlotHelper()
         else:
             self.contextMenuQuickPlot()
@@ -83,6 +87,6 @@
     @data.setter
     def data(self, data=None):
-        """ virtual data setter """
-        raise ImportError("Data setter must be implemented in derived class.")
+        """ Pure virtual data setter """
+        raise NotImplementedError("Data setter must be implemented in derived class.")
 
     def title(self, title=""):
@@ -132,7 +136,17 @@
         self._xscale = scale
 
+    def upatePlotHelper(self):
+        """
+        Notify the plot helper about the new plot
+        """
+        # Notify the helper
+        PlotHelper.addPlot(self)
+        # Notify the listeners about a new graph
+        self.manager.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots())
+
     def contextMenu(self):
         """
-        Define context menu and associated actions for the MPL widget
+        Define common context menu and associated actions for the MPL widget
+        TODO: move to plotter1d/plotter2d
         """
         # Actions
@@ -152,5 +166,5 @@
         Define context menu and associated actions for the quickplot MPL widget
         """
-        raise ImportError("Context menu method must be implemented in derived class.")
+        raise NotImplementedError("Context menu method must be implemented in derived class.")
 
     def contextMenuEvent(self, event):
@@ -169,8 +183,8 @@
     def plot(self, marker=None, linestyle=None):
         """
-        VIRTUAL
+        PURE VIRTUAL
         Plot the content of self._data
         """
-        raise ImportError("Plot method must be implemented in derived class.")
+        raise NotImplementedError("Plot method must be implemented in derived class.")
 
     def closeEvent(self, event):
Index: src/sas/qtgui/ScaleProperties.py
===================================================================
--- src/sas/qtgui/ScaleProperties.py	(revision 6d05e1d115a38b7805a83cb480014af70b58ef75)
+++ src/sas/qtgui/ScaleProperties.py	(revision 3b7b21819920f53359a9aa32d2375d265b2fd88d)
@@ -19,5 +19,5 @@
 }
 class ScaleProperties(QtGui.QDialog, Ui_scalePropertiesUI):
-    def __init__(self, parent=None):
+    def __init__(self, parent=None, init_scale_x='x', init_scale_y='y'):
         super(ScaleProperties, self).__init__(parent)
         self.setupUi(self)
@@ -29,4 +29,10 @@
         # Resize the dialog only AFTER the boxes are populated
         self.setFixedSize(self.minimumSizeHint())
+
+        # Set up the initial values for x and y.
+        # This avoids keeping a QModel instance here.
+        if init_scale_x in x_values and init_scale_y in y_values:
+            self.cbX.setCurrentIndex(x_values.index(init_scale_x))
+            self.cbY.setCurrentIndex(y_values.index(init_scale_y))
 
         # Connect combobox index change to a custom method
Index: src/sas/qtgui/UnitTesting/PlotterBaseTest.py
===================================================================
--- src/sas/qtgui/UnitTesting/PlotterBaseTest.py	(revision 3b7b21819920f53359a9aa32d2375d265b2fd88d)
+++ src/sas/qtgui/UnitTesting/PlotterBaseTest.py	(revision 3b7b21819920f53359a9aa32d2375d265b2fd88d)
@@ -0,0 +1,103 @@
+import sys
+import unittest
+from mock import MagicMock
+
+from PyQt4 import QtGui
+import matplotlib.pyplot as plt
+from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
+from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
+
+####### TEMP
+import path_prepare
+#######
+
+from sas.qtgui.ScaleProperties import ScaleProperties
+#import sas.qtgui.GuiUtils as GuiUtils
+from sas.qtgui.GuiUtils import *
+
+# Tested module
+import sas.qtgui.PlotterBase as PlotterBase
+
+app = QtGui.QApplication(sys.argv)
+
+class PlotterBaseTest(unittest.TestCase):
+    '''Test the Plotter base class'''
+    def setUp(self):
+        '''create'''
+        class dummy_manager(object):
+            def communicator(self):
+                return Communicate()
+            def perspective(self):
+                return MyPerspective()
+
+        #PlotterBase.PlotterBase.updatePlotHelper = MagicMock()
+        #self.plotter = PlotterBase.PlotterBase(None, manager=dummy_manager())
+
+        PlotterBase.PlotterBase.contextMenuQuickPlot = MagicMock()
+        self.plotter = PlotterBase.PlotterBase(None, manager=dummy_manager(), quickplot=True)
+
+    def tearDown(self):
+        '''destroy'''
+        self.plotter = None
+        self.plotter_qp = None
+
+    def testDefaults(self):
+        """ default method variables values """
+        self.assertIsInstance(self.plotter, QtGui.QWidget)
+        self.assertIsInstance(self.plotter.canvas, FigureCanvas)
+        self.assertIsInstance(self.plotter.toolbar, NavigationToolbar)
+        self.assertIsInstance(self.plotter.properties, ScaleProperties)
+
+        self.assertEqual(self.plotter._data, [])
+        self.assertEqual(self.plotter._xscale, 'log')
+        self.assertEqual(self.plotter._yscale, 'log')
+        self.assertEqual(self.plotter.scale, 'linear')
+        self.assertFalse(self.plotter.grid_on)
+        self.assertEqual(self.plotter.x_label, 'log10(x)')
+        self.assertEqual(self.plotter.y_label, 'log10(y)')
+
+    def testData(self):
+        ''' Test the pure virtual method '''
+        with self.assertRaises(NotImplementedError):
+            self.plotter.data=[]
+
+    def testContextMenu(self):
+        ''' Test the default context menu '''
+        pass
+
+    def testContextMenuQuickPlot(self):
+        ''' Test the default quick context menu '''
+        pass
+
+    def testClean(self):
+        ''' test the graph cleanup '''
+        pass
+
+    def testPlot(self):
+        ''' test the pure virtual method '''
+        with self.assertRaises(NotImplementedError):
+            self.plotter.plot()
+
+    def testOnCloseEvent(self):
+        ''' test the plotter close behaviour '''
+        pass
+
+    def testOnImageSave(self):
+        ''' test the workspace save '''
+        pass
+
+    def testOnImagePrint(self):
+        ''' test the workspace print '''
+        pass
+
+    def tesOonClipboardCopy(self):
+        ''' test the workspace copy '''
+        pass
+
+    def testOnGridToggle(self):
+        ''' test toggling the grid lines '''
+        pass
+
+
+if __name__ == "__main__":
+    unittest.main()
Index: src/sas/qtgui/run_tests.bat
===================================================================
--- src/sas/qtgui/run_tests.bat	(revision 55d89f89e773b2faf78331b3fdae988c7fe5f2ce)
+++ src/sas/qtgui/run_tests.bat	(revision 3b7b21819920f53359a9aa32d2375d265b2fd88d)
@@ -12,4 +12,5 @@
 python -m UnitTesting.PlotHelperTest
 python -m UnitTesting.KiessigCalculatorTest
+python -m UnitTesting.PlotterBaseTest
 python -m UnitTesting.PlotterTest
 python -m UnitTesting.Plotter2DTest
Index: src/sas/qtgui/run_tests.sh
===================================================================
--- src/sas/qtgui/run_tests.sh	(revision 55d89f89e773b2faf78331b3fdae988c7fe5f2ce)
+++ src/sas/qtgui/run_tests.sh	(revision 3b7b21819920f53359a9aa32d2375d265b2fd88d)
@@ -9,4 +9,5 @@
 python -m UnitTesting.PlotHelperTest
 python -m UnitTesting.SasviewLoggerTest
+python -m UnitTesting.PlotterBaseTest
 python -m UnitTesting.PlotterTest
 python -m UnitTesting.Plotter2DTest
