toolbar.h 8.4 KB

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