From 206302a8e1b84a1373a96cb237178599573216f6 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Tue, 13 Aug 2024 03:21:32 -0400
Subject: [PATCH] more consistent font selections by avoiding QApplication
---
tools/lammps-gui/lammpsgui.cpp | 40 +++++++++++++++++++++++++-------
tools/lammps-gui/lammpsgui.h | 2 ++
tools/lammps-gui/preferences.cpp | 20 +++++++++++-----
3 files changed, 48 insertions(+), 14 deletions(-)
diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp
index 634b5d6a9a..066e3e7926 100644
--- a/tools/lammps-gui/lammpsgui.cpp
+++ b/tools/lammps-gui/lammpsgui.cpp
@@ -168,17 +168,20 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) :
setWindowIcon(QIcon(":/icons/lammps-icon-128x128.png"));
- QFont all_font("Arial", -1);
+ QFont all_font;
+ all_font.fromString(settings.value("allfont", QFont("Arial", -1).toString()).toString());
all_font.setStyleHint(QFont::SansSerif, QFont::PreferOutline);
- all_font.fromString(settings.value("allfont", all_font.toString()).toString());
settings.setValue("allfont", all_font.toString());
- QApplication::setFont(all_font);
+ setFont(all_font);
- QFont text_font("Monospace", -1);
+ QFont text_font;
+ text_font.fromString(settings.value("textfont", QFont("Monospace", -1).toString()).toString());
text_font.setStyleHint(QFont::Monospace, QFont::PreferOutline);
- text_font.fromString(settings.value("textfont", text_font.toString()).toString());
+ text_font.setFixedPitch(true);
+
settings.setValue("textfont", text_font.toString());
ui->textEdit->setFont(text_font);
+ ui->textEdit->document()->setDefaultFont(text_font);
ui->textEdit->setMinimumSize(600, 400);
varwindow = new QLabel(QString());
@@ -820,6 +823,7 @@ void LammpsGui::inspect_file(const QString &fileName)
QFile(infodata).remove();
auto *inspect_image = new ImageViewer(
fileName, &lammps, QString("LAMMPS-GUI: Image for %1").arg(shortName));
+ inspect_image->setFont(font());
inspect_image->show();
ilist->image = inspect_image;
}
@@ -1415,6 +1419,21 @@ void LammpsGui::autoSave()
if (autosave) write_file(fileName);
}
+void LammpsGui::setFont(const QFont &newfont)
+{
+ QMainWindow::setFont(newfont);
+ if (ui) {
+ ui->textEdit->setFont(newfont);
+ ui->menubar->setFont(newfont);
+ ui->menuFile->setFont(newfont);
+ ui->menuEdit->setFont(newfont);
+ ui->menu_Run->setFont(newfont);
+ ui->menu_Tutorial->setFont(newfont);
+ ui->menuAbout->setFont(newfont);
+ ui->menu_View->setFont(newfont);
+ }
+}
+
void LammpsGui::about()
{
std::string version = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION;
@@ -1457,9 +1476,9 @@ void LammpsGui::about()
msg.setInformativeText(info.c_str());
msg.setIconPixmap(QPixmap(":/icons/lammps-icon-128x128.png").scaled(64, 64));
msg.setStandardButtons(QMessageBox::Close);
- QFont font;
- font.setPointSizeF(font.pointSizeF() * 0.75);
- msg.setFont(font);
+ QFont myfont(font());
+ myfont.setPointSize(myfont.pointSizeF() * 0.8);
+ msg.setFont(myfont);
auto *minwidth = new QSpacerItem(700, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
auto *layout = (QGridLayout *)msg.layout();
@@ -1521,6 +1540,7 @@ void LammpsGui::help()
"LAMMPS-GUI in parallel with MPI.
");
msg.setIconPixmap(QPixmap(":/icons/lammps-icon-128x128.png").scaled(64, 64));
msg.setStandardButtons(QMessageBox::Close);
+ msg.setFont(font());
msg.exec();
}
@@ -1539,6 +1559,7 @@ void LammpsGui::start_tutorial1()
{
if (wizard) delete wizard;
wizard = new Tutorial1Wizard;
+ wizard->setFont(font());
wizard->addPage(tutorial1_intro());
wizard->addPage(tutorial1_info());
wizard->addPage(tutorial1_directory());
@@ -1835,6 +1856,7 @@ void LammpsGui::edit_variables()
{
QList> newvars = variables;
SetVariables vars(newvars);
+ vars.setFont(font());
if (vars.exec() == QDialog::Accepted) {
variables = newvars;
if (lammps.is_running()) {
@@ -1856,6 +1878,8 @@ void LammpsGui::preferences()
bool oldcite = settings.value("cite", false).toBool();
Preferences prefs(&lammps);
+ prefs.setFont(font());
+ prefs.setObjectName("preferences");
if (prefs.exec() == QDialog::Accepted) {
// must delete LAMMPS instance after preferences have changed that require
// using different command line flags when creating the LAMMPS instance like
diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h
index ce89d23998..0cf6677149 100644
--- a/tools/lammps-gui/lammpsgui.h
+++ b/tools/lammps-gui/lammpsgui.h
@@ -35,6 +35,7 @@
// forward declarations
+class QFont;
class QLabel;
class QPlainTextEdit;
class QProgressBar;
@@ -82,6 +83,7 @@ protected:
void run_done();
void setDocver();
void autoSave();
+ void setFont(const QFont &newfont);
QWizardPage *tutorial1_intro();
QWizardPage *tutorial1_info();
QWizardPage *tutorial1_directory();
diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp
index 66a82263cc..2e1847c534 100644
--- a/tools/lammps-gui/preferences.cpp
+++ b/tools/lammps-gui/preferences.cpp
@@ -295,16 +295,24 @@ void GeneralTab::updatefonts(const QFont &all, const QFont &text)
for (QWidget *widget : QApplication::topLevelWidgets())
if (widget->objectName() == "LammpsGui") main = dynamic_cast(widget);
- QApplication::setFont(all);
- if (main) main->ui->textEdit->document()->setDefaultFont(text);
+ if (main) {
+ main->setFont(all);
+ main->ui->textEdit->document()->setDefaultFont(text);
+ if (main->wizard) main->wizard->setFont(all);
+ }
+
+ Preferences *prefs = nullptr;
+ for (QWidget *widget : QApplication::topLevelWidgets())
+ if (widget->objectName() == "preferences") prefs = dynamic_cast(widget);
+ if (prefs) prefs->setFont(all);
}
void GeneralTab::newallfont()
{
QSettings settings;
QFont all, text;
- all.fromString(settings.value("allfont", "").toString());
- text.fromString(settings.value("textfont", "").toString());
+ all.fromString(settings.value("allfont", QFont("Arial", -1).toString()).toString());
+ text.fromString(settings.value("textfont", QFont("Monospace", -1).toString()).toString());
bool ok = false;
QFont font = QFontDialog::getFont(&ok, all, this, QString("Select Default Font"));
@@ -317,8 +325,8 @@ void GeneralTab::newtextfont()
{
QSettings settings;
QFont all, text;
- all.fromString(settings.value("allfont", "").toString());
- text.fromString(settings.value("textfont", "").toString());
+ all.fromString(settings.value("allfont", QFont("Arial", -1).toString()).toString());
+ text.fromString(settings.value("textfont", QFont("Monospace", -1).toString()).toString());
bool ok = false;
QFont font = QFontDialog::getFont(&ok, text, this, QString("Select Text Font"));