]>
Commit | Line | Data |
---|---|---|
1 | /////////////////////////////////////////////////////////////////////////////// | |
2 | // Name: wx/aui/toolbar.h | |
3 | // Purpose: wxaui: wx advanced user interface - docking window manager | |
4 | // Author: Benjamin I. Williams | |
5 | // Modified by: | |
6 | // Created: 2008-08-04 | |
7 | // RCS-ID: $Id$ | |
8 | // Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved. | |
9 | // Licence: wxWindows Library Licence, Version 3.1 | |
10 | /////////////////////////////////////////////////////////////////////////////// | |
11 | ||
12 | #ifndef _WX_AUIBAR_H_ | |
13 | #define _WX_AUIBAR_H_ | |
14 | ||
15 | #include "wx/defs.h" | |
16 | ||
17 | #if wxUSE_AUI | |
18 | ||
19 | #include "wx/control.h" | |
20 | #include "wx/sizer.h" | |
21 | #include "wx/pen.h" | |
22 | ||
23 | class WXDLLIMPEXP_FWD_CORE wxClientDC; | |
24 | class WXDLLIMPEXP_FWD_AUI wxAuiPaneInfo; | |
25 | ||
26 | enum wxAuiToolBarStyle | |
27 | { | |
28 | wxAUI_TB_TEXT = 1 << 0, | |
29 | wxAUI_TB_NO_TOOLTIPS = 1 << 1, | |
30 | wxAUI_TB_NO_AUTORESIZE = 1 << 2, | |
31 | wxAUI_TB_GRIPPER = 1 << 3, | |
32 | wxAUI_TB_OVERFLOW = 1 << 4, | |
33 | // using this style forces the toolbar to be vertical and | |
34 | // be only dockable to the left or right sides of the window | |
35 | // whereas by default it can be horizontal or vertical and | |
36 | // be docked anywhere | |
37 | wxAUI_TB_VERTICAL = 1 << 5, | |
38 | wxAUI_TB_HORZ_LAYOUT = 1 << 6, | |
39 | // analogous to wxAUI_TB_VERTICAL, but forces the toolbar | |
40 | // to be horizontal | |
41 | wxAUI_TB_HORIZONTAL = 1 << 7, | |
42 | wxAUI_TB_HORZ_TEXT = (wxAUI_TB_HORZ_LAYOUT | wxAUI_TB_TEXT), | |
43 | wxAUI_ORIENTATION_MASK = (wxAUI_TB_VERTICAL | wxAUI_TB_HORIZONTAL), | |
44 | wxAUI_TB_DEFAULT_STYLE = 0 | |
45 | }; | |
46 | ||
47 | enum wxAuiToolBarArtSetting | |
48 | { | |
49 | wxAUI_TBART_SEPARATOR_SIZE = 0, | |
50 | wxAUI_TBART_GRIPPER_SIZE = 1, | |
51 | wxAUI_TBART_OVERFLOW_SIZE = 2 | |
52 | }; | |
53 | ||
54 | enum wxAuiToolBarToolTextOrientation | |
55 | { | |
56 | wxAUI_TBTOOL_TEXT_LEFT = 0, // unused/unimplemented | |
57 | wxAUI_TBTOOL_TEXT_RIGHT = 1, | |
58 | wxAUI_TBTOOL_TEXT_TOP = 2, // unused/unimplemented | |
59 | wxAUI_TBTOOL_TEXT_BOTTOM = 3 | |
60 | }; | |
61 | ||
62 | ||
63 | // aui toolbar event class | |
64 | ||
65 | class WXDLLIMPEXP_AUI wxAuiToolBarEvent : public wxNotifyEvent | |
66 | { | |
67 | public: | |
68 | wxAuiToolBarEvent(wxEventType commandType = wxEVT_NULL, | |
69 | int winId = 0) | |
70 | : wxNotifyEvent(commandType, winId) | |
71 | { | |
72 | m_isDropdownClicked = false; | |
73 | m_clickPt = wxPoint(-1, -1); | |
74 | m_rect = wxRect(-1,-1, 0, 0); | |
75 | m_toolId = -1; | |
76 | } | |
77 | #ifndef SWIG | |
78 | wxAuiToolBarEvent(const wxAuiToolBarEvent& c) : wxNotifyEvent(c) | |
79 | { | |
80 | m_isDropdownClicked = c.m_isDropdownClicked; | |
81 | m_clickPt = c.m_clickPt; | |
82 | m_rect = c.m_rect; | |
83 | m_toolId = c.m_toolId; | |
84 | } | |
85 | #endif | |
86 | wxEvent *Clone() const { return new wxAuiToolBarEvent(*this); } | |
87 | ||
88 | bool IsDropDownClicked() const { return m_isDropdownClicked; } | |
89 | void SetDropDownClicked(bool c) { m_isDropdownClicked = c; } | |
90 | ||
91 | wxPoint GetClickPoint() const { return m_clickPt; } | |
92 | void SetClickPoint(const wxPoint& p) { m_clickPt = p; } | |
93 | ||
94 | wxRect GetItemRect() const { return m_rect; } | |
95 | void SetItemRect(const wxRect& r) { m_rect = r; } | |
96 | ||
97 | int GetToolId() const { return m_toolId; } | |
98 | void SetToolId(int toolId) { m_toolId = toolId; } | |
99 | ||
100 | private: | |
101 | ||
102 | bool m_isDropdownClicked; | |
103 | wxPoint m_clickPt; | |
104 | wxRect m_rect; | |
105 | int m_toolId; | |
106 | ||
107 | private: | |
108 | DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxAuiToolBarEvent) | |
109 | }; | |
110 | ||
111 | ||
112 | class WXDLLIMPEXP_AUI wxAuiToolBarItem | |
113 | { | |
114 | friend class wxAuiToolBar; | |
115 | ||
116 | public: | |
117 | ||
118 | wxAuiToolBarItem() | |
119 | { | |
120 | m_window = NULL; | |
121 | m_sizerItem = NULL; | |
122 | m_spacerPixels = 0; | |
123 | m_toolId = 0; | |
124 | m_kind = wxITEM_NORMAL; | |
125 | m_state = 0; // normal, enabled | |
126 | m_proportion = 0; | |
127 | m_active = true; | |
128 | m_dropDown = true; | |
129 | m_sticky = true; | |
130 | m_userData = 0; | |
131 | m_alignment = wxALIGN_CENTER; | |
132 | } | |
133 | ||
134 | wxAuiToolBarItem(const wxAuiToolBarItem& c) | |
135 | { | |
136 | Assign(c); | |
137 | } | |
138 | ||
139 | wxAuiToolBarItem& operator=(const wxAuiToolBarItem& c) | |
140 | { | |
141 | Assign(c); | |
142 | return *this; | |
143 | } | |
144 | ||
145 | void Assign(const wxAuiToolBarItem& c) | |
146 | { | |
147 | m_window = c.m_window; | |
148 | m_label = c.m_label; | |
149 | m_bitmap = c.m_bitmap; | |
150 | m_disabledBitmap = c.m_disabledBitmap; | |
151 | m_hoverBitmap = c.m_hoverBitmap; | |
152 | m_shortHelp = c.m_shortHelp; | |
153 | m_longHelp = c.m_longHelp; | |
154 | m_sizerItem = c.m_sizerItem; | |
155 | m_minSize = c.m_minSize; | |
156 | m_spacerPixels = c.m_spacerPixels; | |
157 | m_toolId = c.m_toolId; | |
158 | m_kind = c.m_kind; | |
159 | m_state = c.m_state; | |
160 | m_proportion = c.m_proportion; | |
161 | m_active = c.m_active; | |
162 | m_dropDown = c.m_dropDown; | |
163 | m_sticky = c.m_sticky; | |
164 | m_userData = c.m_userData; | |
165 | m_alignment = c.m_alignment; | |
166 | } | |
167 | ||
168 | ||
169 | void SetWindow(wxWindow* w) { m_window = w; } | |
170 | wxWindow* GetWindow() { return m_window; } | |
171 | ||
172 | void SetId(int newId) { m_toolId = newId; } | |
173 | int GetId() const { return m_toolId; } | |
174 | ||
175 | void SetKind(int newKind) { m_kind = newKind; } | |
176 | int GetKind() const { return m_kind; } | |
177 | ||
178 | void SetState(int newState) { m_state = newState; } | |
179 | int GetState() const { return m_state; } | |
180 | ||
181 | void SetSizerItem(wxSizerItem* s) { m_sizerItem = s; } | |
182 | wxSizerItem* GetSizerItem() const { return m_sizerItem; } | |
183 | ||
184 | void SetLabel(const wxString& s) { m_label = s; } | |
185 | const wxString& GetLabel() const { return m_label; } | |
186 | ||
187 | void SetBitmap(const wxBitmap& bmp) { m_bitmap = bmp; } | |
188 | const wxBitmap& GetBitmap() const { return m_bitmap; } | |
189 | ||
190 | void SetDisabledBitmap(const wxBitmap& bmp) { m_disabledBitmap = bmp; } | |
191 | const wxBitmap& GetDisabledBitmap() const { return m_disabledBitmap; } | |
192 | ||
193 | void SetHoverBitmap(const wxBitmap& bmp) { m_hoverBitmap = bmp; } | |
194 | const wxBitmap& GetHoverBitmap() const { return m_hoverBitmap; } | |
195 | ||
196 | void SetShortHelp(const wxString& s) { m_shortHelp = s; } | |
197 | const wxString& GetShortHelp() const { return m_shortHelp; } | |
198 | ||
199 | void SetLongHelp(const wxString& s) { m_longHelp = s; } | |
200 | const wxString& GetLongHelp() const { return m_longHelp; } | |
201 | ||
202 | void SetMinSize(const wxSize& s) { m_minSize = s; } | |
203 | const wxSize& GetMinSize() const { return m_minSize; } | |
204 | ||
205 | void SetSpacerPixels(int s) { m_spacerPixels = s; } | |
206 | int GetSpacerPixels() const { return m_spacerPixels; } | |
207 | ||
208 | void SetProportion(int p) { m_proportion = p; } | |
209 | int GetProportion() const { return m_proportion; } | |
210 | ||
211 | void SetActive(bool b) { m_active = b; } | |
212 | bool IsActive() const { return m_active; } | |
213 | ||
214 | void SetHasDropDown(bool b) { m_dropDown = b; } | |
215 | bool HasDropDown() const { return m_dropDown; } | |
216 | ||
217 | void SetSticky(bool b) { m_sticky = b; } | |
218 | bool IsSticky() const { return m_sticky; } | |
219 | ||
220 | void SetUserData(long l) { m_userData = l; } | |
221 | long GetUserData() const { return m_userData; } | |
222 | ||
223 | void SetAlignment(int l) { m_alignment = l; } | |
224 | int GetAlignment() const { return m_alignment; } | |
225 | ||
226 | private: | |
227 | ||
228 | wxWindow* m_window; // item's associated window | |
229 | wxString m_label; // label displayed on the item | |
230 | wxBitmap m_bitmap; // item's bitmap | |
231 | wxBitmap m_disabledBitmap; // item's disabled bitmap | |
232 | wxBitmap m_hoverBitmap; // item's hover bitmap | |
233 | wxString m_shortHelp; // short help (for tooltip) | |
234 | wxString m_longHelp; // long help (for status bar) | |
235 | wxSizerItem* m_sizerItem; // sizer item | |
236 | wxSize m_minSize; // item's minimum size | |
237 | int m_spacerPixels; // size of a spacer | |
238 | int m_toolId; // item's id | |
239 | int m_kind; // item's kind | |
240 | int m_state; // state | |
241 | int m_proportion; // proportion | |
242 | bool m_active; // true if the item is currently active | |
243 | bool m_dropDown; // true if the item has a dropdown button | |
244 | bool m_sticky; // overrides button states if true (always active) | |
245 | long m_userData; // user-specified data | |
246 | int m_alignment; // sizer alignment flag, defaults to wxCENTER, may be wxEXPAND or any other | |
247 | }; | |
248 | ||
249 | #ifndef SWIG | |
250 | WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiToolBarItem, wxAuiToolBarItemArray, WXDLLIMPEXP_AUI); | |
251 | #endif | |
252 | ||
253 | ||
254 | ||
255 | ||
256 | // tab art class | |
257 | ||
258 | class WXDLLIMPEXP_AUI wxAuiToolBarArt | |
259 | { | |
260 | public: | |
261 | ||
262 | wxAuiToolBarArt() { } | |
263 | virtual ~wxAuiToolBarArt() { } | |
264 | ||
265 | virtual wxAuiToolBarArt* Clone() = 0; | |
266 | virtual void SetFlags(unsigned int flags) = 0; | |
267 | virtual unsigned int GetFlags() = 0; | |
268 | virtual void SetFont(const wxFont& font) = 0; | |
269 | virtual wxFont GetFont() = 0; | |
270 | virtual void SetTextOrientation(int orientation) = 0; | |
271 | virtual int GetTextOrientation() = 0; | |
272 | ||
273 | virtual void DrawBackground( | |
274 | wxDC& dc, | |
275 | wxWindow* wnd, | |
276 | const wxRect& rect) = 0; | |
277 | ||
278 | virtual void DrawLabel( | |
279 | wxDC& dc, | |
280 | wxWindow* wnd, | |
281 | const wxAuiToolBarItem& item, | |
282 | const wxRect& rect) = 0; | |
283 | ||
284 | virtual void DrawButton( | |
285 | wxDC& dc, | |
286 | wxWindow* wnd, | |
287 | const wxAuiToolBarItem& item, | |
288 | const wxRect& rect) = 0; | |
289 | ||
290 | virtual void DrawDropDownButton( | |
291 | wxDC& dc, | |
292 | wxWindow* wnd, | |
293 | const wxAuiToolBarItem& item, | |
294 | const wxRect& rect) = 0; | |
295 | ||
296 | virtual void DrawControlLabel( | |
297 | wxDC& dc, | |
298 | wxWindow* wnd, | |
299 | const wxAuiToolBarItem& item, | |
300 | const wxRect& rect) = 0; | |
301 | ||
302 | virtual void DrawSeparator( | |
303 | wxDC& dc, | |
304 | wxWindow* wnd, | |
305 | const wxRect& rect) = 0; | |
306 | ||
307 | virtual void DrawGripper( | |
308 | wxDC& dc, | |
309 | wxWindow* wnd, | |
310 | const wxRect& rect) = 0; | |
311 | ||
312 | virtual void DrawOverflowButton( | |
313 | wxDC& dc, | |
314 | wxWindow* wnd, | |
315 | const wxRect& rect, | |
316 | int state) = 0; | |
317 | ||
318 | virtual wxSize GetLabelSize( | |
319 | wxDC& dc, | |
320 | wxWindow* wnd, | |
321 | const wxAuiToolBarItem& item) = 0; | |
322 | ||
323 | virtual wxSize GetToolSize( | |
324 | wxDC& dc, | |
325 | wxWindow* wnd, | |
326 | const wxAuiToolBarItem& item) = 0; | |
327 | ||
328 | virtual int GetElementSize(int elementId) = 0; | |
329 | virtual void SetElementSize(int elementId, int size) = 0; | |
330 | ||
331 | virtual int ShowDropDown( | |
332 | wxWindow* wnd, | |
333 | const wxAuiToolBarItemArray& items) = 0; | |
334 | }; | |
335 | ||
336 | ||
337 | ||
338 | class WXDLLIMPEXP_AUI wxAuiDefaultToolBarArt : public wxAuiToolBarArt | |
339 | { | |
340 | ||
341 | public: | |
342 | ||
343 | wxAuiDefaultToolBarArt(); | |
344 | virtual ~wxAuiDefaultToolBarArt(); | |
345 | ||
346 | virtual wxAuiToolBarArt* Clone(); | |
347 | virtual void SetFlags(unsigned int flags); | |
348 | virtual unsigned int GetFlags(); | |
349 | virtual void SetFont(const wxFont& font); | |
350 | virtual wxFont GetFont(); | |
351 | virtual void SetTextOrientation(int orientation); | |
352 | virtual int GetTextOrientation(); | |
353 | ||
354 | virtual void DrawBackground( | |
355 | wxDC& dc, | |
356 | wxWindow* wnd, | |
357 | const wxRect& rect); | |
358 | ||
359 | virtual void DrawLabel( | |
360 | wxDC& dc, | |
361 | wxWindow* wnd, | |
362 | const wxAuiToolBarItem& item, | |
363 | const wxRect& rect); | |
364 | ||
365 | virtual void DrawButton( | |
366 | wxDC& dc, | |
367 | wxWindow* wnd, | |
368 | const wxAuiToolBarItem& item, | |
369 | const wxRect& rect); | |
370 | ||
371 | virtual void DrawDropDownButton( | |
372 | wxDC& dc, | |
373 | wxWindow* wnd, | |
374 | const wxAuiToolBarItem& item, | |
375 | const wxRect& rect); | |
376 | ||
377 | virtual void DrawControlLabel( | |
378 | wxDC& dc, | |
379 | wxWindow* wnd, | |
380 | const wxAuiToolBarItem& item, | |
381 | const wxRect& rect); | |
382 | ||
383 | virtual void DrawSeparator( | |
384 | wxDC& dc, | |
385 | wxWindow* wnd, | |
386 | const wxRect& rect); | |
387 | ||
388 | virtual void DrawGripper( | |
389 | wxDC& dc, | |
390 | wxWindow* wnd, | |
391 | const wxRect& rect); | |
392 | ||
393 | virtual void DrawOverflowButton( | |
394 | wxDC& dc, | |
395 | wxWindow* wnd, | |
396 | const wxRect& rect, | |
397 | int state); | |
398 | ||
399 | virtual wxSize GetLabelSize( | |
400 | wxDC& dc, | |
401 | wxWindow* wnd, | |
402 | const wxAuiToolBarItem& item); | |
403 | ||
404 | virtual wxSize GetToolSize( | |
405 | wxDC& dc, | |
406 | wxWindow* wnd, | |
407 | const wxAuiToolBarItem& item); | |
408 | ||
409 | virtual int GetElementSize(int element); | |
410 | virtual void SetElementSize(int elementId, int size); | |
411 | ||
412 | virtual int ShowDropDown(wxWindow* wnd, | |
413 | const wxAuiToolBarItemArray& items); | |
414 | ||
415 | protected: | |
416 | ||
417 | wxBitmap m_buttonDropDownBmp; | |
418 | wxBitmap m_disabledButtonDropDownBmp; | |
419 | wxBitmap m_overflowBmp; | |
420 | wxBitmap m_disabledOverflowBmp; | |
421 | wxColour m_baseColour; | |
422 | wxColour m_highlightColour; | |
423 | wxFont m_font; | |
424 | unsigned int m_flags; | |
425 | int m_textOrientation; | |
426 | ||
427 | wxPen m_gripperPen1; | |
428 | wxPen m_gripperPen2; | |
429 | wxPen m_gripperPen3; | |
430 | ||
431 | int m_separatorSize; | |
432 | int m_gripperSize; | |
433 | int m_overflowSize; | |
434 | }; | |
435 | ||
436 | ||
437 | ||
438 | ||
439 | class WXDLLIMPEXP_AUI wxAuiToolBar : public wxControl | |
440 | { | |
441 | public: | |
442 | wxAuiToolBar() { Init(); } | |
443 | ||
444 | wxAuiToolBar(wxWindow* parent, | |
445 | wxWindowID id = wxID_ANY, | |
446 | const wxPoint& pos = wxDefaultPosition, | |
447 | const wxSize& size = wxDefaultSize, | |
448 | long style = wxAUI_TB_DEFAULT_STYLE) | |
449 | { | |
450 | Init(); | |
451 | Create(parent, id, pos, size, style); | |
452 | } | |
453 | ||
454 | virtual ~wxAuiToolBar(); | |
455 | ||
456 | bool Create(wxWindow* parent, | |
457 | wxWindowID id = wxID_ANY, | |
458 | const wxPoint& pos = wxDefaultPosition, | |
459 | const wxSize& size = wxDefaultSize, | |
460 | long style = wxAUI_TB_DEFAULT_STYLE); | |
461 | ||
462 | virtual void SetWindowStyleFlag(long style); | |
463 | ||
464 | void SetArtProvider(wxAuiToolBarArt* art); | |
465 | wxAuiToolBarArt* GetArtProvider() const; | |
466 | ||
467 | bool SetFont(const wxFont& font); | |
468 | ||
469 | ||
470 | wxAuiToolBarItem* AddTool(int toolId, | |
471 | const wxString& label, | |
472 | const wxBitmap& bitmap, | |
473 | const wxString& shortHelpString = wxEmptyString, | |
474 | wxItemKind kind = wxITEM_NORMAL); | |
475 | ||
476 | wxAuiToolBarItem* AddTool(int toolId, | |
477 | const wxString& label, | |
478 | const wxBitmap& bitmap, | |
479 | const wxBitmap& disabledBitmap, | |
480 | wxItemKind kind, | |
481 | const wxString& shortHelpString, | |
482 | const wxString& longHelpString, | |
483 | wxObject* clientData); | |
484 | ||
485 | wxAuiToolBarItem* AddTool(int toolId, | |
486 | const wxBitmap& bitmap, | |
487 | const wxBitmap& disabledBitmap, | |
488 | bool toggle = false, | |
489 | wxObject* clientData = NULL, | |
490 | const wxString& shortHelpString = wxEmptyString, | |
491 | const wxString& longHelpString = wxEmptyString) | |
492 | { | |
493 | return AddTool(toolId, | |
494 | wxEmptyString, | |
495 | bitmap, | |
496 | disabledBitmap, | |
497 | toggle ? wxITEM_CHECK : wxITEM_NORMAL, | |
498 | shortHelpString, | |
499 | longHelpString, | |
500 | clientData); | |
501 | } | |
502 | ||
503 | wxAuiToolBarItem* AddLabel(int toolId, | |
504 | const wxString& label = wxEmptyString, | |
505 | const int width = -1); | |
506 | wxAuiToolBarItem* AddControl(wxControl* control, | |
507 | const wxString& label = wxEmptyString); | |
508 | wxAuiToolBarItem* AddSeparator(); | |
509 | wxAuiToolBarItem* AddSpacer(int pixels); | |
510 | wxAuiToolBarItem* AddStretchSpacer(int proportion = 1); | |
511 | ||
512 | bool Realize(); | |
513 | ||
514 | wxControl* FindControl(int windowId); | |
515 | wxAuiToolBarItem* FindToolByPosition(wxCoord x, wxCoord y) const; | |
516 | wxAuiToolBarItem* FindToolByIndex(int idx) const; | |
517 | wxAuiToolBarItem* FindTool(int toolId) const; | |
518 | ||
519 | void ClearTools() { Clear() ; } | |
520 | void Clear(); | |
521 | bool DeleteTool(int toolId); | |
522 | bool DeleteByIndex(int toolId); | |
523 | ||
524 | size_t GetToolCount() const; | |
525 | int GetToolPos(int toolId) const { return GetToolIndex(toolId); } | |
526 | int GetToolIndex(int toolId) const; | |
527 | bool GetToolFits(int toolId) const; | |
528 | wxRect GetToolRect(int toolId) const; | |
529 | bool GetToolFitsByIndex(int toolId) const; | |
530 | bool GetToolBarFits() const; | |
531 | ||
532 | void SetMargins(const wxSize& size) { SetMargins(size.x, size.x, size.y, size.y); } | |
533 | void SetMargins(int x, int y) { SetMargins(x, x, y, y); } | |
534 | void SetMargins(int left, int right, int top, int bottom); | |
535 | ||
536 | void SetToolBitmapSize(const wxSize& size); | |
537 | wxSize GetToolBitmapSize() const; | |
538 | ||
539 | bool GetOverflowVisible() const; | |
540 | void SetOverflowVisible(bool visible); | |
541 | ||
542 | bool GetGripperVisible() const; | |
543 | void SetGripperVisible(bool visible); | |
544 | ||
545 | void ToggleTool(int toolId, bool state); | |
546 | bool GetToolToggled(int toolId) const; | |
547 | ||
548 | void EnableTool(int toolId, bool state); | |
549 | bool GetToolEnabled(int toolId) const; | |
550 | ||
551 | void SetToolDropDown(int toolId, bool dropdown); | |
552 | bool GetToolDropDown(int toolId) const; | |
553 | ||
554 | void SetToolBorderPadding(int padding); | |
555 | int GetToolBorderPadding() const; | |
556 | ||
557 | void SetToolTextOrientation(int orientation); | |
558 | int GetToolTextOrientation() const; | |
559 | ||
560 | void SetToolPacking(int packing); | |
561 | int GetToolPacking() const; | |
562 | ||
563 | void SetToolProportion(int toolId, int proportion); | |
564 | int GetToolProportion(int toolId) const; | |
565 | ||
566 | void SetToolSeparation(int separation); | |
567 | int GetToolSeparation() const; | |
568 | ||
569 | void SetToolSticky(int toolId, bool sticky); | |
570 | bool GetToolSticky(int toolId) const; | |
571 | ||
572 | wxString GetToolLabel(int toolId) const; | |
573 | void SetToolLabel(int toolId, const wxString& label); | |
574 | ||
575 | wxBitmap GetToolBitmap(int toolId) const; | |
576 | void SetToolBitmap(int toolId, const wxBitmap& bitmap); | |
577 | ||
578 | wxString GetToolShortHelp(int toolId) const; | |
579 | void SetToolShortHelp(int toolId, const wxString& helpString); | |
580 | ||
581 | wxString GetToolLongHelp(int toolId) const; | |
582 | void SetToolLongHelp(int toolId, const wxString& helpString); | |
583 | ||
584 | void SetCustomOverflowItems(const wxAuiToolBarItemArray& prepend, | |
585 | const wxAuiToolBarItemArray& append); | |
586 | ||
587 | // get size of hint rectangle for a particular dock location | |
588 | wxSize GetHintSize(int dockDirection) const; | |
589 | bool IsPaneValid(const wxAuiPaneInfo& pane) const; | |
590 | ||
591 | // Override to call DoIdleUpdate(). | |
592 | virtual void UpdateWindowUI(long flags = wxUPDATE_UI_NONE); | |
593 | ||
594 | protected: | |
595 | void Init(); | |
596 | ||
597 | virtual void OnCustomRender(wxDC& WXUNUSED(dc), | |
598 | const wxAuiToolBarItem& WXUNUSED(item), | |
599 | const wxRect& WXUNUSED(rect)) { } | |
600 | ||
601 | protected: | |
602 | ||
603 | void DoIdleUpdate(); | |
604 | void SetOrientation(int orientation); | |
605 | void SetHoverItem(wxAuiToolBarItem* item); | |
606 | void SetPressedItem(wxAuiToolBarItem* item); | |
607 | void RefreshOverflowState(); | |
608 | ||
609 | int GetOverflowState() const; | |
610 | wxRect GetOverflowRect() const; | |
611 | wxSize GetLabelSize(const wxString& label); | |
612 | wxAuiToolBarItem* FindToolByPositionWithPacking(wxCoord x, wxCoord y) const; | |
613 | ||
614 | void DoSetSize(int x, | |
615 | int y, | |
616 | int width, | |
617 | int height, | |
618 | int sizeFlags = wxSIZE_AUTO); | |
619 | ||
620 | protected: // handlers | |
621 | ||
622 | void OnSize(wxSizeEvent& evt); | |
623 | void OnIdle(wxIdleEvent& evt); | |
624 | void OnPaint(wxPaintEvent& evt); | |
625 | void OnEraseBackground(wxEraseEvent& evt); | |
626 | void OnLeftDown(wxMouseEvent& evt); | |
627 | void OnLeftUp(wxMouseEvent& evt); | |
628 | void OnRightDown(wxMouseEvent& evt); | |
629 | void OnRightUp(wxMouseEvent& evt); | |
630 | void OnMiddleDown(wxMouseEvent& evt); | |
631 | void OnMiddleUp(wxMouseEvent& evt); | |
632 | void OnMotion(wxMouseEvent& evt); | |
633 | void OnLeaveWindow(wxMouseEvent& evt); | |
634 | void OnCaptureLost(wxMouseCaptureLostEvent& evt); | |
635 | void OnSetCursor(wxSetCursorEvent& evt); | |
636 | ||
637 | protected: | |
638 | ||
639 | wxAuiToolBarItemArray m_items; // array of toolbar items | |
640 | wxAuiToolBarArt* m_art; // art provider | |
641 | wxBoxSizer* m_sizer; // main sizer for toolbar | |
642 | wxAuiToolBarItem* m_actionItem; // item that's being acted upon (pressed) | |
643 | wxAuiToolBarItem* m_tipItem; // item that has its tooltip shown | |
644 | wxBitmap m_bitmap; // double-buffer bitmap | |
645 | wxSizerItem* m_gripperSizerItem; | |
646 | wxSizerItem* m_overflowSizerItem; | |
647 | wxSize m_absoluteMinSize; | |
648 | wxPoint m_actionPos; // position of left-mouse down | |
649 | wxAuiToolBarItemArray m_customOverflowPrepend; | |
650 | wxAuiToolBarItemArray m_customOverflowAppend; | |
651 | ||
652 | int m_buttonWidth; | |
653 | int m_buttonHeight; | |
654 | int m_sizerElementCount; | |
655 | int m_leftPadding; | |
656 | int m_rightPadding; | |
657 | int m_topPadding; | |
658 | int m_bottomPadding; | |
659 | int m_toolPacking; | |
660 | int m_toolBorderPadding; | |
661 | int m_toolTextOrientation; | |
662 | int m_overflowState; | |
663 | bool m_dragging; | |
664 | bool m_gripperVisible; | |
665 | bool m_overflowVisible; | |
666 | ||
667 | bool RealizeHelper(wxClientDC& dc, bool horizontal); | |
668 | static bool IsPaneValid(long style, const wxAuiPaneInfo& pane); | |
669 | bool IsPaneValid(long style) const; | |
670 | void SetArtFlags() const; | |
671 | wxOrientation m_orientation; | |
672 | wxSize m_horzHintSize; | |
673 | wxSize m_vertHintSize; | |
674 | ||
675 | private: | |
676 | // Common part of OnLeaveWindow() and OnCaptureLost(). | |
677 | void DoResetMouseState(); | |
678 | ||
679 | DECLARE_EVENT_TABLE() | |
680 | DECLARE_CLASS(wxAuiToolBar) | |
681 | }; | |
682 | ||
683 | ||
684 | ||
685 | ||
686 | // wx event machinery | |
687 | ||
688 | #ifndef SWIG | |
689 | ||
690 | wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN, wxAuiToolBarEvent ); | |
691 | wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK, wxAuiToolBarEvent ); | |
692 | wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, wxAuiToolBarEvent ); | |
693 | wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK, wxAuiToolBarEvent ); | |
694 | wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG, wxAuiToolBarEvent ); | |
695 | ||
696 | typedef void (wxEvtHandler::*wxAuiToolBarEventFunction)(wxAuiToolBarEvent&); | |
697 | ||
698 | #define wxAuiToolBarEventHandler(func) \ | |
699 | wxEVENT_HANDLER_CAST(wxAuiToolBarEventFunction, func) | |
700 | ||
701 | #define EVT_AUITOOLBAR_TOOL_DROPDOWN(winid, fn) \ | |
702 | wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN, winid, wxAuiToolBarEventHandler(fn)) | |
703 | #define EVT_AUITOOLBAR_OVERFLOW_CLICK(winid, fn) \ | |
704 | wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK, winid, wxAuiToolBarEventHandler(fn)) | |
705 | #define EVT_AUITOOLBAR_RIGHT_CLICK(winid, fn) \ | |
706 | wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, winid, wxAuiToolBarEventHandler(fn)) | |
707 | #define EVT_AUITOOLBAR_MIDDLE_CLICK(winid, fn) \ | |
708 | wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK, winid, wxAuiToolBarEventHandler(fn)) | |
709 | #define EVT_AUITOOLBAR_BEGIN_DRAG(winid, fn) \ | |
710 | wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG, winid, wxAuiToolBarEventHandler(fn)) | |
711 | ||
712 | #else | |
713 | ||
714 | // wxpython/swig event work | |
715 | %constant wxEventType wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN; | |
716 | %constant wxEventType wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK; | |
717 | %constant wxEventType wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK; | |
718 | %constant wxEventType wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK; | |
719 | %constant wxEventType wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG; | |
720 | ||
721 | %pythoncode { | |
722 | EVT_AUITOOLBAR_TOOL_DROPDOWN = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN, 1 ) | |
723 | EVT_AUITOOLBAR_OVERFLOW_CLICK = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK, 1 ) | |
724 | EVT_AUITOOLBAR_RIGHT_CLICK = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, 1 ) | |
725 | EVT_AUITOOLBAR_MIDDLE_CLICK = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK, 1 ) | |
726 | EVT_AUITOOLBAR_BEGIN_DRAG = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG, 1 ) | |
727 | } | |
728 | #endif // SWIG | |
729 | ||
730 | #endif // wxUSE_AUI | |
731 | #endif // _WX_AUIBAR_H_ | |
732 |