Index: guiframe/local_perspectives/plotting/AnnulusSlicer.py
===================================================================
--- guiframe/local_perspectives/plotting/AnnulusSlicer.py	(revision ca88b2eded93a483ace5848e87ba70d47c410949)
+++ guiframe/local_perspectives/plotting/AnnulusSlicer.py	(revision d468daaa4bee4ffa05d0735cf4252c2c924e2a2c)
@@ -54,4 +54,5 @@
         self.base.parent.Bind(EVT_SLICER_PARS, self._onEVT_SLICER_PARS)
         
+        
 
     def _onEVT_SLICER_PARS(self, event):
@@ -85,5 +86,6 @@
         self.inner_circle.clear()
         #self.base.connect.disconnect()
-        self.base.parent.Unbind(EVT_SLICER_PARS)
+        #self.base.parent.Unbind(EVT_SLICER_PARS)
+        self.base.Unbind(EVT_SLICER_PARS)
         
     def update(self):
@@ -167,6 +169,6 @@
         event.type = self.__class__.__name__
         event.params = self.get_params()
-        wx.PostEvent(self.base.parent, event)
-
+        #wx.PostEvent(self.base.parent, event)
+        wx.PostEvent(self.base, event)
         self._post_data()
             
@@ -231,5 +233,5 @@
          
         
-        print "sign",self.sign,self.sign*math.fabs(self._inner_mouse_x)
+        #print "sign",self.sign,self.sign*math.fabs(self._inner_mouse_x)
                                                     
         try:
