~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to src/dialogs/lenmus_dlg_debug.cpp

  • Committer: cecilios
  • Date: 2011-06-12 17:25:18 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:branches/TRY-5.0:687
Initial update for v5.0 first working core using lomse

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//---------------------------------------------------------------------------------------
 
2
//    LenMus Phonascus: The teacher of music
 
3
//    Copyright (c) 2002-2011 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
#include "lenmus_dlg_debug.h"
 
22
 
 
23
#include <wx/wxprec.h>
 
24
#include <wx/wx.h>
 
25
#include <wx/intl.h>
 
26
#include <wx/html/htmlwin.h>
 
27
#include <wx/gdicmn.h>
 
28
#include <wx/font.h>
 
29
#include <wx/colour.h>
 
30
#include <wx/settings.h>
 
31
#include <wx/string.h>
 
32
#include <wx/button.h>
 
33
#include <wx/sizer.h>
 
34
#include <wx/dialog.h>
 
35
 
 
36
 
 
37
namespace lenmus
 
38
{
 
39
 
 
40
// IDs for controls
 
41
enum
 
42
{
 
43
        lmID_HTML_WND = 3010,
 
44
        lmID_ACCEPT,
 
45
        lmID_SAVE,
 
46
};
 
47
 
 
48
 
 
49
BEGIN_EVENT_TABLE(DlgDebug, wxDialog)
 
50
   EVT_BUTTON(wxID_OK, DlgDebug::OnOK)
 
51
   EVT_BUTTON(lmID_SAVE, DlgDebug::OnSave)
 
52
END_EVENT_TABLE()
 
53
 
 
54
IMPLEMENT_CLASS(DlgDebug, wxDialog)
 
55
 
 
56
DlgDebug::DlgDebug(wxWindow * parent, wxString sTitle, wxString sData, bool fSave)
 
57
    : wxDialog(parent, -1, sTitle, wxDefaultPosition, wxSize(800, 430),
 
58
               wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER )
 
59
    , m_fSave(fSave)
 
60
{
 
61
    Centre();
 
62
 
 
63
    wxBoxSizer* pMainSizer = new wxBoxSizer(wxVERTICAL);
 
64
 
 
65
    // use wxTE_RICH2 style to avoid 64kB limit under MSW and display big files
 
66
    // faster than with wxTE_RICH
 
67
    m_pTxtData = new wxTextCtrl(this, wxID_ANY, sData,
 
68
                                wxPoint(0, 0), wxDefaultSize,
 
69
                                wxTE_MULTILINE | wxTE_READONLY | wxTE_NOHIDESEL
 
70
                                | wxTE_RICH2);
 
71
 
 
72
    // use fixed-width font
 
73
    m_pTxtData->SetFont(wxFont(10, wxFONTFAMILY_TELETYPE,
 
74
                               wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
 
75
 
 
76
    pMainSizer->Add(m_pTxtData,
 
77
                    1,            //vertically stretchable
 
78
                    wxEXPAND |    //horizontally stretchable
 
79
                    wxALL,        //some space border all around
 
80
                    5 );          //set border width to 5 px
 
81
 
 
82
    wxBoxSizer* pButtonsSizer = new wxBoxSizer(wxHORIZONTAL);
 
83
 
 
84
    wxButton *cmdOK = new wxButton(this, wxID_OK, _("OK"));
 
85
    pButtonsSizer->Add(cmdOK, 0, 0, 1);
 
86
    cmdOK->SetDefault();
 
87
    cmdOK->SetFocus();
 
88
 
 
89
    if (m_fSave)
 
90
    {
 
91
            wxButton *cmdSave = new wxButton(this, lmID_SAVE, _("Save"));
 
92
 
 
93
            pButtonsSizer->Add(cmdSave, 0, 0, 1);
 
94
    }
 
95
 
 
96
    pMainSizer->Add(pButtonsSizer, 0, wxALIGN_CENTER | wxALL, 5);
 
97
 
 
98
    // set autolayout based on sizers
 
99
    SetAutoLayout(true);
 
100
    SetSizer(pMainSizer);
 
101
}
 
102
 
 
103
DlgDebug::~DlgDebug()
 
104
{
 
105
}
 
106
 
 
107
void DlgDebug::OnOK(wxCommandEvent& WXUNUSED(event))
 
108
{
 
109
   EndModal(wxID_OK);
 
110
}
 
111
 
 
112
void DlgDebug::AppendText(wxString sText)
 
113
{
 
114
    m_pTxtData->AppendText(sText);
 
115
}
 
116
 
 
117
void DlgDebug::OnSave(wxCommandEvent& WXUNUSED(event))
 
118
{
 
119
        wxString sFilename = wxFileSelector(_("File to save"));
 
120
        if ( !sFilename.empty() )
 
121
        {
 
122
                // save the file
 
123
                m_pTxtData->SaveFile(sFilename);
 
124
        }
 
125
        //else: cancelled by user
 
126
 
 
127
}
 
128
 
 
129
 
 
130
 
 
131
//-------------------------------------------------------------------------------------------
 
132
// lmHtmlDlg implementation
 
133
//-------------------------------------------------------------------------------------------
 
134
 
 
135
BEGIN_EVENT_TABLE(lmHtmlDlg, wxDialog)
 
136
    EVT_BUTTON(lmID_ACCEPT, lmHtmlDlg::OnAcceptClicked )
 
137
    EVT_BUTTON(lmID_SAVE, lmHtmlDlg::OnSaveClicked )
 
138
 
 
139
END_EVENT_TABLE()
 
140
 
 
141
 
 
142
 
 
143
lmHtmlDlg::lmHtmlDlg(wxWindow* pParent, const wxString& sTitle, bool fSaveButton)
 
144
    : wxDialog(pParent, wxID_ANY, sTitle, wxDefaultPosition, wxSize(600,400),
 
145
               wxDEFAULT_DIALOG_STYLE)
 
146
{
 
147
    // create the dialog controls
 
148
    CreateControls(fSaveButton);
 
149
    CentreOnScreen();
 
150
}
 
151
 
 
152
void lmHtmlDlg::CreateControls(bool fSaveButton)
 
153
{
 
154
    //AWARE: Code created with wxFormBuilder and copied here.
 
155
    //Modifications:
 
156
    // - near line 178: add 'if' to hide Save button
 
157
 
 
158
    this->SetSizeHints( wxDefaultSize, wxDefaultSize );
 
159
 
 
160
        wxBoxSizer* pMainSizer;
 
161
        pMainSizer = new wxBoxSizer( wxVERTICAL );
 
162
 
 
163
        m_pHtmlWnd = new wxHtmlWindow( this, lmID_HTML_WND, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
 
164
        pMainSizer->Add( m_pHtmlWnd, 1, wxALL|wxEXPAND, 5 );
 
165
 
 
166
        wxBoxSizer* pButtonsSizer;
 
167
        pButtonsSizer = new wxBoxSizer( wxHORIZONTAL );
 
168
 
 
169
        m_pBtnAccept = new wxButton( this, lmID_ACCEPT, _("Accept"), wxDefaultPosition, wxDefaultSize, 0 );
 
170
        pButtonsSizer->Add( m_pBtnAccept, 0, wxALL, 5 );
 
171
 
 
172
 
 
173
        pButtonsSizer->Add( 0, 0, 1, wxEXPAND, 5 );
 
174
 
 
175
    if (fSaveButton)
 
176
    {
 
177
            m_pBtnSave = new wxButton( this, lmID_SAVE, _("Save"), wxDefaultPosition, wxDefaultSize, 0 );
 
178
            pButtonsSizer->Add( m_pBtnSave, 0, wxALL, 5 );
 
179
    }
 
180
 
 
181
        pMainSizer->Add( pButtonsSizer, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
 
182
 
 
183
        this->SetSizer( pMainSizer );
 
184
        this->Layout();
 
185
}
 
186
 
 
187
lmHtmlDlg::~lmHtmlDlg()
 
188
{
 
189
}
 
190
 
 
191
void lmHtmlDlg::OnAcceptClicked(wxCommandEvent& WXUNUSED(event))
 
192
{
 
193
   EndModal(wxID_OK);
 
194
}
 
195
 
 
196
void lmHtmlDlg::OnSaveClicked(wxCommandEvent& WXUNUSED(event))
 
197
{
 
198
        wxString sFilename = wxFileSelector(_("File to save"));
 
199
        if ( !sFilename.empty() )
 
200
        {
 
201
                // save the file
 
202
                //m_pTxtData->SaveFile(sFilename);
 
203
        }
 
204
        //else: cancelled by user
 
205
 
 
206
}
 
207
 
 
208
void lmHtmlDlg::SetContent(const wxString& sContent)
 
209
{
 
210
    m_pHtmlWnd->SetPage(sContent);
 
211
}
 
212
 
 
213
 
 
214
}   // namespace lenmus