| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -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 { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |