1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/gtk1/notebook.h 3// Purpose: wxNotebook class 4// Author: Robert Roebling 5// Modified by: 6// RCS-ID: $Id: notebook.h 41738 2006-10-08 17:37:23Z VZ $ 7// Copyright: (c) Julian Smart and Robert Roebling 8// Licence: wxWindows licence 9///////////////////////////////////////////////////////////////////////////// 10 11#ifndef __GTKNOTEBOOKH__ 12#define __GTKNOTEBOOKH__ 13 14//----------------------------------------------------------------------------- 15// internal class 16//----------------------------------------------------------------------------- 17 18class WXDLLIMPEXP_CORE wxGtkNotebookPage; 19 20#include "wx/list.h" 21WX_DECLARE_LIST(wxGtkNotebookPage, wxGtkNotebookPagesList); 22 23//----------------------------------------------------------------------------- 24// wxNotebook 25//----------------------------------------------------------------------------- 26 27class WXDLLIMPEXP_CORE wxNotebook : public wxNotebookBase 28{ 29public: 30 // default for dynamic class 31 wxNotebook(); 32 // the same arguments as for wxControl 33 wxNotebook(wxWindow *parent, 34 wxWindowID id, 35 const wxPoint& pos = wxDefaultPosition, 36 const wxSize& size = wxDefaultSize, 37 long style = 0, 38 const wxString& name = wxNotebookNameStr); 39 // Create() function 40 bool Create(wxWindow *parent, 41 wxWindowID id, 42 const wxPoint& pos = wxDefaultPosition, 43 const wxSize& size = wxDefaultSize, 44 long style = 0, 45 const wxString& name = wxNotebookNameStr); 46 // dtor 47 virtual ~wxNotebook(); 48 49 // accessors 50 // --------- 51 52 // set the currently selected page, return the index of the previously 53 // selected one (or -1 on error) 54 // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events 55 int SetSelection(size_t nPage) { return DoSetSelection(nPage, SetSelection_SendEvent); } 56 // get the currently selected page 57 int GetSelection() const; 58 59 // changes selected page without sending events 60 int ChangeSelection(size_t nPage) { return DoSetSelection(nPage); } 61 62 // set/get the title of a page 63 bool SetPageText(size_t nPage, const wxString& strText); 64 wxString GetPageText(size_t nPage) const; 65 66 // sets/returns item's image index in the current image list 67 int GetPageImage(size_t nPage) const; 68 bool SetPageImage(size_t nPage, int nImage); 69 70 // control the appearance of the notebook pages 71 // set the size (the same for all pages) 72 void SetPageSize(const wxSize& size); 73 // set the padding between tabs (in pixels) 74 void SetPadding(const wxSize& padding); 75 // sets the size of the tabs (assumes all tabs are the same size) 76 void SetTabSize(const wxSize& sz); 77 78 virtual int HitTest(const wxPoint& pt, long *flags = NULL) const; 79 80 // operations 81 // ---------- 82 // remove all pages 83 bool DeleteAllPages(); 84 85 // adds a new page to the notebook (it will be deleted by the notebook, 86 // don't delete it yourself). If bSelect, this page becomes active. 87 // the same as AddPage(), but adds it at the specified position 88 bool InsertPage( size_t position, 89 wxNotebookPage *win, 90 const wxString& strText, 91 bool bSelect = false, 92 int imageId = -1 ); 93 94 // handler for tab navigation 95 // -------------------------- 96 void OnNavigationKey(wxNavigationKeyEvent& event); 97 98 99 static wxVisualAttributes 100 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); 101 102 // implementation 103 // -------------- 104 105#if wxUSE_CONSTRAINTS 106 void SetConstraintSizes(bool recurse); 107 bool DoPhase(int phase); 108#endif 109 110 // set all page's attributes 111 void DoApplyWidgetStyle(GtkRcStyle *style); 112 113 // report if window belongs to notebook 114 bool IsOwnGtkWindow( GdkWindow *window ); 115 116 // common part of all ctors 117 void Init(); 118 119 // helper function 120 wxGtkNotebookPage* GetNotebookPage(int page) const; 121 122 // the additional page data (the pages themselves are in m_pages array) 123 wxGtkNotebookPagesList m_pagesData; 124 125 // for reasons explained in gtk/notebook.cpp we store the current 126 // selection internally instead of querying the notebook for it 127 int m_selection; 128 129 // flag set to true while we're inside "switch_page" callback 130 bool m_inSwitchPage; 131 132 // flag set to true when the switch-page signal has been programatically generated 133 bool m_skipNextPageChangeEvent; 134 135protected: 136 // remove one page from the notebook but do not destroy it 137 virtual wxNotebookPage *DoRemovePage(size_t nPage); 138 139 int DoSetSelection(size_t nPage, int flags = 0); 140 141private: 142 // the padding set by SetPadding() 143 int m_padding; 144 145 DECLARE_DYNAMIC_CLASS(wxNotebook) 146 DECLARE_EVENT_TABLE() 147}; 148 149#endif 150 // __GTKNOTEBOOKH__ 151