114 lines
4.0 KiB
C++
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();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|