test_sdk/gui/gtl_gui_scr_specs_chart.cpp

80 lines
2.4 KiB
C++

#include "gtl_gui_scr_specs_chart.h"
#include "core/gtl_device.h"
#include "gtl_gui_scr_specs_series.h"
namespace gtl
{
namespace gui
{
scr_specs_chart::scr_specs_chart(QWidget* parent)
:spec_chart(gtl::math::spec::undef, parent)
{
QAction* axis_y_mode_action = new QAction("Multy axes y");
axis_y_mode_action->setCheckable(true);
_menu->addAction(axis_y_mode_action);
connect(axis_y_mode_action, &QAction::toggled, this, &chart::set_axis_y_mode);
}
int scr_specs_chart::series_count() const
{
return (int)_series.size();
}
chart_series *scr_specs_chart::series(int idx) const
{
return static_cast<chart_series*>(_series[idx]);
}
void scr_specs_chart::remove(scr::spec *spec)
{
for(int i = 0; i < (int)_series.size(); i++)
{
if(static_cast<scr_specs_series*>(_series[i])->spec() == spec)
{
gtl::data_model_node* device = spec->ad()->root();
_devices[device].remove(static_cast<chart_series*>(_series[i]));
if(_devices[device].empty())
{
// disconnect(static_cast<gtl::device*>(device), &gtl::device::recieved_data, this, &gtl::gui::chart::device_recieved_data);
_devices.erase(device);
}
remove_series(static_cast<chart_series*>(_series[i]));
break;
}
}
}
void scr_specs_chart::add_spec(gtl::scr::spec *spec)
{
scr_specs_series *series = new scr_specs_series(spec, _axis_x, _axis_y);
connect(spec, &gtl::math::spec::deleting, this, &scr_specs_chart::deleting_spec);
connect(spec, &gtl::math::spec::frequency_changed, this, &scr_specs_chart::set_range);
add_series(series);
fit_axis(series->axis_y());
}
void scr_specs_chart::remove_spec(scr::spec *spec)
{
remove(spec);
}
void scr_specs_chart::deleting_spec()
{
remove(static_cast<gtl::scr::spec*>(sender()));
}
void scr_specs_chart::set_range()
{
set_bounds_x();
_axis_x->set_range();
}
}
}