Index: sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter1D.py
===================================================================
--- sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter1D.py	(revision 8f59e95b3001fbd69e1670fadfe4ea035b66a676)
+++ sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter1D.py	(revision 8a687cfd78dd3826439b14d412c1c9222ed46909)
@@ -687,24 +687,20 @@
 
     def on_graphApp_close(self,e):
-# returns toggleGrid? toggleLegend? xlab, ylab, xunit, yunit, xfont, yfont, xcolor, ycolor, legendloc
-
-        #to do - make this passback mechanism much nicer
-        data = self.graphApp.getAppInfo()
-        self.onGridOnOff(data[0])
-        self.onLegend(data[1])
-        self.ChangeLegendLoc(data[10])
-
-        self.xaxis_label = data[2]
-        self.yaxis_label = data[3]
-        self.xaxis_unit = data[4]
-        self.yaxis_unit = data[5]
-
-        self.xaxis(data[2],data[4],data[6],data[8])
-        self.yaxis(data[3],data[5],data[7],data[9])
-
-        xfont = data[6]
-        yfont = data[7]
-
-        # and a little sanity checking along the way
+        # gets values from graph appearance dialog and sends them off
+        # to modify the plot
+
+        self.onGridOnOff(self.graphApp.get_togglegrid())
+        self.onLegend(self.graphApp.get_togglelegend())
+        self.ChangeLegendLoc(self.graphApp.get_legend_loc())
+
+        self.xaxis_label = self.graphApp.get_xlab()
+        self.yaxis_label = self.graphApp.get_ylab()
+        self.xaxis_unit = self.graphApp.get_xunit()
+        self.yaxis_unit = self.graphApp.get_yunit()
+
+        self.xaxis(self.xaxis_label,self.xaxis_unit,
+                   self.graphApp.get_xfont(),self.graphApp.get_xcolor())
+        self.yaxis(self.yaxis_label,self.yaxis_unit,
+                   self.graphApp.get_yfont(),self.graphApp.get_ycolor())
 
         self.graphApp.Destroy()
Index: sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter2D.py
===================================================================
--- sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter2D.py	(revision 940aca737db034347a7b2bcbe30f143b76e47cbc)
+++ sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter2D.py	(revision 8a687cfd78dd3826439b14d412c1c9222ed46909)
@@ -33,4 +33,5 @@
 from sans.guiframe.dataFitting import Data1D
 from matplotlib.font_manager import FontProperties
+from graphAppearance import graphAppearance
 (InternalEvent, EVT_INTERNAL) = wx.lib.newevent.NewEvent()
 
@@ -39,4 +40,9 @@
 DEFAULT_BEAM = 0.005
 BIN_WIDTH = 1.0
+
+
+def find_key(dic, val):
+    """return the key of dictionary dic given the value"""
+    return [k for k, v in dic.iteritems() if v == val][0]
 
 
@@ -375,14 +381,23 @@
         slicerpop.AppendSeparator()
         
-        id = wx.NewId()
-        slicerpop.Append(id, '&Edit Y Axis Label')
-        wx.EVT_MENU(self, id, self._on_yaxis_label)     
-        id = wx.NewId()
-        slicerpop.Append(id, '&Edit X Axis Label')
-        wx.EVT_MENU(self, id, self._on_xaxis_label)
-        id = wx.NewId()
-        slicerpop.Append(id, '&Toggle Grid On/Off', 'Toggle Grid On/Off')
-        wx.EVT_MENU(self, id, self.onGridOnOff)
+        # id = wx.NewId()
+        # slicerpop.Append(id, '&Edit Y Axis Label')
+        # wx.EVT_MENU(self, id, self._on_yaxis_label)     
+        # id = wx.NewId()
+        # slicerpop.Append(id, '&Edit X Axis Label')
+        # wx.EVT_MENU(self, id, self._on_xaxis_label)
+        # id = wx.NewId()
+        # slicerpop.Append(id, '&Toggle Grid On/Off', 'Toggle Grid On/Off')
+        # wx.EVT_MENU(self, id, self.onGridOnOff)
+        # slicerpop.AppendSeparator()
+
+        # ILL mod here
+
+        id = wx.NewId()
+        slicerpop.Append(id, '&Modify graph appearance','Modify graph appearance')
+        wx.EVT_MENU(self, id, self.modifyGraphAppearance)
         slicerpop.AppendSeparator()
+
+
         
         id = wx.NewId()
@@ -776,2 +791,36 @@
             self.parent.show_data2d(data, default_name)
         
+
+    def modifyGraphAppearance(self,e):
+        self.graphApp = graphAppearance(self,'Modify graph appearance',
+                                        legend=False)
+
+        
+
+        self.graphApp.setDefaults(self.grid_on,self.legend_on,
+                                  self.xaxis_label,self.yaxis_label,
+                                  self.xaxis_unit,self.yaxis_unit,
+                                  self.xaxis_font,self.yaxis_font,
+                                  find_key(self.get_loc_label(),self.legendLoc),
+                                  self.xcolor,self.ycolor)
+        self.graphApp.Bind(wx.EVT_CLOSE, self.on_graphApp_close)
+    
+
+    def on_graphApp_close(self,e):
+        # gets values from graph appearance dialog and sends them off
+        # to modify the plot
+
+        self.onGridOnOff(self.graphApp.get_togglegrid())
+
+        
+        self.xaxis_label = self.graphApp.get_xlab()
+        self.yaxis_label = self.graphApp.get_ylab()
+        self.xaxis_unit = self.graphApp.get_xunit()
+        self.yaxis_unit = self.graphApp.get_yunit()
+
+        self.xaxis(self.xaxis_label,self.xaxis_unit,
+                   self.graphApp.get_xfont(),self.graphApp.get_xcolor())
+        self.yaxis(self.yaxis_label,self.yaxis_unit,
+                   self.graphApp.get_yfont(),self.graphApp.get_ycolor())
+
+        self.graphApp.Destroy()
Index: sansguiframe/src/sans/guiframe/local_perspectives/plotting/graphAppearance.py
===================================================================
--- sansguiframe/src/sans/guiframe/local_perspectives/plotting/graphAppearance.py	(revision 8f59e95b3001fbd69e1670fadfe4ea035b66a676)
+++ sansguiframe/src/sans/guiframe/local_perspectives/plotting/graphAppearance.py	(revision 8a687cfd78dd3826439b14d412c1c9222ed46909)
@@ -26,6 +26,8 @@
 class graphAppearance(wx.Frame):
 
