test_sdk/gui/gtl_gui_apfc_widget.cpp

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, &gtl::selection_data_model::selected, _chart, &gtl::gui::chart::add_ad);
connect(_selection_data_model, &gtl::selection_data_model::deselected, _chart, &gtl::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, &gtl::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, &gtl::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, &gtl::gui::apfc_chart::set_window);
ui->frequency->disconnect();
ui->frequency->setMaximum(100000);
ui->frequency->setValue(_chart->frequency());
connect(ui->frequency, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::apfc_chart::set_frequency);
ui->resolution->disconnect();
ui->resolution->setMaximum(100000);
ui->resolution->setValue(_chart->resolution());
connect(ui->resolution, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::apfc_chart::set_resolution);
ui->lines->disconnect();
ui->lines->setMaximum(100000);
ui->lines->setValue(_chart->lines());
connect(ui->lines, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::apfc_chart::set_lines);
ui->average->disconnect();
ui->average->setMaximum(100);
ui->average->setValue(_chart->average());
connect(ui->average, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::apfc_chart::set_average);
ui->overlap->disconnect();
ui->overlap->setMaximum(99);
ui->overlap->setValue(_chart->overlap());
connect(ui->overlap, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::apfc_chart::set_overlap);
ui->threshold->disconnect();
ui->threshold->setMaximum(99);
ui->threshold->setValue(_chart->threshold());
connect(ui->threshold, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::apfc_chart::set_threshold);
connect(_chart, &gtl::gui::apfc_chart::frequency_changed, this, &gtl::gui::apfc_widget::update_parameters);
connect(_chart, &gtl::gui::apfc_chart::resolution_changed, this, &gtl::gui::apfc_widget::update_parameters);
connect(_chart, &gtl::gui::apfc_chart::lines_changed, this, &gtl::gui::apfc_widget::update_parameters);
ui->x_log->setVisible(false);
connect(ui->x_log, &QCheckBox::toggled, _chart, &gtl::gui::apfc_chart::set_x_log);
connect(_chart, &gtl::gui::apfc_chart::signals_changed, this, &gtl::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, &gtl::gui::apfc_chart::set_frequency);
connect(ui->resolution, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::apfc_chart::set_resolution);
connect(ui->lines, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::apfc_chart::set_lines);
}
void apfc_widget::handle_chart_signals_changed(QList<QString> *sigs)
{
disconnect(ui->reference, &QComboBox::currentTextChanged, _chart, &gtl::gui::apfc_chart::set_ref);
ui->reference->clear();
foreach (QString sig, *sigs)
ui->reference->addItem(sig);
connect(ui->reference, &QComboBox::currentTextChanged, _chart, &gtl::gui::apfc_chart::set_ref);
}
} // namespace gui
} // namespace gtl