add new tab to preferences for charts window settings

This commit is contained in:
Axel Kohlmeyer
2025-04-12 11:49:41 -04:00
parent 1ad2df84d8
commit bb09088731
4 changed files with 128 additions and 15 deletions

View File

@ -67,6 +67,7 @@ Preferences::Preferences(LammpsWrapper *_lammps, QWidget *parent) :
tabWidget->addTab(new AcceleratorTab(settings, lammps), "&Accelerators");
tabWidget->addTab(new SnapshotTab(settings), "&Snapshot Image");
tabWidget->addTab(new EditorTab(settings), "&Editor Settings");
tabWidget->addTab(new ChartsTab(settings), "Cha&rts Settings");
connect(buttonBox, &QDialogButtonBox::accepted, this, &Preferences::accept);
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
@ -77,7 +78,7 @@ Preferences::Preferences(LammpsWrapper *_lammps, QWidget *parent) :
setLayout(layout);
setWindowIcon(QIcon(":/icons/lammps-icon-128x128.png"));
setWindowTitle("LAMMPS-GUI - Preferences");
resize(600, 450);
resize(700, 500);
}
Preferences::~Preferences()
@ -207,6 +208,25 @@ void Preferences::accept()
if (box) settings->setValue("autosave", box->isChecked());
settings->endGroup();
// chart window settings
settings->beginGroup("charts");
field = tabWidget->findChild<QLineEdit *>("title");
if (field) settings->setValue("title", field->text());
field = tabWidget->findChild<QLineEdit *>("xlabel");
if (field) settings->setValue("xlabel", field->text());
combo = tabWidget->findChild<QComboBox *>("smoothchoice");
if (combo) settings->setValue("smoothchoice", combo->currentIndex());
spin = tabWidget->findChild<QSpinBox *>("smoothwindow");
if (spin) settings->setValue("smoothwindow", spin->value());
spin = tabWidget->findChild<QSpinBox *>("smoothorder");
if (spin) settings->setValue("smoothorder", spin->value());
settings->endGroup();
spin = tabWidget->findChild<QSpinBox *>("chartx");
if (spin) settings->setValue("chartx", spin->value());
spin = tabWidget->findChild<QSpinBox *>("charty");
if (spin) settings->setValue("charty", spin->value());
QDialog::accept();
}
@ -622,6 +642,7 @@ EditorTab::EditorTab(QSettings *_settings, QWidget *parent) : QWidget(parent), s
grid->addWidget(retval, i++, 1, Qt::AlignVCenter);
grid->addWidget(autolbl, i, 0, Qt::AlignTop);
grid->addWidget(autoval, i++, 1, Qt::AlignVCenter);
grid->addWidget(new QLabel(" "), i++, 0);
grid->addWidget(savlbl, i, 0, Qt::AlignTop);
grid->addWidget(savval, i++, 1, Qt::AlignVCenter);
@ -631,6 +652,75 @@ EditorTab::EditorTab(QSettings *_settings, QWidget *parent) : QWidget(parent), s
setLayout(grid);
}
ChartsTab::ChartsTab(QSettings *_settings, QWidget *parent) : QWidget(parent), settings(_settings)
{
auto *grid = new QGridLayout;
auto *chartlbl = new QLabel("Charts default settings:");
settings->beginGroup("charts");
auto *titlelbl = new QLabel("Default chart title:");
auto *titletxt = new QLineEdit(settings->value("title", "Thermo: %f").toString());
auto *titlehlp = new QLabel("(use %f for current input file)");
auto *xlabellbl = new QLabel("Default x-axis label:");
auto *xlabeltxt = new QLineEdit(settings->value("xlabel", "Time step").toString());
// list of choices must be kepy in sync with list in chartviewer
auto *smoothlbl = new QLabel("Default plot data choice:");
auto *smoothval = new QComboBox;
smoothval->addItem("Raw");
smoothval->addItem("Smooth");
smoothval->addItem("Both");
smoothval->setObjectName("smoothchoice");
smoothval->setCurrentIndex(settings->value("smoothchoice", 2).toInt());
auto *smwindlbl = new QLabel("Default smoothing window:");
auto *smwindval = new QSpinBox;
smwindval->setRange(5, 999);
smwindval->setValue(settings->value("smoothwindow", 10).toInt());
smwindval->setObjectName("smoothwindow");
auto *smordrlbl = new QLabel("Default smoothing order:");
auto *smordrval = new QSpinBox;
smordrval->setRange(1, 20);
smordrval->setValue(settings->value("smoothorder", 4).toInt());
smordrval->setObjectName("smoothorder");
settings->endGroup();
auto *chartxlbl = new QLabel("Chart default width:");
auto *chartxval = new QSpinBox;
chartxval->setRange(400, 40000);
chartxval->setValue(settings->value("chartx", 500).toInt());
chartxval->setObjectName("chartx");
auto *chartylbl = new QLabel("Chart default height:");
auto *chartyval = new QSpinBox;
chartyval->setRange(300, 30000);
chartyval->setValue(settings->value("charty", 320).toInt());
chartyval->setObjectName("charty");
int i = 0;
grid->addWidget(chartlbl, i++, 0, 1, 2, Qt::AlignTop | Qt::AlignHCenter);
grid->addWidget(titlelbl, i, 0, Qt::AlignTop);
grid->addWidget(titletxt, i, 1, Qt::AlignTop);
grid->addWidget(titlehlp, i++, 2, Qt::AlignTop);
grid->addWidget(xlabellbl, i, 0, Qt::AlignTop);
grid->addWidget(xlabeltxt, i++, 1, Qt::AlignTop);
grid->addWidget(smoothlbl, i, 0, Qt::AlignTop);
grid->addWidget(smoothval, i++, 1, Qt::AlignTop);
grid->addWidget(smwindlbl, i, 0, Qt::AlignTop);
grid->addWidget(smwindval, i++, 1, Qt::AlignTop);
grid->addWidget(smordrlbl, i, 0, Qt::AlignTop);
grid->addWidget(smordrval, i++, 1, Qt::AlignVCenter);
grid->addWidget(chartxlbl, i, 0, Qt::AlignTop);
grid->addWidget(chartxval, i++, 1, Qt::AlignVCenter);
grid->addWidget(chartylbl, i, 0, Qt::AlignTop);
grid->addWidget(chartyval, i++, 1, Qt::AlignVCenter);
grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), i, 0);
grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), i, 1);
grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), i, 2);
setLayout(grid);
}
// Local Variables:
// c-basic-offset: 4
// End: