test_sdk/gui/gtl_gui_cross_spec_widget.cpp

108 lines
4.5 KiB
C++
Raw Normal View History

#include "gtl_gui_cross_spec_widget.h"
#include "ui_gtl_gui_cross_spec_widget.h"
#include "gui/gtl_gui_chart_widget.h"
namespace gtl {
namespace gui {
cross_spec_widget::cross_spec_widget(QWidget *parent, gtl::data_model* model) :
QWidget(parent),
ui(new Ui::cross_spec_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::cross_spec_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::cross_spec::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::cross_spec_chart::set_window);
ui->frequency->disconnect();
ui->frequency->setMaximum(100000);
ui->frequency->setValue(_chart->frequency());
connect(ui->frequency, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::cross_spec_chart::set_frequency);
ui->resolution->disconnect();
ui->resolution->setMaximum(100000);
ui->resolution->setValue(_chart->resolution());
connect(ui->resolution, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::cross_spec_chart::set_resolution);
ui->lines->disconnect();
ui->lines->setMaximum(100000);
ui->lines->setValue(_chart->lines());
connect(ui->lines, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::cross_spec_chart::set_lines);
ui->average->disconnect();
ui->average->setMaximum(100);
ui->average->setValue(_chart->average());
connect(ui->average, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::cross_spec_chart::set_average);
ui->overlap->disconnect();
ui->overlap->setMaximum(99);
ui->overlap->setValue(_chart->overlap());
connect(ui->overlap, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::cross_spec_chart::set_overlap);
connect(_chart, &gtl::gui::cross_spec_chart::frequency_changed, this, &gtl::gui::cross_spec_widget::update_parameters);
connect(_chart, &gtl::gui::cross_spec_chart::resolution_changed, this, &gtl::gui::cross_spec_widget::update_parameters);
connect(_chart, &gtl::gui::cross_spec_chart::lines_changed, this, &gtl::gui::cross_spec_widget::update_parameters);
ui->x_log->setVisible(false);
connect(ui->x_log, &QCheckBox::toggled, _chart, &gtl::gui::cross_spec_chart::set_x_log);
}
cross_spec_widget::~cross_spec_widget()
{
delete ui;
}
void cross_spec_widget::save(QDomElement &root_element)
{
}
void cross_spec_widget::load(const QDomElement &root_element)
{
}
void cross_spec_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::cross_spec_chart::set_frequency);
connect(ui->resolution, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::cross_spec_chart::set_resolution);
connect(ui->lines, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::cross_spec_chart::set_lines);
}
} // namespace gui
} // namespace gtl