]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/tsizer.tex
wxApp decoration to changes list and missed new methods in wxApp section.
[wxWidgets.git] / docs / latex / wx / tsizer.tex
index 766d8189228fc6fc33d4879b77c995426037e6c0..a7c703a8e9444949439fab21274702d9feba6d0e 100644 (file)
@@ -3,7 +3,6 @@
 Classes: \helpref{wxSizer}{wxsizer}, \helpref{wxGridSizer}{wxgridsizer}, 
 \helpref{wxFlexGridSizer}{wxflexgridsizer}, \helpref{wxBoxSizer}{wxboxsizer}, 
 \helpref{wxStaticBoxSizer}{wxstaticboxsizer}, 
-\helpref{wxNotebookSizer}{wxnotebooksizer},
 \helpref{CreateButtonSizer}{createbuttonsizer}
 
 Sizers, as represented by the wxSizer class and its descendants in
@@ -182,14 +181,6 @@ the same dialog as the one above, but using a flex grid sizer:
 \myimage{sizer11.eps}
 \end{center}
 
-\wxheading{wxNotebookSizer}
-
-\helpref{wxNotebookSizer}{wxnotebooksizer} can be used
-with notebooks. It calculates the size of each
-notebook page and sets the size of the notebook to the size
-of the biggest page plus some extra space required for the
-notebook tabs and decorations.
-
 \subsection{Programming with wxBoxSizer}\label{boxsizerprogramming}
 
 The basic idea behind a \helpref{wxBoxSizer}{wxboxsizer} is that windows will most often be laid out in rather
@@ -274,6 +265,50 @@ MyDialog::MyDialog(wxFrame *parent, wxWindowID id, const wxString &title )
 }
 \end{verbatim}
 
+Note that the new way of specifying flags to wxSizer is via \helpref{wxSizerFlags}{wxsizerflags}.  This class greatly eases the burden of passing flags to a wxSizer.
+
+Here's how you'd do the previous example with wxSizerFlags:
+
+\begin{verbatim}
+// we want to get a dialog that is stretchable because it
+// has a text ctrl at the top and two buttons at the bottom
+
+MyDialog::MyDialog(wxFrame *parent, wxWindowID id, const wxString &title )
+        : wxDialog(parent, id, title, wxDefaultPosition, wxDefaultSize,
+                   wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+{
+  wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
+
+  // create text ctrl with minimal size 100x60 that is horizontally and 
+  // vertically stretchable with a border width of 10
+  topsizer->Add(
+    new wxTextCtrl( this, -1, "My text.", wxDefaultPosition, wxSize(100,60), wxTE_MULTILINE),
+    wxSizerFlags(1).Align().Expand().Border(wxALL, 10));
+
+  wxBoxSizer *button_sizer = new wxBoxSizer( wxHORIZONTAL );
+
+  //create two buttons that are horizontally unstretchable, 
+  // with an all-around border with a width of 10 and implicit top alignment
+  button_sizer->Add(
+     new wxButton( this, wxID_OK, "OK" ),
+     wxSizerFlags(0).Align().Border(wxALL, 10));       
+
+  button_sizer->Add(
+     new wxButton( this, wxID_CANCEL, "Cancel" ),
+     wxSizerFlags(0).Align().Border(wxALL, 10));    
+
+  //create a sizer with no border and centered horizontally
+  topsizer->Add(
+     button_sizer,
+     wxSizerFlags(0).Center() ); 
+
+  SetSizer( topsizer );      // use the sizer for layout
+
+  topsizer->SetSizeHints( this );   // set size hints to honour minimum size
+}
+\end{verbatim}
+
+
 \subsection{Programming with wxGridSizer}\label{gridsizerprogramming}
 
 \helpref{wxGridSizer}{wxgridsizer} is a sizer which lays out its children in a two-dimensional
@@ -289,39 +324,6 @@ height and all fields in one column having the same width, but all
 rows or all columns are not necessarily the same height or width as in
 the \helpref{wxGridSizer}{wxgridsizer}.
 
-\subsection{Programming with wxNotebookSizer}\label{notebooksizerprogramming}
-
-\helpref{wxNotebookSizer}{wxnotebooksizer} is a specialized sizer to make sizers work in connection
-with using notebooks. This sizer is different from any other sizer as 
-you must not add any children to it - instead, it queries the notebook class itself.
-The only thing this sizer does is to determine the size of the biggest
-page of the notebook and report an adjusted minimal size to a more toplevel
-sizer.
-
-In order to query the size of notebook page, this page needs to have its
-own sizer, otherwise the wxNotebookSizer will ignore it. Notebook pages
-get their sizer by assigning one to them using \helpref{wxWindow::SetSizer}{wxwindowsetsizer} 
-and setting the auto-layout option to true using 
-\helpref{wxWindow::SetAutoLayout}{wxwindowsetautolayout}. Here is one
-example showing how to add a notebook page that the notebook sizer is
-aware of:
-
-\begin{verbatim}
-    wxNotebook *notebook = new wxNotebook( &dialog, -1 );
-    wxNotebookSizer *nbs = new wxNotebookSizer( notebook );
-
-    // Add panel as notebook page
-    wxPanel *panel = new wxPanel( notebook, -1 );
-    notebook->AddPage( panel, "My Notebook Page" );
-
-    wxBoxSizer *panelsizer = new wxBoxSizer( wxVERTICAL );
-
-    // Add controls to panel and panelsizer here...
-
-    panel->SetAutoLayout( true );
-    panel->SetSizer( panelsizer );
-\end{verbatim}
-
 \subsection{Programming with wxStaticBoxSizer}\label{staticboxsizerprogramming}
 
 \helpref{wxStaticBoxSizer}{wxstaticboxsizer} is a sizer derived from wxBoxSizer but adds a static