X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9cbee2ceee1150b41465d7e7684b186791a032ee..e74563e412a08aa004c5429efed7ef0031c2c1bf:/include/wx/sizer.h?ds=sidebyside diff --git a/include/wx/sizer.h b/include/wx/sizer.h index 5d04854407..b5f0665955 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -61,7 +61,7 @@ public: wxObject* userData ); ~wxSizerItem(); - + virtual void DeleteWindows(); // Enable deleting the SizerItem without destroying the contained sizer. @@ -142,7 +142,7 @@ protected: int m_flag; // If true, then this item is considered in the layout - // calculation. Otherwise, it is skipped over. + // calculation. Otherwise, it is skipped over. bool m_show; // Aspect ratio can always be calculated from m_size, @@ -233,13 +233,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 ) @@ -303,7 +303,7 @@ public: bool IsShown( wxWindow *window ) const; bool IsShown( wxSizer *sizer ) const; bool IsShown( size_t index ) const; - + // Recursively call wxWindow::Show () on all sizer items. void ShowItems (bool show); @@ -339,8 +339,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 +370,67 @@ 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(); + // set the rows/columns which will grow (the others will remain of the + // constant initial size) void AddGrowableRow( size_t idx ); void RemoveGrowableRow( size_t idx ); void AddGrowableCol( size_t idx ); 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; + + // 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);