test_sdk/gui/gtl_gui_octv_widget.cpp

153 lines
6.3 KiB
C++
Raw Permalink Normal View History

#include "gtl_gui_octv_widget.h"
#include "ui_gtl_gui_octv_widget.h"
#include "gui/gtl_gui_chart_widget.h"
namespace gtl
{
namespace gui
{
octv_widget::octv_widget(QWidget *parent, gtl::data_model* model)
: QWidget(parent)
, ui(new Ui::octv_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::octv_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);
ui->minimum->disconnect();
ui->minimum->setMinimum(0.1);
ui->minimum->setMaximum(100000);
ui->minimum->setValue(_chart->minimum());
connect(ui->minimum, &QDoubleSpinBox::valueChanged,_chart, &gtl::gui::octv_chart::set_minimum);
ui->maximum->disconnect();
ui->maximum->setMinimum(1);
ui->maximum->setMaximum(100000);
ui->maximum->setValue(_chart->maximum());
connect(ui->maximum, &QDoubleSpinBox::valueChanged,_chart, &gtl::gui::octv_chart::set_maximum);
QMetaEnum meta_enum = QMetaEnum::fromType<gtl::math::octv::ratios>();
ui->ratio->disconnect();
ui->ratio->clear();
for(int i = 0; i < meta_enum.keyCount(); i++)
{
ui->ratio->addItem(meta_enum.valueToKey(i));
}
ui->ratio->setCurrentIndex(_chart->ratio());
connect(ui->ratio, &QComboBox::currentIndexChanged, _chart, &gtl::gui::octv_chart::set_ratio);
meta_enum = QMetaEnum::fromType<gtl::math::octv::looks>();
ui->look->disconnect();
ui->look->clear();
for(int i = 0; i < meta_enum.keyCount(); i++)
{
ui->look->addItem(meta_enum.valueToKey(i));
}
ui->look->setCurrentIndex(_chart->look());
connect(ui->look, &QComboBox::currentIndexChanged, _chart, &gtl::gui::octv_chart::set_look);
meta_enum = QMetaEnum::fromType<gtl::math::octv::fractions>();
ui->fraction->disconnect();
ui->fraction->clear();
for(int i = 0; i < meta_enum.keyCount(); i++)
{
ui->fraction->addItem(meta_enum.valueToKey(i));
}
ui->fraction->setCurrentIndex(_chart->fraction());
connect(ui->fraction, &QComboBox::currentIndexChanged, _chart, &gtl::gui::octv_chart::set_fraction);
ui->unit->disconnect();
ui->unit->clear();
ui->unit->addItem("unit");
ui->unit->addItem("db");
ui->unit->setCurrentIndex(_chart->unit());
connect(ui->unit, &QComboBox::currentIndexChanged, _chart, &gtl::gui::octv_chart::set_unit);
}
octv_widget::~octv_widget()
{
delete ui;
}
void octv_widget::save(QDomElement &root_element)
{
QDomElement selection_element = root_element.ownerDocument().createElement("selection");
root_element.appendChild(selection_element);
_selection_data_model->save(selection_element);
QDomElement options_element = root_element.ownerDocument().createElement("options");
root_element.appendChild(options_element);
_chart->save(options_element);
QDomElement splitter_element = root_element.ownerDocument().createElement("splitter");
root_element.appendChild(splitter_element);
splitter_element.setAttribute("state", QString(ui->splitter->saveState().toBase64()));
}
void octv_widget::load(const QDomElement &root_element)
{
QDomElement options_element = root_element.firstChildElement("options");
_chart->load(options_element);
update_parameters();
QDomElement selection_element = root_element.firstChildElement("selection");
_selection_data_model->load(selection_element);
QDomElement splitter_element = root_element.firstChildElement("splitter");
ui->splitter->restoreState(QByteArray::fromBase64(splitter_element.attribute("state", "").toUtf8()));
}
void octv_widget::update_parameters()
{
ui->minimum->disconnect();
ui->maximum->disconnect();
ui->ratio->disconnect();
ui->look->disconnect();
ui->fraction->disconnect();
ui->unit->disconnect();
if( ui->minimum->value() != _chart->minimum() )
ui->minimum->setValue(_chart->minimum());
if( ui->maximum->value() != _chart->maximum() )
ui->maximum->setValue(_chart->maximum());
if( ui->ratio->currentIndex() != (int) _chart->ratio() )
ui->ratio->setCurrentIndex(_chart->ratio());
if( ui->look->currentIndex() != (int) _chart->look() )
ui->look->setCurrentIndex(_chart->look());
if( ui->fraction->currentIndex() != (int) _chart->fraction() )
ui->fraction->setCurrentIndex(_chart->fraction());
if( ui->unit->currentIndex() != _chart->unit() )
ui->unit->setCurrentIndex(_chart->unit());
connect(ui->minimum, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::octv_chart::set_minimum);
connect(ui->maximum, &QDoubleSpinBox::valueChanged, _chart, &gtl::gui::octv_chart::set_maximum);
connect(ui->ratio, &QComboBox::currentIndexChanged, _chart, &gtl::gui::octv_chart::set_ratio);
connect(ui->look, &QComboBox::currentIndexChanged, _chart, &gtl::gui::octv_chart::set_look);
connect(ui->fraction, &QComboBox::currentIndexChanged, _chart, &gtl::gui::octv_chart::set_fraction);
connect(ui->unit, &QComboBox::currentIndexChanged, _chart, &gtl::gui::octv_chart::set_unit);
}
}
}