summaryrefslogtreecommitdiffstats
path: root/Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp
downloadStudium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz
Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp')
-rw-r--r--Master/Modellbildung_und_Simulation/Aufgabenblatt1/WaveAnalyzer/src/WaveAnalyzerController.cpp128
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;
+}