Added chainable wxWizardPageSimple::Chain() overload.
Add the simplest and most fool proof of chaining the pages in static wizards: just chain several calls to the new, non-static, wxWizardPageSimple::Chain() overload. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73806 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -628,6 +628,7 @@ All (GUI):
|
|||||||
- Added wxDocument::Activate() (troelsk).
|
- Added wxDocument::Activate() (troelsk).
|
||||||
- Added wxDocManager::FindDocumentByPath() (troelsk).
|
- Added wxDocManager::FindDocumentByPath() (troelsk).
|
||||||
- Added wxEVT_GRID_COL_AUTO_SIZE event (Igor Korot).
|
- Added wxEVT_GRID_COL_AUTO_SIZE event (Igor Korot).
|
||||||
|
- Added chainable wxWizardPageSimple::Chain() overload.
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
|
@@ -147,7 +147,15 @@ public:
|
|||||||
void SetPrev(wxWizardPage *prev) { m_prev = prev; }
|
void SetPrev(wxWizardPage *prev) { m_prev = prev; }
|
||||||
void SetNext(wxWizardPage *next) { m_next = next; }
|
void SetNext(wxWizardPage *next) { m_next = next; }
|
||||||
|
|
||||||
// a convenience function to make the pages follow each other
|
// Convenience functions to make the pages follow each other without having
|
||||||
|
// to call their SetPrev() or SetNext() explicitly.
|
||||||
|
wxWizardPageSimple& Chain(wxWizardPageSimple* next)
|
||||||
|
{
|
||||||
|
SetNext(next);
|
||||||
|
next->SetPrev(this);
|
||||||
|
return *next;
|
||||||
|
}
|
||||||
|
|
||||||
static void Chain(wxWizardPageSimple *first, wxWizardPageSimple *second)
|
static void Chain(wxWizardPageSimple *first, wxWizardPageSimple *second)
|
||||||
{
|
{
|
||||||
wxCHECK_RET( first && second,
|
wxCHECK_RET( first && second,
|
||||||
|
@@ -226,6 +226,28 @@ public:
|
|||||||
wxWizardPage *next = NULL,
|
wxWizardPage *next = NULL,
|
||||||
const wxBitmap& bitmap = wxNullBitmap);
|
const wxBitmap& bitmap = wxNullBitmap);
|
||||||
|
|
||||||
|
/**
|
||||||
|
A helper chaining this page with the next one.
|
||||||
|
|
||||||
|
Notice that this method returns a reference to the next page, so the
|
||||||
|
calls to it can, in turn, be chained:
|
||||||
|
|
||||||
|
@code
|
||||||
|
wxWizardPageSimple* firstPage = new FirstPage;
|
||||||
|
(*firstPage).Chain(new SecondPage)
|
||||||
|
.Chain(new ThirdPage)
|
||||||
|
.Chain(new LastPage);
|
||||||
|
@endcode
|
||||||
|
|
||||||
|
This makes this method the simplest way to define the order of changes
|
||||||
|
in fully static wizards, i.e. in those where the order doesn't depend
|
||||||
|
on the choices made by the user in the wizard pages during run-time.
|
||||||
|
|
||||||
|
@param next A non-@NULL pointer to the next page.
|
||||||
|
@return Reference to @a next on which Chain() can be called again.
|
||||||
|
|
||||||
|
@since 2.9.5
|
||||||
|
*/
|
||||||
/**
|
/**
|
||||||
A convenience function to make the pages follow each other.
|
A convenience function to make the pages follow each other.
|
||||||
Example:
|
Example:
|
||||||
|
@@ -414,8 +414,10 @@ MyWizard::MyWizard(wxFrame *frame, bool useSizer)
|
|||||||
wxValidationPage *page4 = new wxValidationPage(this);
|
wxValidationPage *page4 = new wxValidationPage(this);
|
||||||
|
|
||||||
// set the page order using a convenience function - could also use
|
// set the page order using a convenience function - could also use
|
||||||
// SetNext/Prev directly as below
|
// SetNext/Prev directly as below, but Chain() is shorter, avoids the risk
|
||||||
wxWizardPageSimple::Chain(page3, page4);
|
// of an error and can itself be chained, e.g. you could write
|
||||||
|
// page3.Chain(page4).Chain(page5) and so on.
|
||||||
|
page3->Chain(page4);
|
||||||
|
|
||||||
// this page is not a wxWizardPageSimple, so we use SetNext/Prev to insert
|
// this page is not a wxWizardPageSimple, so we use SetNext/Prev to insert
|
||||||
// it into the chain of pages
|
// it into the chain of pages
|
||||||
|
Reference in New Issue
Block a user