test_sdk/gui/spgr/gtl_gui_spgr_widget.cpp

114 lines
4.0 KiB
C++

#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<int> 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();
}
}
}
}