From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../Aufgabenblatt1/DFTApp/src/DFTAppController.cpp | 129 +++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTAppController.cpp (limited to 'Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTAppController.cpp') 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 +#endif + +#include + +// because of static +const char* DFTAppController::UI_FILENAME = "ui/dftapp.glade"; + +DFTAppController::DFTAppController() { + try { + Glib::RefPtr 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& inputData = dftProc.getInputData(); + const std::vector& Re = dftProc.getRe(); + const std::vector& Im = dftProc.getIm(); + std::vector::const_iterator inIter = inputData.begin(); + std::vector::const_iterator reIter = Re.begin(); + std::vector::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 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); +} -- cgit v1.2.3