From 749bb9f1291c3c967a25cbbd9aed98a89f7e1511 Mon Sep 17 00:00:00 2001
From: Dimitri Schoolwerth <dimitri.schoolwerth@gmail.com>
Date: Sun, 25 Jul 2004 16:37:48 +0000
Subject: [PATCH] added shortcut functions AddSpacer and AddStretchSpacer (plus
 Prepend and Insert variants)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28486 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/sizer.tex | 57 ++++++++++++++++++++++++++++++++++++++---
 include/wx/sizer.h      | 11 +++++++-
 src/common/sizer.cpp    | 30 ++++++++++++++++++++++
 3 files changed, 93 insertions(+), 5 deletions(-)

diff --git a/docs/latex/wx/sizer.tex b/docs/latex/wx/sizer.tex
index fcb072378c..4c0c69cf1a 100644
--- a/docs/latex/wx/sizer.tex
+++ b/docs/latex/wx/sizer.tex
@@ -11,12 +11,12 @@ The layout algorithm used by sizers in wxWidgets is closely related to layout
 in other GUI toolkits, such as Java's AWT, the GTK toolkit or the Qt toolkit. It is
 based upon the idea of the individual subwindows reporting their minimal required
 size and their ability to get stretched if the size of the parent window has changed.
-This will most often mean, that the programmer does not set the original size of
-a dialog in the beginning, rather the dialog will assigned a sizer and this sizer
+This will most often mean that the programmer does not set the original size of
+a dialog in the beginning, rather the dialog will be assigned a sizer and this sizer
 will be queried about the recommended size. The sizer in turn will query its
 children, which can be normal windows, empty space or other sizers, so that
 a hierarchy of sizers can be constructed. Note that wxSizer does not derive from wxWindow
-and thus do not interfere with tab ordering and requires very little resources compared
+and thus does not interfere with tab ordering and requires very little resources compared
 to a real window on screen.
 
 What makes sizers so well fitted for use in wxWidgets is the fact that every control
@@ -31,7 +31,8 @@ capabilities for the various virtual methods.}
 
 \wxheading{Derived from}
 
-\helpref{wxObject}{wxobject}
+\helpref{wxObject}{wxobject}\\
+\helpref{wxClientDataContainer}{wxclientdatacontainer}
 
 \wxheading{See also}
 
@@ -138,6 +139,22 @@ item, for use in derived classes when sizing information is more
 complex than the {\it proportion} and {\it flag} will allow for.}
 
 
+\membersection{wxSizer::AddSpacer}\label{wxsizeraddspacer}
+
+\func{void}{AddSpacer}{\param{int }{size}}
+
+Adds non-stretchable space to the sizer. More readable way of calling
+\helpref{Add}{wxsizeradd}(size, size, 0).
+
+
+\membersection{wxSizer::AddStretchSpacer}\label{wxsizeraddstretchspacer}
+
+\func{void}{AddStretchSpacer}{\param{int }{prop = 1}}
+
+Adds stretchable space to the sizer. More readable way of calling
+\helpref{Add}{wxsizeradd}(0, 0, prop).
+
+
 \membersection{wxSizer::CalcMin}\label{wxsizercalcmin}
 
 \func{wxSize}{CalcMin}{\void}
@@ -231,6 +248,22 @@ Insert a child into the sizer before any existing item at {\it index}.
 See \helpref{wxSizer::Add}{wxsizeradd} for the meaning of the other parameters.
 
 
+\membersection{wxSizer::InsertSpacer}\label{wxsizerinsertspacer}
+
+\func{void}{InsertSpacer}{\param{size\_t }{index}, \param{int }{size}}
+
+Inserts non-stretchable space to the sizer. More readable way of calling
+\helpref{Insert}{wxsizerinsert}(size, size, 0).
+
+
+\membersection{wxSizer::InsertStretchSpacer}\label{wxsizerinsertstretchspacer}
+
+\func{void}{InsertStretchSpacer}{\param{size\_t }{index}, \param{int }{prop = 1}}
+
+Inserts stretchable space to the sizer. More readable way of calling
+\helpref{Insert}{wxsizerinsert}(0, 0, prop).
+
+
 \membersection{wxSizer::Layout}\label{wxsizerlayout}
 
 \func{void}{Layout}{\void}
