X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0ca5105b3419d5c808f823c0a63885f07c0d170f..05159a2750ed2cc5945a85bc5fc6849ad1a30e75:/include/wx/sizer.h diff --git a/include/wx/sizer.h b/include/wx/sizer.h index cd92e216b7..412f6a2f54 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -12,7 +12,7 @@ #ifndef __WXSIZER_H__ #define __WXSIZER_H__ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "sizer.h" #endif @@ -50,6 +50,10 @@ public: 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 ); @@ -80,6 +84,8 @@ public: { m_flag = flag; } void SetBorder( int border ) { m_border = border; } + void Show ( bool show ) + { m_show = show; } wxWindow *GetWindow() const { return m_window; } @@ -95,6 +101,8 @@ public: { return m_flag; } int GetBorder() const { return m_border; } + bool IsShown() const + { return m_show; } wxObject* GetUserData() { return m_userData; } wxPoint GetPosition() @@ -109,10 +117,15 @@ protected: int m_option; int m_border; int m_flag; + + // If TRUE, then this item is considered in the layout + // calculation. Otherwise, it is skipped over. + bool m_show; // 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: @@ -142,10 +155,17 @@ public: 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 ); + // Remove will delete a sizer, but not a window. virtual bool Remove( wxWindow *window ); virtual bool Remove( wxSizer *sizer ); virtual bool Remove( int pos ); - + + // Detach will never destroy a sizer or window. + virtual bool Detach( wxWindow *window ) + { return Remove( window ); } + virtual bool Detach( wxSizer *sizer ); + virtual bool Detach( int pos ); + virtual void Clear( bool delete_windows=FALSE ); virtual void DeleteWindows(); @@ -194,6 +214,21 @@ public: void SetDimension( int x, int y, int width, int height ); + // Manage whether individual windows or sub-sizers are considered + // in the layout calculations or not. + void Show( wxWindow *window, bool show = TRUE ); + void Hide( wxWindow *window ) + { Show (window, FALSE); } + void Show( wxSizer *sizer, bool show = TRUE ); + void Hide( wxSizer *sizer ) + { Show (sizer, FALSE); } + + bool IsShown( wxWindow *window ); + bool IsShown( wxSizer *sizer ); + + // Recursively call wxWindow::Show () on all sizer items. + void ShowItems (bool show); + protected: wxSize m_size; wxSize m_minSize; @@ -299,6 +334,9 @@ public: int GetOrientation() { return m_orient; } + void SetOrientation(int orient) + { m_orient = orient; } + protected: int m_orient; int m_stretchable;