Index: guiframe/local_perspectives/plotting/AnnulusSlicer.py
===================================================================
--- guiframe/local_perspectives/plotting/AnnulusSlicer.py	(revision 1ce365f8bcc12f88abb04b1431cd75f0e21984fd)
+++ guiframe/local_perspectives/plotting/AnnulusSlicer.py	(revision 18eba35c7477f0694169ce9f4575ba08f17c4cc0)
@@ -85,6 +85,6 @@
         self.outer_circle.clear()
         self.inner_circle.clear()
-        #self.base.connect.disconnect()
-        #self.base.parent.Unbind(EVT_SLICER_PARS)
+        self.base.connect.clearall()
+      
         self.base.Unbind(EVT_SLICER_PARS)
         
Index: guiframe/local_perspectives/plotting/Plotter1D.py
===================================================================
--- guiframe/local_perspectives/plotting/Plotter1D.py	(revision dd66fbd26cdd76d4c4483e33947537788beb4e5c)
+++ guiframe/local_perspectives/plotting/Plotter1D.py	(revision 18eba35c7477f0694169ce9f4575ba08f17c4cc0)
@@ -16,7 +16,7 @@
 import danse.common.plottools
 from danse.common.plottools.PlotPanel import PlotPanel
-from danse.common.plottools.plottables import Graph,Data1D,Theory1D
+from danse.common.plottools.plottables import Graph,Data1D,Theory1D,Data1D
 from sans.guicomm.events import EVT_NEW_PLOT
-from sans.guicomm.events import StatusEvent ,NewPlotEvent,SlicerEvent
+from sans.guicomm.events import StatusEvent ,NewPlotEvent,SlicerEvent,ErrorDataEvent
 from sans.guiframe.utils import PanelMenu
 
@@ -58,4 +58,5 @@
         ## save errors dy  for each data plotted
         self.err_dy={}
+        self.errors_hide=0
         
         ## Unique ID (from gui_manager)
@@ -184,5 +185,9 @@
         id = wx.NewId()
         slicerpop.Append(id,'&Print image', 'Print image ')
-        wx.EVT_MENU(self, id, self.onPrint)  
+        wx.EVT_MENU(self, id, self.onPrint)
+          
+        id = wx.NewId()
+        slicerpop.Append(id,'&Print Preview', 'image preview for print')
+        wx.EVT_MENU(self, id, self.onPrinterPreview)
            
         slicerpop.AppendSeparator()
@@ -220,18 +225,24 @@
        
         if self.graph.selected_plottable in self.plots:
-            if self.plots[self.graph.selected_plottable].__class__.__name__=="Theory1D":
+            if self.plots[self.graph.selected_plottable].name in self.err_dy.iterkeys()\
+                and self.errors_hide==1:
+                 
+                #if self.plots[self.graph.selected_plottable].__class__.__name__=="Theory1D":
                 id = wx.NewId()
-                slicerpop.Append(id, '&Add errors to data')
+                slicerpop.Append(id, '&Show errors to data')
                 #print "panel scale before  ",self.xLabel, self.yLabel
                 #print "cyllinder before adding error", self.plots[self.graph.selected_plottable].x
                 wx.EVT_MENU(self, id, self._on_add_errors)
-                """
-                elif self.plots[self.graph.selected_plottable].__class__.__name__=="Data1D":
+                
+               
+            elif self.plots[self.graph.selected_plottable].__class__.__name__=="Data1D"\
+                and self.errors_hide==0:
                     id = wx.NewId()
-                    slicerpop.Append(id, '&Remove errors From data')
+                    slicerpop.Append(id, '&Hide Error bars')
                     #print "panel scale before  ",self.xLabel, self.yLabel
                     #print "cyllinder before adding error", self.plots[self.graph.selected_plottable].x
                     wx.EVT_MENU(self, id, self._on_remove_errors)
-                """
+                    
+             
             else:
                 id = wx.NewId()
@@ -262,4 +273,6 @@
         pos = self.ScreenToClient(pos)
         self.PopupMenu(slicerpop, pos)
+        
+        
     def _on_remove_errors(self, evt):
         if not self.graph.selected_plottable == None:
@@ -267,8 +280,11 @@
             dy = self.plots[self.graph.selected_plottable].dy
             self.err_dy[name]= dy
-            new_plot = Theory1D(self.plots[self.graph.selected_plottable].x,
+            import numpy
+            dy= numpy.zeros(len(self.plots[self.graph.selected_plottable].y))
+            new_plot = Data1D(self.plots[self.graph.selected_plottable].x,
                               self.plots[self.graph.selected_plottable].y,
-                              dy=None)
+                              dy=dy)
             new_plot.interactive = True
+            self.errors_hide=1
             new_plot.name = self.plots[self.graph.selected_plottable].name 
             if hasattr(self.plots[self.graph.selected_plottable], "group_id"):
@@ -283,7 +299,7 @@
             new_plot.yaxis(label, unit)
             #print "panel scale ",self.xLabel, self.yLabel
-            print "color",self.graph.plottables[self.plots[self.graph.selected_plottable]]
+            #print "color",self.graph.plottables[self.plots[self.graph.selected_plottable]]
             color=self.graph.plottables[self.plots[self.graph.selected_plottable]]
-            self.graph.delete_plottable(self.plots[self.graph.selected_plottable])
+            self.graph.delete(self.plots[self.graph.selected_plottable])
             
             self.graph.add(new_plot,color)
@@ -295,4 +311,7 @@
             self.graph.render(self)
             self.subplot.figure.canvas.draw_idle() 
+            
+            event = ErrorDataEvent(err_dy=self.err_dy)
+            wx.PostEvent(self.parent, event)
     
     def _on_add_errors(self, evt):
@@ -321,4 +340,5 @@
                               dy=dy)
             new_plot.interactive = True
+            self.errors_hide=0
             new_plot.name = self.plots[self.graph.selected_plottable].name 
             if hasattr(self.plots[self.graph.selected_plottable], "group_id"):
@@ -334,8 +354,8 @@
             new_plot.yaxis(label, unit)
             #print "panel scale ",self.xLabel, self.yLabel
-            #color=self.graph.plottables[self.plots[self.graph.selected_plottable]]
-            self.graph.delete_plottable(self.plots[self.graph.selected_plottable])
-            #self.graph.add_plottable(new_plot, color)
-            self.graph.add(new_plot)
+            color=self.graph.plottables[self.plots[self.graph.selected_plottable]]
+            self.graph.delete(self.plots[self.graph.selected_plottable])
+            self.graph.add(new_plot, color)
+            
             # transforming the view of the new data into the same of the previous data
             self._onEVT_FUNC_PROPERTY()
Index: guiframe/local_perspectives/plotting/Plotter2D.py
===================================================================
--- guiframe/local_perspectives/plotting/Plotter2D.py	(revision 4f8a00ce134b6a7ec0e9e88b38dd6720c61200c8)
+++ guiframe/local_perspectives/plotting/Plotter2D.py	(revision 18eba35c7477f0694169ce9f4575ba08f17c4cc0)
@@ -191,5 +191,5 @@
         
         id = wx.NewId()
-        slicerpop.Append(id,'&Image Preview', 'image preview for print')
+        slicerpop.Append(id,'&Print Preview', 'image preview for print')
         wx.EVT_MENU(self, id, self.onPrinterPreview)
         
Index: guiframe/local_perspectives/plotting/SectorSlicer.py
===================================================================
--- guiframe/local_perspectives/plotting/SectorSlicer.py	(revision 1ce365f8bcc12f88abb04b1431cd75f0e21984fd)
+++ guiframe/local_perspectives/plotting/SectorSlicer.py	(revision 18eba35c7477f0694169ce9f4575ba08f17c4cc0)
@@ -63,10 +63,9 @@
         
         # Bind to slice parameter events