Index: guiframe/local_perspectives/plotting/Plotter1D.py
===================================================================
--- guiframe/local_perspectives/plotting/Plotter1D.py	(revision 0d9dae840601f23ae4dd0b9e0317056593727f90)
+++ guiframe/local_perspectives/plotting/Plotter1D.py	(revision d468daaa4bee4ffa05d0735cf4252c2c924e2a2c)
@@ -152,7 +152,5 @@
         """
         if not self.graph.selected_plottable == None:
-            print self.graph.selected_plottable
-            
-            
+            #print self.graph.selected_plottable
             self.graph.delete(self.plots[self.graph.selected_plottable])
             del self.plots[self.graph.selected_plottable]
@@ -187,8 +185,8 @@
             self.action_ids[str(id)] = plot
             wx.EVT_MENU(self, id, self._onRemove)
-            
+           
             # Option to hide
             #TODO: implement functionality to hide a plottable (legend click)
-            slicerpop.AppendSeparator()
+            
                 
         # Various plot options
@@ -197,8 +195,8 @@
         wx.EVT_MENU(self, id, self.onSaveImage)
         
-        
+        slicerpop.AppendSeparator()
         item_list = self.parent.get_context_menu(self.graph)
+        #print "item_list",item_list
         if (not item_list==None) and (not len(item_list)==0):
-                slicerpop.AppendSeparator()
                 for item in item_list:
                     try:
@@ -207,9 +205,9 @@
                         wx.EVT_MENU(self, id, item[2])
                     except:
-                        print sys.exc_value
-                        print RuntimeError, "View1DPanel.onContextMenu: bad menu item"
-        
-        slicerpop.AppendSeparator()
-        
+                        pass
+                        #print sys.exc_value
+                        #print RuntimeError, "View1DPanel.onContextMenu: bad menu item"
+        
+       
         if self.graph.selected_plottable in self.plots:
             if self.plots[self.graph.selected_plottable].__class__.__name__=="Theory1D":
@@ -224,6 +222,5 @@
                 wx.EVT_MENU(self, id, self.onFitting)
                 
-        
-
+        slicerpop.AppendSeparator()
         id = wx.NewId()
         slicerpop.Append(id, '&Change scale')
@@ -231,7 +228,19 @@
         
         id = wx.NewId()
-        #slicerpop.AppendSeparator()
         slicerpop.Append(id, '&Reset Graph')
-        wx.EVT_MENU(self, id, self.onResetGraph)        
+        wx.EVT_MENU(self, id, self.onResetGraph)  
+        
+        slicerpop.AppendSeparator() 
+        id = wx.NewId()
+        slicerpop.Append(id,'&Printer setup', 'Set image size')
+        wx.EVT_MENU(self, id, self.onPrinterSetup)
+        
+        id = wx.NewId()
+        slicerpop.Append(id,'&Printer Preview', 'Set image size')
+        wx.EVT_MENU(self, id, self.onPrinterPreview)
+    
+        id = wx.NewId()
+        slicerpop.Append(id,'&Print image', 'Print image ')
+        wx.EVT_MENU(self, id, self.onPrint)     
 
         pos = event.GetPosition()
@@ -297,5 +306,5 @@
                 path = dlg.GetPath()
                 mypath = os.path.basename(path)
-                print path
+                #print path
             dlg.Destroy()
             
@@ -310,5 +319,5 @@
                     try:
                         if len(self.action_ids[id].y) != len(self.action_ids[id].dy):
-                            print "Y and dY have different lengths"
+                            #print "Y and dY have different lengths"
                             has_errors = False
                     except:
@@ -331,5 +340,6 @@
                 out.close()
     
-    
+ 
+
     def _onToggleScale(self, event):
         if self.get_yscale() == 'log':
Index: guiframe/local_perspectives/plotting/Plotter2D.py
===================================================================
--- guiframe/local_perspectives/plotting/Plotter2D.py	(revision 0690e1d9accd20d5b0480ea2cbe815927151f9ae)
+++ guiframe/local_perspectives/plotting/Plotter2D.py	(revision d468daaa4bee4ffa05d0735cf4252c2c924e2a2c)
@@ -76,5 +76,6 @@
         self.slicer_z = 5
         self.slicer = None
-        self.parent.Bind(EVT_INTERNAL, self._onEVT_INTERNAL)
+        #self.parent.Bind(EVT_INTERNAL, self._onEVT_INTERNAL)
+        self.Bind(EVT_INTERNAL, self._onEVT_INTERNAL)
         self.axes_frozen = False
         
@@ -92,5 +93,5 @@
         
     def _onEVT_SLICER_PARS(self, event):
-        print "paramaters entered on slicer panel", event.type, event.params
+        #print "paramaters entered on slicer panel", event.type, event.params
         self.slicer.set_params(event.params)
         from sans.guicomm.events import SlicerPanelEvent
@@ -99,5 +100,5 @@
         
     def _onEVT_SLICER_PANEL(self, event):
-        print "box move plotter2D", event.type, event.params
+        #print "box move plotter2D", event.type, event.params
         self.panel_slicer.set_slicer(event.type, event.params)
         from sans.guicomm.events import SlicerPanelEvent
@@ -185,16 +186,8 @@
         slicerpop.set_plots(self.plots)
         slicerpop.set_graph(self.graph)
-                
-        # Option to save the data displayed
     
-        # Various plot options
-        id = wx.NewId()
-        slicerpop.Append(id,'&Save image', 'Save image as PNG')
-        wx.EVT_MENU(self, id, self.onSaveImage)
-        
-        
         item_list = self.parent.get_context_menu(self.graph)
         if (not item_list==None) and (not len(item_list)==0):
-                slicerpop.AppendSeparator()
+                
                 for item in item_list:
                     try:
@@ -203,6 +196,7 @@
                         wx.EVT_MENU(self, id, item[2])
                     except:
-                        print sys.exc_value
-                        print RuntimeError, "View1DPanel2D.onContextMenu: bad menu item"
+                        pass
+                        #print sys.exc_value
+                        #print RuntimeError, "View1DPanel2D.onContextMenu: bad menu item"
         
         slicerpop.AppendSeparator()
@@ -236,19 +230,31 @@
             wx.EVT_MENU(self, id,  self.onClearSlicer) 
         
-        
             id = wx.NewId()
             slicerpop.Append(id, '&Edit Slicer Parameters')
             wx.EVT_MENU(self, id, self._onEditSlicer) 
-        
-        slicerpop.AppendSeparator()
-        
+        slicerpop.AppendSeparator() 
+           
         id = wx.NewId()
         slicerpop.Append(id, '&Save image')
         wx.EVT_MENU(self, id, self.onSaveImage) 
-     
+        
+        # Option to save the data displayed
+        id = wx.NewId()
+        slicerpop.Append(id,'&Printer setup', 'Set image size')
+        wx.EVT_MENU(self, id, self.onPrinterSetup)
+        
+        id = wx.NewId()
+        slicerpop.Append(id,'&Printer Preview', 'Set image size')
+        wx.EVT_MENU(self, id, self.onPrinterPreview)
+    
+        id = wx.NewId()
+        slicerpop.Append(id,'&Print image', 'Print image ')
+        wx.EVT_MENU(self, id, self.onPrint)
+        slicerpop.AppendSeparator()
         id = wx.NewId()
         slicerpop.Append(id, '&Toggle Linear/Log scale')
         wx.EVT_MENU(self, id, self._onToggleScale) 
-         
+                 
+      
         pos = event.GetPosition()
         pos = self.ScreenToClient(pos)
@@ -306,5 +312,5 @@
         self.slicer_z += 1
         self.slicer = slicer(self, self.subplot, zorder=self.slicer_z)
-        print "come here"
+        #print "come here"
         self.subplot.set_ylim(self.data2D.ymin, self.data2D.ymax)
         self.subplot.set_xlim(self.data2D.xmin, self.data2D.xmax)
@@ -319,7 +325,8 @@
         event.obj_class = self.slicer.__class__
         event.params = self.slicer.get_params()
-        print "Plotter2D: event.type",event.type,event.params, self.parent
-        
-        wx.PostEvent(self.parent, event)
+        #print "Plotter2D: event.type",event.type,event.params, self.parent
+        
+        #wx.PostEvent(self.parent, event)
+        wx.PostEvent(self, event)
 
     def onCircular(self, event):
@@ -332,5 +339,5 @@
         self.qmax= self.data2D.xmax
         self.radius= math.sqrt( math.pow(self.qmax,2)+math.pow(self.qmax,2)) 
-        print "radius?",self.radius
+        #print "radius?",self.radius
         # bin_width = self.qmax -self.qmin/nbins 
         #nbins= 30
@@ -379,8 +386,9 @@
             Perform sector averaging on Q
         """
