wxWidgets/include/wx/wizard.h

98 lines
3.8 KiB
C
Raw Normal View History

///////////////////////////////////////////////////////////////////////////////
// Name: wizard.h
// Purpose: wxWizard class: a GUI control presenting the user with a
// sequence of dialogs which allows to simply perform some task
// Author: Vadim Zeitlin (partly based on work by Ron Kuris and Kevin B.
// Smith)
// Modified by:
// Created: 15.08.99
// RCS-ID: $Id$
// Copyright: (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// Licence: wxWindows license
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_WIZARD_H_
#define _WX_WIZARD_H_
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#ifndef WX_PRECOMP
#include "wx/dialog.h" // the base class
#include "wx/event.h" // wxEVT_XXX constants
#endif // WX_PRECOMP
// ----------------------------------------------------------------------------
// wxWizard
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxWizard : public wxDialog
{
public:
// create the wizard control
static wxWizard *Create(wxWindow *parent,
int id = -1,
const wxString& title = wxEmptyString,
const wxBitmap& bitmap = wxNullBitmap,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize);
// wizard construction: add/insert new page into it
// adds a page at the end
virtual void AddPage(wxPanel *page) = 0;
// adds a page before the page nPage (the new page will have this index)
virtual void InsertPage(int nPage, wxPanel *page) = 0;
// executes the wizard, returns TRUE if it was successfully finished, FALSE
// if user cancelled it
virtual bool RunWizard() = 0;
// get the current page (NULL if RunWizard() isn't running)
virtual wxPanel *GetCurrentPage() const = 0;
private:
DECLARE_DYNAMIC_CLASS(wxWizard)
};
// ----------------------------------------------------------------------------
// wxWizardEvent class represents an event generated by the wizard
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxWizardEvent : public wxNotifyEvent
{
public:
wxWizardEvent(wxEventType type = wxEVT_NULL, int id = 0);
// get the previously active page or -1 if none
int GetOldPage() const { return m_pageOld; }
// get the current page or -1 if none
int GetPage() const { return m_page; }
private:
int m_pageOld, m_page;
DECLARE_DYNAMIC_CLASS(wxWizardEvent)
};
// ----------------------------------------------------------------------------
// macros for handling wxWizardEvents
// ----------------------------------------------------------------------------
typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&);
// notifies that the page has just been changed
#define EVT_WIZARD_PAGE_CHANGED(id, fn) { wxEVT_WIZARD_PAGE_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL },
// the user pressed "<Back" or "Next>" button and the page is going to be
// changed - unless the event handler vetoes the event
#define EVT_WIZARD_PAGE_CHANGING(id, fn) { wxEVT_WIZARD_PAGE_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL },
// the user pressed "Cancel" button and the wizard is going to be dismissed -
// unless the event handler vetoes the event
#define EVT_WIZARD_CANCEL(id, fn) { wxEVT_WIZARD_CANCEL, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL },
#endif // _WX_WIZARD_H_