1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/generic/notebook.h 3 // Purpose: wxNotebook class (a.k.a. property sheet, tabbed dialog) 4 // Author: Julian Smart 5 // Modified by: 6 // Copyright: (c) Julian Smart 7 // Licence: wxWindows licence 8 ///////////////////////////////////////////////////////////////////////////// 9 10 #ifndef _WX_NOTEBOOK_H_ 11 #define _WX_NOTEBOOK_H_ 12 13 // ---------------------------------------------------------------------------- 14 // headers 15 // ---------------------------------------------------------------------------- 16 #include "wx/event.h" 17 #include "wx/control.h" 18 19 // ---------------------------------------------------------------------------- 20 // types 21 // ---------------------------------------------------------------------------- 22 23 // fwd declarations 24 class WXDLLIMPEXP_FWD_CORE wxImageList; 25 class WXDLLIMPEXP_FWD_CORE wxWindow; 26 class WXDLLIMPEXP_FWD_CORE wxTabView; 27 28 // ---------------------------------------------------------------------------- 29 // wxNotebook 30 // ---------------------------------------------------------------------------- 31 32 class WXDLLIMPEXP_CORE wxNotebook : public wxNotebookBase 33 { 34 public: 35 // ctors 36 // ----- 37 // default for dynamic class 38 wxNotebook(); 39 // the same arguments as for wxControl (@@@ any special styles?) 40 wxNotebook(wxWindow *parent, 41 wxWindowID id, 42 const wxPoint& pos = wxDefaultPosition, 43 const wxSize& size = wxDefaultSize, 44 long style = 0, 45 const wxString& name = wxASCII_STR(wxNotebookNameStr)); 46 // Create() function 47 bool Create(wxWindow *parent, 48 wxWindowID id, 49 const wxPoint& pos = wxDefaultPosition, 50 const wxSize& size = wxDefaultSize, 51 long style = 0, 52 const wxString& name = wxASCII_STR(wxNotebookNameStr)); 53 // dtor 54 virtual ~wxNotebook(); 55 56 // accessors 57 // --------- 58 // Find the position of the wxNotebookPage, wxNOT_FOUND if not found. 59 int FindPagePosition(wxNotebookPage* page) const; 60 61 // set the currently selected page, return the index of the previously 62 // selected one (or wxNOT_FOUND on error) 63 // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events 64 int SetSelection(size_t nPage); 65 // cycle thru the tabs 66 // void AdvanceSelection(bool bForward = true); 67 68 // changes selected page without sending events 69 int ChangeSelection(size_t nPage); 70 71 // set/get the title of a page 72 bool SetPageText(size_t nPage, const wxString& strText); 73 wxString GetPageText(size_t nPage) const; 74 75 // get the number of rows for a control with wxNB_MULTILINE style (not all 76 // versions support it - they will always return 1 then) 77 virtual int GetRowCount() const ; 78 79 // sets/returns item's image index in the current image list 80 int GetPageImage(size_t nPage) const; 81 bool SetPageImage(size_t nPage, int nImage); 82 83 // control the appearance of the notebook pages 84 // set the size (the same for all pages) 85 void SetPageSize(const wxSize& size); 86 // set the padding between tabs (in pixels) 87 void SetPadding(const wxSize& padding); 88 89 // Sets the size of the tabs (assumes all tabs are the same size) 90 void SetTabSize(const wxSize& sz); 91 92 // operations 93 // ---------- 94 // remove one page from the notebook, and delete the page. 95 bool DeletePage(size_t nPage); 96 bool DeletePage(wxNotebookPage* page); 97 // remove one page from the notebook, without deleting the page. 98 bool RemovePage(size_t nPage); 99 bool RemovePage(wxNotebookPage* page); 100 virtual wxWindow* DoRemovePage(size_t nPage); 101 102 // remove all pages 103 bool DeleteAllPages(); 104 // the same as AddPage(), but adds it at the specified position 105 bool InsertPage(size_t nPage, 106 wxNotebookPage *pPage, 107 const wxString& strText, 108 bool bSelect = false, 109 int imageId = NO_IMAGE); 110 111 // callbacks 112 // --------- 113 void OnSize(wxSizeEvent& event); 114 void OnInternalIdle(); 115 void OnSelChange(wxBookCtrlEvent& event); 116 void OnSetFocus(wxFocusEvent& event); 117 void OnNavigationKey(wxNavigationKeyEvent& event); 118 119 // base class virtuals 120 // ------------------- 121 virtual void Command(wxCommandEvent& event); 122 virtual void SetConstraintSizes(bool recurse = true); 123 virtual bool DoPhase(int nPhase); 124 125 virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const; 126 127 // Implementation 128 129 // wxNotebook on Motif uses a generic wxTabView to implement itself. GetTabView()130 wxTabView *GetTabView() const { return m_tabView; } SetTabView(wxTabView * v)131 void SetTabView(wxTabView *v) { m_tabView = v; } 132 133 void OnMouseEvent(wxMouseEvent& event); 134 void OnPaint(wxPaintEvent& event); 135 136 virtual wxRect GetAvailableClientSize(); 137 138 // Implementation: calculate the layout of the view rect 139 // and resize the children if required 140 bool RefreshLayout(bool force = true); 141 142 protected: 143 // common part of all ctors 144 void Init(); 145 146 // helper functions 147 void ChangePage(int nOldSel, int nSel); // change pages 148 149 wxTabView* m_tabView; 150 151 wxDECLARE_DYNAMIC_CLASS(wxNotebook); 152 wxDECLARE_EVENT_TABLE(); 153 }; 154 155 #endif // _WX_NOTEBOOK_H_ 156