]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/sizer.h
SourceForge patch #654210 to fix naming/numbering shared libs under OS X
[wxWidgets.git] / include / wx / sizer.h
index ccfb67985b4218f812bda27c0be52275794e93a0..412f6a2f54e7364eb57d6ed6f115329f9ec0e3e7 100644 (file)
@@ -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
@@ -12,7 +12,7 @@
 #ifndef __WXSIZER_H__
 #define __WXSIZER_H__
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
 #pragma interface "sizer.h"
 #endif
 
@@ -47,6 +47,12 @@ public:
     wxSizerItem( wxSizer *sizer, int option, 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();
@@ -78,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; }
@@ -93,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()
@@ -107,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:
@@ -140,10 +155,20 @@ 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();
+
     void SetMinSize( int width, int height )
         { DoSetMinSize( width, height ); }
     void SetMinSize( wxSize size )
@@ -179,14 +204,31 @@ public:
 
     virtual void Layout();
 
-    void Fit( wxWindow *window );
+    wxSize Fit( wxWindow *window );
+    void FitInside( wxWindow *window );
     void SetSizeHints( wxWindow *window );
+    void SetVirtualSizeHints( wxWindow *window );
 
     wxList& GetChildren()
         { return m_children; }
 
     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;
@@ -195,7 +237,10 @@ protected:
 
     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 );
@@ -234,6 +279,9 @@ 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:
@@ -286,6 +334,9 @@ public:
     int GetOrientation()
         { return m_orient; }
 
+    void SetOrientation(int orient)
+        { m_orient = orient; }
+
 protected:
     int m_orient;
     int m_stretchable;