""" 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()