Index: guiframe/local_perspectives/plotting/Plotter2D.py
===================================================================
--- guiframe/local_perspectives/plotting/Plotter2D.py	(revision 0f6d05f8708140b1338625a6925337e321ad9ce6)
+++ guiframe/local_perspectives/plotting/Plotter2D.py	(revision aa1b747740b44702bc3b25789ac78b0550952b72)
@@ -240,5 +240,5 @@
         pos = self.ScreenToClient(pos)
         self.PopupMenu(slicerpop, pos)
-   
+        
     def _setSlicer(self, slicer):
         # Clear current slicer
@@ -405,17 +405,11 @@
         self.onClearSlicer(event)
         wx.PostEvent(self.parent, InternalEvent(slicer= BoxInteractor))
-        """
-        self.onClearSlicer(event)
-        self.slicer=BoxInteractor
-        from SlicerParameters import SlicerParameterPanel
-       
-        dialog = SlicerParameterPanel(self.parent, -1, "Slicer Parameters")
-        dialog.set_slicer(self.slicer.__name__,
-                        self.slicer.get_params())
-        if dialog.ShowModal() == wx.ID_OK:
-            dialog.Destroy()
-        wx.PostEvent(self.parent, InternalEvent(slicer= BoxInteractor))
-        print "onboxavg",self.slicer
-        """
+        
+        from slicerpanel import SlicerPanel
+        new_panel = SlicerPanel(self.parent, -1, style=wx.RAISED_BORDER)
+        
+        from sans.guicomm.events import SlicerParameterEvent 
+        wx.PostEvent(self.parent, SlicerParameterEvent (panel= new_panel))
+        
         
     def onClearSlicer(self, event):
Index: guiframe/local_perspectives/plotting/boxSlicer.py
===================================================================
--- guiframe/local_perspectives/plotting/boxSlicer.py	(revision 0f6d05f8708140b1338625a6925337e321ad9ce6)
+++ guiframe/local_perspectives/plotting/boxSlicer.py	(revision aa1b747740b44702bc3b25789ac78b0550952b72)
@@ -177,9 +177,8 @@
         from DataLoader.manipulations import  Boxavg
         radius = math.sqrt(math.pow(self.qmax,2)+math.pow(self.qmax,2))
-        x_min= self.left_line.x1
-        x_max= self.right_line.x1 
-        y_min= self.bottom_line.y1
-        y_max= self.top_line.y1
-        box =  Boxavg (x_min=x_min, x_max=x_max, y_min=y_min, y_max=y_max)
+        self.x= math.fabs(self.right_line.x1)
+        self.y= math.fabs(self.top_line.y1 )
+       
+        box =  Boxavg (x_min=-self.x, x_max=self.x, y_min=-self.y, y_max=self.y)
        
         self.count, self.error= box(self.base.data2D)
@@ -220,5 +219,5 @@
         params = {}
         params["x_max"]= math.fabs(self.right_line.x1)
-        params["y_max"]= math.fabs(self.top_line.x1)
+        params["y_max"]= math.fabs(self.top_line.y1)
         
         params["errors"] = self.error
@@ -227,4 +226,5 @@
     
     def set_params(self, params):
+        
         self.x = float(math.fabs(params["x_max"]))
         self.y = float(math.fabs(params["y_max"] ))
@@ -248,4 +248,5 @@
                                  ymin= -1*self.y,
                                  ymax= -1*self.y)
+       
         self._post_data()
     def freeze_axes(self):
Index: guiframe/local_perspectives/plotting/plotting.py
===================================================================
--- guiframe/local_perspectives/plotting/plotting.py	(revision ab8f9362c44262da9c2214f86b1311efb77a535f)
+++ guiframe/local_perspectives/plotting/plotting.py	(revision aa1b747740b44702bc3b25789ac78b0550952b72)
@@ -17,4 +17,5 @@
 from sans.guicomm.events import EVT_NEW_PLOT
 from sans.guicomm.events import StatusEvent 
+from sans.guicomm.events import EVT_SLICER_PARS
 
 class Plugin:
@@ -59,5 +60,5 @@
         # Connect to plotting events
         self.parent.Bind(EVT_NEW_PLOT, self._on_plot_event)
-        
+        self.parent.Bind(EVT_SLICER_PARS, self._on_slicer_event)
         # We have no initial panels for this plug-in
         return []
@@ -87,5 +88,16 @@
     def _on_show_panel(self, event):
         print "_on_show_panel"
