Index: prview/perspectives/pr/pr.py
===================================================================
--- prview/perspectives/pr/pr.py	(revision 75df58b1beae85913437ed9d779e48bb1169235d)
+++ prview/perspectives/pr/pr.py	(revision 75a7ece5680f34328452b8135a9e833cb7d603f1)
@@ -1311,7 +1311,17 @@
         """
         if len(data_list) > 1:
-            msg = "Pr panel does not allow more than one value"
-            msg += " at this time"
-            raise ValueError, msg
+            msg = "Pr panel does not allow multiple Data.\n"
+            msg += "Please select one!\n"
+            from pr_widgets import DataDialog
+            dlg = DataDialog(data_list=data_list, text=msg)
+            if dlg.ShowModal() == wx.ID_OK:
+                data = dlg.get_data()
+                if issubclass(data.__class__, LoaderData1D):
+                    self.control_panel._change_file(evt=None, data=data)
+                else:    
+                    msg = "Pr cannot be computed for data of "
+                    msg += "type %s" % (data_list[0].__class__.__name__)
+                    wx.PostEvent(self.parent, 
+                             StatusEvent(status=msg, info='error'))
         elif len(data_list) == 1:
             if issubclass(data_list[0].__class__, LoaderData1D):
@@ -1320,5 +1330,9 @@
                 msg = "Pr cannot be computed for"
                 msg += " data of type %s" % (data_list[0].__class__.__name__)
-                raise ValueError, msg
+                wx.PostEvent(self.parent, 
+                             StatusEvent(status=msg, info='error'))
+        else:
+            msg = "Pr contain no data"
+            wx.PostEvent(self.parent, StatusEvent(status=msg, info='warning'))
             
     def post_init(self):
Index: prview/perspectives/pr/pr_widgets.py
===================================================================
--- prview/perspectives/pr/pr_widgets.py	(revision 7116b6e08b4906240b8a779bf2f7c0f6e2623f6f)
+++ prview/perspectives/pr/pr_widgets.py	(revision 75a7ece5680f34328452b8135a9e833cb7d603f1)
@@ -16,5 +16,5 @@
 import wx
 import os
-
+from wx.lib.scrolledpanel import ScrolledPanel
 class PrTextCtrl(wx.TextCtrl):
     """
@@ -119,2 +119,77 @@
         """
         return self._complete_path
+    
+class DataDialog(wx.Dialog):
+    """
+    Allow file selection at loading time
+    """
+    def __init__(self, data_list, parent=None, text='', *args, **kwds):
+        wx.Dialog.__init__(self, parent, *args, **kwds)
+        self.list_of_ctrl = []
+        self._do_layout(data_list, text=text)
+        
+    def _do_layout(self, data_list, text=''):
+        """
+        layout the dialog
+        """
+        if not data_list or len(data_list) <= 1:
+            return 
+        # Dialog box properties
+        self.SetTitle("Data Selection")
+        w = 400
+        h = 200
+        self.SetSize((w, h))
+        sizer_main = wx.BoxSizer(wx.VERTICAL)
+        sizer_txt = wx.BoxSizer(wx.VERTICAL)
+        sizer_button = wx.BoxSizer(wx.HORIZONTAL)
+        choice_sizer = wx.GridBagSizer(5, 5)
+        #choice_sizer.SetMinSize((w-20, h-50))
+        panel = ScrolledPanel(self, style=wx.RAISED_BORDER, size=(w-20, h-50))
+        panel.SetupScrolling()
+        #add text
+        if text.strip() == "":
+            text = "This Perspective does not allow multiple data !\n"
+            text += "Please select only one Data.\n"
+        text_ctrl = wx.StaticText(self, -1, str(text))
+        sizer_txt.Add(text_ctrl)
+        iy = 0
+        ix = 0
+        rbox = wx.RadioButton(panel, -1, str(data_list[0].name), 
+                                  (10, 10), style= wx.RB_GROUP)
+        rbox.SetValue(True)
+        self.list_of_ctrl.append((rbox, data_list[0]))
+        choice_sizer.Add(rbox, (iy, ix), (1, 1),
+                         wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
+        for i in range(1, len(data_list)):
+            iy += 1
+            rbox = wx.RadioButton(panel, -1, str(data_list[i].name), (10, 10))
+            rbox.SetValue(False)
+            self.list_of_ctrl.append((rbox, data_list[i]))
+            choice_sizer.Add(rbox, (iy, ix),
+                           (1, 1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
+        panel.SetSizer(choice_sizer)
+        #add sizer
+        sizer_button.Add((20, 20), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
+        button_cancel = wx.Button(self, wx.ID_CANCEL, "Cancel")
+        sizer_button.Add(button_cancel, 0,
+                          wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10)
+        button_OK = wx.Button(self, wx.ID_OK, "Ok")
+        button_OK.SetFocus()
+        sizer_button.Add(button_OK, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10)
+        static_line = wx.StaticLine(self, -1)
+        
+        sizer_txt.Add(panel, 1, wx.EXPAND|wx.LEFT|wx.RIGHT, 5)
+        sizer_main.Add(sizer_txt, 1, wx.EXPAND|wx.ALL, 10)
+        sizer_main.Add(static_line, 0, wx.EXPAND, 0)
+        sizer_main.Add(sizer_button, 0, wx.EXPAND|wx.ALL, 10)
+        self.SetSizer(sizer_main)
+        self.Layout()
+        
+    def get_data(self):
+        """
+        return the selected data
+        """
+        for item in self.list_of_ctrl:
+            rbox, data = item
+            if rbox.GetValue():
+                return data 
