1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: provide wxBookCtrlSizer and wxNotebookSizer class
4 // Author: Robert Roebling and Robin Dunn
5 // Modified by: Ron Lee, Vadim Zeitlin (wxSizerFlags)
7 // RCS-ID: $Id: wxsizer.h 2057 2007-06-18 23:03:00Z mbarbon $
8 // Copyright: (c) Robin Dunn, Robert Roebling
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // extracted from sizer.h/sizer.cpp from wxWidgets 2.6.1
14 // NB: wxBookCtrlSizer and wxNotebookSizer are deprecated, they
15 // don't do anything. wxBookCtrlBase::DoGetBestSize does the job now.
17 // ----------------------------------------------------------------------------
19 // ----------------------------------------------------------------------------
23 #include <wx/bookctrl.h>
25 // this sizer works with wxNotebook/wxListbook/... and sizes the control to
27 class wxBookCtrlSizer : public wxSizer
30 wxBookCtrlSizer(wxBookCtrlBase *bookctrl);
32 wxBookCtrlBase *GetControl() const { return m_bookctrl; }
34 virtual void RecalcSizes();
35 virtual wxSize CalcMin();
39 wxBookCtrlBase *m_bookctrl;
42 DECLARE_CLASS(wxBookCtrlSizer)
43 DECLARE_NO_COPY_CLASS(wxBookCtrlSizer)
49 // before wxBookCtrlBase we only had wxNotebookSizer, keep it for backwards
51 #include <wx/notebook.h>
53 class wxNotebookSizer : public wxBookCtrlSizer
56 wxNotebookSizer(wxNotebook *nb);
58 wxNotebook *GetNotebook() const { return (wxNotebook *)m_bookctrl; }
61 DECLARE_CLASS(wxNotebookSizer)
62 DECLARE_NO_COPY_CLASS(wxNotebookSizer)
65 #endif // wxUSE_NOTEBOOK
67 #endif // wxUSE_BOOKCTRL
70 IMPLEMENT_CLASS(wxBookCtrlSizer, wxSizer)
72 IMPLEMENT_CLASS(wxNotebookSizer, wxBookCtrlSizer)
73 #endif // wxUSE_NOTEBOOK
74 #endif // wxUSE_BOOKCTRL
78 wxBookCtrlSizer::wxBookCtrlSizer(wxBookCtrlBase *bookctrl)
79 : m_bookctrl(bookctrl)
81 wxASSERT_MSG( bookctrl, wxT("wxBookCtrlSizer needs a control") );
84 void wxBookCtrlSizer::RecalcSizes()
86 m_bookctrl->SetSize( m_position.x, m_position.y, m_size.x, m_size.y );
89 wxSize wxBookCtrlSizer::CalcMin()
91 wxSize sizeBorder = m_bookctrl->CalcSizeFromPage(wxSize(0,0));
96 if ( m_bookctrl->GetPageCount() == 0 )
98 return wxSize(sizeBorder.x + 10, sizeBorder.y + 10);
104 wxWindowList::compatibility_iterator
105 node = m_bookctrl->GetChildren().GetFirst();
108 wxWindow *item = node->GetData();
109 wxSizer *itemsizer = item->GetSizer();
113 wxSize subsize( itemsizer->CalcMin() );
115 if (subsize.x > maxX)
117 if (subsize.y > maxY)
121 node = node->GetNext();
124 return wxSize( maxX, maxY ) + sizeBorder;
129 wxNotebookSizer::wxNotebookSizer(wxNotebook *nb)
130 : wxBookCtrlSizer(nb)
132 wxASSERT_MSG( nb, wxT("wxNotebookSizer needs a control") );
135 #endif // wxUSE_NOTEBOOOK
136 #endif // wxUSE_BOOKCTRL