+class WXDLLEXPORT wxSizer: public wxObject, public wxClientDataContainer
+{
+public:
+ wxSizer();
+ ~wxSizer();
+
+ // methods for adding elements to the sizer: there are Add/Insert/Prepend
+ // overloads for each of window/sizer/spacer/wxSizerItem
+ inline void Add( wxWindow *window,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Add( wxSizer *sizer,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Add( int width,
+ int height,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Add( wxWindow *window, const wxSizerFlags& flags );
+ inline void Add( wxSizer *sizer, const wxSizerFlags& flags );
+ inline void Add( wxSizerItem *item );
+
+ inline void AddSpacer(int size);
+ inline void AddStretchSpacer(int prop = 1);
+
+ inline void Insert( size_t index,
+ wxWindow *window,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Insert( size_t index,
+ wxSizer *sizer,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Insert( size_t index,
+ int width,
+ int height,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Insert( size_t index,
+ wxWindow *window,
+ const wxSizerFlags& flags );
+ inline void Insert( size_t index,
+ wxSizer *sizer,
+ const wxSizerFlags& flags );
+ virtual void Insert( size_t index, wxSizerItem *item );
+
+ inline void InsertSpacer(size_t index, int size);
+ inline void InsertStretchSpacer(size_t index, int prop = 1);
+
+ inline void Prepend( wxWindow *window,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Prepend( wxSizer *sizer,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Prepend( int width,
+ int height,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL );
+ inline void Prepend( wxWindow *window, const wxSizerFlags& flags );
+ inline void Prepend( wxSizer *sizer, const wxSizerFlags& flags );
+ inline void Prepend( wxSizerItem *item );
+
+ inline void PrependSpacer(int size);
+ inline void PrependStretchSpacer(int prop = 1);
+
+
+ // 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( int index );
+
+ virtual bool Detach( wxWindow *window );
+ virtual bool Detach( wxSizer *sizer );
+ virtual bool Detach( int index );
+
+ 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( 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() const
+ { return m_size; }
+ wxPoint GetPosition() const
+ { return m_position; }
+
+ /* Calculate the minimal size or return m_minSize if bigger. */
+ wxSize GetMinSize();
+
+ virtual void RecalcSizes() = 0;
+ virtual wxSize CalcMin() = 0;
+
+ virtual void Layout();
+
+ wxSize Fit( wxWindow *window );
+ void FitInside( wxWindow *window );
+ void SetSizeHints( wxWindow *window );
+ void SetVirtualSizeHints( wxWindow *window );
+
+ wxSizerItemList& GetChildren()
+ { return m_children; }
+
+ void SetDimension( int x, int y, int width, int height );
+
+ wxSizerItem* GetItem( wxWindow *window, bool recursive = false );
+ wxSizerItem* GetItem( wxSizer *sizer, bool recursive = false );
+ wxSizerItem* GetItem( size_t index );
+
+ // Manage whether individual scene items are considered
+ // in the layout calculations or not.
+ bool Show( wxWindow *window, bool show = true, bool recursive = false );
+ bool Show( wxSizer *sizer, bool show = true, bool recursive = false );
+ bool Show( size_t index, bool show = true );
+
+ bool Hide( wxSizer *sizer, bool recursive = false )
+ { return Show( sizer, false, recursive ); }
+ bool Hide( wxWindow *window, bool recursive = false )
+ { return Show( window, false, recursive ); }
+ bool Hide( size_t index )
+ { return Show( index, false ); }
+
+ bool IsShown( wxWindow *window ) const;
+ bool IsShown( wxSizer *sizer ) const;
+ bool IsShown( size_t index ) const;
+
+ // Recursively call wxWindow::Show () on all sizer items.
+ virtual void ShowItems (bool show);
+
+protected:
+ wxSize m_size;
+ wxSize m_minSize;
+ wxPoint m_position;
+ wxSizerItemList m_children;
+
+ wxSize GetMaxWindowSize( wxWindow *window ) const;
+ wxSize GetMinWindowSize( wxWindow *window );
+ wxSize GetMaxClientSize( wxWindow *window ) const;
+ 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( size_t index, int width, int height );
+
+private:
+ DECLARE_CLASS(wxSizer)
+};
+
+//---------------------------------------------------------------------------
+// wxGridSizer
+//---------------------------------------------------------------------------
+
+class WXDLLEXPORT wxGridSizer: public wxSizer