///////////////////////////////////////////////////////////////////////////// // Name: toolbar.h // Purpose: wxToolBar class // Author: David Webster // Modified by: // Created: 10/17/98 // RCS-ID: $Id: toolbar.h 27408 2004-05-23 20:53:33Z JS $ // Copyright: (c) David Webster // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_TOOLBAR_H_ #define _WX_TOOLBAR_H_ #if wxUSE_TOOLBAR #include "wx/timer.h" #include "wx/tbarbase.h" #define ID_TOOLTIMER 100 #define ID_TOOLEXPTIMER 101 class WXDLLEXPORT wxToolBar: public wxToolBarBase { public: /* * Public interface */ wxToolBar() : m_vToolTimer(this, ID_TOOLTIMER) , m_vToolExpTimer(this, ID_TOOLEXPTIMER) { Init(); } inline wxToolBar( wxWindow* pParent ,wxWindowID vId ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = wxNO_BORDER | wxTB_HORIZONTAL ,const wxString& rName = wxToolBarNameStr ) : m_vToolTimer(this, ID_TOOLTIMER) , m_vToolExpTimer(this, ID_TOOLEXPTIMER) { Init(); Create( pParent ,vId ,rPos ,rSize ,lStyle ,rName ); } virtual ~wxToolBar(); bool Create( wxWindow* pParent ,wxWindowID vId ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = wxNO_BORDER | wxTB_HORIZONTAL ,const wxString& rName = wxToolBarNameStr ); // // Override/implement base class virtuals // virtual wxToolBarToolBase* FindToolForPosition( wxCoord vX ,wxCoord vY ) const; virtual bool Realize(void); virtual void SetRows(int nRows); // // Special overrides for OS/2 // virtual wxToolBarToolBase* InsertControl( size_t nPos ,wxControl* pControl ); virtual wxToolBarToolBase* InsertSeparator(size_t nPos); virtual wxToolBarToolBase* InsertTool( size_t nPos ,int nId ,const wxString& rsLabel ,const wxBitmap& rBitmap ,const wxBitmap& rBmpDisabled = wxNullBitmap ,wxItemKind eKind = wxITEM_NORMAL ,const wxString& rsShortHelp = wxEmptyString ,const wxString& rsLongHelp = wxEmptyString ,wxObject* pClientData = NULL ); wxToolBarToolBase* InsertTool( size_t nPos ,int nId ,const wxBitmap& rBitmap ,const wxBitmap& rBmpDisabled = wxNullBitmap ,bool bToggle = FALSE ,wxObject* pClientData = NULL ,const wxString& rsShortHelp = wxEmptyString ,const wxString& rsLongHelp = wxEmptyString ) { return InsertTool( nPos ,nId ,wxEmptyString ,rBitmap ,rBmpDisabled ,bToggle ? wxITEM_CHECK : wxITEM_NORMAL ,rsShortHelp ,rsLongHelp ,pClientData ); } virtual bool DeleteTool(int nId); virtual bool DeleteToolByPos(size_t nPos); // // Event handlers // void OnPaint(wxPaintEvent& event); void OnSize(wxSizeEvent& event); void OnMouseEvent(wxMouseEvent& event); void OnKillFocus(wxFocusEvent& event); protected: // // Common part of all ctors // void Init(); // // Implement base class pure virtuals // virtual wxToolBarToolBase* DoAddTool( int id ,const wxString& label ,const wxBitmap& bitmap ,const wxBitmap& bmpDisabled ,wxItemKind kind ,const wxString& shortHelp = wxEmptyString ,const wxString& longHelp = wxEmptyString ,wxObject *clientData = NULL ,wxCoord xPos = -1 ,wxCoord yPos = -1 ); virtual bool DoInsertTool( size_t nPos ,wxToolBarToolBase* pTool ); virtual bool DoDeleteTool( size_t nPos , wxToolBarToolBase* pTool ); virtual void DoEnableTool( wxToolBarToolBase* pTool ,bool bEnable ); virtual void DoToggleTool( wxToolBarToolBase* pTool ,bool bToggle ); virtual void DoSetToggle( wxToolBarToolBase* pTool ,bool bToggle ); virtual wxToolBarToolBase* CreateTool( int vId ,const wxString& rsLabel ,const wxBitmap& rBmpNormal ,const wxBitmap& rBmpDisabled ,wxItemKind eKind ,wxObject* pClientData ,const wxString& rsShortHelp ,const wxString& rsLongHelp ); virtual wxToolBarToolBase* CreateTool(wxControl* pControl); // // Helpers // void DrawTool(wxToolBarToolBase *tool); virtual void DrawTool( wxDC& rDC ,wxToolBarToolBase* pTool ); virtual void SpringUpButton(int nIndex); int m_nCurrentRowsOrColumns; int m_nPressedTool; int m_nCurrentTool; wxCoord m_vLastX; wxCoord m_vLastY; wxCoord m_vMaxWidth; wxCoord m_vMaxHeight; wxCoord m_vXPos; wxCoord m_vYPos; wxCoord m_vTextX; wxCoord m_vTextY; private: void LowerTool( wxToolBarToolBase* pTool ,bool bLower = TRUE ); void RaiseTool( wxToolBarToolBase* pTool ,bool bRaise = TRUE ); void OnTimer(wxTimerEvent& rEvent); static bool m_bInitialized; wxTimer m_vToolTimer; wxTimer m_vToolExpTimer; wxToolTip* m_pToolTip; wxCoord m_vXMouse; wxCoord m_vYMouse; // // Virtual function hiding supression virtual wxToolBarToolBase *InsertTool (size_t nPos, wxToolBarToolBase* pTool) { return( wxToolBarBase::InsertTool( nPos ,pTool )); } DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxToolBar) }; #endif // wxUSE_TOOLBAR #endif // _WX_TOOLBAR_H_