]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/sizer.h
Make wxTopLevelWindow::GetDefaultSize() public and document it.
[wxWidgets.git] / interface / wx / sizer.h
index 886ba9ddb0d768a8e76365015044fbea02986813..719d4d2c4a6c40f050d6f6018a77a96f25f4003a 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     interface of wxStdDialogButtonSizer
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
@@ -291,13 +291,15 @@ public:
                      wxObject* userData = NULL);
 
     /**
-        Adds non-stretchable space to the sizer.
+        This base function adds non-stretchable space to both the horizontal
+        and vertical orientation of the sizer.
         More readable way of calling:
         @code
         wxSizer::Add(size, size, 0).
         @endcode
+        @see wxBoxSizer::AddSpacer()
     */
-    wxSizerItem* AddSpacer(int size);
+    virtual wxSizerItem *AddSpacer(int size);
 
     /**
         Adds stretchable space to the sizer.
@@ -568,7 +570,7 @@ public:
 
     /**
         Inserts non-stretchable space to the sizer.
-        More readable way of calling wxSizer::Insert(size, size, 0).
+        More readable way of calling wxSizer::Insert(index, size, size).
     */
     wxSizerItem* InsertSpacer(size_t index, int size);
 
@@ -783,35 +785,28 @@ public:
     /**
         Set an item's minimum size by window, sizer, or position.
 
-        The item will be found recursively in the sizer's descendants.
         This function enables an application to set the size of an item after
         initial creation.
 
+        The @a window or @a sizer will be found recursively in the sizer's
+        descendants.
+
         @see wxSizerItem::SetMinSize()
+
+        @return
+            @true if the minimal size was successfully set or @false if the
+            item was not found.
     */
+    //@{
     bool SetItemMinSize(wxWindow* window, int width, int height);
+    bool SetItemMinSize(wxWindow* window, const wxSize& size);
 
-    /**
-        Set an item's minimum size by window, sizer, or position.
-
-        The item will be found recursively in the sizer's descendants.
-        This function enables an application to set the size of an item after
-        initial creation.
-
-        @see wxSizerItem::SetMinSize()
-    */
     bool SetItemMinSize(wxSizer* sizer, int width, int height);
+    bool SetItemMinSize(wxSizer* sizer, const wxSize& size);
 
-    /**
-        Set an item's minimum size by window, sizer, or position.
-
-        The item will be found recursively in the sizer's descendants.
-        This function enables an application to set the size of an item after
-        initial creation.
-
-        @see wxSizerItem::SetMinSize()
-    */
     bool SetItemMinSize(size_t index, int width, int height);
+    bool SetItemMinSize(size_t index, const wxSize& size);
+    //@}
 
     /**
         Call this to give the sizer a minimal size.
@@ -1022,6 +1017,30 @@ public:
     */
     virtual ~wxSizerItem();
 
+    /**
+        Set the window to be tracked by this item.
+
+        The old window isn't deleted as it is now owned by the sizer item.
+    */
+    void AssignWindow(wxWindow *window);
+
+    /**
+        Set the sizer tracked by this item.
+
+        Old sizer, if any, is deleted.
+    */
+    void AssignSizer(wxSizer *sizer);
+
+    //@{
+    /**
+        Set the size of the spacer tracked by this item.
+
+        Old spacer, if any, is deleted.
+    */
+    void AssignSpacer(const wxSize& size);
+    void AssignSpacer(int w, int h) { AssignSpacer(wxSize(w, h)); }
+    //@}
+
     /**
         Calculates the minimum desired size for the item, including any space
         needed by borders.
@@ -1191,13 +1210,17 @@ public:
 
     /**
         Set the sizer tracked by this item.
-        @deprecated @todo provide deprecation description
+
+        @deprecated This function does not free the old sizer which may result
+        in memory leaks, use AssignSizer() which does free it instead.
     */
     void SetSizer(wxSizer* sizer);
 
     /**
         Set the size of the spacer tracked by this item.
-        @deprecated @todo provide deprecation description
+
+        @deprecated This function does not free the old spacer which may result
+        in memory leaks, use AssignSpacer() which does free it instead.
     */
     void SetSpacer(const wxSize& size);
 
