~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to src/widgets/Wizard.h

  • Committer: cecilios
  • Date: 2012-09-07 17:42:21 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:branches/TRY-5.0:721
initial commit with all changes for 5.1. See changelog

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//--------------------------------------------------------------------------------------
 
2
//    LenMus Phonascus: The teacher of music
 
3
//    Copyright (c) 2002-2010 LenMus project
 
4
//
 
5
//    This program is free software; you can redistribute it and/or modify it under the
 
6
//    terms of the GNU General Public License as published by the Free Software Foundation,
 
7
//    either version 3 of the License, or (at your option) any later version.
 
8
//
 
9
//    This program is distributed in the hope that it will be useful, but WITHOUT ANY
 
10
//    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 
11
//    PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
12
//
 
13
//    You should have received a copy of the GNU General Public License along with this
 
14
//    program. If not, see <http://www.gnu.org/licenses/>.
 
15
//
 
16
//    For any comment, suggestion or feature request, please contact the manager of
 
17
//    the project at cecilios@users.sourceforge.net
 
18
//
 
19
//-------------------------------------------------------------------------------------
 
20
 
 
21
#ifndef __LM_WIZARD_H__        //to avoid nested includes
 
22
#define __LM_WIZARD_H__
 
23
 
 
24
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 
25
#pragma interface "Wizard.cpp"
 
26
#endif
 
27
 
 
28
#include <list>
 
29
 
 
30
#include <wx/wizard.h>
 
31
 
 
32
 
 
33
class lmWizard;
 
34
 
 
35
//-----------------------------------------------------------------------------
 
36
// lmWizardPage: 
 
37
//-----------------------------------------------------------------------------
 
38
 
 
39
class lmWizardPage : public wxWizardPageSimple
 
40
{
 
41
public:
 
42
    lmWizardPage() : wxWizardPageSimple(), m_fOptional(false) {}
 
43
    lmWizardPage(wxWizard *parent);
 
44
 
 
45
    inline bool IsOptional() { return m_fOptional; }
 
46
    inline void SetOptional(bool fValue) { m_fOptional = fValue; }
 
47
 
 
48
    virtual void OnEnterPage() {}
 
49
 
 
50
    wxWizard* GetParentWizard() { return m_pParent; }
 
51
 
 
52
private:
 
53
    wxWizard*   m_pParent;
 
54
    bool        m_fOptional;
 
55
 
 
56
};
 
57
 
 
58
 
 
59
//-----------------------------------------------------------------------------------
 
60
// lmWizard: A wizard with optional pages
 
61
//-----------------------------------------------------------------------------------
 
62
 
 
63
class lmWizard : public wxDialog
 
64
{
 
65
public:
 
66
    lmWizard(wxWindow *parent, int id = wxID_ANY, const wxString& title = wxEmptyString,
 
67
             const wxPoint& pos = wxDefaultPosition, 
 
68
             const wxSize& size = wxDefaultSize,
 
69
             long style = wxDEFAULT_DIALOG_STYLE);
 
70
    virtual ~lmWizard();
 
71
 
 
72
    //adding pages
 
73
    void AddPage(lmWizardPage* pPage, bool fOptional=false);
 
74
 
 
75
    void Run();
 
76
 
 
77
    virtual bool HasNextPage(lmWizardPage* page)
 
78
        { return page->GetNext() != NULL; }
 
79
 
 
80
    virtual bool HasPrevPage(lmWizardPage* page)
 
81
        { return page->GetPrev() != NULL; }
 
82
 
 
83
    virtual bool IsOptional(lmWizardPage* page)
 
84
        { return ((lmWizardPage*)page)->IsOptional(); }
 
85
 
 
86
    //buttons
 
87
    void EnableButtonNext(bool fEnable);
 
88
    void EnableButtonPrev(bool fEnable);
 
89
 
 
90
 
 
91
private:
 
92
    void CreateControls();
 
93
    void UpdateButtons();
 
94
    void FinishWizard();
 
95
 
 
96
    // event handlers
 
97
    void OnCancel(wxCommandEvent& event);
 
98
    void OnPageButton(wxCommandEvent& event);
 
99
    void OnHelp(wxCommandEvent& event);
 
100
 
 
101
    void OnWizardEvent(wxWizardEvent& event);
 
102
 
 
103
    // show the prev/next page, but call TransferDataFromWindow on the current
 
104
    // page first and return false without changing the page if
 
105
    // TransferDataFromWindow() returns false - otherwise, returns true
 
106
    bool ShowPage(lmWizardPage* pPage, bool fGoingFwd = true);
 
107
 
 
108
 
 
109
    
 
110
    wxBoxSizer*     m_pWindowSizer;   //sizer item for page panel
 
111
    wxPoint         m_posWizard;    //dialog position from the ctor
 
112
 
 
113
    // wizard state
 
114
    lmWizardPage*   m_pCurPage;         //current page or NULL
 
115
 
 
116
    // wizard controls
 
117
    wxButton*       m_pBtnPrev;      //"<Back" button
 
118
    wxButton*       m_pBtnNext;      //"Next>" button
 
119
    wxButton*       m_pBtnFinish;   //"Finish" button
 
120
 
 
121
    lmWizardPage*   m_pFirstPage;
 
122
    lmWizardPage*   m_pLastPage;
 
123
 
 
124
    DECLARE_EVENT_TABLE()
 
125
};
 
126
 
 
127
 
 
128
#endif  // __LM_WIZARD_H__