-    
+    def _on_slicer_event(self, event):
+        print "slicer event ", event.panel
+        new_panel = event.panel
+        # Set group ID if available
+        event_id = self.parent.popup_panel(new_panel)
+        self.menu.Append(event_id, new_panel.window_caption, 
+                         "Show %s plot panel" % new_panel.window_caption)
+        # Set UID to allow us to reference the panel later
+        new_panel.uid = event_id
+       
+        self.plot_panels.append(new_panel) 
+        return        
     def _on_plot_event(self, event):
         """
Index: guiframe/local_perspectives/plotting/slicerpanel.py
===================================================================
--- guiframe/local_perspectives/plotting/slicerpanel.py	(revision aa1b747740b44702bc3b25789ac78b0550952b72)
+++ guiframe/local_perspectives/plotting/slicerpanel.py	(revision aa1b747740b44702bc3b25789ac78b0550952b72)
@@ -0,0 +1,123 @@
+"""
+    Panel class to show the slicer parameters 
+"""
+
+import wx
+import wx.lib.newevent
+from copy import deepcopy
+
+(SlicerEvent, EVT_SLICER)   = wx.lib.newevent.NewEvent()
+(SlicerParameterEvent, EVT_SLICER_PARS)   = wx.lib.newevent.NewEvent()
+
+class SlicerPanel(wx.Panel):
+    #TODO: show units
+    #TODO: order parameters properly
+     ## Internal name for the AUI manager
+    window_name = "Slicer panel"
+    ## Title to appear on top of the window
+    window_caption = "Slicer Panel"
+    
+    CENTER_PANE = False
+    
+    def __init__(self, parent, *args, **kwargs):
+        wx.Panel.__init__(self, parent, *args, **kwargs)
+        self.params = {}
+        self.parent = parent
+        self.type = None
+        self.listeners = []
+        self.parameters = []
+        self.bck = wx.GridBagSizer(5,5)
+        self.SetSizer(self.bck)
+               
+        title = wx.StaticText(self, -1, "Right-click on 2D plot for slicer options", style=wx.ALIGN_LEFT)
+        self.bck.Add(title, (0,0), (1,2), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=15)
+        
+        # Bindings
+        self.parent.Bind(EVT_SLICER, self.onEVT_SLICER)
+        self.parent.Bind(EVT_SLICER_PARS, self.onParamChange)
+
+    def onEVT_SLICER(self, event):
+        """
+            Process EVT_SLICER events
+            When the slicer changes, update the panel
+            
+            @param event: EVT_SLICER event
+        """
+        event.Skip()
+        if event.obj_class==None:
+            self.set_slicer(None, None)
+            
+        else:
+            print "when here not empty event",event.type, event.params
+            self.set_slicer(event.type, event.params)
+        
+    def set_slicer(self, type, params):
+        """
+            Rebuild the panel
+        """
+        self.bck.Clear(True)  
+        self.type = type  
+        
+        if type==None:
+            #title = wx.StaticText(self, -1, "Right-click on 2D plot for slicer options", style=wx.ALIGN_LEFT)
+            #self.bck.Add(title, (0,0), (1,2), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=15)
+
+        #else:
+            title = wx.StaticText(self, -1, "Slicer Parameters", style=wx.ALIGN_LEFT)
+            self.bck.Add(title, (0,0), (1,2), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=15)
+            
+            n = 1
+            self.parameters = []
+            #params = slicer.get_params()
+            keys = params.keys()
+            keys.sort()
+            
+            for item in keys:
+                n += 1
+                text = wx.StaticText(self, -1, item, style=wx.ALIGN_LEFT)
+                self.bck.Add(text, (n-1,0), flag = wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border = 15)
+                ctl = wx.TextCtrl(self, -1, size=(80,20), style=wx.TE_PROCESS_ENTER)
+                
+                ctl.SetToolTipString("Modify the value of %s to change the 2D slicer" % item)
+                
+                
+                ctl.SetValue(str(params[item]))
+                self.Bind(wx.EVT_TEXT_ENTER, self.onTextEnter)
+                ctl.Bind(wx.EVT_KILL_FOCUS, self.onTextEnter)
+                self.parameters.append([item, ctl])
+                self.bck.Add(ctl, (n-1,1), flag=wx.TOP|wx.BOTTOM, border = 0)
+
+        self.bck.Layout()
+        self.bck.Fit(self)
+        self.parent.GetSizer().Layout()
+
+    def onParamChange(self, evt):
+        evt.Skip()
+        if evt.type == "UPDATE":
+            for item in self.parameters:              
+                if item[0] in evt.params:
+                    item[1].SetValue("%-5.3g" %evt.params[item[0]])
+                    item[1].Refresh()
+        
+    def onTextEnter(self, evt): 
+        """
+            Parameters have changed
+        """ 
+        params = {}
+        has_error = False
+        for item in self.parameters:
+            try:
+                params[item[0]] = float(item[1].GetValue())
+                item[1].SetBackgroundColour(
+                        wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
+                item[1].Refresh()
+            except:
+                has_error = True
+                item[1].SetBackgroundColour("pink")
+                item[1].Refresh()
+
+        if has_error==False:
+            # Post parameter event
+            event = SlicerParameterEvent(type=self.type, params=params)
+            wx.PostEvent(self.parent, event)
+        