-        print "onsector self.data2Dxmax",self.data2D.xmax
+        #print "onsector self.data2Dxmax",self.data2D.xmax, self.parent
         from SectorSlicer import SectorInteractor
         self.onClearSlicer(event)
-        wx.PostEvent(self.parent, InternalEvent(slicer= SectorInteractor))
+        #wx.PostEvent(self.parent, InternalEvent(slicer= SectorInteractor))
+        wx.PostEvent(self, InternalEvent(slicer= SectorInteractor))
         
     def onSectorPhi(self, event):
@@ -390,5 +398,6 @@
         from AnnulusSlicer import AnnulusInteractor
         self.onClearSlicer(event)
-        wx.PostEvent(self.parent, InternalEvent(slicer= AnnulusInteractor))
+        #wx.PostEvent(self.parent, InternalEvent(slicer= AnnulusInteractor))
+        wx.PostEvent(self, InternalEvent(slicer= AnnulusInteractor))
         
     def onBoxSum(self,event):
@@ -400,5 +409,5 @@
         self.slicer_z += 1
         self.slicer =  BoxSum(self, self.subplot, zorder=self.slicer_z)
-        print "come here"
+        #print "come here"
         self.subplot.set_ylim(self.data2D.ymin, self.data2D.ymax)
         self.subplot.set_xlim(self.data2D.xmin, self.data2D.xmax)
@@ -414,5 +423,5 @@
         event.obj_class = self.slicer.__class__
         event.params = self.slicer.get_params()
