toolbook.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/toolbook.h
  3. // Purpose: wxToolbook: wxToolBar and wxNotebook combination
  4. // Author: Julian Smart
  5. // Modified by:
  6. // Created: 2006-01-29
  7. // Copyright: (c) 2006 Julian Smart
  8. // Licence: wxWindows licence
  9. ///////////////////////////////////////////////////////////////////////////////
  10. #ifndef _WX_TOOLBOOK_H_
  11. #define _WX_TOOLBOOK_H_
  12. #include "wx/defs.h"
  13. #if wxUSE_TOOLBOOK
  14. #include "wx/bookctrl.h"
  15. #include "wx/containr.h"
  16. class WXDLLIMPEXP_FWD_CORE wxToolBarBase;
  17. class WXDLLIMPEXP_FWD_CORE wxCommandEvent;
  18. wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_TOOLBOOK_PAGE_CHANGED, wxBookCtrlEvent );
  19. wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_TOOLBOOK_PAGE_CHANGING, wxBookCtrlEvent );
  20. // Use wxButtonToolBar
  21. #define wxTBK_BUTTONBAR 0x0100
  22. // Use wxTB_HORZ_LAYOUT style for the controlling toolbar
  23. #define wxTBK_HORZ_LAYOUT 0x8000
  24. // deprecated synonym, don't use
  25. #if WXWIN_COMPATIBILITY_2_8
  26. #define wxBK_BUTTONBAR wxTBK_BUTTONBAR
  27. #endif
  28. // ----------------------------------------------------------------------------
  29. // wxToolbook
  30. // ----------------------------------------------------------------------------
  31. class WXDLLIMPEXP_CORE wxToolbook : public wxNavigationEnabled<wxBookCtrlBase>
  32. {
  33. public:
  34. wxToolbook()
  35. {
  36. Init();
  37. }
  38. wxToolbook(wxWindow *parent,
  39. wxWindowID id,
  40. const wxPoint& pos = wxDefaultPosition,
  41. const wxSize& size = wxDefaultSize,
  42. long style = 0,
  43. const wxString& name = wxEmptyString)
  44. {
  45. Init();
  46. (void)Create(parent, id, pos, size, style, name);
  47. }
  48. // quasi ctor
  49. bool Create(wxWindow *parent,
  50. wxWindowID id,
  51. const wxPoint& pos = wxDefaultPosition,
  52. const wxSize& size = wxDefaultSize,
  53. long style = 0,
  54. const wxString& name = wxEmptyString);
  55. // implement base class virtuals
  56. virtual bool SetPageText(size_t n, const wxString& strText);
  57. virtual wxString GetPageText(size_t n) const;
  58. virtual int GetPageImage(size_t n) const;
  59. virtual bool SetPageImage(size_t n, int imageId);
  60. virtual bool InsertPage(size_t n,
  61. wxWindow *page,
  62. const wxString& text,
  63. bool bSelect = false,
  64. int imageId = NO_IMAGE);
  65. virtual int SetSelection(size_t n) { return DoSetSelection(n, SetSelection_SendEvent); }
  66. virtual int ChangeSelection(size_t n) { return DoSetSelection(n); }
  67. virtual void SetImageList(wxImageList *imageList);
  68. virtual bool DeleteAllPages();
  69. virtual int HitTest(const wxPoint& pt, long *flags = NULL) const;
  70. // methods which are not part of base wxBookctrl API
  71. // get the underlying toolbar
  72. wxToolBarBase* GetToolBar() const { return (wxToolBarBase*)m_bookctrl; }
  73. // must be called in OnIdle or by application to realize the toolbar and
  74. // select the initial page.
  75. void Realize();
  76. protected:
  77. virtual wxWindow *DoRemovePage(size_t page);
  78. // event handlers
  79. void OnToolSelected(wxCommandEvent& event);
  80. void OnSize(wxSizeEvent& event);
  81. void OnIdle(wxIdleEvent& event);
  82. void UpdateSelectedPage(size_t newsel);
  83. wxBookCtrlEvent* CreatePageChangingEvent() const;
  84. void MakeChangedEvent(wxBookCtrlEvent &event);
  85. // whether the toolbar needs to be realized
  86. bool m_needsRealizing;
  87. // maximum bitmap size
  88. wxSize m_maxBitmapSize;
  89. private:
  90. // common part of all constructors
  91. void Init();
  92. DECLARE_EVENT_TABLE()
  93. DECLARE_DYNAMIC_CLASS_NO_COPY(wxToolbook)
  94. };
  95. // ----------------------------------------------------------------------------
  96. // listbook event class and related stuff
  97. // ----------------------------------------------------------------------------
  98. // wxToolbookEvent is obsolete and defined for compatibility only
  99. #define wxToolbookEvent wxBookCtrlEvent
  100. typedef wxBookCtrlEventFunction wxToolbookEventFunction;
  101. #define wxToolbookEventHandler(func) wxBookCtrlEventHandler(func)
  102. #define EVT_TOOLBOOK_PAGE_CHANGED(winid, fn) \
  103. wx__DECLARE_EVT1(wxEVT_TOOLBOOK_PAGE_CHANGED, winid, wxBookCtrlEventHandler(fn))
  104. #define EVT_TOOLBOOK_PAGE_CHANGING(winid, fn) \
  105. wx__DECLARE_EVT1(wxEVT_TOOLBOOK_PAGE_CHANGING, winid, wxBookCtrlEventHandler(fn))
  106. // old wxEVT_COMMAND_* constants
  107. #define wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED wxEVT_TOOLBOOK_PAGE_CHANGED
  108. #define wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING wxEVT_TOOLBOOK_PAGE_CHANGING
  109. #endif // wxUSE_TOOLBOOK
  110. #endif // _WX_TOOLBOOK_H_