143 lines
6.0 KiB
C++
143 lines
6.0 KiB
C++
#include "gtl_gui_apfc_widget.h"
|
|
#include "gui/ui_gtl_gui_apfc_widget.h"
|
|
|
|
#include "gui/gtl_gui_chart_widget.h"
|
|
namespace gtl {
|
|
namespace gui {
|
|
|
|
apfc_widget::apfc_widget(QWidget *parent, gtl::data_model* model) :
|
|
QWidget(parent),
|
|
ui(new Ui::apfc_widget)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
_selection_data_model = new gtl::selection_data_model(this);
|
|
_selection_data_model->setSourceModel(model);
|
|
|
|
ui->signals_->setModel(_selection_data_model);
|
|
ui->signals_->expandAll();
|
|
|
|
_chart = new gtl::gui::apfc_chart(this);
|
|
gtl::gui::chart_widget *chart_widget = new gtl::gui::chart_widget(_chart, this);
|
|
ui->splitter->insertWidget(0, chart_widget);
|
|
|
|
connect(_selection_data_model, >l::selection_data_model::selected, _chart, >l::gui::chart::add_ad);
|
|
connect(_selection_data_model, >l::selection_data_model::deselected, _chart, >l::gui::chart::remove_ad);
|
|
|
|
QMetaEnum meta_enum = QMetaEnum::fromType<gtl::math::apfc::afcs>();
|
|
ui->afc->disconnect();
|
|
ui->afc->clear();
|
|
for(int i = 0; i < meta_enum.keyCount(); i++)
|
|
{
|
|
ui->afc->addItem(meta_enum.valueToKey(i));
|
|
}
|
|
ui->afc->setCurrentIndex(_chart->afc());
|
|
connect(ui->afc, &QComboBox::currentIndexChanged, _chart, >l::gui::apfc_chart::set_afc);
|
|
|
|
meta_enum = QMetaEnum::fromType<gtl::math::apfc::pfcs>();
|
|
ui->pfc->disconnect();
|
|
ui->pfc->clear();
|
|
for(int i = 0; i < meta_enum.keyCount(); i++)
|
|
{
|
|
ui->pfc->addItem(meta_enum.valueToKey(i));
|
|
}
|
|
ui->pfc->setCurrentIndex(_chart->pfc());
|
|
connect(ui->pfc, &QComboBox::currentIndexChanged, _chart, >l::gui::apfc_chart::set_pfc);
|
|
|
|
meta_enum = QMetaEnum::fromType<gtl::math::apfc::windows>();
|
|
ui->window->disconnect();
|
|
ui->window->clear();
|
|
for(int i = 0; i < meta_enum.keyCount(); i++)
|
|
{
|
|
ui->window->addItem(meta_enum.valueToKey(i));
|
|
}
|
|
ui->window->setCurrentIndex(_chart->window());
|
|
connect(ui->window, &QComboBox::currentIndexChanged, _chart, >l::gui::apfc_chart::set_window);
|
|
|
|
ui->frequency->disconnect();
|
|
ui->frequency->setMaximum(100000);
|
|
ui->frequency->setValue(_chart->frequency());
|
|
connect(ui->frequency, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_frequency);
|
|
|
|
ui->resolution->disconnect();
|
|
ui->resolution->setMaximum(100000);
|
|
ui->resolution->setValue(_chart->resolution());
|
|
connect(ui->resolution, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_resolution);
|
|
|
|
ui->lines->disconnect();
|
|
ui->lines->setMaximum(100000);
|
|
ui->lines->setValue(_chart->lines());
|
|
connect(ui->lines, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_lines);
|
|
|
|
ui->average->disconnect();
|
|
ui->average->setMaximum(100);
|
|
ui->average->setValue(_chart->average());
|
|
connect(ui->average, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_average);
|
|
|
|
ui->overlap->disconnect();
|
|
ui->overlap->setMaximum(99);
|
|
ui->overlap->setValue(_chart->overlap());
|
|
connect(ui->overlap, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_overlap);
|
|
|
|
ui->threshold->disconnect();
|
|
ui->threshold->setMaximum(99);
|
|
ui->threshold->setValue(_chart->threshold());
|
|
connect(ui->threshold, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_threshold);
|
|
|
|
connect(_chart, >l::gui::apfc_chart::frequency_changed, this, >l::gui::apfc_widget::update_parameters);
|
|
connect(_chart, >l::gui::apfc_chart::resolution_changed, this, >l::gui::apfc_widget::update_parameters);
|
|
connect(_chart, >l::gui::apfc_chart::lines_changed, this, >l::gui::apfc_widget::update_parameters);
|
|
|
|
ui->x_log->setVisible(false);
|
|
connect(ui->x_log, &QCheckBox::toggled, _chart, >l::gui::apfc_chart::set_x_log);
|
|
|
|
connect(_chart, >l::gui::apfc_chart::signals_changed, this, >l::gui::apfc_widget::handle_chart_signals_changed);
|
|
}
|
|
|
|
apfc_widget::~apfc_widget()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void apfc_widget::save(QDomElement &root_element)
|
|
{
|
|
|
|
}
|
|
|
|
void apfc_widget::load(const QDomElement &root_element)
|
|
{
|
|
|
|
}
|
|
|
|
void apfc_widget::update_parameters()
|
|
{
|
|
ui->frequency->disconnect();
|
|
ui->resolution->disconnect();
|
|
ui->lines->disconnect();
|
|
|
|
if( ui->frequency->value() != _chart->frequency() )
|
|
ui->frequency->setValue(_chart->frequency());
|
|
|
|
if( ui->resolution->value() != _chart->resolution() )
|
|
ui->resolution->setValue(_chart->resolution());
|
|
|
|
if( ui->lines->value() != (int) _chart->lines() )
|
|
ui->lines->setValue(_chart->lines());
|
|
|
|
connect(ui->frequency, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_frequency);
|
|
connect(ui->resolution, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_resolution);
|
|
connect(ui->lines, &QDoubleSpinBox::valueChanged, _chart, >l::gui::apfc_chart::set_lines);
|
|
}
|
|
|
|
void apfc_widget::handle_chart_signals_changed(QList<QString> *sigs)
|
|
{
|
|
disconnect(ui->reference, &QComboBox::currentTextChanged, _chart, >l::gui::apfc_chart::set_ref);
|
|
ui->reference->clear();
|
|
foreach (QString sig, *sigs)
|
|
ui->reference->addItem(sig);
|
|
connect(ui->reference, &QComboBox::currentTextChanged, _chart, >l::gui::apfc_chart::set_ref);
|
|
}
|
|
|
|
} // namespace gui
|
|
} // namespace gtl
|