X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d76f4628261a5d80ca18e45b311efa2e79f3d57..c077ee943391930e0a7550f7ce810cb72a6d5820:/include/wx/sizer.h?ds=sidebyside diff --git a/include/wx/sizer.h b/include/wx/sizer.h index b5f0665955..eeed12325b 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -1,19 +1,18 @@ ///////////////////////////////////////////////////////////////////////////// // Name: sizer.h -// Purpose: provide wxSizer class for layouting +// Purpose: provide wxSizer class for layout // Author: Robert Roebling and Robin Dunn // Modified by: Ron Lee // Created: // RCS-ID: $Id$ -// Copyright: (c) Robin Dunn, Dirk Holtwick and Robert Roebling -// (c) 2003, Ron Lee +// Copyright: (c) Robin Dunn, Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef __WXSIZER_H__ #define __WXSIZER_H__ -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "sizer.h" #endif @@ -60,7 +59,8 @@ public: int border, wxObject* userData ); - ~wxSizerItem(); + wxSizerItem(); + virtual ~wxSizerItem(); virtual void DeleteWindows(); @@ -112,7 +112,7 @@ public: wxWindow *GetWindow() const { return m_window; } void SetWindow( wxWindow *window ) - { m_window = window; } + { m_window = window; m_minSize = window->GetSize(); } wxSizer *GetSizer() const { return m_sizer; } void SetSizer( wxSizer *sizer ) @@ -153,7 +153,7 @@ protected: wxObject *m_userData; private: - DECLARE_CLASS(wxSizerItem); + DECLARE_CLASS(wxSizerItem) DECLARE_NO_COPY_CLASS(wxSizerItem) }; @@ -326,7 +326,7 @@ protected: virtual bool DoSetItemMinSize( size_t index, int width, int height ); private: - DECLARE_CLASS(wxSizer); + DECLARE_CLASS(wxSizer) }; //--------------------------------------------------------------------------- @@ -363,7 +363,7 @@ protected: void SetItemBounds( wxSizerItem *item, int x, int y, int w, int h ); private: - DECLARE_CLASS(wxGridSizer); + DECLARE_CLASS(wxGridSizer) }; //--------------------------------------------------------------------------- @@ -395,9 +395,9 @@ public: // set the rows/columns which will grow (the others will remain of the // constant initial size) - void AddGrowableRow( size_t idx ); + void AddGrowableRow( size_t idx, int proportion = 0 ); void RemoveGrowableRow( size_t idx ); - void AddGrowableCol( size_t idx ); + void AddGrowableCol( size_t idx, int proportion = 0 ); void RemoveGrowableCol( size_t idx ); @@ -413,12 +413,19 @@ public: void SetNonFlexibleGrowMode(wxFlexSizerGrowMode mode) { m_growMode = mode; } wxFlexSizerGrowMode GetNonFlexibleGrowMode() const { return m_growMode; } - + // Read-only access to the row heights and col widths arrays + const wxArrayInt& GetRowHeights() const { return m_rowHeights; } + const wxArrayInt& GetColWidths() const { return m_colWidths; } + // implementation virtual void RecalcSizes(); virtual wxSize CalcMin(); protected: + void AdjustForFlexDirection(); + void AdjustForGrowables(const wxSize& sz, const wxSize& minsz, + int nrows, int ncols); + // the heights/widths of all rows/columns wxArrayInt m_rowHeights, m_colWidths; @@ -427,13 +434,17 @@ protected: wxArrayInt m_growableRows, m_growableCols; + // proportion values of the corresponding growable rows and columns + wxArrayInt m_growableRowsProportions, + m_growableColsProportions; + // parameters describing whether the growable cells should be resized in // both directions or only one int m_flexDirection; wxFlexSizerGrowMode m_growMode; private: - DECLARE_CLASS(wxFlexGridSizer); + DECLARE_CLASS(wxFlexGridSizer) DECLARE_NO_COPY_CLASS(wxFlexGridSizer) }; @@ -464,7 +475,7 @@ protected: int m_fixedHeight; private: - DECLARE_CLASS(wxBoxSizer); + DECLARE_CLASS(wxBoxSizer) }; //--------------------------------------------------------------------------- @@ -490,41 +501,62 @@ protected: wxStaticBox *m_staticBox; private: - DECLARE_CLASS(wxStaticBoxSizer); + DECLARE_CLASS(wxStaticBoxSizer) DECLARE_NO_COPY_CLASS(wxStaticBoxSizer) }; #endif // wxUSE_STATBOX -//--------------------------------------------------------------------------- -// wxNotebookSizer -//--------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// wxBookCtrlSizer +// ---------------------------------------------------------------------------- -#if wxUSE_NOTEBOOK +#if wxUSE_BOOKCTRL -class WXDLLEXPORT wxNotebook; +// this sizer works with wxNotebook/wxListbook/... and sizes the control to +// fit its pages +class WXDLLEXPORT wxBookCtrl; -class WXDLLEXPORT wxNotebookSizer: public wxSizer +class WXDLLEXPORT wxBookCtrlSizer : public wxSizer { public: - wxNotebookSizer( wxNotebook *nb ); + wxBookCtrlSizer(wxBookCtrl *bookctrl); - void RecalcSizes(); - wxSize CalcMin(); + virtual void RecalcSizes(); + virtual wxSize CalcMin(); - wxNotebook *GetNotebook() const - { return m_notebook; } + wxBookCtrl *GetControl() const { return m_bookctrl; } protected: - wxNotebook *m_notebook; + wxBookCtrl *m_bookctrl; + +private: + DECLARE_CLASS(wxBookCtrlSizer) + DECLARE_NO_COPY_CLASS(wxBookCtrlSizer) +}; + + +#if wxUSE_NOTEBOOK + +// before wxBookCtrl we only had wxNotebookSizer, keep it for backwards +// compatibility +class WXDLLEXPORT wxNotebook; + +class WXDLLEXPORT wxNotebookSizer : public wxBookCtrlSizer +{ +public: + wxNotebookSizer(wxNotebook *nb); + + wxNotebook *GetNotebook() const { return (wxNotebook *)m_bookctrl; } private: - DECLARE_CLASS(wxNotebookSizer); + DECLARE_CLASS(wxNotebookSizer) DECLARE_NO_COPY_CLASS(wxNotebookSizer) }; #endif // wxUSE_NOTEBOOK +#endif // wxUSE_BOOKCTRL + +#endif // __WXSIZER_H__ -#endif - // __WXSIZER_H__