test_sdk/gui/gtl_gui_scr_specs_widget.cpp

63 lines
2.3 KiB
C++

#include "gtl_gui_scr_specs_widget.h"
#include "ui_gtl_gui_scr_specs_widget.h"
#include "gtl_gui_chart_widget.h"
#include "script/gtl_scr_specs_model.h"
namespace gtl
{
namespace gui
{
scr_specs_widget::scr_specs_widget(gtl::scr::engine *engine, QWidget *parent) :
QWidget(parent),
ui(new Ui::scr_specs_widget)
{
ui->setupUi(this);
gtl::scr::specs_model* model = new gtl::scr::specs_model(this);
ui->series->setModel(model);
connect(engine, &gtl::scr::engine::spec_created, model, &gtl::scr::specs_model::add_spec);
_chart = new scr_specs_chart(this);
gtl::gui::chart_widget *chart_widget = new gtl::gui::chart_widget(_chart, this);
connect(model, &gtl::scr::specs_model::show_spec, _chart, &gtl::gui::scr_specs_chart::add_spec);
connect(model, &gtl::scr::specs_model::hide_spec, _chart, &gtl::gui::scr_specs_chart::remove_spec);
ui->splitter->insertWidget(0, chart_widget);
ui->y_mode->setChecked(_chart->is_axis_y_multi());
connect(ui->y_mode, &QCheckBox::toggled, _chart, &gtl::gui::chart::set_axis_y_mode);
connect(_chart, &gtl::gui::chart::axis_y_mode_changed, ui->y_mode, &QCheckBox::setChecked);
}
scr_specs_widget::~scr_specs_widget()
{
delete ui;
}
void scr_specs_widget::save(QDomElement &root_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 scr_specs_widget::load(const QDomElement &root_element)
{
QDomElement options_element = root_element.firstChildElement("options");
_chart->load(options_element);
QDomElement splitter_element = root_element.firstChildElement("splitter");
ui->splitter->restoreState(QByteArray::fromBase64(splitter_element.attribute("state", "").toUtf8()));
}
}
}