Index: sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter1D.py
===================================================================
--- sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter1D.py	(revision c553b18c6b00889ec98ee693f39c5fc590d94519)
+++ sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter1D.py	(revision 2d443fde5deda0cbc1b82bb103bbf62e4c79cfcc)
@@ -373,7 +373,7 @@
             name = plot.name
             self._slicerpop.Append(id, "&Save Points as a File")
+            wx.EVT_MENU(self, id, self._onSave)
             self._slicerpop.AppendSeparator()
             if plot.name != 'SLD':
-                wx.EVT_MENU(self, id, self._onSave)
                 id = wx.NewId()
                 self._slicerpop.Append(id, '&Linear Fit')
Index: sansguiframe/src/sans/guiframe/local_perspectives/plotting/profile_dialog.py
===================================================================
--- sansguiframe/src/sans/guiframe/local_perspectives/plotting/profile_dialog.py	(revision 9a3d433d8a2c126e89a6869e60cbaea0ad816d6b)
+++ sansguiframe/src/sans/guiframe/local_perspectives/plotting/profile_dialog.py	(revision 2d443fde5deda0cbc1b82bb103bbf62e4c79cfcc)
@@ -3,4 +3,5 @@
 """
 import wx
+import os
 import sys
 from copy import deepcopy
@@ -34,7 +35,7 @@
     """
     ## Internal nickname for the window, used by the AUI manager
-    window_name = "SLD Profile"
+    window_name = "Scattering Length Density Profile"
     ## Name to appear on the window title bar
-    window_caption = "SLD Profile"
+    window_caption = "Scattering Length Density Profile"
     ## Flag to tell the AUI manager to put this panel in the center pane
     CENTER_PANE = True
@@ -49,6 +50,7 @@
             kwds = []
             self.SetWindowVariant(variant=FONT_VARIANT)
+
             self.SetTitle("Scattering Length Density Profile")
-            self.parent = base
+            self.parent = parent
             self.data = data
             self.str = self.data.__str__()
@@ -167,5 +169,9 @@
         # NOt implemented
         pass
-
+    
+    def on_change_caption(self, name, old_caption, new_caption):
+        """
+        """
+        self.parent.parent.parent.on_change_caption(name, old_caption, new_caption)
     
     
@@ -184,4 +190,6 @@
         # Keep track of the parent Frame
         self.parent = parent
+        self.window_name = "Scattering Length Density Profile"
+        self.window_caption = self.window_name
         # Internal list of plottable names (because graph 
         # doesn't have a dictionary of handles for the plottables)
@@ -191,4 +199,8 @@
         for idx in range(0, len(axes)):
             self.axes_label.append(axes[idx])
+        self.xaxis_label = ''
+        self.xaxis_unit = ''
+        self.yaxis_label = ''
+        self.yaxis_unit = ''
         
     def add_image(self, plot):
@@ -204,6 +216,10 @@
         #add axes
         x1_label = self.axes_label[0]
-        self.graph.xaxis('\\rm{%s} '% x1_label, 'A')
-        self.graph.yaxis('\\rm{SLD} ', '10^{-6}A^{-2}')
+        self.xaxis_label = '\\rm{%s} '% x1_label
+        self.xaxis_unit = 'A'
+        self.graph.xaxis(self.xaxis_label, self.xaxis_unit)
+        self.yaxis_label = '\\rm{SLD} '
+        self.yaxis_unit = '10^{-6}A^{-2}'
+        self.graph.yaxis(self.yaxis_label, self.yaxis_unit)
         #draw
         self.graph.render(self)
@@ -235,5 +251,69 @@
         """
         pass 
-        
+    
+    def onChangeCaption(self, event):
+        """
+        Not implemented
+        """
+        pass
+    
+    def _onSave(self, evt):
+        """
+        Save a data set to a text file
+        
+        :param evt: Menu event
+        
+        """
+       
+        path = None
+        wildcard = "Text files (*.txt)|*.txt|"\
+                    "CanSAS 1D files(*.xml)|*.xml" 
+        default_name = "sld_profile"
+        if self.parent != None:
+            self._default_save_location = self.parent.parent._default_save_location
+        dlg = wx.FileDialog(self, "Choose a file",
+                            self._default_save_location,
+                            default_name, wildcard , wx.SAVE)
+       
+        if dlg.ShowModal() == wx.ID_OK:
+            path = dlg.GetPath()
+            # ext_num = 0 for .txt, ext_num = 1 for .xml
+            # This is MAC Fix
+            ext_num = dlg.GetFilterIndex()
+            if ext_num == 0:
+                format = '.txt'
+            else:
+                format = '.xml'
+            path = os.path.splitext(path)[0] + format
+            mypath = os.path.basename(path)
+            
+            #TODO: This is bad design. The DataLoader is designed 
+            #to recognize extensions.
+            # It should be a simple matter of calling the .
+            #save(file, data, '.xml') method
+            # of the sans.dataloader.loader.Loader class.
+            from sans.dataloader.loader import  Loader
+            #Instantiate a loader 
+            loader = Loader() 
+            data = self.parent.data
+            format = ".txt"
+            if os.path.splitext(mypath)[1].lower() == format:
+                # Make sure the ext included in the file name
+                # especially on MAC
+                fName = os.path.splitext(path)[0] + format
+                self._onsaveTXT(fName)
+            format = ".xml"
+            if os.path.splitext(mypath)[1].lower() == format:
+                # Make sure the ext included in the file name
+                # especially on MAC
+                fName = os.path.splitext(path)[0] + format
+                loader.save(fName, data, format)
+            try:
+                self._default_save_location = os.path.dirname(path)
+                self.parent.parent._default_save_location = self._default_save_location
+            except:
+                pass    
+        dlg.Destroy()
+         
 class ViewerFrame(wx.Frame):
     """
