diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp | |
| download | Studium-master.tar.gz Studium-master.tar.bz2 | |
Diffstat (limited to 'Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp')
| -rw-r--r-- | Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp b/Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp new file mode 100644 index 0000000..da87dbb --- /dev/null +++ b/Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp @@ -0,0 +1,128 @@ +/* + * WaveAnalyzerController.cpp + * + * Created on: 02.04.2011 + * Author: sven + */ +#ifndef WAVEANALYZERCONTROLLER_H_ + #include "WaveAnalyzerController.h" +#endif +#ifndef WAVEANALYZER_H_ + #include "WaveAnalyzer.h" +#endif +#ifndef UTIL_H_ + #include "Util.h" +#endif + +const char* WaveAnalyzerController::UI_FILENAME = "ui/waveanalyzer.glade"; + +WaveAnalyzerController::WaveAnalyzerController() +{ + Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(UI_FILENAME); + builder->get_widget("mainwindow",mPtrMainWin); + + builder->get_widget("fullquantfile",mPtrFullQuantFile); + builder->get_widget("lowquantfile",mPtrLowQuantFile); + builder->get_widget("snrvalue",mPtrSNRValue); + builder->get_widget("avgvalue",mPtrArithAvgValue); + builder->get_widget("variancevalue",mPtrVarianceValue); + builder->get_widget("deviationvalue",mPtrStdDevValue); + + builder->get_widget("openfullquantbtn",mPtrOpenFullQuantBtn); + builder->get_widget("openlowquantbtn",mPtrOpenLowQuantBtn); + builder->get_widget("calcsnrbtn",mPtrCalcSNRBtn); + builder->get_widget("calc_avg_btn",mPtrCalcArithAvgBtn); + builder->get_widget("calc_variance_btn",mPtrCalcVarianceBtn); + builder->get_widget("calc_deviation_btn",mPtrCalcStdDevBtn); + + mPtrOpenFullQuantBtn->signal_clicked().connect(sigc::mem_fun(this,&WaveAnalyzerController::on_open_fullquant_btn)); + mPtrOpenLowQuantBtn->signal_clicked().connect(sigc::mem_fun(this,&WaveAnalyzerController::on_open_lowquant_btn)); + mPtrCalcSNRBtn->signal_clicked().connect(sigc::mem_fun(this,&WaveAnalyzerController::on_calcsnr_btn)); + mPtrCalcArithAvgBtn->signal_clicked().connect(sigc::mem_fun(this,&WaveAnalyzerController::on_calcarithavg_btn)); + mPtrCalcVarianceBtn->signal_clicked().connect(sigc::mem_fun(this,&WaveAnalyzerController::on_calcvariance_btn)); + mPtrCalcStdDevBtn->signal_clicked().connect(sigc::mem_fun(this,&WaveAnalyzerController::on_calcstddev_btn)); +} + +WaveAnalyzerController::~WaveAnalyzerController() { + // TODO Auto-generated destructor stub +} +void WaveAnalyzerController::startApp(Gtk::Main& kit) +{ + kit.run(*mPtrMainWin); +} + +void WaveAnalyzerController::on_open_fullquant_btn() +{ + choose_file(mFullQuantFilename); + mPtrFullQuantFile->set_text(mFullQuantFilename); +} + +void WaveAnalyzerController::on_open_lowquant_btn() +{ + choose_file(mLowQuantFilename); + mPtrLowQuantFile->set_text(mLowQuantFilename); +} + +void WaveAnalyzerController::on_calcsnr_btn() +{ + if (mFullQuantFilename.empty() || mLowQuantFilename.empty()) { + return; + } + WaveAnalyzer waveAnalyzer; + double snr = waveAnalyzer.calcSNR(mFullQuantFilename,mLowQuantFilename); + mPtrSNRValue->set_text(Util::ToString(snr)); +} + +void WaveAnalyzerController::on_calcarithavg_btn() +{ + if (mFullQuantFilename.empty()) { + return; + } + WaveAnalyzer waveAnalyzer; + double arithAvg = waveAnalyzer.calcArithAvg(mFullQuantFilename); + mPtrArithAvgValue->set_text(Util::ToString(arithAvg)); +} + +void WaveAnalyzerController::on_calcvariance_btn() +{ + if (mFullQuantFilename.empty()) { + return; + } + WaveAnalyzer waveAnalyzer; + double variance = waveAnalyzer.calcVariance(mFullQuantFilename); + mPtrVarianceValue->set_text(Util::ToString(variance)); +} + +void WaveAnalyzerController::on_calcstddev_btn() +{ + if (mFullQuantFilename.empty()) { + return; + } + WaveAnalyzer waveAnalyzer; + double stdDev = waveAnalyzer.calcStdDeviation(mFullQuantFilename); + mPtrStdDevValue->set_text(Util::ToString(stdDev)); +} + +void WaveAnalyzerController::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; +} |
