summaryrefslogtreecommitdiffstats
path: root/Master/Modellbildung_und_Simulation/Aufgabenblatt1/SineGenerator/src/MainController.cpp
blob: ed602fd040ee84932fdd37cb1d26cdd2323bfa68 (plain)
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);
}