@@ -252,6 +285,22 @@ Same as \helpref{wxSizer::Add}{wxsizeradd}, but prepends the items to the beginn
 list of items (windows, subsizers or spaces) owned by this sizer.
 
 
+\membersection{wxSizer::PrependSpacer}\label{wxsizerprependspacer}
+
+\func{void}{PrependSpacer}{\param{int }{size}}
+
+Prepends non-stretchable space to the sizer. More readable way of calling
+\helpref{Prepend}{wxsizerprepend}(size, size, 0).
+
+
+\membersection{wxSizer::PrependStretchSpacer}\label{wxsizerprependstretchspacer}
+
+\func{void}{PrepentStretchSpacer}{\param{int }{prop = 1}}
+
+Prepends stretchable space to the sizer. More readable way of calling
+\helpref{Prepend}{wxsizerprepend}(0, 0, prop).
+
+
 \membersection{wxSizer::RecalcSizes}\label{wxsizerrecalcsizes}
 
 \func{void}{RecalcSizes}{\void}
diff --git a/include/wx/sizer.h b/include/wx/sizer.h
index f1dbcdf465..ade5aea748 100644
--- a/include/wx/sizer.h
+++ b/include/wx/sizer.h
@@ -198,6 +198,9 @@ public:
                       wxObject* userData = NULL );
     virtual void Add( wxSizerItem *item );
 
+    virtual void AddSpacer(int size);
+    virtual void AddStretchSpacer(int prop = 1);
+
     virtual void Insert( size_t index,
                          wxWindow *window,
                          int proportion = 0,
@@ -220,6 +223,9 @@ public:
     virtual void Insert( size_t index,
                          wxSizerItem *item );
 
+    virtual void InsertSpacer(size_t index, int size);
+    virtual void InsertStretchSpacer(size_t index, int prop = 1);
+
     virtual void Prepend( wxWindow *window,
                           int proportion = 0,
                           int flag = 0,
@@ -238,6 +244,9 @@ public:
                           wxObject* userData = NULL );
     virtual void Prepend( wxSizerItem *item );
 
+    virtual void PrependSpacer(int size);
+    virtual 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 ) );
@@ -549,7 +558,7 @@ public:
 
 protected:
     // this protected ctor lets us mark the real one above as deprecated
-    // and still has warning-free build of the library itself:
+    // and still have warning-free build of the library itself:
     wxBookCtrlSizer() {}
     
     wxBookCtrl *m_bookctrl;
diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp
index f21543c120..b171d66ae5 100644
--- a/src/common/sizer.cpp
+++ b/src/common/sizer.cpp
@@ -366,6 +366,16 @@ void wxSizer::Add( wxSizerItem *item )
         item->GetWindow()->SetContainingSizer( this );
 }
 
+void wxSizer::AddSpacer(int size)
+{
+    Add(size, size);
+}
+
+void wxSizer::AddStretchSpacer(int prop)
+{
+    Add(0, 0, prop);
+}
+
 void wxSizer::Prepend( wxWindow *window, int proportion, int flag, int border, wxObject* userData )
 {
     m_children.Insert( new wxSizerItem( window, proportion, flag, border, userData ) );
@@ -390,6 +400,16 @@ void wxSizer::Prepend( wxSizerItem *item )
         item->GetWindow()->SetContainingSizer( this );
 }
 
+void wxSizer::PrependSpacer(int size)
+{
+    Prepend(size, size);
+}
+
+void wxSizer::PrependStretchSpacer(int prop)
+{
+    Prepend(0, 0, prop);
+}
+
 void wxSizer::Insert( size_t index,
                       wxWindow *window,
                       int proportion,
@@ -433,6 +453,16 @@ void wxSizer::Insert( size_t index, wxSizerItem *item )
         item->GetWindow()->SetContainingSizer( this );
 }
 
+void wxSizer::InsertSpacer(size_t index, int size)
+{
+    Insert(index, size, size);
+}
+
+void wxSizer::InsertStretchSpacer(size_t index, int prop)
+{
+    Insert(index, 0, 0, prop);
+}
+
 bool wxSizer::Remove( wxWindow *window )
 {
     return Detach( window );
-- 
2.45.2

