/* * 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 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 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; }