~s-cecilio/lenmus/v5.1.x

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//---------------------------------------------------------------------------------------
//    LenMus Phonascus: The teacher of music
//    Copyright (c) 2002-2012 LenMus project
//
//    This program is free software; you can redistribute it and/or modify it under the
//    terms of the GNU General Public License as published by the Free Software Foundation,
//    either version 3 of the License, or (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful, but WITHOUT ANY
//    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
//    PARTICULAR PURPOSE.  See the GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License along with this
//    program. If not, see <http://www.gnu.org/licenses/>.
//
//    For any comment, suggestion or feature request, please contact the manager of
//    the project at cecilios@users.sourceforge.net
//
//---------------------------------------------------------------------------------------

#ifndef __LENMUS_IDFY_CADENCES_CTROL_H__        //to avoid nested includes
#define __LENMUS_IDFY_CADENCES_CTROL_H__

//lenmus
#include "lenmus_standard_header.h"
#include "lenmus_exercise_ctrol.h"
#include "lenmus_cadence.h"

//lomse
#include <lomse_pitch.h>
using namespace lomse;


namespace lenmus
{
class CadencesConstrains;

class IdfyCadencesCtrol : public OneScoreCtrol
{
public:

    // constructor and destructor
    IdfyCadencesCtrol(long dynId, ApplicationScope& appScope, DocumentWindow* pCanvas);

    ~IdfyCadencesCtrol();

    //implementation of virtual pure in parent EBookCtrol
    void get_ctrol_options_from_params();
    void set_problem_space();

    //implementation of virtual methods
    void initialize_strings();
    void initialize_ctrol();
    void create_answer_buttons(LUnits height, LUnits spacing);
    void prepare_aux_score(int nButton);
    wxString set_new_problem();
    wxDialog* get_settings_dialog();
    void on_settings_changed();


private:
    wxString prepare_score(EClefExercise nClef, ECadenceType nType, ImoScore** pProblemScore,
                          ImoScore** pSolutionScore = NULL );
    int DisplayButton(int iBt, ECadenceType iStartC, ECadenceType iEndC, wxString sButtonLabel);

        // member variables

    enum {
        k_num_cols = 5,
        k_num_rows = 1,
        k_num_buttons = 5,     // NUM_COLS * NUM_ROWS;
    };

    CadencesConstrains* m_pConstrains;       //constraints for the exercise

    //problem asked
    EKeySignature  m_nKey;

    //answer
    ImoButton*       m_pAnswerButton[k_num_buttons];     //buttons for the answers
    //cadence that corresponds to each valid button
    ECadenceType  m_nStartCadence[k_num_buttons];
    ECadenceType  m_nEndCadence[k_num_buttons];

    //DECLARE_EVENT_TABLE()
};


}   // namespace lenmus

#endif  // __LENMUS_IDFY_CADENCES_CTROL_H__