///////////////////////////////////////////////////////////////////////////////
-// Name: generic/wizard.h
+// Name: wx/generic/wizard.h
// Purpose: declaration of generic wxWizard class
// Author: Vadim Zeitlin
// Modified by: Robert Vazan (sizers)
// Whether RunWizard() was called
bool m_started;
+ // Whether was modal (modeless has to be destroyed on finish or cancel)
+ bool m_wasModal;
+
// Page area sizer will be inserted here with padding
wxBoxSizer *m_sizerBmpAndPage;
///////////////////////////////////////////////////////////////////////////////
-// Name: generic/wizard.cpp
+// Name: src/generic/wizard.cpp
// Purpose: generic implementation of wxWizard class
// Author: Vadim Zeitlin
// Modified by: Robert Cavanaugh
// generic wxWizard implementation
// ----------------------------------------------------------------------------
-// FIXME: this is a hack
-WX_DEFINE_ARRAY_PTR(wxWizard *, wxModelessWizards);
-static wxModelessWizards modelessWizards;
-
void wxWizard::Init()
{
m_posWizard = wxDefaultPosition;
m_calledSetBorder = false;
m_border = 0;
m_started = false;
- modelessWizards.Add(this);
+ m_wasModal = false;
}
bool wxWizard::Create(wxWindow *parent,
// was created before the 'next' button.
bool isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
- int buttonStyle = isPda ? wxBU_EXACTFIT : 0;
+ int buttonStyle = isPda ? wxBU_EXACTFIT : 0;
wxBoxSizer *buttonRow = new wxBoxSizer(wxHORIZONTAL);
#ifdef __WXMAC__
return;
bool isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
-
+
// Horizontal stretching, and if not PDA, border all around
int mainColumnSizerFlags = isPda ? wxEXPAND : wxALL|wxEXPAND ;
-
+
// wxWindow::SetSizer will be called at end
wxBoxSizer *windowSizer = new wxBoxSizer(wxVERTICAL);
);
AddBitmapRow(mainColumn);
-
+
if (!isPda)
AddStaticLine(mainColumn);
-
+
AddButtonRow(mainColumn);
// wxWindow::SetSizer should be followed by wxWindow::Fit, but
void wxWizard::FinishLayout()
{
bool isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
-
+
// Set to enable wxWizardSizer::GetMaxChildSize
m_started = true;
// can't return false here because there is no old page
(void)ShowPage(firstPage, true /* forward */);
- modelessWizards.Remove(this);
+ m_wasModal = true;
return ShowModal() == wxID_OK;
}
DEFAULT_PAGE_WIDTH = wxSystemSettings::GetMetric(wxSYS_SCREEN_X) / 2;
DEFAULT_PAGE_HEIGHT = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y) / 2;
}
-
+
wxSize totalPageSize(DEFAULT_PAGE_WIDTH,DEFAULT_PAGE_HEIGHT);
totalPageSize.IncTo(m_sizePage);
}
}
- if ( ( modelessWizards.Index(this) != wxNOT_FOUND ) &&
+ if ( ( !m_wasModal ) &&
event.IsAllowed() &&
( event.GetEventType() == wxEVT_WIZARD_FINISHED ||
event.GetEventType() == wxEVT_WIZARD_CANCEL
)
)
{
- modelessWizards.Remove(this);
Destroy();
}
}