added wxWizard::Fit()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15679 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -137,13 +137,18 @@ also \helpref{GetBitmap}{wxwizardpagegetbitmap}.}
|
|||||||
\docparam{pos}{The position of the dialog, it will be centered on the screen
|
\docparam{pos}{The position of the dialog, it will be centered on the screen
|
||||||
by default.}
|
by default.}
|
||||||
|
|
||||||
\membersection{wxWizard::RunWizard}\label{wxwizardrunwizard}
|
\membersection{wxWizard::Fit}\label{wxwizardfit}
|
||||||
|
|
||||||
\func{bool}{RunWizard}{\param{wxWizardPage* }{firstPage}}
|
\func{void}{Fit}{\param{const wxWizardPage* }{firstPage}}
|
||||||
|
|
||||||
Executes the wizard starting from the given page, returns {\tt TRUE} if it was
|
Sets the page size to be big enough for all the pages accessible via the
|
||||||
successfully finished or {\tt FALSE} if user cancelled it. The {\it firstPage}
|
given {\it firstPage}, i.e. this page, its next page and so on.
|
||||||
can not be {\tt NULL}.
|
|
||||||
|
This method may be called more than once and it will only change the page size
|
||||||
|
if the size required by the new page is bigger than the previously set one.
|
||||||
|
This is useful if the decision about which pages to show is taken during the
|
||||||
|
run-time as in this case, the wizard won't be able to get to all pages starting
|
||||||
|
from a single one and you should call {\it Fit} separately for the others.
|
||||||
|
|
||||||
\membersection{wxWizard::GetCurrentPage}\label{wxwizardgetcurrentpage}
|
\membersection{wxWizard::GetCurrentPage}\label{wxwizardgetcurrentpage}
|
||||||
|
|
||||||
@@ -158,6 +163,14 @@ Get the current page while the wizard is running. {\tt NULL} is returned if
|
|||||||
|
|
||||||
Returns the size available for the pages.
|
Returns the size available for the pages.
|
||||||
|
|
||||||
|
\membersection{wxWizard::RunWizard}\label{wxwizardrunwizard}
|
||||||
|
|
||||||
|
\func{bool}{RunWizard}{\param{wxWizardPage* }{firstPage}}
|
||||||
|
|
||||||
|
Executes the wizard starting from the given page, returns {\tt TRUE} if it was
|
||||||
|
successfully finished or {\tt FALSE} if user cancelled it. The {\it firstPage}
|
||||||
|
can not be {\tt NULL}.
|
||||||
|
|
||||||
\membersection{wxWizard::SetPageSize}\label{wxwizardsetpagesize}
|
\membersection{wxWizard::SetPageSize}\label{wxwizardsetpagesize}
|
||||||
|
|
||||||
\func{void}{SetPageSize}{\param{const wxSize\& }{sizePage}}
|
\func{void}{SetPageSize}{\param{const wxSize\& }{sizePage}}
|
||||||
|
@@ -47,6 +47,7 @@ public:
|
|||||||
virtual wxWizardPage *GetCurrentPage() const;
|
virtual wxWizardPage *GetCurrentPage() const;
|
||||||
virtual void SetPageSize(const wxSize& size);
|
virtual void SetPageSize(const wxSize& size);
|
||||||
virtual wxSize GetPageSize() const;
|
virtual wxSize GetPageSize() const;
|
||||||
|
virtual void Fit(const wxWizardPage *firstPage);
|
||||||
|
|
||||||
// implementation only from now on
|
// implementation only from now on
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
|
@@ -177,6 +177,15 @@ public:
|
|||||||
// get the size available for the page: the wizards are not resizeable, so
|
// get the size available for the page: the wizards are not resizeable, so
|
||||||
// this size doesn't change
|
// this size doesn't change
|
||||||
virtual wxSize GetPageSize() const = 0;
|
virtual wxSize GetPageSize() const = 0;
|
||||||
|
|
||||||
|
// set the best size for the wizard, i.e. make it big enough to contain all
|
||||||
|
// of the pages starting from the given one
|
||||||
|
//
|
||||||
|
// this function may be called several times and possible with different
|
||||||
|
// pages in which case it will only increase the page size if needed (this
|
||||||
|
// may be useful if not all pages are accessible from the first one by
|
||||||
|
// default)
|
||||||
|
virtual void Fit(const wxWizardPage *firstPage) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// include the real class declaration
|
// include the real class declaration
|
||||||
|
@@ -280,6 +280,32 @@ void wxWizard::SetPageSize(const wxSize& size)
|
|||||||
m_sizePage = size;
|
m_sizePage = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxWizard::Fit(const wxWizardPage *page)
|
||||||
|
{
|
||||||
|
// otherwise it will have no effect now as it's too late...
|
||||||
|
wxASSERT_MSG( !WasCreated(), _T("should be called before RunWizard()!") );
|
||||||
|
|
||||||
|
wxSize sizeMax;
|
||||||
|
while ( page )
|
||||||
|
{
|
||||||
|
wxSize size = page->GetBestSize();
|
||||||
|
|
||||||
|
if ( size.x > sizeMax.x )
|
||||||
|
sizeMax.x = size.x;
|
||||||
|
|
||||||
|
if ( size.y > sizeMax.y )
|
||||||
|
sizeMax.y = size.y;
|
||||||
|
|
||||||
|
page = page->GetNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( sizeMax.x > m_sizePage.x )
|
||||||
|
m_sizePage.x = sizeMax.x;
|
||||||
|
|
||||||
|
if ( sizeMax.y > m_sizePage.y )
|
||||||
|
m_sizePage.y = sizeMax.y;
|
||||||
|
}
|
||||||
|
|
||||||
bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward)
|
bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward)
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( page != m_page, wxT("this is useless") );
|
wxASSERT_MSG( page != m_page, wxT("this is useless") );
|
||||||
|
Reference in New Issue
Block a user