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