-        #self.base.parent.Bind(EVT_SLICER_PARS, self._onEVT_SLICER_PARS)
         self.base.Bind(EVT_SLICER_PARS, self._onEVT_SLICER_PARS)
 
     def _onEVT_SLICER_PARS(self, event):
-        #wx.PostEvent(self.base.parent, StatusEvent(status="SectorSlicer._onEVT_SLICER_PARS"))
-        wx.PostEvent(self.base, StatusEvent(status="SectorSlicer._onEVT_SLICER_PARS"))
+       
+        wx.PostEvent(self.base.parent, StatusEvent(status="SectorSlicer._onEVT_SLICER_PARS"))
         event.Skip()
         if event.type == self.__class__.__name__:
@@ -97,6 +96,6 @@
         self.left_line.clear()
         self.right_line.clear()
-        #self.base.connect.disconnect()
-        #self.base.parent.Unbind(EVT_SLICER_PARS)
+        self.base.connect.clearall()
+        
         self.base.Unbind(EVT_SLICER_PARS)
         
Index: guiframe/local_perspectives/plotting/boxSlicer.py
===================================================================
--- guiframe/local_perspectives/plotting/boxSlicer.py	(revision 3b909b78110dbab692ded43c8bec4e4a0131b3b8)
+++ guiframe/local_perspectives/plotting/boxSlicer.py	(revision 18eba35c7477f0694169ce9f4575ba08f17c4cc0)
@@ -11,5 +11,5 @@
 from BaseInteractor import _BaseInteractor
 from copy import deepcopy
-import math
+import math, numpy
 
 from sans.guicomm.events import NewPlotEvent, StatusEvent,SlicerParameterEvent,EVT_SLICER_PARS
@@ -22,16 +22,18 @@
          Select an annulus through a 2D plot
     """
-    def __init__(self,base,axes,color='black', zorder=3,
-                  x_min=0.0025, x_max=0.0025, y_min=0.0025, y_max=0.0025):
-        
+    def __init__(self,base,axes,color='black', zorder=3):
         _BaseInteractor.__init__(self, base, axes, color=color)
+        
         self.markers = []
         self.axes = axes
-        self.qmax = self.base.data2D.xmax
+        
         self.connect = self.base.connect
+        
         self.x= 0.5*min(math.fabs(self.base.data2D.xmax),math.fabs( self.base.data2D.xmin))
         self.y= 0.5*min(math.fabs(self.base.data2D.xmax),math.fabs( self.base.data2D.xmin))        
-         
-        self.theta2= math.pi/3
+        
+        self.qmax = max(self.base.data2D.xmax,self.base.data2D.xmin,
+                        self.base.data2D.ymax,self.base.data2D.ymin )   
+        
         ## Number of points on the plot
         self.nbins = 30
@@ -39,35 +41,18 @@
         self.error=0
         self.averager=None
-        self.left_line = VerticalLine(self, self.base.subplot,color='blue', 
+        
+        self.vertical_lines = VerticalLines(self, self.base.subplot,color='blue', 
                                       zorder=zorder,
-                                        ymin= -self.y , 
-                                        ymax= self.y ,
-                                        xmin= -self.x,
-                                        xmax= -self.x)
-        self.left_line.qmax = self.qmax
-        
-        self.right_line= VerticalLine(self, self.base.subplot,color='black', 
+                                        y= self.y ,
+                                        x= self.x)
+        self.vertical_lines.qmax = self.qmax
+       
+        self.horizontal_lines= HorizontalLines(self, self.base.subplot,color='green', 
                                       zorder=zorder,
-                                     ymin= -self.y , 
-                                     ymax= self.y,
-                                     xmin= self.x,
-                                     xmax= self.x)
-        self.right_line.qmax = self.qmax
-        
-        self.top_line= HorizontalLine(self, self.base.subplot,color='green', 
-                                      zorder=zorder,
-                                      xmin= -self.x,
-                                      xmax= self.x,
-                                      ymin= self.y,
-                                      ymax= self.y)
-        self.top_line.qmax= self.qmax
-        
-        self.bottom_line= HorizontalLine(self, self.base.subplot,color='gray', 
-                                      zorder=zorder,
-                                      xmin= -self.x,
-                                      xmax= self.x,
-                                      ymin= -self.y,
-                                      ymax= -self.y)
-        self.bottom_line.qmax= self.qmax
+                                      x= self.x,
+                                      y= self.y)
+        self.horizontal_lines.qmax= self.qmax
+        
+      
         
         self.update()
@@ -75,9 +60,9 @@
         
         # Bind to slice parameter events
-        self.base.parent.Bind(EVT_SLICER_PARS, self._onEVT_SLICER_PARS)
+        self.base.Bind(EVT_SLICER_PARS, self._onEVT_SLICER_PARS)
 
 
     def _onEVT_SLICER_PARS(self, event):
-        #printEVT("AnnulusSlicer._onEVT_SLICER_PARS")
+        wx.PostEvent(self.base.parent, StatusEvent(status="BoxSlicer._onEVT_SLICER_PARS"))
         event.Skip()
         if event.type == self.__class__.__name__:
@@ -106,10 +91,9 @@
         self.averager=None
         self.clear_markers()
-        self.left_line.clear()
-        self.right_line.clear()
-        self.top_line.clear()
-        self.bottom_line.clear()
-        #self.base.connect.disconnect()
-        self.base.parent.Unbind(EVT_SLICER_PARS)
+        self.horizontal_lines.clear()
+        self.vertical_lines.clear()
+        self.base.connect.clearall()
+        
+        self.base.Unbind(EVT_SLICER_PARS)
         
     def update(self):
@@ -118,46 +102,13 @@
         resetting the widgets.
         """
