#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(_series[idx]); } void scr_specs_chart::remove(scr::spec *spec) { for(int i = 0; i < (int)_series.size(); i++) { if(static_cast(_series[i])->spec() == spec) { gtl::data_model_node* device = spec->ad()->root(); _devices[device].remove(static_cast(_series[i])); if(_devices[device].empty()) { // disconnect(static_cast(device), >l::device::recieved_data, this, >l::gui::chart::device_recieved_data); _devices.erase(device); } remove_series(static_cast(_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(sender())); } void scr_specs_chart::set_range() { set_bounds_x(); _axis_x->set_range(); } } }