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 
11 #ifndef _WX_TOOLBAR_H_
12 #define _WX_TOOLBAR_H_
13 
14 #if wxUSE_TOOLBAR
15 #include "wx/timer.h"
16 #include "wx/tbarbase.h"
17 
18 #define ID_TOOLTIMER                100
19 #define ID_TOOLEXPTIMER             101
20 
21 class WXDLLIMPEXP_CORE wxToolBar: public wxToolBarBase
22 {
23 public:
24     /*
25      * Public interface
26      */
27 
wxToolBar()28     wxToolBar()
29     : m_vToolTimer(this, ID_TOOLTIMER)
30     , m_vToolExpTimer(this, ID_TOOLEXPTIMER)
31     { Init(); }
32 
33     inline wxToolBar( wxWindow*       pParent
34                      ,wxWindowID      vId
35                      ,const wxPoint&  rPos = wxDefaultPosition
36                      ,const wxSize&   rSize = wxDefaultSize
37                      ,long            lStyle = wxTB_HORIZONTAL
38                      ,const wxString& rName = wxToolBarNameStr
m_vToolTimer(this,ID_TOOLTIMER)39                     ) : m_vToolTimer(this, ID_TOOLTIMER)
40                       , m_vToolExpTimer(this, ID_TOOLEXPTIMER)
41     {
42         Init();
43         Create( pParent
44                ,vId
45                ,rPos
46                ,rSize
47                ,lStyle
48                ,rName
49               );
50     }
51     virtual ~wxToolBar();
52 
53     bool Create( wxWindow*       pParent
54                 ,wxWindowID      vId
55                 ,const wxPoint&  rPos = wxDefaultPosition
56                 ,const wxSize&   rSize = wxDefaultSize
57                 ,long            lStyle = wxTB_HORIZONTAL
58                 ,const wxString& rName = wxToolBarNameStr
59                );
60 
61 
62     //
63     // Override/implement base class virtuals
64     //
65     virtual wxToolBarToolBase* FindToolForPosition( wxCoord vX
66                                                    ,wxCoord vY
67                                                   ) const;
68     virtual bool               Realize(void);
69     virtual void               SetRows(int nRows);
70 
71     //
72     // Special overrides for OS/2
73     //
74     virtual wxToolBarToolBase* InsertControl( size_t     nPos
75                                              ,wxControl* pControl
76                                             );
77     virtual wxToolBarToolBase* InsertSeparator(size_t nPos);
78     virtual wxToolBarToolBase* InsertTool( size_t          nPos
79                                           ,int             nId
80                                           ,const wxString& rsLabel
81                                           ,const wxBitmap& rBitmap
82                                           ,const wxBitmap& rBmpDisabled = wxNullBitmap
83                                           ,wxItemKind      eKind = wxITEM_NORMAL
84                                           ,const wxString& rsShortHelp = wxEmptyString
85                                           ,const wxString& rsLongHelp = wxEmptyString
86                                           ,wxObject*       pClientData = NULL
87                                          );
88     wxToolBarToolBase*         InsertTool( size_t          nPos
89                                           ,int             nId
90                                           ,const wxBitmap& rBitmap
91                                           ,const wxBitmap& rBmpDisabled = wxNullBitmap
92                                           ,bool            bToggle = FALSE
93                                           ,wxObject*       pClientData = NULL
94                                           ,const wxString& rsShortHelp = wxEmptyString
95                                           ,const wxString& rsLongHelp = wxEmptyString
96                                          )
97     {
98         return InsertTool( nPos
99                           ,nId
100                           ,wxEmptyString
101                           ,rBitmap
102                           ,rBmpDisabled
103                           ,bToggle ? wxITEM_CHECK : wxITEM_NORMAL
104                           ,rsShortHelp
105                           ,rsLongHelp
106                           ,pClientData
107                          );
108     }
109     virtual bool               DeleteTool(int nId);
110     virtual bool               DeleteToolByPos(size_t nPos);
111 
112     //
113     // Event handlers
114     //
115     void OnPaint(wxPaintEvent& event);
116     void OnSize(wxSizeEvent& event);
117     void OnMouseEvent(wxMouseEvent& event);
118     void OnKillFocus(wxFocusEvent& event);
119 
120 protected:
121     //
122     // Common part of all ctors
123     //
124     void Init();
125 
126     //
127     // Implement base class pure virtuals
128     //
129     virtual wxToolBarToolBase* DoAddTool( int id
130                                          ,const wxString& label
131                                          ,const wxBitmap& bitmap
132                                          ,const wxBitmap& bmpDisabled
133                                          ,wxItemKind kind
134                                          ,const wxString& shortHelp = wxEmptyString
135                                          ,const wxString& longHelp = wxEmptyString
136                                          ,wxObject *clientData = NULL
137                                          ,wxCoord xPos = -1
138                                          ,wxCoord yPos = -1
139                                         );
140 
141     virtual bool DoInsertTool( size_t             nPos
142                               ,wxToolBarToolBase* pTool
143                              );
144     virtual bool DoDeleteTool( size_t              nPos
145                               , wxToolBarToolBase* pTool
146                              );
147 
148     virtual void DoEnableTool( wxToolBarToolBase* pTool
149                               ,bool               bEnable
150                              );
151     virtual void DoToggleTool( wxToolBarToolBase* pTool
152                               ,bool               bToggle
153                              );
154     virtual void DoSetToggle( wxToolBarToolBase* pTool
155                              ,bool               bToggle
156                             );
157 
158     virtual wxToolBarToolBase* CreateTool( int             vId
159                                           ,const wxString& rsLabel
160                                           ,const wxBitmap& rBmpNormal
161                                           ,const wxBitmap& rBmpDisabled
162                                           ,wxItemKind      eKind
163                                           ,wxObject*       pClientData
164                                           ,const wxString& rsShortHelp
165                                           ,const wxString& rsLongHelp
166                                          );
167     virtual wxToolBarToolBase* CreateTool(wxControl* pControl,
168                                           const wxString& label);
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 
191 private:
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
InsertTool(size_t nPos,wxToolBarToolBase * pTool)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