+public:
+ wxToolBarTool(wxToolBar *tbar,
+ int id,
+ const wxString& label,
+ const wxBitmap& bmpNormal,
+ const wxBitmap& bmpDisabled,
+ wxItemKind kind,
+ wxObject *clientData,
+ const wxString& shortHelp,
+ const wxString& longHelp) ;
+
+ wxToolBarTool(wxToolBar *tbar, wxControl *control)
+ : wxToolBarToolBase(tbar, control)
+ {
+ Init() ;
+ }
+
+ ~wxToolBarTool()
+ {
+ if ( m_controlHandle )
+ DisposeControl( m_controlHandle ) ;
+ }
+
+ WXWidget GetControlHandle() { return (WXWidget) m_controlHandle ; }
+ void SetControlHandle( ControlRef handle ) { m_controlHandle = handle ; }
+
+ void SetSize(const wxSize& size) ;
+ void SetPosition( const wxPoint& position ) ;
+
+ wxSize GetSize() const
+ {
+ if ( IsControl() )
+ {
+ return GetControl()->GetSize() ;
+ }
+ else if ( IsButton() )
+ {
+ return GetToolBar()->GetToolSize() ;
+ }
+ else
+ {
+ wxSize sz = GetToolBar()->GetToolSize() ;
+ sz.x /= 4 ;
+ sz.y /= 4 ;
+ return sz ;
+ }
+ }
+ wxPoint GetPosition() const
+ {
+ return wxPoint(m_x, m_y);
+ }
+ bool DoEnable( bool enable ) ;
+private :
+ void Init()
+ {
+ m_controlHandle = NULL ;
+ }
+ ControlRef m_controlHandle ;
+
+ wxCoord m_x;
+ wxCoord m_y;
+};
+
+static const EventTypeSpec eventList[] =
+{
+ { kEventClassControl , kEventControlHit } ,
+} ;
+
+static pascal OSStatus wxMacToolBarToolControlEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
+{
+ OSStatus result = eventNotHandledErr ;
+
+ wxMacCarbonEvent cEvent( event ) ;
+
+ ControlRef controlRef ;
+
+ cEvent.GetParameter( kEventParamDirectObject , &controlRef ) ;
+
+ switch( GetEventKind( event ) )
+ {
+ case kEventControlHit :
+ {
+ wxToolBarTool* tbartool = (wxToolBarTool*)data ;
+ if ( tbartool->CanBeToggled() )
+ {
+ tbartool->Toggle( GetControl32BitValue( (ControlRef) tbartool->GetControlHandle() ) ) ;
+ }
+ ((wxToolBar*)tbartool->GetToolBar())->OnLeftClick( tbartool->GetId() , tbartool -> IsToggled() ) ;
+
+ result = noErr;
+ }
+ break ;
+ default :
+ break ;
+ }
+ return result ;