X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dc259b792613550edda31cc6202b42e172e2a240..af8481937288aa79f67b5e7df3caeef5a7824248:/include/wx/sizer.h diff --git a/include/wx/sizer.h b/include/wx/sizer.h index b46b5ec1b7..754daac250 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -1,12 +1,11 @@ ///////////////////////////////////////////////////////////////////////////// // 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 ///////////////////////////////////////////////////////////////////////////// @@ -141,7 +140,7 @@ protected: int m_border; int m_flag; - // If TRUE, then this item is considered in the layout + // If true, then this item is considered in the layout // calculation. Otherwise, it is skipped over. bool m_show; @@ -233,13 +232,13 @@ public: // use Detach instead. wxDEPRECATED( virtual bool Remove( wxWindow *window ) ); virtual bool Remove( wxSizer *sizer ); - virtual bool Remove( size_t index ); + virtual bool Remove( int index ); virtual bool Detach( wxWindow *window ); virtual bool Detach( wxSizer *sizer ); - virtual bool Detach( size_t index ); + virtual bool Detach( int index ); - virtual void Clear( bool delete_windows=FALSE ); + virtual void Clear( bool delete_windows = false ); virtual void DeleteWindows(); void SetMinSize( int width, int height ) @@ -289,16 +288,16 @@ public: // Manage whether individual scene items are considered // in the layout calculations or not. - void Show( wxWindow *window, bool show = TRUE ); - void Show( wxSizer *sizer, bool show = TRUE ); - void Show( size_t index, bool show = TRUE ); + void Show( wxWindow *window, bool show = true ); + void Show( wxSizer *sizer, bool show = true ); + void Show( size_t index, bool show = true ); void Hide( wxSizer *sizer ) - { Show( sizer, FALSE ); } + { Show( sizer, false ); } void Hide( wxWindow *window ) - { Show( window, FALSE ); } + { Show( window, false ); } void Hide( size_t index ) - { Show( index, FALSE ); } + { Show( index, false ); } bool IsShown( wxWindow *window ) const; bool IsShown( wxSizer *sizer ) const; @@ -339,8 +338,8 @@ public: wxGridSizer( int rows, int cols, int vgap, int hgap ); wxGridSizer( int cols, int vgap = 0, int hgap = 0 ); - void RecalcSizes(); - wxSize CalcMin(); + virtual void RecalcSizes(); + virtual wxSize CalcMin(); void SetCols( int cols ) { m_cols = cols; } void SetRows( int rows ) { m_rows = rows; } @@ -370,28 +369,71 @@ private: // wxFlexGridSizer //--------------------------------------------------------------------------- +// the bevaiour for resizing wxFlexGridSizer cells in the "non-flexible" +// direction +enum wxFlexSizerGrowMode +{ + // don't resize the cells in non-flexible direction at all + wxFLEX_GROWMODE_NONE, + + // uniformly resize only the specified ones (default) + wxFLEX_GROWMODE_SPECIFIED, + + // uniformly resize all cells + wxFLEX_GROWMODE_ALL +}; + class WXDLLEXPORT wxFlexGridSizer: public wxGridSizer { public: + // ctors/dtor wxFlexGridSizer( int rows, int cols, int vgap, int hgap ); wxFlexGridSizer( int cols, int vgap = 0, int hgap = 0 ); - ~wxFlexGridSizer(); + virtual ~wxFlexGridSizer(); - void RecalcSizes(); - wxSize CalcMin(); - void AddGrowableRow( size_t idx ); + // set the rows/columns which will grow (the others will remain of the + // constant initial size) + 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 ); -protected: - int *m_rowHeights; - int *m_colWidths; - wxArrayInt m_growableRows; - wxArrayInt m_growableCols; - void CreateArrays(); + // the sizer cells may grow in both directions, not grow at all or only + // grow in one direction but not the other + + // the direction may be wxVERTICAL, wxHORIZONTAL or wxBOTH (default) + void SetFlexibleDirection(int direction) { m_flexDirection = direction; } + int GetFlexibleDirection() const { return m_flexDirection; } + + // note that the grow mode only applies to the direction which is not + // flexible + void SetNonFlexibleGrowMode(wxFlexSizerGrowMode mode) { m_growMode = mode; } + wxFlexSizerGrowMode GetNonFlexibleGrowMode() const { return m_growMode; } + + + // implementation + virtual void RecalcSizes(); + virtual wxSize CalcMin(); + +protected: + // the heights/widths of all rows/columns + wxArrayInt m_rowHeights, + m_colWidths; + + // indices of the growable columns and rows + 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);