// Created: 15.08.99
// RCS-ID: $Id$
// Copyright: (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence: wxWindows license
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ============================================================================
#include "wx/wizard.h"
-// ----------------------------------------------------------------------------
-// simple types
-// ----------------------------------------------------------------------------
-
-WX_DEFINE_ARRAY(wxPanel *, wxArrayPages);
-
// ----------------------------------------------------------------------------
// event tables and such
// ----------------------------------------------------------------------------
DEFINE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGED)
DEFINE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGING)
DEFINE_EVENT_TYPE(wxEVT_WIZARD_CANCEL)
+DEFINE_EVENT_TYPE(wxEVT_WIZARD_FINISHED)
DEFINE_EVENT_TYPE(wxEVT_WIZARD_HELP)
BEGIN_EVENT_TABLE(wxWizard, wxDialog)
EVT_WIZARD_PAGE_CHANGED(-1, wxWizard::OnWizEvent)
EVT_WIZARD_PAGE_CHANGING(-1, wxWizard::OnWizEvent)
EVT_WIZARD_CANCEL(-1, wxWizard::OnWizEvent)
+ EVT_WIZARD_FINISHED(-1, wxWizard::OnWizEvent)
EVT_WIZARD_HELP(-1, wxWizard::OnWizEvent)
END_EVENT_TABLE()
// margin between "Next >" and "Cancel" buttons
static const int BUTTON_MARGIN = 10;
+ // margin between Back and Next buttons
+#ifdef __WXMAC__
+ static const int BACKNEXT_MARGIN = 10;
+#else
+ static const int BACKNEXT_MARGIN = 0;
+#endif
+
// default width and height of the page
static const int DEFAULT_PAGE_WIDTH = 270;
static const int DEFAULT_PAGE_HEIGHT = 290;
wxSize(m_x + m_width - x, 2));
#endif // wxUSE_STATLINE
- x = m_x + m_width - 3*sizeBtn.x - BUTTON_MARGIN;
+ x = m_x + m_width - 3*sizeBtn.x - BUTTON_MARGIN - BACKNEXT_MARGIN;
y += SEPARATOR_LINE_MARGIN;
if (GetExtraStyle() & wxWIZARD_EX_HELPBUTTON)
m_btnPrev = new wxButton(this, wxID_BACKWARD, _("< &Back"), wxPoint(x, y), sizeBtn);
x += sizeBtn.x;
+ x += BACKNEXT_MARGIN;
+
m_btnNext = new wxButton(this, wxID_FORWARD, _("&Next >"), wxPoint(x, y), sizeBtn);
x += sizeBtn.x + BUTTON_MARGIN;
m_page->Hide();
- btnLabelWasNext = m_page->GetNext() != (wxWizardPage *)NULL;
+ btnLabelWasNext = HasNextPage(m_page);
// Get the bitmap of the previous page (if it exists)
if ( m_page->GetBitmap().Ok() )
{
// terminate successfully
EndModal(wxID_OK);
+ if ( !IsModal() )
+ {
+ wxWizardEvent event(wxEVT_WIZARD_FINISHED, GetId(),FALSE, 0);
+ (void)GetEventHandler()->ProcessEvent(event);
+ }
return TRUE;
}
}
// and update the buttons state
- m_btnPrev->Enable(m_page->GetPrev() != (wxWizardPage *)NULL);
+ m_btnPrev->Enable(HasPrevPage(m_page));
- bool hasNext = m_page->GetNext() != (wxWizardPage *)NULL;
+ bool hasNext = HasNextPage(m_page);
if ( btnLabelWasNext != hasNext )
{
// need to update