-        
-        if self.top_line.has_move:
-            #print"top has moved"
-            self.top_line.update()
-            self.bottom_line.update(ymin= -self.top_line.y1,
-                                    ymax= -self.top_line.y2)
-            self.left_line.update(ymin= -self.top_line.y1,
-                                    ymax= -self.top_line.y2)
-            self.right_line.update(ymin= -self.top_line.y1,
-                                    ymax= -self.top_line.y2)
-           
-        if self.bottom_line.has_move:
-            #print "bottom has move"
-            self.bottom_line.update()
-            self.top_line.update(ymin= -self.bottom_line.y1,
-                                    ymax= -self.bottom_line.y2)
-            self.left_line.update(ymin= self.bottom_line.y1,
-                                    ymax= self.top_line.y1)
-            self.right_line.update(ymin= self.bottom_line.y1,
-                                    ymax=self.top_line.y1)
-           
-        if self.left_line.has_move:
-           
-            self.left_line.update()
-            self.right_line.update(xmin = - self.left_line.x1,
-                                   xmax = - self.left_line.x1)
-            self.bottom_line.update(xmin=  self.left_line.x1,
-                                     xmax= self.right_line.x1)
-            self.top_line.update(xmin= self.left_line.x1,
-                                    xmax= self.right_line.x1)
-           
-        if self.right_line.has_move:
-           
-            self.right_line.update()
-            self.left_line.update(xmin = -self.right_line.x1,
-                                   xmax = -self.right_line.x1)
-            
-            self.bottom_line.update(xmin= self.left_line.x1,
-                                 xmax= self.right_line.x1)
-            
-            self.top_line.update(xmin= self.left_line.x1,
-                                    xmax= self.right_line.x1)
+        if self.horizontal_lines.has_move:
+            #print "top has moved"
+            self.horizontal_lines.update()
+            self.vertical_lines.update(y=self.horizontal_lines.y)
+        if self.vertical_lines.has_move:
+            #print "right has moved"
+            self.vertical_lines.update()
+            self.horizontal_lines.update(x=self.vertical_lines.x)
+            
                
             
@@ -168,8 +119,7 @@
         """
         self.base.freeze_axes()
-        self.left_line.save(ev)
-        self.right_line.save(ev)
-        self.top_line.save(ev)
-        self.bottom_line.save(ev)
+        self.vertical_lines.save(ev)
+        self.horizontal_lines.save(ev)
+    
     def _post_data(self):
         pass
@@ -178,9 +128,9 @@
     def post_data(self,new_slab=None , nbins=None):
         """ post data averaging in Q"""
-        x_min= min(self.left_line.x1, self.right_line.x1)
-        x_max= max(self.left_line.x1, self.right_line.x1)
-        
-        y_min= min(self.top_line.y1, self.bottom_line.y1)
-        y_max= max(self.top_line.y1, self.bottom_line.y1)  
+        x_min= -1*math.fabs(self.vertical_lines.x)
+        x_max= math.fabs(self.vertical_lines.x)
+        
+        y_min= -1*math.fabs(self.horizontal_lines.y)
+        y_max= math.fabs(self.horizontal_lines.y)
         
         if nbins !=None:
@@ -223,19 +173,5 @@
         wx.PostEvent(self.base.parent, NewPlotEvent(plot=new_plot,
                                                  title=str(self.averager.__name__) ))
-        
-        
-    def _post_data(self):
-        # Compute data
-        data = self.base.data2D
-        from DataLoader.manipulations import  Boxavg
-        radius = math.sqrt(math.pow(self.qmax,2)+math.pow(self.qmax,2))
-        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)
-        
-        #print "post data"
+    
               
                                        
@@ -255,8 +191,7 @@
         Restore the roughness for this layer.
         """
