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