X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fc2171bd4c660b8554dae2a1cbf34ff09f3032a6..254973247e32cc07aba5b7331e32c5516cbbe179:/docs/latex/wx/tsizer.tex diff --git a/docs/latex/wx/tsizer.tex b/docs/latex/wx/tsizer.tex index 766d818922..a7c703a8e9 100644 --- a/docs/latex/wx/tsizer.tex +++ b/docs/latex/wx/tsizer.tex @@ -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