-        print "Plotter2D: event.type",event.type,event.params, self.parent
+        #print "Plotter2D: event.type",event.type,event.params, self.parent
         
         from slicerpanel import SlicerPanel
@@ -427,28 +436,19 @@
         from sans.guicomm.events import SlicerPanelEvent
         wx.PostEvent(self.parent, SlicerPanelEvent (panel= self.panel_slicer))
-        print "finish box sum"
+        #print "finish box sum"
         
     def onBoxavgX(self,event):
         from boxSlicer import BoxInteractorX
         self.onClearSlicer(event)
-        wx.PostEvent(self.parent, InternalEvent(slicer= BoxInteractorX))
-        """
-        from slicerpanel import SlicerPanel
-        new_panel = SlicerPanel(self.parent, -1, style=wx.RAISED_BORDER)
-        
-        from sans.guicomm.events import SlicerPanelEvent
-        wx.PostEvent(self.parent, SlicerPanelEvent (panel= new_panel))
-        """
+        #wx.PostEvent(self.parent, InternalEvent(slicer= BoxInteractorX))
+        wx.PostEvent(self, InternalEvent(slicer= BoxInteractorX))
+       
+       
     def onBoxavgY(self,event):
         from boxSlicer import BoxInteractorY
         self.onClearSlicer(event)
-        wx.PostEvent(self.parent, InternalEvent(slicer= BoxInteractorY))
-        """
-        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))
-        """
+        wx.PostEvent(self, InternalEvent(slicer= BoxInteractorY))
+        #wx.PostEvent(self.parent, InternalEvent(slicer= BoxInteractorY))
+        
     def onClearSlicer(self, event):
         """
@@ -462,5 +462,6 @@
             # Post slicer None event
             event = self._getEmptySlicerEvent()
-            wx.PostEvent(self.parent, event)
+            #wx.PostEvent(self.parent, event)
+            wx.PostEvent(self, event)
           
     def _onEditDetector(self, event):
Index: guiframe/local_perspectives/plotting/SectorSlicer.py
===================================================================
--- guiframe/local_perspectives/plotting/SectorSlicer.py	(revision 0d9dae840601f23ae4dd0b9e0317056593727f90)
+++ guiframe/local_perspectives/plotting/SectorSlicer.py	(revision d468daaa4bee4ffa05d0735cf4252c2c924e2a2c)
@@ -97,5 +97,6 @@
         self.right_line.clear()
         #self.base.connect.disconnect()
-        self.base.parent.Unbind(EVT_SLICER_PARS)
+        #self.base.parent.Unbind(EVT_SLICER_PARS)
+        self.base.Unbind(EVT_SLICER_PARS)
         
     def update(self):
@@ -199,5 +200,6 @@
         event.type = self.__class__.__name__
         event.params = self.get_params()
-        wx.PostEvent(self.base.parent, event)
+        #wx.PostEvent(self.base.parent, event)
+        wx.PostEvent(self.base, event)
         self._post_data()
             
Index: guiframe/local_perspectives/plotting/SlicerParameters.py
===================================================================
--- guiframe/local_perspectives/plotting/SlicerParameters.py	(revision 0d9dae840601f23ae4dd0b9e0317056593727f90)
+++ guiframe/local_perspectives/plotting/SlicerParameters.py	(revision d468daaa4bee4ffa05d0735cf4252c2c924e2a2c)
@@ -41,5 +41,5 @@
             @param event: EVT_SLICER event
         """
-        print "went here"
+        #print "went here"
         event.Skip()
         if event.obj_class==None:
Index: guiframe/local_perspectives/plotting/boxSlicer.py
===================================================================
--- guiframe/local_perspectives/plotting/boxSlicer.py	(revision 0d9dae840601f23ae4dd0b9e0317056593727f90)
+++ guiframe/local_perspectives/plotting/boxSlicer.py	(revision d468daaa4bee4ffa05d0735cf4252c2c924e2a2c)
@@ -120,5 +120,5 @@
         
         if self.top_line.has_move:
