1///////////////////////////////////////////////////////////////////////////// 2// Name: toolbar.h 3// Purpose: wxToolBar class 4// Author: David Webster 5// Modified by: 6// Created: 10/17/98 7// RCS-ID: $Id: toolbar.h 27408 2004-05-23 20:53:33Z JS $ 8// Copyright: (c) David Webster 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_TOOLBAR_H_ 13#define _WX_TOOLBAR_H_ 14 15#if wxUSE_TOOLBAR 16#include "wx/timer.h" 17#include "wx/tbarbase.h" 18 19#define ID_TOOLTIMER 100 20#define ID_TOOLEXPTIMER 101 21 22class WXDLLEXPORT wxToolBar: public wxToolBarBase 23{ 24public: 25 /* 26 * Public interface 27 */ 28 29 wxToolBar() 30 : m_vToolTimer(this, ID_TOOLTIMER) 31 , m_vToolExpTimer(this, ID_TOOLEXPTIMER) 32 { Init(); } 33 34 inline wxToolBar( wxWindow* pParent 35 ,wxWindowID vId 36 ,const wxPoint& rPos = wxDefaultPosition 37 ,const wxSize& rSize = wxDefaultSize 38 ,long lStyle = wxNO_BORDER | wxTB_HORIZONTAL 39 ,const wxString& rName = wxToolBarNameStr 40 ) : m_vToolTimer(this, ID_TOOLTIMER) 41 , m_vToolExpTimer(this, ID_TOOLEXPTIMER) 42 { 43 Init(); 44 Create( pParent 45 ,vId 46 ,rPos 47 ,rSize 48 ,lStyle 49 ,rName 50 ); 51 } 52 virtual ~wxToolBar(); 53 54 bool Create( wxWindow* pParent 55 ,wxWindowID vId 56 ,const wxPoint& rPos = wxDefaultPosition 57 ,const wxSize& rSize = wxDefaultSize 58 ,long lStyle = wxNO_BORDER | wxTB_HORIZONTAL 59 ,const wxString& rName = wxToolBarNameStr 60 ); 61 62 63 // 64 // Override/implement base class virtuals 65 // 66 virtual wxToolBarToolBase* FindToolForPosition( wxCoord vX 67 ,wxCoord vY 68 ) const; 69 virtual bool Realize(void); 70 virtual void SetRows(int nRows); 71 72 // 73 // Special overrides for OS/2 74 // 75 virtual wxToolBarToolBase* InsertControl( size_t nPos 76 ,wxControl* pControl 77 ); 78 virtual wxToolBarToolBase* InsertSeparator(size_t nPos); 79 virtual wxToolBarToolBase* InsertTool( size_t nPos 80 ,int nId 81 ,const wxString& rsLabel 82 ,const wxBitmap& rBitmap 83 ,const wxBitmap& rBmpDisabled = wxNullBitmap 84 ,wxItemKind eKind = wxITEM_NORMAL 85 ,const wxString& rsShortHelp = wxEmptyString 86 ,const wxString& rsLongHelp = wxEmptyString 87 ,wxObject* pClientData = NULL 88 ); 89 wxToolBarToolBase* InsertTool( size_t nPos 90 ,int nId 91 ,const wxBitmap& rBitmap 92 ,const wxBitmap& rBmpDisabled = wxNullBitmap 93 ,bool bToggle = FALSE 94 ,wxObject* pClientData = NULL 95 ,const wxString& rsShortHelp = wxEmptyString 96 ,const wxString& rsLongHelp = wxEmptyString 97 ) 98 { 99 return InsertTool( nPos 100 ,nId 101 ,wxEmptyString 102 ,rBitmap 103 ,rBmpDisabled 104 ,bToggle ? wxITEM_CHECK : wxITEM_NORMAL 105 ,rsShortHelp 106 ,rsLongHelp 107 ,pClientData 108 ); 109 } 110 virtual bool DeleteTool(int nId); 111 virtual bool DeleteToolByPos(size_t nPos); 112 113 // 114 // Event handlers 115 // 116 void OnPaint(wxPaintEvent& event); 117 void OnSize(wxSizeEvent& event); 118 void OnMouseEvent(wxMouseEvent& event); 119 void OnKillFocus(wxFocusEvent& event); 120 121protected: 122 // 123 // Common part of all ctors 124 // 125 void Init(); 126 127 // 128 // Implement base class pure virtuals 129 // 130 virtual wxToolBarToolBase* DoAddTool( int id 131 ,const wxString& label 132 ,const wxBitmap& bitmap 133 ,const wxBitmap& bmpDisabled 134 ,wxItemKind kind 135 ,const wxString& shortHelp = wxEmptyString 136 ,const wxString& longHelp = wxEmptyString 137 ,wxObject *clientData = NULL 138 ,wxCoord xPos = -1 139 ,wxCoord yPos = -1 140 ); 141 142 virtual bool DoInsertTool( size_t nPos 143 ,wxToolBarToolBase* pTool 144 ); 145 virtual bool DoDeleteTool( size_t nPos 146 , wxToolBarToolBase* pTool 147 ); 148 149 virtual void DoEnableTool( wxToolBarToolBase* pTool 150 ,bool bEnable 151 ); 152 virtual void DoToggleTool( wxToolBarToolBase* pTool 153 ,bool bToggle 154 ); 155 virtual void DoSetToggle( wxToolBarToolBase* pTool 156 ,bool bToggle 157 ); 158 159 virtual wxToolBarToolBase* CreateTool( int vId 160 ,const wxString& rsLabel 161 ,const wxBitmap& rBmpNormal 162 ,const wxBitmap& rBmpDisabled 163 ,wxItemKind eKind 164 ,wxObject* pClientData 165 ,const wxString& rsShortHelp 166 ,const wxString& rsLongHelp 167 ); 168 virtual wxToolBarToolBase* CreateTool(wxControl* pControl); 169 170 // 171 // Helpers 172 // 173 void DrawTool(wxToolBarToolBase *tool); 174 virtual void DrawTool( wxDC& rDC 175 ,wxToolBarToolBase* pTool 176 ); 177 virtual void SpringUpButton(int nIndex); 178 179 int m_nCurrentRowsOrColumns; 180 int m_nPressedTool; 181 int m_nCurrentTool; 182 wxCoord m_vLastX; 183 wxCoord m_vLastY; 184 wxCoord m_vMaxWidth; 185 wxCoord m_vMaxHeight; 186 wxCoord m_vXPos; 187 wxCoord m_vYPos; 188 wxCoord m_vTextX; 189 wxCoord m_vTextY; 190 191private: 192 void LowerTool( wxToolBarToolBase* pTool 193 ,bool bLower = TRUE 194 ); 195 void RaiseTool( wxToolBarToolBase* pTool 196 ,bool bRaise = TRUE 197 ); 198 void OnTimer(wxTimerEvent& rEvent); 199 200 static bool m_bInitialized; 201 202 wxTimer m_vToolTimer; 203 wxTimer m_vToolExpTimer; 204 wxToolTip* m_pToolTip; 205 wxCoord m_vXMouse; 206 wxCoord m_vYMouse; 207 208 // 209 // Virtual function hiding supression 210 virtual wxToolBarToolBase *InsertTool (size_t nPos, wxToolBarToolBase* pTool) 211 { 212 return( wxToolBarBase::InsertTool( nPos 213 ,pTool 214 )); 215 } 216 217 DECLARE_EVENT_TABLE() 218 DECLARE_DYNAMIC_CLASS(wxToolBar) 219}; 220 221#endif // wxUSE_TOOLBAR 222 223#endif 224 // _WX_TOOLBAR_H_ 225