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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/*
* MainController.cpp
*
* Created on: 31.03.2011
* Author: sven
*/
#ifndef MAINCONTROLLER_H_
#include "MainController.h"
#endif
#ifndef UTIL_H_
#include "Util.h"
#endif
#ifndef SINEGENERATOR_H_
#include "SineGenerator.h"
#endif
#ifndef _LIBGLADEMM_XML_H
#include <libglademm/xml.h>
#endif
const unsigned short MainController::DEFAULT_FREQUENCY = 400;
const unsigned short MainController::DEFAULT_AMPLITUDE = 100;
const unsigned short MainController::DEFAULT_PHASE = 0;
const unsigned short MainController::DEFAULT_LENGTH = 5;
const char* MainController::DEFAULT_WAVEFILENAME = "test.wav";
const char* MainController::UI_FILENAME="ui/sinegen.glade";
MainController::MainController()
:
mParams(
DEFAULT_FREQUENCY
,DEFAULT_AMPLITUDE
,DEFAULT_PHASE
,DEFAULT_LENGTH
,DEFAULT_WAVEFILENAME
)
,mFreqAdj(static_cast<double>(mParams.getFrequency()),1.0,8000.0)
,mAmpAdj(static_cast<double>(mParams.getAmplitude()),1.0,100.0)
,mPhaseAdj(static_cast<double>(mParams.getPhase()),-180.0,180.0)
,mLengthAdj(static_cast<double>(mParams.getLength()),1.0,60.0)
{
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(UI_FILENAME);
builder->get_widget("mainwindow",mPtrMainWin);
builder->get_widget("freqField",mPtrFreqField);
builder->get_widget("ampField",mPtrAmpField);
builder->get_widget("phaseField",mPtrPhaseField);
builder->get_widget("lenField",mPtrLengthField);
builder->get_widget("bitrateentry",mPtrBitrateEntry);
builder->get_widget("samplerateentry",mPtrSamplerateEntry);
builder->get_widget("filenameentry",mPtrFilenameEntry);
builder->get_widget("startbutton",mPtrStartBtn);
mPtrAmpField->set_adjustment(mAmpAdj);
mPtrFreqField->set_adjustment(mFreqAdj);
mPtrPhaseField->set_adjustment(mPhaseAdj);
mPtrLengthField->set_adjustment(mLengthAdj);
mPtrBitrateEntry->set_text(Util::ToUString(mParams.getBitrate()));
mPtrSamplerateEntry->set_text(Util::ToUString(mParams.getSamplerate()));
mPtrFilenameEntry->set_text(mParams.getFilename());
mPtrMainWin->signal_hide().connect(sigc::ptr_fun(&Gtk::Main::quit));
mPtrStartBtn->signal_clicked().connect(sigc::mem_fun(this,&MainController::on_startbutton_clicked));
mPtrFreqField->signal_value_changed().connect(sigc::mem_fun(this,&MainController::on_freq_changed));
mPtrAmpField->signal_value_changed().connect(sigc::mem_fun(this,&MainController::on_amp_changed));
mPtrPhaseField->signal_value_changed().connect(sigc::mem_fun(this,&MainController::on_phase_changed));
mPtrLengthField->signal_value_changed().connect(sigc::mem_fun(this,&MainController::on_length_changed));
mPtrFilenameEntry->signal_changed().connect(sigc::mem_fun(this,&MainController::on_filename_changed));
}
MainController::~MainController() {
}
void MainController::startApp(Gtk::Main& kit)
{
kit.run(*mPtrMainWin);
}
void MainController::on_startbutton_clicked()
{
SineGenerator gen(mParams);
gen.generateWavefile();
}
void MainController::on_freq_changed()
{
Glib::ustring utxt = mPtrFreqField->get_text();
mParams.setFrequency(Util::ToUShort(utxt));
}
void MainController::on_amp_changed()
{
Glib::ustring buffer = mPtrAmpField->get_text();
mParams.setAmplitude(Util::ToUShort(buffer));
}
void MainController::on_phase_changed()
{
Glib::ustring buffer = mPtrPhaseField->get_text();
mParams.setPhase(Util::ToShort(buffer));
}
void MainController::on_length_changed()
{
Glib::ustring buffer = mPtrLengthField->get_text();
mParams.setLength(Util::ToUShort(buffer));
}
void MainController::on_filename_changed()
{
std::string buffer = mPtrFilenameEntry->get_text().raw();
mParams.setFilename(buffer);
}
|