-    def __init__(self,parent,title):
+    def __init__(self,parent,title,legend=True):
         super(graphAppearance,self).__init__(parent, title=title,size=(520,435))
+
+        self.legend = legend
 
         self.InitUI()
@@ -51,9 +53,18 @@
 
 
-        legendLocText = wx.StaticText(panel, label='Legend location: ')
-        self.legendLocCombo = wx.ComboBox(panel,style = wx.CB_READONLY, size=(180,-1))
-        self.fillLegendLocs()
-
-        self.toggleLegend = wx.CheckBox(panel, label='Toggle legend on/off')
+
+        if self.legend:
+            legendLocText = wx.StaticText(panel, label='Legend location: ')
+            self.legendLocCombo = wx.ComboBox(panel,style = wx.CB_READONLY, size=(180,-1))
+            self.fillLegendLocs()
+        else:
+            self.legendLocCombo = None
+
+
+        if self.legend:
+            self.toggleLegend = wx.CheckBox(panel, label='Toggle legend on/off')
+        else:
+            self.toggleLegend = None
+
         self.toggleGrid = wx.CheckBox(panel, label='Toggle grid on/off')
 
@@ -119,9 +130,11 @@
         yhbox2.Add(yfontButton,flag=wx.ALL | wx.ALIGN_RIGHT, border=5)
 
-
-        hbox1.Add(legendLocText, flag =  wx.ALL | wx.EXPAND  | wx.ALIGN_LEFT, border=5)
-        hbox1.Add(self.legendLocCombo, flag =  wx.ALL | wx.EXPAND  | wx.ALIGN_LEFT, border=5)
-        hbox1.Add((5,-1))
-        hbox1.Add(self.toggleLegend, flag = wx.ALL | wx.EXPAND  | wx.ALIGN_LEFT, border=5)
+        if self.legend:
+            hbox1.Add(legendLocText, flag =  wx.ALL | wx.EXPAND  | wx.ALIGN_LEFT, border=5)
+            hbox1.Add(self.legendLocCombo, flag =  wx.ALL | wx.EXPAND  | wx.ALIGN_LEFT, border=5)
+
+        if self.legend:
+            hbox1.Add((5,-1))
+            hbox1.Add(self.toggleLegend, flag = wx.ALL | wx.EXPAND  | wx.ALIGN_LEFT, border=5)
 
         hbox2.Add(self.okButton, flag = wx.ALL | wx.ALIGN_RIGHT, border=5)
@@ -223,5 +236,6 @@
                     xcolor,ycolor):
         self.toggleGrid.SetValue(grid)
-        self.toggleLegend.SetValue(legend)
+        if self.legend:
+            self.toggleLegend.SetValue(legend)
         self.xaxisText.SetValue(xlab)
         self.yaxisText.SetValue(ylab)
@@ -242,25 +256,52 @@
             
 
-        
-        self.legendLocCombo.SetStringSelection(legend_loc)
-
-
-    def getAppInfo(self):
-        grid_on = self.toggleGrid.GetValue()
-        legend_on = self.toggleLegend.GetValue()
-        xlab = self.xaxisText.GetValue()
-        ylab = self.yaxisText.GetValue()
-        xunit = self.xaxisUnitText.GetValue()
-        yunit = self.yaxisUnitText.GetValue()
-        legend_loc = self.get_loc_label()[self.legendLocCombo.GetStringSelection()]
-        xcolor = self.xfontColor.GetValue()
-        ycolor = self.yfontColor.GetValue()
-
-
-        return [grid_on,legend_on,xlab,ylab,xunit,yunit,
-                self.xfont,self.yfont,
-                xcolor,ycolor,legend_loc]
-
-
+        if self.legend:
+            self.legendLocCombo.SetStringSelection(legend_loc)
+
+
+    # get whether grid is toggled on/off
+    def get_togglegrid(self):
+        return self.toggleGrid.GetValue()
+
+    # get whether legend is toggled on/off
+    def get_togglelegend(self):
+        return self.toggleLegend.GetValue()
+
+    # get x label
+    def get_xlab(self):
+        return self.xaxisText.GetValue()
+
+    # get y label
+    def get_ylab(self):
+        return self.yaxisText.GetValue()
+
+    # get x unit
+    def get_xunit(self):
+        return self.xaxisUnitText.GetValue()
+
+    # get y unit
+    def get_yunit(self):
+        return self.yaxisUnitText.GetValue()
+
+    # get legend location
+    def get_legend_loc(self):
+        return self.get_loc_label()[self.legendLocCombo.GetStringSelection()]
+
+    # get x axis label color
+    def get_xcolor(self):
+        return self.xfontColor.GetValue()
+
+    # get y axis label color
+    def get_ycolor(self):
+        return self.yfontColor.GetValue()
+
+    # get x axis font (type is FontProperties)
+    def get_xfont(self):
+        return self.xfont
+
+    # get y axis font
+    def get_yfont(self):
+        return self.yfont
+    
 
 if __name__ == '__main__':
