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
|
/*
* SuperpositionController.cpp
*
* Created on: 01.04.2011
* Author: sven
*/
#ifndef SUPERPOSITIONCONTROLLER_H_
#include "SuperpositionController.h"
#endif
#ifndef _GLIBCXX_IOSTREAM
#include <iostream>
#endif
#ifndef WAVEFILESUPERPOSITION_H_
#include "WavefileSuperposition.h"
#endif
const char* SuperpositionController::UI_FILENAME = "ui/superpos.glade";
SuperpositionController::SuperpositionController()
{
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(UI_FILENAME);
builder->get_widget("mainwindow",mPtrMainWin);
builder->get_widget("sourcefile1",mPtrSrcFile1);
builder->get_widget("sourcefile2",mPtrSrcFile2);
builder->get_widget("destinationfile",mPtrDstFile);
builder->get_widget("src1btn",mPtrOpenBtnSrc1);
builder->get_widget("src2btn",mPtrOpenBtnSrc2);
builder->get_widget("dstbtn",mPtrOpenBtnDst);
builder->get_widget("startbtn",mPtrStartBtn);
mPtrMainWin->signal_hide().connect(sigc::ptr_fun(&Gtk::Main::quit));
mPtrOpenBtnSrc1->signal_clicked().connect(sigc::mem_fun(this,&SuperpositionController::on_button_src1));
mPtrOpenBtnSrc2->signal_clicked().connect(sigc::mem_fun(this,&SuperpositionController::on_button_src2));
mPtrOpenBtnDst->signal_clicked().connect(sigc::mem_fun(this,&SuperpositionController::on_button_dst));
mPtrStartBtn->signal_clicked().connect(sigc::mem_fun(this,&SuperpositionController::on_button_start));
}
SuperpositionController::~SuperpositionController() {
}
void SuperpositionController::startApp(Gtk::Main& kit)
{
kit.run(*mPtrMainWin);
}
void SuperpositionController::on_button_src1()
{
std::string filename;
choose_file(filename);
mParams.setSourceFileOne(filename);
mPtrSrcFile1->set_text(mParams.getSourceFileOne());
}
void SuperpositionController::on_button_src2()
{
std::string filename;
choose_file(filename);
mParams.setSourceFileTwo(filename);
mPtrSrcFile2->set_text(mParams.getSourceFileTwo());
}
void SuperpositionController::on_button_dst()
{
std::string filename;
choose_file(filename);
mParams.setDestinationFile(filename);
mPtrDstFile->set_text(mParams.getDestinationFile());
}
void SuperpositionController::choose_file(std::string& filename)
{
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(UI_FILENAME);
Gtk::FileChooserDialog* ptrFilechooser;
builder->get_widget("filechooserdlg",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;
}
void SuperpositionController::on_button_start()
{
if(!mParams.validate())
{
std::cout << "Please specify 3 different files" << std::endl;
return;
}
WavefileSuperposition superPos(mParams);
}
|