git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36730 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
A Panel that includes the FloatCanvas and Navigation controls
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
import wx
 | 
						|
 | 
						|
import FloatCanvas, Resources
 | 
						|
 | 
						|
ID_ZOOM_IN_BUTTON = wx.NewId()
 | 
						|
ID_ZOOM_OUT_BUTTON = wx.NewId()
 | 
						|
ID_ZOOM_TO_FIT_BUTTON = wx.NewId()
 | 
						|
ID_MOVE_MODE_BUTTON = wx.NewId()
 | 
						|
ID_POINTER_BUTTON = wx.NewId()
 | 
						|
 | 
						|
 | 
						|
#---------------------------------------------------------------------------
 | 
						|
    
 | 
						|
class NavCanvas(wx.Panel):
 | 
						|
    """
 | 
						|
    NavCanvas.py
 | 
						|
 | 
						|
    This is a high level window that encloses the FloatCanvas in a panel
 | 
						|
    and adds a Navigation toolbar.
 | 
						|
 | 
						|
    Copyright: Christopher Barker)
 | 
						|
 | 
						|
    License: Same as the version of wxPython you are using it with
 | 
						|
 | 
						|
    Please let me know if you're using this!!!
 | 
						|
 | 
						|
    Contact me at:
 | 
						|
 | 
						|
    Chris.Barker@noaa.gov
 | 
						|
 | 
						|
    """ 
 | 
						|
    
 | 
						|
    def __init__(self, parent, id = -1,
 | 
						|
                 size = wx.DefaultSize,
 | 
						|
                 **kwargs): # The rest just get passed into FloatCanvas
 | 
						|
 | 
						|
        wx.Panel.__init__( self, parent, id, wx.DefaultPosition, size)
 | 
						|
 | 
						|
        ## Create the vertical sizer for the toolbar and Panel
 | 
						|
        box = wx.BoxSizer(wx.VERTICAL)
 | 
						|
        box.Add(self.BuildToolbar(), 0, wx.ALL | wx.ALIGN_LEFT | wx.GROW, 4)
 | 
						|
        
 | 
						|
        self.Canvas = FloatCanvas.FloatCanvas( self, wx.NewId(),
 | 
						|
                                   size = wx.DefaultSize,
 | 
						|
                                   **kwargs)
 | 
						|
        box.Add(self.Canvas,1,wx.GROW)
 | 
						|
 | 
						|
        box.Fit(self)
 | 
						|
        self.SetSizer(box)
 | 
						|
 | 
						|
        # default to Mouse mode
 | 
						|
        self.ToolBar.ToggleTool(ID_POINTER_BUTTON,1)
 | 
						|
        self.Canvas.SetMode("Mouse")
 | 
						|
        
 | 
						|
        return None
 | 
						|
 | 
						|
    def __getattr__(self, name):
 | 
						|
        """
 | 
						|
        Delegate all extra methods to the Canvas
 | 
						|
        """
 | 
						|
        attrib = getattr(self.Canvas, name)
 | 
						|
        ## add the attribute to this module's dict for future calls
 | 
						|
        self.__dict__[name] = attrib
 | 
						|
        return attrib
 | 
						|
 | 
						|
    def BuildToolbar(self):
 | 
						|
        tb = wx.ToolBar(self,-1)
 | 
						|
        self.ToolBar = tb
 | 
						|
        
 | 
						|
        tb.SetToolBitmapSize((24,24))
 | 
						|
        
 | 
						|
        tb.AddTool(ID_POINTER_BUTTON, Resources.getPointerBitmap(), isToggle=True, shortHelpString = "Pointer")
 | 
						|
        wx.EVT_TOOL(self, ID_POINTER_BUTTON, self.SetToolMode)
 | 
						|
 | 
						|
        tb.AddTool(ID_ZOOM_IN_BUTTON, Resources.getMagPlusBitmap(), isToggle=True, shortHelpString = "Zoom In")
 | 
						|
        wx.EVT_TOOL(self, ID_ZOOM_IN_BUTTON, self.SetToolMode)
 | 
						|
        
 | 
						|
        tb.AddTool(ID_ZOOM_OUT_BUTTON, Resources.getMagMinusBitmap(), isToggle=True, shortHelpString = "Zoom Out")
 | 
						|
        wx.EVT_TOOL(self, ID_ZOOM_OUT_BUTTON, self.SetToolMode)
 | 
						|
        
 | 
						|
        tb.AddTool(ID_MOVE_MODE_BUTTON, Resources.getHandBitmap(), isToggle=True, shortHelpString = "Move")
 | 
						|
        wx.EVT_TOOL(self, ID_MOVE_MODE_BUTTON, self.SetToolMode)
 | 
						|
        
 | 
						|
        tb.AddSeparator()
 | 
						|
        
 | 
						|
        tb.AddControl(wx.Button(tb, ID_ZOOM_TO_FIT_BUTTON, "Zoom To Fit",wx.DefaultPosition, wx.DefaultSize))
 | 
						|
        wx.EVT_BUTTON(self, ID_ZOOM_TO_FIT_BUTTON, self.ZoomToFit)
 | 
						|
 | 
						|
        tb.Realize()
 | 
						|
        S = tb.GetSize()
 | 
						|
        tb.SetSizeHints(S[0],S[1])
 | 
						|
        return tb
 | 
						|
 | 
						|
    def SetToolMode(self,event):
 | 
						|
        for id in [ID_ZOOM_IN_BUTTON,
 | 
						|
                   ID_ZOOM_OUT_BUTTON,
 | 
						|
                   ID_MOVE_MODE_BUTTON,
 | 
						|
                   ID_POINTER_BUTTON]:
 | 
						|
            self.ToolBar.ToggleTool(id,0)
 | 
						|
        self.ToolBar.ToggleTool(event.GetId(),1)
 | 
						|
        if event.GetId() == ID_ZOOM_IN_BUTTON:
 | 
						|
            self.Canvas.SetMode("ZoomIn")
 | 
						|
        elif event.GetId() == ID_ZOOM_OUT_BUTTON:
 | 
						|
            self.Canvas.SetMode("ZoomOut")
 | 
						|
        elif event.GetId() == ID_MOVE_MODE_BUTTON:
 | 
						|
            self.Canvas.SetMode("Move")
 | 
						|
        elif event.GetId() == ID_POINTER_BUTTON:
 | 
						|
            self.Canvas.SetMode("Mouse")
 | 
						|
 | 
						|
 | 
						|
    def ZoomToFit(self,Event):
 | 
						|
        self.Canvas.ZoomToBB()
 | 
						|
 |