Index: prview/perspectives/pr/pr.py
===================================================================
--- prview/perspectives/pr/pr.py	(revision ea5551f0b67606e45900ac9178e2b2bd45f55666)
+++ prview/perspectives/pr/pr.py	(revision f1181977368bfcb414806fd4cbbd5b25116fa351)
@@ -12,9 +12,9 @@
 from sans.pr.invertor import Invertor
 
-PR_FIT_LABEL       = "P_{fit}(r)"
-PR_LOADED_LABEL    = "P_{loaded}(r)"
-IQ_DATA_LABEL      = "I_{obs}(q)"
-IQ_FIT_LABEL       = "I_{fit}(q)"
-IQ_SMEARED_LABEL   = "I_{smeared}(q)"
+PR_FIT_LABEL       = r"$P_{fit}(r)$"
+PR_LOADED_LABEL    = r"$P_{loaded}(r)$"
+IQ_DATA_LABEL      = r"$I_{obs}(q)$"
+IQ_FIT_LABEL       = r"$I_{fit}(q)$"
+IQ_SMEARED_LABEL   = r"$I_{smeared}(q)$"
 
 import wx.lib
@@ -80,4 +80,8 @@
         self._scale_output_unity = False
         
+        ## List of added P(r) plots
+        self._added_plots = {}
+        self._default_Iq  = {}
+        
         # Log startup
         logging.info("Pr(r) plug-in started")
@@ -318,5 +322,5 @@
         else:
             new_plot = Data1D(x, y, dy=dy)
-        new_plot.name = "P_{fit}(r)"
+        new_plot.name = PR_FIT_LABEL
         new_plot.xaxis("\\rm{r}", 'A')
         new_plot.yaxis("\\rm{P(r)} ","cm^{-3}")
@@ -516,7 +520,19 @@
         self.show_pr(self._last_out, self._last_pr, self._last_cov)
         
+        # Now replot the original added data
+        for plot in self._added_plots:
+            self._added_plots[plot].y = numpy.copy(self._default_Iq[plot])
+            wx.PostEvent(self.parent, NewPlotEvent(plot=self._added_plots[plot], 
+                                                   title=self._added_plots[plot].name,
+                                                   update=True))        
+        
+        # Need the update flag in the NewPlotEvent to protect against
+        # the plot no longer being there...
+        
     def _on_normalize(self, evt):
         """
-            Switch normalization ON/OFF
+            Normalize the area under the P(r) curve to 1.
+            This operation is done for all displayed plots.
+            
             @param evt: Menu event
         """
@@ -526,7 +542,25 @@
         self.show_pr(self._last_out, self._last_pr, self._last_cov)
         
+        # Now scale the added plots too
+        for plot in self._added_plots:
+            sum = numpy.sum(self._added_plots[plot].y)
+            npts = len(self._added_plots[plot].x)
+            sum *= self._added_plots[plot].x[npts-1]/npts
+            y = self._added_plots[plot].y/sum
+            
+            new_plot = Theory1D(self._added_plots[plot].x, y)
+            new_plot.name = self._added_plots[plot].name
+            new_plot.xaxis("\\rm{r}", 'A')
+            new_plot.yaxis("\\rm{P(r)} ","cm^{-3}")
+            
+            wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, update=True,
+                                                   title=self._added_plots[plot].name))
+                
+        
+        
     def _on_scale_unity(self, evt):
         """
-            Switch normalization ON/OFF
+            Scale the maximum P(r) value on each displayed plot to 1.
+            
             @param evt: Menu event
         """
@@ -535,4 +569,21 @@
             
         self.show_pr(self._last_out, self._last_pr, self._last_cov)
+        
+        # Now scale the added plots too
+        for plot in self._added_plots:
+            _max = 0
+            for y in self._added_plots[plot].y:
+                if y>_max: 
+                    _max = y
+            y = self._added_plots[plot].y/_max
+            
+            new_plot = Theory1D(self._added_plots[plot].x, y)
+            new_plot.name = self._added_plots[plot].name
+            new_plot.xaxis("\\rm{r}", 'A')
+            new_plot.yaxis("\\rm{P(r)} ","cm^{-3}")
+            
+            wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, update=True,
+                                                   title=self._added_plots[plot].name))        
+        
         
     def _on_add_data(self, evt):
@@ -547,11 +598,17 @@
         x, y, err = self.parent.load_ascii_1D(path)
         
+        filename = os.path.basename(path)
+        
         #new_plot = Data1D(x, y, dy=err)
         new_plot = Theory1D(x, y)
-        new_plot.name = "P_{loaded}(r)"
+        new_plot.name = filename
         new_plot.xaxis("\\rm{r}", 'A')
         new_plot.yaxis("\\rm{P(r)} ","cm^{-3}")
             
-        wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title="P(r) fit"))
+        # Store a ref to the plottable for later use
+        self._added_plots[filename] = new_plot
+        self._default_Iq[filename]  = numpy.copy(y)
+        
+        wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title=filename))
         
         
@@ -653,5 +710,5 @@
             # Make a plot of I(q) data
             new_plot = Data1D(self.pr.x, self.pr.y, dy=self.pr.err)
-            new_plot.name = "I_{obs}(q)"
+            new_plot.name = IQ_DATA_LABEL
             new_plot.xaxis("\\rm{Q}", 'A^{-1}')
             new_plot.yaxis("\\rm{Intensity} ","cm^{-1}")
@@ -689,5 +746,5 @@
         else:
             new_plot = Data1D(self.pr.x, self.pr.y, dy=self.pr.err)
-        new_plot.name = "I_{obs}(q)"
+        new_plot.name = IQ_DATA_LABEL
         new_plot.xaxis("\\rm{Q}", 'A^{-1}')
         new_plot.yaxis("\\rm{Intensity} ","cm^{-1}")
