80 lines
2.4 KiB
C++
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), >l::device::recieved_data, this, >l::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, >l::math::spec::deleting, this, &scr_specs_chart::deleting_spec);
|
|
connect(spec, >l::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();
|
|
}
|
|
|
|
}
|
|
}
|