-        self.left_line.restore()
-        self.right_line.restore()
-        self.top_line.restore()
-        self.bottom_line.restore()
+        self.horizontal_lines.restore()
+        self.vertical_lines.restore()
+       
 
     def move(self, x, y, ev):
@@ -271,9 +206,8 @@
     def get_params(self):
         params = {}
-        params["x_max"]= math.fabs(self.right_line.x1)
-        params["y_max"]= math.fabs(self.top_line.y1)
+        params["x_max"]= math.fabs(self.vertical_lines.x)
+        params["y_max"]= math.fabs(self.horizontal_lines.y)
         params["nbins"]= self.nbins
-        params["errors"] = self.error
-        params["count"]= self.count
+      
         return params
     
@@ -283,24 +217,10 @@
         self.y = float(math.fabs(params["y_max"] ))
         self.nbins=params["nbins"]
-        self.left_line.update(xmin= -1*self.x,
-                              xmax = -1*self.x,
-                              ymin= -self.y,
-                              ymax=  self.y, 
-                              )
-        self.right_line.update(xmin= self.x,
-                              xmax = self.x,
-                              ymin= -self.y,
-                              ymax=  self.y, 
-                              )
-        self.top_line.update(xmin= -1*self.x,
-                             xmax= self.x,
-                             ymin= self.y,
-                             ymax= self.y)
-        self.bottom_line.update(xmin= -1*self.x,
-                                 xmax= self.x,
-                                 ymin= -1*self.y,
-                                 ymax= -1*self.y)
-       
+        
+        self.horizontal_lines.update(x= self.x, y=  self.y)
+        self.vertical_lines.update(x= self.x, y=  self.y)
         self.post_data( nbins=None)
+        
+        
     def freeze_axes(self):
         self.base.freeze_axes()
@@ -312,35 +232,49 @@
         self.base.draw()
 
-class HorizontalLine(_BaseInteractor):
+class HorizontalLines(_BaseInteractor):
     """
          Select an annulus through a 2D plot
     """
-    def __init__(self,base,axes,color='black', zorder=5,mline=None,ymin=None, ymax=None, y=0.5,
-                 xmin=0.0,xmax=0.5):
+    def __init__(self,base,axes,color='black', zorder=5,x=0.5, y=0.5):
         
         _BaseInteractor.__init__(self, base, axes, color=color)
         self.markers = []
         self.axes = axes
