summaryrefslogtreecommitdiffstats
path: root/Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTAppController.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/DFTApp/src/DFTAppController.cpp
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTAppController.cpp')
-rw-r--r--Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTAppController.cpp129
1 files changed, 129 insertions, 0 deletions
diff --git a/Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTAppController.cpp b/Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTAppController.cpp
new file mode 100644
index 0000000..b66c987
--- /dev/null
+++ b/Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTAppController.cpp
@@ -0,0 +1,129 @@
+/*
+ * DFTAppController.cpp
+ *
+ * Created on: 29.04.2011
+ * Author: sven
+ */
+#ifndef DFTAPPCONTROLLER_H_
+ #include "DFTAppController.h"
+#endif
+
+#ifndef DFTPROCESSOR_H_
+ #include "DFTProcessor.h"
+#endif
+
+#ifndef UTIL_H_
+ #include "Util.h"
+#endif
+
+#ifndef _LIBGLADEMM_XML_H
+ #include <libglademm/xml.h>
+#endif
+
+#include <iostream>
+
+// because of static
+const char* DFTAppController::UI_FILENAME = "ui/dftapp.glade";
+
+DFTAppController::DFTAppController() {
+ try {
+ Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(UI_FILENAME);
+ builder->get_widget("mainwindow",mPtrMainWin);
+ builder->get_widget("inputfileentry",mPtrInputFileEntry);
+ builder->get_widget("numsamplesentry",mPtrNumSamplesEntry);
+ builder->get_widget("startbtn",mPtrStartBtn);
+ builder->get_widget("openinputfilebtn",mPtrOpenBtn);
+ builder->get_widget("textview1",mPtrTextView);
+ } catch (Gtk::BuilderError err) {
+ std::cout << "Builder Error: " << err.code() << std::endl;
+ }
+ mRefPtrTextBuffer = Gtk::TextBuffer::create();
+ mPtrTextView->set_buffer(mRefPtrTextBuffer);
+ mPtrMainWin->signal_hide().connect(sigc::ptr_fun(&Gtk::Main::quit));
+ mPtrOpenBtn->signal_clicked().connect(sigc::mem_fun(this,&DFTAppController::on_button_open));
+ mPtrStartBtn->signal_clicked().connect(sigc::mem_fun(this,&DFTAppController::on_button_start));
+ mPtrNumSamplesEntry->signal_changed().connect(sigc::mem_fun(this,&DFTAppController::on_numsamples_changed));
+ on_numsamples_changed();
+}
+
+DFTAppController::~DFTAppController() {
+ // TODO Auto-generated destructor stub
+}
+
+void DFTAppController::startApp(Gtk::Main& kit)
+{
+ kit.run(*mPtrMainWin);
+ return;
+}
+
+void DFTAppController::on_button_start()
+{
+ DFTProcessor dftProc(mParams);
+ std::string text = "Idx\tInput\tRe\tIm\n";
+ const std::vector<double>& inputData = dftProc.getInputData();
+ const std::vector<double>& Re = dftProc.getRe();
+ const std::vector<double>& Im = dftProc.getIm();
+ std::vector<double>::const_iterator inIter = inputData.begin();
+ std::vector<double>::const_iterator reIter = Re.begin();
+ std::vector<double>::const_iterator imIter = Im.begin();
+ unsigned idx = 0;
+ for (;inIter != inputData.end(); inIter++)
+ {
+ if (inIter != inputData.begin()) {
+ text += "\n";
+ }
+ text += Util::ToUString(idx);
+ text += "\t";
+ text += Util::ToUString((int) *inIter);
+ if (idx < mParams.getNumSamples() / 2) {
+ text += "\t";
+ text += Util::ToUString(*reIter);
+ text += "\t";
+ text += Util::ToUString(*imIter);
+ }
+ reIter++;
+ imIter++;
+ idx++;
+ }
+ mRefPtrTextBuffer->set_text(text);
+ std::cout << mRefPtrTextBuffer->get_line_count() << " lines" << std::endl;
+}
+
+void DFTAppController::on_button_open()
+{
+ std::string filename;
+ Gtk::FileChooserDialog* ptrFilechooser;
+ try {
+ Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(UI_FILENAME);
+ builder->get_widget("filechooserdlg",ptrFilechooser);
+ } catch (Gtk::BuilderError err) {
+ std::cout << "Builder Error: " << err.code() << std::endl;
+ }
+ 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();
+ mParams.setInputFilename(filename);
+ mPtrInputFileEntry->set_text(mParams.getInputFilename());
+ break;
+ default:
+ break;
+ }
+ delete ptrFilechooser;
+}
+
+void DFTAppController::on_numsamples_changed()
+{
+ unsigned numSamples;
+ Glib::ustring numSamplesStr = mPtrNumSamplesEntry->get_text();
+ numSamples = Util::ToUint(numSamplesStr);
+ mParams.setNumSamples(numSamples);
+}