#include "gtl_gui_spgr_widget.h" #include "gui/ui_gtl_gui_spgr_widget.h" namespace gtl { namespace gui { namespace spgr { widget::widget(QWidget *parent, gtl::math::spec *spec) : QWidget(parent, Qt::Window), ui(new Ui::spgr_widget) { ui->setupUi(this); ::chart::axis_horz* axis_x = new ::chart::axis_horz(); ::chart::axis_vert* axis_y = new ::chart::axis_vert(); _series = new series(parent, spec, axis_x, axis_y); _chart = new chart(parent, axis_x, axis_y); _chart->add(_series); ui->splitter->insertWidget(0, _chart); QList sizes; sizes.append(0.99 * sizeHint().width()); sizes.append(0.01 * sizeHint().width()); ui->splitter->setSizes(sizes); ui->time->setValue(_series->time()); connect(ui->time, &QDoubleSpinBox::valueChanged, _series, &series::set_time); ui->min->setValue(_series->min()); connect(ui->min, &QDoubleSpinBox::valueChanged, _series, &series::set_min); ui->max->setValue(_series->max()); connect(ui->max, &QDoubleSpinBox::valueChanged, _series, &series::set_max); ui->x_log->setChecked(_series->x_log()); connect(ui->x_log, &QCheckBox::clicked, _series, &series::set_x_log); ui->time_chart->setChecked(_series->time_chart()); connect(ui->time_chart, &QCheckBox::clicked, _series, &series::set_time_chart); ui->freq_chart->setChecked(_series->freq_chart()); connect(ui->freq_chart, &QCheckBox::clicked, _series, &series::set_freq_chart); gradient_widget *gradient = new gradient_widget(this); gradient->setFixedHeight(20); ui->min_max_vl->addWidget(gradient); connect(_series, &series::time_changed, this, &widget::update_parameters); connect(_series, &series::min_changed, this, &widget::update_parameters); connect(_series, &series::max_changed, this, &widget::update_parameters); // connect(_series, &spgr_series::time_chart_changed, this, &spgr_widget::update_parameters); // connect(_series, &spgr_series::freq_chart_changed, this, &spgr_widget::update_parameters); connect(_series, &series::time_chart_changed, [=]{ update_parameters(); emit time_chart_changed(); }); connect(_series, &series::freq_chart_changed, [=]{ update_parameters(); emit freq_chart_changed(); }); } widget::~widget() { if(_chart) delete _chart; _chart = nullptr; delete ui; emit deleted(); } line_widget *widget::time_widget() { if(_series) return _series->time_widget(); return nullptr; } line_widget *widget::freq_widget() { if(_series) return _series->freq_widget(); return nullptr; } void widget::update_parameters() { if(!_series) return; _series->blockSignals(true); ui->time->setValue(_series->time()); ui->min->setValue(_series->min()); ui->max->setValue(_series->max()); ui->time_chart->setChecked(_series->time_chart()); ui->freq_chart->setChecked(_series->freq_chart()); _series->blockSignals(false); } void widget::closeEvent(QCloseEvent *event) { // if(_chart) delete _chart; // _chart = nullptr; emit closed(); } } } }