|
|
@ -152,12 +152,12 @@ void ChartsWidget::showChart(const QString &id, const Signal *sig, bool show, bo |
|
|
|
QObject::connect(chart, &ChartView::remove, [=]() { removeChart(chart); }); |
|
|
|
QObject::connect(chart, &ChartView::remove, [=]() { removeChart(chart); }); |
|
|
|
QObject::connect(chart, &ChartView::zoomIn, this, &ChartsWidget::zoomIn); |
|
|
|
QObject::connect(chart, &ChartView::zoomIn, this, &ChartsWidget::zoomIn); |
|
|
|
QObject::connect(chart, &ChartView::zoomReset, this, &ChartsWidget::zoomReset); |
|
|
|
QObject::connect(chart, &ChartView::zoomReset, this, &ChartsWidget::zoomReset); |
|
|
|
QObject::connect(chart, &ChartView::seriesRemoved, this, &ChartsWidget::chartClosed); |
|
|
|
QObject::connect(chart, &ChartView::seriesRemoved, this, &ChartsWidget::seriesChanged); |
|
|
|
|
|
|
|
QObject::connect(chart, &ChartView::seriesAdded, this, &ChartsWidget::seriesChanged); |
|
|
|
charts_layout->insertWidget(0, chart); |
|
|
|
charts_layout->insertWidget(0, chart); |
|
|
|
charts.push_back(chart); |
|
|
|
charts.push_back(chart); |
|
|
|
} |
|
|
|
} |
|
|
|
chart->addSeries(id, sig); |
|
|
|
chart->addSeries(id, sig); |
|
|
|
emit chartOpened(id, sig); |
|
|
|
|
|
|
|
} else if (ChartView *chart = findChart(id, sig)) { |
|
|
|
} else if (ChartView *chart = findChart(id, sig)) { |
|
|
|
chart->removeSeries(id, sig); |
|
|
|
chart->removeSeries(id, sig); |
|
|
|
} |
|
|
|
} |
|
|
@ -169,11 +169,16 @@ void ChartsWidget::removeChart(ChartView *chart) { |
|
|
|
charts.removeOne(chart); |
|
|
|
charts.removeOne(chart); |
|
|
|
chart->deleteLater(); |
|
|
|
chart->deleteLater(); |
|
|
|
updateToolBar(); |
|
|
|
updateToolBar(); |
|
|
|
|
|
|
|
emit seriesChanged(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void ChartsWidget::removeAll() { |
|
|
|
void ChartsWidget::removeAll() { |
|
|
|
for (auto c : charts.toVector()) |
|
|
|
for (auto c : charts) { |
|
|
|
removeChart(c); |
|
|
|
c->deleteLater(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
charts.clear(); |
|
|
|
|
|
|
|
updateToolBar(); |
|
|
|
|
|
|
|
emit seriesChanged(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool ChartsWidget::eventFilter(QObject *obj, QEvent *event) { |
|
|
|
bool ChartsWidget::eventFilter(QObject *obj, QEvent *event) { |
|
|
@ -227,11 +232,6 @@ ChartView::ChartView(QWidget *parent) : QChartView(nullptr, parent) { |
|
|
|
QObject::connect(manage_btn, &QToolButton::clicked, this, &ChartView::manageSeries); |
|
|
|
QObject::connect(manage_btn, &QToolButton::clicked, this, &ChartView::manageSeries); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ChartView::~ChartView() { |
|
|
|
|
|
|
|
for (auto &s : sigs) |
|
|
|
|
|
|
|
emit seriesRemoved(s.msg_id, s.sig); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ChartView::addSeries(const QString &msg_id, const Signal *sig) { |
|
|
|
void ChartView::addSeries(const QString &msg_id, const Signal *sig) { |
|
|
|
QLineSeries *series = new QLineSeries(this); |
|
|
|
QLineSeries *series = new QLineSeries(this); |
|
|
|
series->setUseOpenGL(true); |
|
|
|
series->setUseOpenGL(true); |
|
|
@ -243,6 +243,7 @@ void ChartView::addSeries(const QString &msg_id, const Signal *sig) { |
|
|
|
updateTitle(); |
|
|
|
updateTitle(); |
|
|
|
updateSeries(sig); |
|
|
|
updateSeries(sig); |
|
|
|
updateAxisY(); |
|
|
|
updateAxisY(); |
|
|
|
|
|
|
|
emit seriesAdded(msg_id, sig); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void ChartView::removeSeries(const QString &msg_id, const Signal *sig) { |
|
|
|
void ChartView::removeSeries(const QString &msg_id, const Signal *sig) { |
|
|
@ -259,9 +260,10 @@ bool ChartView::hasSeries(const QString &msg_id, const Signal *sig) const { |
|
|
|
QList<ChartView::SigItem>::iterator ChartView::removeSeries(const QList<ChartView::SigItem>::iterator &it) { |
|
|
|
QList<ChartView::SigItem>::iterator ChartView::removeSeries(const QList<ChartView::SigItem>::iterator &it) { |
|
|
|
chart()->removeSeries(it->series); |
|
|
|
chart()->removeSeries(it->series); |
|
|
|
it->series->deleteLater(); |
|
|
|
it->series->deleteLater(); |
|
|
|
emit seriesRemoved(it->msg_id, it->sig); |
|
|
|
QString msg_id = it->msg_id; |
|
|
|
|
|
|
|
const Signal *sig = it->sig; |
|
|
|
auto ret = sigs.erase(it); |
|
|
|
auto ret = sigs.erase(it); |
|
|
|
|
|
|
|
emit seriesRemoved(msg_id, sig); |
|
|
|
if (!sigs.isEmpty()) { |
|
|
|
if (!sigs.isEmpty()) { |
|
|
|
updateAxisY(); |
|
|
|
updateAxisY(); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|