#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, >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(); 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::cross_spec_chart::set_window); ui->frequency->disconnect(); ui->frequency->setMaximum(100000); ui->frequency->setValue(_chart->frequency()); connect(ui->frequency, &QDoubleSpinBox::valueChanged, _chart, >l::gui::cross_spec_chart::set_frequency); ui->resolution->disconnect(); ui->resolution->setMaximum(100000); ui->resolution->setValue(_chart->resolution()); connect(ui->resolution, &QDoubleSpinBox::valueChanged, _chart, >l::gui::cross_spec_chart::set_resolution); ui->lines->disconnect(); ui->lines->setMaximum(100000); ui->lines->setValue(_chart->lines()); connect(ui->lines, &QDoubleSpinBox::valueChanged, _chart, >l::gui::cross_spec_chart::set_lines); ui->average->disconnect(); ui->average->setMaximum(100); ui->average->setValue(_chart->average()); connect(ui->average, &QDoubleSpinBox::valueChanged, _chart, >l::gui::cross_spec_chart::set_average); ui->overlap->disconnect(); ui->overlap->setMaximum(99); ui->overlap->setValue(_chart->overlap()); connect(ui->overlap, &QDoubleSpinBox::valueChanged, _chart, >l::gui::cross_spec_chart::set_overlap); connect(_chart, >l::gui::cross_spec_chart::frequency_changed, this, >l::gui::cross_spec_widget::update_parameters); connect(_chart, >l::gui::cross_spec_chart::resolution_changed, this, >l::gui::cross_spec_widget::update_parameters); connect(_chart, >l::gui::cross_spec_chart::lines_changed, this, >l::gui::cross_spec_widget::update_parameters); ui->x_log->setVisible(false); connect(ui->x_log, &QCheckBox::toggled, _chart, >l::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, >l::gui::cross_spec_chart::set_frequency); connect(ui->resolution, &QDoubleSpinBox::valueChanged, _chart, >l::gui::cross_spec_chart::set_resolution); connect(ui->lines, &QDoubleSpinBox::valueChanged, _chart, >l::gui::cross_spec_chart::set_lines); } } // namespace gui } // namespace gtl