-            print"top has moved"
+            #print"top has moved"
             self.top_line.update()
             self.bottom_line.update(ymin= -self.top_line.y1,
@@ -130,5 +130,5 @@
            
         if self.bottom_line.has_move:
-            print "bottom has move"
+            #print "bottom has move"
             self.bottom_line.update()
             self.top_line.update(ymin= -self.bottom_line.y1,
@@ -410,5 +410,5 @@
         Process move to a new position, making sure that the move is allowed.
         """
-        print "horizontal move x y "
+        #print "horizontal move x y "
         self.y1= y
         self.has_move=True
Index: guiframe/local_perspectives/plotting/boxSum.py
===================================================================
--- guiframe/local_perspectives/plotting/boxSum.py	(revision ee69839b77b16a9950ce412a8ee20c6ac528fb95)
+++ guiframe/local_perspectives/plotting/boxSum.py	(revision d468daaa4bee4ffa05d0735cf4252c2c924e2a2c)
@@ -72,5 +72,5 @@
         
         # Bind to slice parameter events
-        print "box sum  self.base.parent",self.base.parent
+        #print "box sum  self.base.parent",self.base.parent
         self.base.parent.Bind(SlicerParameters.EVT_SLICER_PARS, self._onEVT_SLICER_PARS)
        
@@ -115,5 +115,5 @@
         """
         if self.center.has_move:
-            print "center has move"
+            #print "center has move"
             self.center.update()
             self.horizontal_lines.update( center= self.center)
@@ -121,5 +121,5 @@
             
         if self.horizontal_lines.has_move:
-            print "top has moved"
+            #print "top has moved"
             self.horizontal_lines.update()
             self.vertical_lines.update(y1=self.horizontal_lines.y1,
@@ -127,5 +127,5 @@
                                        height= self.horizontal_lines.half_height )
         if self.vertical_lines.has_move:
-            print "right has moved"
+            #print "right has moved"
             self.vertical_lines.update()
             self.horizontal_lines.update(x1=self.vertical_lines.x1,
@@ -464,5 +464,5 @@
         Draw the new roughness on the graph.
         """
-        print "self.half_height",self.half_height,self.half_width
+        #print "self.half_height",self.half_height,self.half_width
         if width!=None:
             self.half_width= width
@@ -472,5 +472,5 @@
             self.center_x= center.x
             self.center_y= center.y
-            print "vertical width",self.half_width ,self.center_x
+            #print "vertical width",self.half_width ,self.center_x
             self.x1 = self.half_width + self.center_x
             self.x2= -self.half_width + self.center_x
@@ -543,5 +543,5 @@
         
         self.half_width= math.fabs(self.x1-self.x2)/2
-        print "Move vert: vertical width",self.half_width ,self.center_x
+        #print "Move vert: vertical width",self.half_width ,self.center_x
         self.has_move=True
         self.base.base.update()
@@ -658,5 +658,5 @@
         Draw the new roughness on the graph.
         """
-        print "self.half_width",self.half_width
+        #print "self.half_width",self.half_width
         if width!=None:
             self.half_width= width
Index: guiframe/local_perspectives/plotting/slicerpanel.py
===================================================================
--- guiframe/local_perspectives/plotting/slicerpanel.py	(revision 0d9dae840601f23ae4dd0b9e0317056593727f90)
+++ guiframe/local_perspectives/plotting/slicerpanel.py	(revision d468daaa4bee4ffa05d0735cf4252c2c924e2a2c)
@@ -57,5 +57,5 @@
             
         else:
-            print "when here not empty event",event.type, event.params
+            #print "when here not empty event",event.type, event.params
             self.set_slicer(event.type, event.params)
         
@@ -96,4 +96,5 @@
             for item in keys:
                 if  item.lower() in ["errors", "count"]:
+                    #print "went here"
                     n += 1
                     text = wx.StaticText(self, -1, item+": ", style=wx.ALIGN_LEFT)
