added sizers support; allow resizeable wizards (Robert Vazan)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22170 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-07-20 20:48:52 +00:00
parent e066bd132d
commit 07f20d9a63
6 changed files with 489 additions and 166 deletions

View File

@@ -2,7 +2,7 @@
// Name: wizard.cpp
// Purpose: wxWindows sample demonstrating wxWizard control
// Author: Vadim Zeitlin
// Modified by:
// Modified by: Robert Vazan (sizers)
// Created: 15.08.99
// RCS-ID: $Id$
// Copyright: (c) Vadim Zeitlin
@@ -17,11 +17,6 @@
// headers
// ----------------------------------------------------------------------------
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma implementation "wizard.cpp"
#pragma interface "wizard.cpp"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
@@ -29,10 +24,16 @@
#pragma hdrstop
#endif
// for all others, include the necessary headers (this file is usually all you
// need because it includes almost all "standard" wxWindows headers
// for all others, include the necessary headers
#ifndef WX_PRECOMP
#include "wx/wx.h"
#include "wx/stattext.h"
#include "wx/log.h"
#include "wx/app.h"
#include "wx/checkbox.h"
#include "wx/msgdlg.h"
#include "wx/radiobox.h"
#include "wx/menu.h"
#include "wx/sizer.h"
#endif
#include "wx/wizard.h"
@@ -101,6 +102,25 @@ public:
m_bitmap = wxBITMAP(wiztest2);
m_checkbox = new wxCheckBox(this, -1, _T("&Check me"));
wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
mainSizer->Add(
new wxStaticText(this, -1,
_T("You need to check the checkbox\n")
_T("below before going to the next page\n")),
0,
wxALL,
5
);
mainSizer->Add(
m_checkbox,
0, // No stretching
wxALL,
5 // Border
);
SetSizer(mainSizer);
mainSizer->Fit(this);
}
virtual bool TransferDataFromWindow()
@@ -144,10 +164,20 @@ public:
choices[3] = _T("neither");
m_radio = new wxRadioBox(this, -1, _T("Allow to proceed:"),
wxPoint(5, 5), wxDefaultSize,
wxDefaultPosition, wxDefaultSize,
WXSIZEOF(choices), choices,
1, wxRA_SPECIFY_COLS);
m_radio->SetSelection(Both);
wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
mainSizer->Add(
m_radio,
0, // No stretching
wxALL,
5 // Border
);
SetSizer(mainSizer);
mainSizer->Fit(this);
}
// wizard event handlers
@@ -197,12 +227,27 @@ public:
{
m_prev = prev;
m_next = next;
wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
(void)new wxStaticText(this, -1, _T("Try checking the box below and\n")
_T("then going back and clearing it"));
mainSizer->Add(
new wxStaticText(this, -1, _T("Try checking the box below and\n")
_T("then going back and clearing it")),
0, // No vertical stretching
wxALL,
5 // Border width
);
m_checkbox = new wxCheckBox(this, -1, _T("&Skip the next page"),
wxPoint(5, 30));
m_checkbox = new wxCheckBox(this, -1, _T("&Skip the next page"));
mainSizer->Add(
m_checkbox,
0, // No vertical stretching
wxALL,
5 // Border width
);
SetSizer(mainSizer);
mainSizer->Fit(this);
}
// implement wxWizardPage functions
@@ -304,14 +349,17 @@ void MyFrame::OnRunWizard(wxCommandEvent& WXUNUSED(event))
{
wxWizard *wizard = new wxWizard(this, -1,
_T("Absolutely Useless Wizard"),
wxBITMAP(wiztest));
wxBITMAP(wiztest),
wxDefaultPosition,
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);
// a wizard page may be either an object of predefined class
wxWizardPageSimple *page1 = new wxWizardPageSimple(wizard);
wxStaticText *text = new wxStaticText(page1, -1,
_T("This wizard doesn't help you to do anything at all.\n")
_T("This wizard doesn't help you\nto do anything at all.\n")
_T("\n")
_T("The next pages will present you with more useless controls.")
_T("The next pages will present you\nwith more useless controls."),
wxPoint(5,5)
);
wxSize size = text->GetBestSize();
@@ -330,6 +378,8 @@ void MyFrame::OnRunWizard(wxCommandEvent& WXUNUSED(event))
page3->SetPrev(page2);
wizard->SetPageSize(size);
wizard->GetPageAreaSizer()->Add(page1);
if ( wizard->RunWizard(page1) )
{
wxMessageBox(_T("The wizard successfully completed"), _T("That's all"),