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
- Added wxDocument::Activate() (troelsk).
- Added wxDocManager::FindDocumentByPath() (troelsk).
- Added wxEVT_GRID_COL_AUTO_SIZE event (Igor Korot).
+- Added chainable wxWizardPageSimple::Chain() overload.
wxGTK:
void SetPrev(wxWizardPage *prev) { m_prev = prev; }
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)
{
wxCHECK_RET( first && second,
wxWizardPage *next = NULL,
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.
Example:
wxValidationPage *page4 = new wxValidationPage(this);
// set the page order using a convenience function - could also use
- // SetNext/Prev directly as below
- wxWizardPageSimple::Chain(page3, page4);
+ // SetNext/Prev directly as below, but Chain() is shorter, avoids the risk
+ // 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
// it into the chain of pages