@@ -1437,17 +1460,7 @@ public:
     /**
         wxFlexGridSizer constructors.
 
-        Usually only the number of columns in the flex grid sizer needs to be
-        specified using @a cols argument. The number of rows will be deduced
-        automatically depending on the number of the elements added to the
-        sizer. If the number of @a rows is explicitly specified (and not zero),
-        the sizer will check that it no more than @code cols*rows @endcode
-        elements are added to it.
-
-        The @a gap (or @a vgap and @a hgap, which correspond to the height and
-        width of the wxSize object) argument defines the size of the padding
-        between the rows (its vertical component, or @a vgap) and columns
-        (its horizontal component, or @a hgap), in pixels.
+        Please see wxGridSizer::wxGridSizer documentation.
 
         @since 2.9.1 (except for the four argument overload)
     */
@@ -1590,18 +1603,27 @@ public:
     /**
         wxGridSizer constructors.
 
-        Usually only the number of columns in the grid sizer needs to be
+        Usually only the number of columns in the flex grid sizer needs to be
         specified using @a cols argument. The number of rows will be deduced
         automatically depending on the number of the elements added to the
-        sizer. If the number of @a rows is explicitly specified (and not zero),
-        the sizer will check that it no more than @code cols*rows @endcode
-        elements are added to it.
+        sizer.
+
+        If a constructor form with @a rows parameter is used (and the value of
+        @a rows argument is not zero, meaning "unspecified") the sizer will
+        check that no more than @c cols*rows elements are added to it, i.e.
+        that no more than the given number of @a rows is used. Adding less than
+        maximally allowed number of items is not an error however.
+
+        Finally, it is also possible to specify the number of rows and use 0
+        for @a cols. In this case, the sizer will use the given fixed number of
+        rows and as many columns as necessary.
 
-        The @a gap (or @a vgap and @a hgap, which correspond to @c y and @c x
-        fields of the wxSize object) argument defines the size of the padding
-        between the grid rows (its vertical component, or @a vgap) and columns
+        The @a gap (or @a vgap and @a hgap, which correspond to the height and
+        width of the wxSize object) argument defines the size of the padding
+        between the rows (its vertical component, or @a vgap) and columns
         (its horizontal component, or @a hgap), in pixels.
 
+
         @since 2.9.1 (except for the four argument overload)
     */
     wxGridSizer( int cols, int vgap, int hgap );
@@ -1612,19 +1634,49 @@ public:
     //@}
 
     /**
-        Returns the number of columns in the sizer.
+        Returns the number of columns that has been specified for the
+        sizer.
+
+        Returns zero if the sizer is automatically adjusting the number of
+        columns depending on number of its children. To get the effective
+        number of columns or rows being currently used, see GetEffectiveColsCount()
     */
     int GetCols() const;
+    
+    /**
+        Returns the number of rows that has been specified for the
+        sizer.
+
+        Returns zero if the sizer is automatically adjusting the number of
+        rows depending on number of its children. To get the effective
+        number of columns or rows being currently used, see GetEffectiveRowsCount().
+    */
+    int GetRows() const;
 
     /**
-        Returns the horizontal gap (in pixels) between cells in the sizer.
+        Returns the number of columns currently used by the sizer.
+
+        This will depend on the number of children the sizer has if
+        the sizer is automatically adjusting the number of columns/rows.
+
+        @since 2.9.1
     */
-    int GetHGap() const;
+    int GetEffectiveColsCount() const;
+    
+    /**
+        Returns the number of rows currently used by the sizer.
+
+        This will depend on the number of children the sizer has if
+        the sizer is automatically adjusting the number of columns/rows.
+
+        @since 2.9.1
+    */
+    int GetEffectiveRowsCount() const;
 
     /**
-        Returns the number of rows in the sizer.
+        Returns the horizontal gap (in pixels) between cells in the sizer.
     */
-    int GetRows() const;
+    int GetHGap() const;
 
     /**
         Returns the vertical gap (in pixels) between the cells in the sizer.
@@ -1737,6 +1789,22 @@ public:
     */
     wxBoxSizer(int orient);
 
+    /**
+        Adds non-stretchable space to the main orientation of the sizer only.
+        More readable way of calling:
+        @code
+        if ( wxBoxSizer::IsVertical() )
+        {
+            wxBoxSizer::Add(0, size, 0).
+        }
+        else
+        {
+            wxBoxSizer::Add(size, 0, 0).
+        }
+        @endcode
+    */
+    virtual wxSizerItem *AddSpacer(int size);
+
     /**
         Implements the calculation of a box sizer's minimal.