-        self.x1= xmax
-        self.save_x1= xmax
-        
-        self.x2= xmin
-        self.save_x2= xmin
-        
-        self.y1= ymax
-        self.save_y1= ymax
-        
-        self.y2= ymin
-        self.save_y2= ymin
-        self.mline= mline
-        self.line = self.axes.plot([self.x1,-self.x1],
-                                   [self.y1,self.y2],
+        self.x= x
+        self.save_x= x
+        
+        self.y= y
+        self.save_y= y
+       
+        try:
+            # Inner circle marker
+            self.inner_marker = self.axes.plot([0],[self.y], linestyle='',
+                                          marker='s', markersize=10,
+                                          color=self.color, alpha=0.6,
+                                          pickradius=5, label="pick", 
+                                          zorder=zorder, # Prefer this to other lines
+                                          visible=True)[0]
+        except:
+            self.inner_marker = self.axes.plot([0],[self.y], linestyle='',
+                                          marker='s', markersize=10,
+                                          color=self.color, alpha=0.6,
+                                          label="pick", 
+                                          visible=True)[0]
+            message  = "\nTHIS PROTOTYPE NEEDS THE LATEST VERSION OF MATPLOTLIB\n"
+            message += "Get the SVN version that is at least as recent as June 1, 2007"
+            
+        self.top_line = self.axes.plot([self.x,-self.x],
+                                   [self.y,self.y],
                                       linestyle='-', marker='',
                                       color=self.color,
                                       visible=True)[0]
-        
-        self.npts = 20
+        self.bottom_line = self.axes.plot([self.x,-self.x],
+                                   [-self.y,-self.y],
+                                      linestyle='-', marker='',
+                                      color=self.color,
+                                      visible=True)[0]
+        
         self.has_move=False
-        self.connect_markers([self.line])
+        self.connect_markers([self.top_line, self.inner_marker])
         self.update()
 
@@ -352,6 +286,7 @@
         self.clear_markers()
         try:
-            
-            self.line.remove()
+            self.inner_marker.remove()
+            self.top_line.remove() 
+            self.bottom_line.remove()
         except:
             # Old version of matplotlib
@@ -359,19 +294,19 @@
                 del self.axes.lines[0]
    
-    def get_radius(self):
-        
-        return 0
    
-    def update(self,xmin=None, xmax=None,ymin=None,ymax=None, mline=None,translation=False):
+    def update(self,x=None,y=None):
         """
         Draw the new roughness on the graph.
         """
-        if xmin !=None:
-            self.x1 = xmin
-        if ymin !=None:
-            self.y1 = ymin
-        self.line.set(xdata=[self.x1,-self.x1],
-                       ydata=[self.y1,self.y1])
-    
+        if x!=None:
+            self.x = numpy.sign(self.x)*math.fabs(x)
+        if y !=None:
+            self.y = numpy.sign(self.y)*math.fabs(y)
+        self.inner_marker.set(xdata=[0],ydata=[self.y])
+        
+        self.top_line.set(xdata=[self.x,-self.x],
+                       ydata=[self.y,self.y])
+        self.bottom_line.set(xdata=[self.x,-self.x],
+                       ydata=[-self.y, -self.y])
         
         
@@ -381,10 +316,6 @@
         can restore on Esc.
         """
-        self.save_x1= self.x1
-        self.save_x2= self.x2
-       
-        self.save_y1= self.y1
-        self.save_y2= self.y2
-    
+        self.save_x= self.x
+        self.save_y= self.y
         
         self.base.freeze_axes()
@@ -399,8 +330,6 @@
         Restore the roughness for this layer.
         """
-        self.x1 = self.save_x1
-        self.x2 = self.save_x2
-        self.y1 = self.save_y1
-        self.y2 = self.save_y2
+        self.x = self.save_x
+        self.y = self.save_y
         
 
@@ -410,34 +339,17 @@
         """
         #print "horizontal move x y "
-        self.y1= y
+        self.y= y
         self.has_move=True
         self.base.base.update()
         
-    def set_cursor(self, x, y):
-        self.move(x, y, None)
-        self.update()
-        
-        
-    def get_params(self):
-        params = {}
-        params["radius"] = self.x1
-        #params["theta"] = self.xmax
-        return params
-    
-    def set_params(self, params):
-
-        x = params["radius"] 
-        self.set_cursor(x, self._inner_mouse_y)
-        
-
-
-
-class VerticalLine(_BaseInteractor):
+  
+        
+  
+    
+class VerticalLines(_BaseInteractor):
     """
          Select an annulus through a 2D plot
     """
-    def __init__(self,base,axes,color='black', zorder=5, mline=None, ymin=0.0, 
-                 ymax=0.5,xmin=-0.5,xmax=0.5
-                 ):
+    def __init__(self,base,axes,color='black',zorder=5,x=0.5, y=0.5):
         
         _BaseInteractor.__init__(self, base, axes, color=color)
@@ -445,9 +357,31 @@
         self.axes = axes
         
-        self.x1= xmax
-        self.x2= xmin
-        self.y1= ymax
-        self.y2= ymin
-        self.line = self.axes.plot([self.x1,self.x2],[self.y1,self.y2],
+        self.x= math.fabs(x)
+        self.save_x= self.x
+        self.y= math.fabs(y)
+        self.save_y= y
+        
+        try:
+            # Inner circle marker
+            self.inner_marker = self.axes.plot([self.x],[0], linestyle='',
+                                          marker='s', markersize=10,
+                                          color=self.color, alpha=0.6,
+                                          pickradius=5, label="pick", 
+                                          zorder=zorder, # Prefer this to other lines
+                                          visible=True)[0]
+        except:
+            self.inner_marker = self.axes.plot([self.x],[0], linestyle='',
+                                          marker='s', markersize=10,
+                                          color=self.color, alpha=0.6,
+                                          label="pick", 
+                                          visible=True)[0]
+            message  = "\nTHIS PROTOTYPE NEEDS THE LATEST VERSION OF MATPLOTLIB\n"
+            message += "Get the SVN version that is at least as recent as June 1, 2007"
+            
+        self.right_line = self.axes.plot([self.x,self.x],[self.y,-self.y],
+                                      linestyle='-', marker='',
+                                      color=self.color,
+                                      visible=True)[0]
+        self.left_line = self.axes.plot([-self.x,-self.x],[self.y,-self.y],
                                       linestyle='-', marker='',
                                       color=self.color,
@@ -455,5 +389,5 @@
       
         self.has_move=False
-        self.connect_markers([self.line])
+        self.connect_markers([self.right_line, self.inner_marker])
         self.update()
 
@@ -465,28 +399,27 @@
         self.clear_markers()
         try:
-            
-            self.line.remove()
+            self.inner_marker.remove()
+            self.left_line.remove()
+            self.right_line.remove()
         except:
             # Old version of matplotlib
             for item in range(len(self.axes.lines)):
                 del self.axes.lines[0]
-   
-    
-    def get_radius(self):
-        return 0
-    
-    def update(self,xmin=None,xmax=None,ymin=None, ymax=None, opline=None,translation=False):
+
+    def update(self,x=None,y=None):
         """
         Draw the new roughness on the graph.
         """
 
-   
-        if xmin!=None:
-            self.x1=xmin
-        if ymin!=None:
-            self.y1=ymin
-        self.line.set(xdata=[self.x1,self.x1],
-                       ydata=[self.y1,-self.y1]) 
-        
+        if x!=None:
+            self.x = numpy.sign(self.x)*math.fabs(x)
+        if y !=None:
+            self.y = numpy.sign(self.y)*math.fabs(y)
+            
+        self.inner_marker.set(xdata=[self.x],ydata=[0]) 
+        self.left_line.set(xdata=[-self.x,-self.x],
+                       ydata=[self.y,-self.y]) 
+        self.right_line.set(xdata=[self.x,self.x],
+                       ydata=[self.y,-self.y]) 
     
         
@@ -496,8 +429,6 @@
         can restore on Esc.
         """
-        self.save_x1= self.x1
-        self.save_x2= self.x2
-        self.save_y1= self.y1
-        self.save_y2= self.y2
+        self.save_x= self.x
+        self.save_y= self.y
         
         self.base.freeze_axes()
@@ -512,8 +443,6 @@
         Restore the roughness for this layer.
         """
-        self.x1 = self.save_x1
-        self.x2 = self.save_x2
-        self.y1 = self.save_y1
-        self.y2= self.save_y2
+        self.x = self.save_x
+        self.y = self.save_y
       
         
@@ -523,35 +452,8 @@
         """
         self.has_move=True
-        
-        # compute the b intercept of the vertical line
-        self.x1= x
-        
-        
+        self.x= x
         self.base.base.update()
         
-        
-    def set_cursor(self, x, y):
-        self.move(x, y, None)
-        self.update()
-        
-        
-    def get_params(self):
-        params = {}
-        params["x"] = self.xmin
-        params["ymin"] = self.ymin
-        params["ymax"] = self.ymax
-        return params
-    
-    def set_params(self, params):
-        """
-            Draw a vertical line given some value of params
-            @param params: a dictionary containing value for x, ymin , ymax to draw 
-            a vertical line
-        """
-        x = params["x"] 
-        ymin = params["ymin"] 
-        ymax = params["ymax"] 
-        #self.set_cursor(x, self._inner_mouse_y)
-        self.update(self,x =x,ymin =ymin, ymax =ymax)
+   
         
 
Index: guiframe/local_perspectives/plotting/boxSum.py
===================================================================
--- guiframe/local_perspectives/plotting/boxSum.py	(revision 1ce365f8bcc12f88abb04b1431cd75f0e21984fd)
+++ guiframe/local_perspectives/plotting/boxSum.py	(revision 18eba35c7477f0694169ce9f4575ba08f17c4cc0)
@@ -16,6 +16,6 @@
 import SlicerParameters
 import wx
-#(SlicerParamUpdateEvent, EVT_SLICER_PARS_UPDATE)   = wx.lib.newevent.NewEvent()
-from sans.guicomm.events import SlicerParamUpdateEvent
+
+from sans.guicomm.events import SlicerParamUpdateEvent,EVT_SLICER_PARS,StatusEvent
 class BoxSum(_BaseInteractor):
     """
@@ -73,9 +73,10 @@
         # Bind to slice parameter events
         #print "box sum  self.base.parent",self.base.parent
-        #self.base.parent.Bind(SlicerParameters.EVT_SLICER_PARS, self._onEVT_SLICER_PARS)
+        self.base.Bind(EVT_SLICER_PARS, self._onEVT_SLICER_PARS)
     def set_panel_name(self, name):
         self.panel_name= name
     def _onEVT_SLICER_PARS(self, event):
-        wx.PostEvent(self.base, StatusEvent(status="Boxsum._onEVT_SLICER_PARS"))
+        wx.PostEvent(self.base.parent, StatusEvent(status="Boxsum._onEVT_SLICER_PARS"))
+        print "receiving value ",event.params
         event.Skip()
         if event.type == self.__class__.__name__:
@@ -106,7 +107,7 @@
         self.vertical_lines.clear()
         self.center.clear()
-        
+        self.base.connect.clearall()
         #self.base.connect.disconnect()
-        #self.base.parent.Unbind(SlicerParameters.EVT_SLICER_PARS)
+        self.base.Unbind(EVT_SLICER_PARS)
         
     def update(self):
@@ -220,5 +221,5 @@
         self.center_x=params["center_x"] 
         self.center_y=params["center_y"]
-        """
+       
         self.center.update(center_x=self.center_x,center_y=self.center_y)
        
@@ -232,5 +233,5 @@
         self._post_data()
         
-        """
+       
         
     def freeze_axes(self):
