X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e5251d4f78176837e2eb857fae246435207ccaf2..6dd16e4f26490f1f4f2be1204840cbf4ecf74a35:/include/wx/sizer.h?ds=sidebyside diff --git a/include/wx/sizer.h b/include/wx/sizer.h index 76b3f14090..3c41d70a55 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -6,13 +6,14 @@ // Created: // RCS-ID: $Id$ // Copyright: (c) Robin Dunn, Dirk Holtwick and Robert Roebling +// (c) 2003, Ron Lee // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef __WXSIZER_H__ #define __WXSIZER_H__ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "sizer.h" #endif @@ -38,24 +39,43 @@ class WXDLLEXPORT wxSizerItem: public wxObject { public: // spacer - wxSizerItem( int width, int height, int option, int flag, int border, wxObject* userData); + wxSizerItem( int width, + int height, + int proportion, + int flag, + int border, + wxObject* userData); // window - wxSizerItem( wxWindow *window, int option, int flag, int border, wxObject* userData ); + wxSizerItem( wxWindow *window, + int proportion, + int flag, + int border, + wxObject* userData ); // subsizer - wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxObject* userData ); + wxSizerItem( wxSizer *sizer, + int proportion, + int flag, + int border, + wxObject* userData ); ~wxSizerItem(); virtual void DeleteWindows(); + // Enable deleting the SizerItem without destroying the contained sizer. + void DetachSizer() + { m_sizer = 0; } + virtual wxSize GetSize(); virtual wxSize CalcMin(); virtual void SetDimension( wxPoint pos, wxSize size ); wxSize GetMinSize() { return m_minSize; } + void SetInitSize( int x, int y ) + { m_minSize.x = x; m_minSize.y = y; } void SetRatio( int width, int height ) // if either of dimensions is zero, ratio is assumed to be 1 @@ -72,14 +92,22 @@ public: 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; } + // Deprecated in 2.6, use {G,S}etProportion instead. + wxDEPRECATED( void SetOption( int option ) ); + wxDEPRECATED( int GetOption() const ); + + void SetProportion( int proportion ) + { m_proportion = proportion; } + int GetProportion() const + { return m_proportion; } void SetFlag( int flag ) { m_flag = flag; } + int GetFlag() const + { return m_flag; } void SetBorder( int border ) { m_border = border; } + int GetBorder() const + { return m_border; } wxWindow *GetWindow() const { return m_window; } @@ -89,12 +117,15 @@ public: { 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; } + const wxSize &GetSpacer() const + { return m_size; } + void SetSpacer( const wxSize &size ) + { m_size = size; m_minSize = size; } + + void Show ( bool show ); + bool IsShown() const + { return m_show; } + wxObject* GetUserData() { return m_userData; } wxPoint GetPosition() @@ -106,19 +137,28 @@ protected: wxSize m_size; wxPoint m_pos; wxSize m_minSize; - int m_option; + int m_proportion; 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. + + // If true, then this item is considered in the layout + // calculation. Otherwise, it is skipped over. + bool m_show; + + // Aspect ratio can always be calculated from m_size, + // but this would cause precision loss when the window + // is shrunk. It is safer to preserve the initial value. float m_ratio; + wxObject *m_userData; -private: - DECLARE_CLASS(wxSizerItem); + DECLARE_DYNAMIC_CLASS(wxSizerItem); + DECLARE_NO_COPY_CLASS(wxSizerItem) }; +WX_DECLARE_EXPORTED_LIST( wxSizerItem, wxSizerItemList ); + + //--------------------------------------------------------------------------- // wxSizer //--------------------------------------------------------------------------- @@ -130,23 +170,75 @@ public: ~wxSizer(); /* These should be called Append() really. */ - virtual void Add( wxWindow *window, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); - virtual void Add( wxSizer *sizer, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); - virtual void Add( int width, int height, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); - - virtual void Insert( int before, wxWindow *window, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); - virtual void Insert( int before, wxSizer *sizer, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); - virtual void Insert( int before, int width, int height, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + virtual void Add( wxWindow *window, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Add( wxSizer *sizer, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Add( int width, + int height, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Add( wxSizerItem *item ); + + virtual void Insert( size_t index, + wxWindow *window, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Insert( size_t index, + wxSizer *sizer, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Insert( size_t index, + int width, + int height, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Insert( size_t index, + wxSizerItem *item ); + + virtual void Prepend( wxWindow *window, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Prepend( wxSizer *sizer, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Prepend( int width, + int height, + int proportion = 0, + int flag = 0, + int border = 0, + wxObject* userData = NULL ); + virtual void Prepend( wxSizerItem *item ); + + // Deprecated in 2.6 since historically it does not delete the window, + // use Detach instead. + wxDEPRECATED( virtual bool Remove( wxWindow *window ) ); + virtual bool Remove( wxSizer *sizer ); + virtual bool Remove( size_t index ); - virtual void Prepend( wxWindow *window, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); - virtual void Prepend( wxSizer *sizer, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); - virtual void Prepend( int width, int height, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + virtual bool Detach( wxWindow *window ); + virtual bool Detach( wxSizer *sizer ); + virtual bool Detach( size_t index ); - virtual bool Remove( wxWindow *window ); - virtual bool Remove( wxSizer *sizer ); - virtual bool Remove( int pos ); - - virtual void Clear( bool delete_windows=FALSE ); + virtual void Clear( bool delete_windows=false ); virtual void DeleteWindows(); void SetMinSize( int width, int height ) @@ -166,10 +258,10 @@ public: 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 ); } + bool SetItemMinSize( size_t index, int width, int height ) + { return DoSetItemMinSize( index, width, height ); } + bool SetItemMinSize( size_t index, wxSize size ) + { return DoSetItemMinSize( index, size.x, size.y ); } wxSize GetSize() { return m_size; } @@ -189,16 +281,36 @@ public: void SetSizeHints( wxWindow *window ); void SetVirtualSizeHints( wxWindow *window ); - wxList& GetChildren() + wxSizerItemList& GetChildren() { return m_children; } void SetDimension( int x, int y, int width, int height ); + // 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 Hide( wxSizer *sizer ) + { Show( sizer, false ); } + void Hide( wxWindow *window ) + { Show( window, false ); } + void Hide( size_t index ) + { Show( index, false ); } + + bool IsShown( wxWindow *window ); + bool IsShown( wxSizer *sizer ); + bool IsShown( size_t index ); + + // Recursively call wxWindow::Show () on all sizer items. + void ShowItems (bool show); + protected: - wxSize m_size; - wxSize m_minSize; - wxPoint m_position; - wxList m_children; + wxSize m_size; + wxSize m_minSize; + wxPoint m_position; + wxSizerItemList m_children; wxSize GetMaxWindowSize( wxWindow *window ); wxSize GetMinWindowSize( wxWindow *window ); @@ -210,10 +322,9 @@ protected: 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 ); + virtual bool DoSetItemMinSize( size_t index, int width, int height ); -private: - DECLARE_CLASS(wxSizer); + DECLARE_DYNAMIC_CLASS(wxSizer); }; //--------------------------------------------------------------------------- @@ -244,10 +355,12 @@ protected: int m_vgap; int m_hgap; + // return the number of total items and the number of columns and rows + int CalcRowsCols(int& rows, int& cols) const; + void SetItemBounds( wxSizerItem *item, int x, int y, int w, int h ); -private: - DECLARE_CLASS(wxGridSizer); + DECLARE_DYNAMIC_CLASS(wxGridSizer); }; //--------------------------------------------------------------------------- @@ -277,8 +390,8 @@ protected: void CreateArrays(); -private: - DECLARE_CLASS(wxFlexGridSizer); + DECLARE_DYNAMIC_CLASS(wxFlexGridSizer); + DECLARE_NO_COPY_CLASS(wxFlexGridSizer) }; //--------------------------------------------------------------------------- @@ -296,6 +409,9 @@ public: int GetOrientation() { return m_orient; } + void SetOrientation(int orient) + { m_orient = orient; } + protected: int m_orient; int m_stretchable; @@ -304,8 +420,7 @@ protected: int m_fixedWidth; int m_fixedHeight; -private: - DECLARE_CLASS(wxBoxSizer); + DECLARE_DYNAMIC_CLASS(wxBoxSizer); }; //--------------------------------------------------------------------------- @@ -330,8 +445,8 @@ public: protected: wxStaticBox *m_staticBox; -private: - DECLARE_CLASS(wxStaticBoxSizer); + DECLARE_DYNAMIC_CLASS(wxStaticBoxSizer); + DECLARE_NO_COPY_CLASS(wxStaticBoxSizer) }; #endif // wxUSE_STATBOX @@ -358,8 +473,8 @@ public: protected: wxNotebook *m_notebook; -private: - DECLARE_CLASS(wxNotebookSizer); + DECLARE_DYNAMIC_CLASS(wxNotebookSizer); + DECLARE_NO_COPY_CLASS(wxNotebookSizer) }; #endif // wxUSE_NOTEBOOK