X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..267484bc4fb1ce9a5da47cb496e9a8db04bfae96:/include/wx/sizer.h diff --git a/include/wx/sizer.h b/include/wx/sizer.h index c9ac671daf..d406d059b6 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -2,7 +2,7 @@ // Name: sizer.h // Purpose: provide wxSizer class for layouting // Author: Robert Roebling and Robin Dunn -// Modified by: +// Modified by: Ron Lee // Created: // RCS-ID: $Id$ // Copyright: (c) Robin Dunn, Dirk Holtwick and Robert Roebling @@ -26,13 +26,9 @@ // classes //--------------------------------------------------------------------------- -class wxStaticBox; -class wxNotebook; - class wxSizerItem; class wxSizer; class wxBoxSizer; -class wxStaticBoxSizer; //--------------------------------------------------------------------------- // wxSizerItem @@ -40,85 +36,94 @@ class wxStaticBoxSizer; class WXDLLEXPORT wxSizerItem: public wxObject { - DECLARE_CLASS(wxSizerItem); public: - // spacer - wxSizerItem( int width, int height, int option, int flag, int border, wxObject* userData); - - // window - wxSizerItem( wxWindow *window, int option, int flag, int border, wxObject* userData ); - - // subsizer - wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxObject* userData ); - - ~wxSizerItem(); - - virtual wxSize GetSize(); - virtual wxSize CalcMin(); - virtual void SetDimension( wxPoint pos, wxSize size ); - - void SetRatio( int width, int height ) - // if either of dimensions is zero, ratio is assumed to be 1 - // to avoid "divide by zero" errors - { m_ratio = (width && height) ? ((float) width / (float) height) : 1; } - void SetRatio( wxSize size ) - { m_ratio = (size.x && size.y) ? ((float) size.x / (float) size.y) : 1; } - void SetRatio( float ratio ) { m_ratio = ratio; } - float GetRatio() const { return m_ratio; } - - bool IsWindow(); - bool IsSizer(); - bool IsSpacer(); - - void SetInitSize( int x, int y ) - { m_minSize.x = x; m_minSize.y = y; } - void SetOption( int option ) - { m_option = option; } - void SetFlag( int flag ) - { m_flag = flag; } - void SetBorder( int border ) - { m_border = border; } - - wxWindow *GetWindow() const - { return m_window; } - void SetWindow( wxWindow *window ) - { m_window = window; } - wxSizer *GetSizer() const - { return m_sizer; } - void SetSizer( wxSizer *sizer ) - { m_sizer = sizer; } - int GetOption() const - { return m_option; } - int GetFlag() const - { return m_flag; } - int GetBorder() const - { return m_border; } - wxObject* GetUserData() - { return m_userData; } - wxPoint GetPosition() - { return m_pos; } + // spacer + wxSizerItem( int width, int height, int option, int flag, int border, wxObject* userData); + + // window + wxSizerItem( wxWindow *window, int option, int flag, int border, wxObject* userData ); + + // subsizer + wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxObject* userData ); + + ~wxSizerItem(); + + virtual void DeleteWindows(); + + virtual wxSize GetSize(); + virtual wxSize CalcMin(); + virtual void SetDimension( wxPoint pos, wxSize size ); + + wxSize GetMinSize() + { return m_minSize; } + + void SetRatio( int width, int height ) + // if either of dimensions is zero, ratio is assumed to be 1 + // to avoid "divide by zero" errors + { m_ratio = (width && height) ? ((float) width / (float) height) : 1; } + void SetRatio( wxSize size ) + { m_ratio = (size.x && size.y) ? ((float) size.x / (float) size.y) : 1; } + void SetRatio( float ratio ) + { m_ratio = ratio; } + float GetRatio() const + { return m_ratio; } + + bool IsWindow(); + bool IsSizer(); + bool IsSpacer(); + + void SetInitSize( int x, int y ) + { m_minSize.x = x; m_minSize.y = y; } + void SetOption( int option ) + { m_option = option; } + void SetFlag( int flag ) + { m_flag = flag; } + void SetBorder( int border ) + { m_border = border; } + + wxWindow *GetWindow() const + { return m_window; } + void SetWindow( wxWindow *window ) + { m_window = window; } + wxSizer *GetSizer() const + { return m_sizer; } + void SetSizer( wxSizer *sizer ) + { m_sizer = sizer; } + int GetOption() const + { return m_option; } + int GetFlag() const + { return m_flag; } + int GetBorder() const + { return m_border; } + wxObject* GetUserData() + { return m_userData; } + wxPoint GetPosition() + { return m_pos; } protected: - wxWindow *m_window; - wxSizer *m_sizer; - wxSize m_size; - wxPoint m_pos; - wxSize m_minSize; - int m_option; - int m_border; - int m_flag; - // als: aspect ratio can always be calculated from m_size, - // but this would cause precision loss when the window - // is shrinked. it is safer to preserve initial value. - float m_ratio; - wxObject *m_userData; + wxWindow *m_window; + wxSizer *m_sizer; + wxSize m_size; + wxPoint m_pos; + wxSize m_minSize; + int m_option; + int m_border; + int m_flag; + // als: aspect ratio can always be calculated from m_size, + // but this would cause precision loss when the window + // is shrinked. it is safer to preserve initial value. + float m_ratio; + wxObject *m_userData; + +private: + DECLARE_CLASS(wxSizerItem); }; //--------------------------------------------------------------------------- // wxSizer //--------------------------------------------------------------------------- -class WXDLLEXPORT wxSizer: public wxObject +class WXDLLEXPORT wxSizer: public wxObject, public wxClientDataContainer { public: wxSizer(); @@ -140,34 +145,37 @@ public: virtual bool Remove( wxWindow *window ); virtual bool Remove( wxSizer *sizer ); virtual bool Remove( int pos ); + + virtual void Clear( bool delete_windows=FALSE ); + virtual void DeleteWindows(); void SetMinSize( int width, int height ) { DoSetMinSize( width, height ); } void SetMinSize( wxSize size ) { DoSetMinSize( size.x, size.y ); } - + /* Searches recursively */ bool SetItemMinSize( wxWindow *window, int width, int height ) { return DoSetItemMinSize( window, width, height ); } bool SetItemMinSize( wxWindow *window, wxSize size ) { return DoSetItemMinSize( window, size.x, size.y ); } - + /* Searches recursively */ bool SetItemMinSize( wxSizer *sizer, int width, int height ) { return DoSetItemMinSize( sizer, width, height ); } bool SetItemMinSize( wxSizer *sizer, wxSize size ) { return DoSetItemMinSize( sizer, size.x, size.y ); } - + bool SetItemMinSize( int pos, int width, int height ) { return DoSetItemMinSize( pos, width, height ); } bool SetItemMinSize( int pos, wxSize size ) { return DoSetItemMinSize( pos, size.x, size.y ); } - + wxSize GetSize() { return m_size; } wxPoint GetPosition() { return m_position; } - + /* Calculate the minimal size or return m_minSize if bigger. */ wxSize GetMinSize(); @@ -177,7 +185,9 @@ public: virtual void Layout(); void Fit( wxWindow *window ); + void FitInside( wxWindow *window ); void SetSizeHints( wxWindow *window ); + void SetVirtualSizeHints( wxWindow *window ); wxList& GetChildren() { return m_children; } @@ -190,13 +200,18 @@ protected: wxPoint m_position; wxList m_children; + wxSize GetMaxWindowSize( wxWindow *window ); wxSize GetMinWindowSize( wxWindow *window ); - + wxSize GetMaxClientSize( wxWindow *window ); + wxSize GetMinClientSize( wxWindow *window ); + wxSize FitSize( wxWindow *window ); + wxSize VirtualFitSize( wxWindow *window ); + virtual void DoSetMinSize( int width, int height ); virtual bool DoSetItemMinSize( wxWindow *window, int width, int height ); virtual bool DoSetItemMinSize( wxSizer *sizer, int width, int height ); virtual bool DoSetItemMinSize( int pos, int width, int height ); - + private: DECLARE_CLASS(wxSizer); }; @@ -210,7 +225,7 @@ class WXDLLEXPORT wxGridSizer: public wxSizer public: wxGridSizer( int rows, int cols, int vgap, int hgap ); wxGridSizer( int cols, int vgap = 0, int hgap = 0 ); - + void RecalcSizes(); wxSize CalcMin(); @@ -222,15 +237,15 @@ public: int GetRows() { return m_rows; } int GetVGap() { return m_vgap; } int GetHGap() { return m_hgap; } - + protected: int m_rows; int m_cols; int m_vgap; int m_hgap; - + void SetItemBounds( wxSizerItem *item, int x, int y, int w, int h ); - + private: DECLARE_CLASS(wxGridSizer); }; @@ -245,10 +260,10 @@ public: wxFlexGridSizer( int rows, int cols, int vgap, int hgap ); wxFlexGridSizer( int cols, int vgap = 0, int hgap = 0 ); ~wxFlexGridSizer(); - + void RecalcSizes(); wxSize CalcMin(); - + void AddGrowableRow( size_t idx ); void RemoveGrowableRow( size_t idx ); void AddGrowableCol( size_t idx ); @@ -259,9 +274,9 @@ protected: int *m_colWidths; wxArrayInt m_growableRows; wxArrayInt m_growableCols; - + void CreateArrays(); - + private: DECLARE_CLASS(wxFlexGridSizer); }; @@ -288,7 +303,7 @@ protected: int m_minHeight; int m_fixedWidth; int m_fixedHeight; - + private: DECLARE_CLASS(wxBoxSizer); }; @@ -297,6 +312,10 @@ private: // wxStaticBoxSizer //--------------------------------------------------------------------------- +#if wxUSE_STATBOX + +class WXDLLEXPORT wxStaticBox; + class WXDLLEXPORT wxStaticBoxSizer: public wxBoxSizer { public: @@ -310,17 +329,21 @@ public: protected: wxStaticBox *m_staticBox; - + private: DECLARE_CLASS(wxStaticBoxSizer); }; +#endif // wxUSE_STATBOX + //--------------------------------------------------------------------------- // wxNotebookSizer //--------------------------------------------------------------------------- #if wxUSE_NOTEBOOK +class WXDLLEXPORT wxNotebook; + class WXDLLEXPORT wxNotebookSizer: public wxSizer { public: @@ -334,12 +357,12 @@ public: protected: wxNotebook *m_notebook; - + private: DECLARE_CLASS(wxNotebookSizer); }; -#endif +#endif // wxUSE_NOTEBOOK #endif