summaryrefslogtreecommitdiffstats
path: root/Master/Modellbildung_und_Simulation/Aufgabenblatt1/Quantization/src/QuantizationController.cpp
blob: 47196bde7c9c66eafc0b6ac2a2b9999d7a2600dd (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
/*
 * QuantizationController.cpp
 *
 *  Created on: 02.04.2011
 *      Author: sven
 */
#ifndef QUANTIZATIONCONTROLLER_H_
	#include "QuantizationController.h"
#endif

#ifndef QUANTIZATION_H_
	#include "Quantization.h"
#endif

const char* QuantizationController::UI_FILENAME = "ui/quantization.glade";
const double QuantizationController::QUANTIZATIONBITS_DEFAULT = 8.0;
const double QuantizationController::QUANTIZATIONBITS_MIN = 1.0;
const double QuantizationController::QUANTIZATIONBITS_MAX = 16.0;

QuantizationController::QuantizationController()
:mQuantizationBitsAdj(QUANTIZATIONBITS_DEFAULT,QUANTIZATIONBITS_MIN,QUANTIZATIONBITS_MAX)
{
	Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(UI_FILENAME);
	builder->get_widget("mainwindow",mPtrMainWin);
	builder->get_widget("quantizationbits",mPtrQuantizationBits);
	builder->get_widget("openinputbtn",mPtrOpenInputBtn);
	builder->get_widget("openoutputbtn",mPtrOpenOutputBtn);
	builder->get_widget("startbtn",mPtrStartBtn);
	builder->get_widget("inputfile",mPtrInputFile);
	builder->get_widget("outputfile",mPtrOutputFile);
	mPtrQuantizationBits->set_adjustment(mQuantizationBitsAdj);
	mPtrStartBtn->signal_clicked().connect(sigc::mem_fun(this,&QuantizationController::on_start_btn));
	mPtrOpenInputBtn->signal_clicked().connect(sigc::mem_fun(this,&QuantizationController::on_open_input_btn));
	mPtrOpenOutputBtn->signal_clicked().connect(sigc::mem_fun(this,&QuantizationController::on_open_output_btn));
	mPtrQuantizationBits->signal_value_changed().connect(sigc::mem_fun(this,&QuantizationController::on_quantizationbits_changed));
	mParams.setBits(mPtrQuantizationBits->get_value_as_int());
}

QuantizationController::~QuantizationController() {
	// TODO Auto-generated destructor stub
}
void QuantizationController::startApp(Gtk::Main& kit)
{
	kit.run(*mPtrMainWin);
}

void QuantizationController::on_open_input_btn()
{
	std::string filename;
	choose_file(filename);
	mParams.setInputFile(filename);
	mPtrInputFile->set_text(mParams.getInputFile());
}

void QuantizationController::on_open_output_btn()
{
	std::string filename;
	choose_file(filename);
	mParams.setOutputFile(filename);
	mPtrOutputFile->set_text(mParams.getOutputFile());
}

void QuantizationController::on_quantizationbits_changed()
{
	mParams.setBits(mPtrQuantizationBits->get_value_as_int());
}

void QuantizationController::on_start_btn()
{
	Quantization quantization(mParams);
}

void QuantizationController::choose_file(std::string& filename)
{
	Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(UI_FILENAME);
	Gtk::FileChooserDialog* ptrFilechooser;
	builder->get_widget("filechooserdialog",ptrFilechooser);
	Gtk::FileFilter waveFilter;
	waveFilter.set_name("Wave files");
	waveFilter.add_pattern("*.wav");
	ptrFilechooser->add_filter(waveFilter);
	ptrFilechooser->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
	ptrFilechooser->add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
	ptrFilechooser->set_transient_for(*mPtrMainWin);
	int result = ptrFilechooser->run();
	switch (result)
	{
	case Gtk::RESPONSE_OK:
		filename = ptrFilechooser->get_filename();
		break;
	default:
		break;
	}
	delete ptrFilechooser;
}