From a3990ad73fdafe10815dfd177add03253c28ed6a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 16 Aug 2024 23:01:47 -0400 Subject: [PATCH] update chart window less frequently than updating data. interval set in preferences --- tools/lammps-gui/chartviewer.cpp | 11 ++++++++++- tools/lammps-gui/chartviewer.h | 2 ++ tools/lammps-gui/preferences.cpp | 26 ++++++++++++++++---------- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index daed3b2b4e..bed6fa25b1 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -337,16 +338,24 @@ ChartViewer::ChartViewer(const QString &title, int _index, QWidget *parent) : setRenderHint(QPainter::Antialiasing); setChart(chart); setRubberBand(QChartView::RectangleRubberBand); + last_update = QTime::currentTime(); } /* -------------------------------------------------------------------- */ void ChartViewer::add_data(int step, double data) { + QSettings settings; + auto updchart = settings.value("updchart", "500").toInt(); + if (last_step < step) { last_step = step; + series->append(step, data); - reset_zoom(); + if (last_update.msecsTo(QTime::currentTime()) > updchart) { + last_update = QTime::currentTime(); + reset_zoom(); + } } } diff --git a/tools/lammps-gui/chartviewer.h b/tools/lammps-gui/chartviewer.h index 11a8980d5f..ca1c33979f 100644 --- a/tools/lammps-gui/chartviewer.h +++ b/tools/lammps-gui/chartviewer.h @@ -18,6 +18,7 @@ #include #include #include +#include class QAction; class QCloseEvent; @@ -100,6 +101,7 @@ private: QLineSeries *series; QValueAxis *xaxis; QValueAxis *yaxis; + QTime last_update; }; } // namespace QtCharts #endif diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 2e1847c534..bce4ed46b0 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -250,26 +250,33 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa connect(pluginbrowse, &QPushButton::released, this, &GeneralTab::pluginpath); #endif - auto *fontlayout = new QHBoxLayout; + auto *gridlayout = new QGridLayout; auto *getallfont = new QPushButton(QIcon(":/icons/preferences-desktop-font.png"), "Select Default Font..."); auto *gettextfont = new QPushButton(QIcon(":/icons/preferences-desktop-font.png"), "Select Text Font..."); - fontlayout->addWidget(getallfont); - fontlayout->addWidget(gettextfont); + gridlayout->addWidget(getallfont, 0, 0); + gridlayout->addWidget(gettextfont, 0, 1); connect(getallfont, &QPushButton::released, this, &GeneralTab::newallfont); connect(gettextfont, &QPushButton::released, this, &GeneralTab::newtextfont); - auto *freqlayout = new QHBoxLayout; - auto *freqlabel = new QLabel("GUI update interval (ms)"); + auto *freqlabel = new QLabel("Data update interval (ms)"); auto *freqval = new QSpinBox; freqval->setRange(1, 1000); freqval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType); freqval->setValue(settings->value("updfreq", "10").toInt()); freqval->setObjectName("updfreq"); - freqlayout->addWidget(freqlabel); - freqlayout->addWidget(freqval); - freqlayout->addStretch(1); + gridlayout->addWidget(freqlabel, 1, 0); + gridlayout->addWidget(freqval, 1, 1); + + auto *chartlabel = new QLabel("Charts update interval (ms)"); + auto *chartval = new QSpinBox; + chartval->setRange(1, 5000); + chartval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType); + chartval->setValue(settings->value("updchart", "500").toInt()); + chartval->setObjectName("updchart"); + gridlayout->addWidget(chartlabel, 2, 0); + gridlayout->addWidget(chartval, 2, 1); layout->addWidget(echo); layout->addWidget(cite); @@ -283,8 +290,7 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa layout->addWidget(pluginlabel); layout->addLayout(pluginlayout); #endif - layout->addLayout(fontlayout); - layout->addLayout(freqlayout); + layout->addLayout(gridlayout); layout->addStretch(1); setLayout(layout); }