update chart window less frequently than updating data. interval set in preferences

This commit is contained in:
Axel Kohlmeyer
2024-08-16 23:01:47 -04:00
parent 6f7a48fa7a
commit a3990ad73f
3 changed files with 28 additions and 11 deletions

View File

@ -33,6 +33,7 @@
#include <QSettings> #include <QSettings>
#include <QSpacerItem> #include <QSpacerItem>
#include <QTextStream> #include <QTextStream>
#include <QTime>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QValueAxis> #include <QValueAxis>
#include <QVariant> #include <QVariant>
@ -337,16 +338,24 @@ ChartViewer::ChartViewer(const QString &title, int _index, QWidget *parent) :
setRenderHint(QPainter::Antialiasing); setRenderHint(QPainter::Antialiasing);
setChart(chart); setChart(chart);
setRubberBand(QChartView::RectangleRubberBand); setRubberBand(QChartView::RectangleRubberBand);
last_update = QTime::currentTime();
} }
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
void ChartViewer::add_data(int step, double data) void ChartViewer::add_data(int step, double data)
{ {
QSettings settings;
auto updchart = settings.value("updchart", "500").toInt();
if (last_step < step) { if (last_step < step) {
last_step = step; last_step = step;
series->append(step, data); series->append(step, data);
reset_zoom(); if (last_update.msecsTo(QTime::currentTime()) > updchart) {
last_update = QTime::currentTime();
reset_zoom();
}
} }
} }

View File

@ -18,6 +18,7 @@
#include <QList> #include <QList>
#include <QString> #include <QString>
#include <QWidget> #include <QWidget>
#include <QTime>
class QAction; class QAction;
class QCloseEvent; class QCloseEvent;
@ -100,6 +101,7 @@ private:
QLineSeries *series; QLineSeries *series;
QValueAxis *xaxis; QValueAxis *xaxis;
QValueAxis *yaxis; QValueAxis *yaxis;
QTime last_update;
}; };
} // namespace QtCharts } // namespace QtCharts
#endif #endif

View File

@ -250,26 +250,33 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa
connect(pluginbrowse, &QPushButton::released, this, &GeneralTab::pluginpath); connect(pluginbrowse, &QPushButton::released, this, &GeneralTab::pluginpath);
#endif #endif
auto *fontlayout = new QHBoxLayout; auto *gridlayout = new QGridLayout;
auto *getallfont = auto *getallfont =
new QPushButton(QIcon(":/icons/preferences-desktop-font.png"), "Select Default Font..."); new QPushButton(QIcon(":/icons/preferences-desktop-font.png"), "Select Default Font...");
auto *gettextfont = auto *gettextfont =
new QPushButton(QIcon(":/icons/preferences-desktop-font.png"), "Select Text Font..."); new QPushButton(QIcon(":/icons/preferences-desktop-font.png"), "Select Text Font...");
fontlayout->addWidget(getallfont); gridlayout->addWidget(getallfont, 0, 0);
fontlayout->addWidget(gettextfont); gridlayout->addWidget(gettextfont, 0, 1);
connect(getallfont, &QPushButton::released, this, &GeneralTab::newallfont); connect(getallfont, &QPushButton::released, this, &GeneralTab::newallfont);
connect(gettextfont, &QPushButton::released, this, &GeneralTab::newtextfont); connect(gettextfont, &QPushButton::released, this, &GeneralTab::newtextfont);
auto *freqlayout = new QHBoxLayout; auto *freqlabel = new QLabel("Data update interval (ms)");
auto *freqlabel = new QLabel("GUI update interval (ms)");
auto *freqval = new QSpinBox; auto *freqval = new QSpinBox;
freqval->setRange(1, 1000); freqval->setRange(1, 1000);
freqval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType); freqval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType);
freqval->setValue(settings->value("updfreq", "10").toInt()); freqval->setValue(settings->value("updfreq", "10").toInt());
freqval->setObjectName("updfreq"); freqval->setObjectName("updfreq");
freqlayout->addWidget(freqlabel); gridlayout->addWidget(freqlabel, 1, 0);
freqlayout->addWidget(freqval); gridlayout->addWidget(freqval, 1, 1);
freqlayout->addStretch(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(echo);
layout->addWidget(cite); layout->addWidget(cite);
@ -283,8 +290,7 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa
layout->addWidget(pluginlabel); layout->addWidget(pluginlabel);
layout->addLayout(pluginlayout); layout->addLayout(pluginlayout);
#endif #endif
layout->addLayout(fontlayout); layout->addLayout(gridlayout);
layout->addLayout(freqlayout);
layout->addStretch(1); layout->addStretch(1);
setLayout(layout); setLayout(layout);
} }