Close #635: Inconsistent font size.

Don't use monospaced font for the table by default.
Allow setting a different, especially a monospaced font
for the table and remember it globally.
This commit is contained in:
Christian Hohnstaedt 2025-03-30 11:21:28 +02:00
parent 196219283b
commit 7428170b2d
7 changed files with 71 additions and 20 deletions

View File

@ -24,7 +24,6 @@ KeyDetail::KeyDetail(QWidget *w) : XcaDetail(w)
{
setupUi(this);
keyModulus->setFont(XcaApplication::tableFont);
tabWidget->setCurrentIndex(0);
init("keydetail", ":keyImg");
}

View File

@ -174,10 +174,14 @@ void MainWindow::init_menu()
SLOT(exportIndexHierarchy()));
acList += extra->addAction(tr("C&hange DataBase password"), this,
SLOT(changeDbPass()));
#if 0
acList += extra->addAction(tr("&Undelete items"), this,
SLOT(undelete()));
#endif
extra->addSeparator();
acList += extra->addAction(tr("Change table font"), this,
SLOT(changeTableFont()));
acList += extra->addAction(tr("Reset table font"), this,
SLOT(resetTableFont()));
extra->addSeparator();
extra->addAction(tr("Generate DH parameter"), this,
SLOT(generateDHparam()));
extra->addAction(tr("OID Resolver"), resolver, SLOT(show()));

View File

@ -23,6 +23,7 @@
#include <QThread>
#include <QMimeData>
#include <QInputDialog>
#include <QFontDialog>
#include <openssl/err.h>
@ -72,6 +73,11 @@ void MainWindow::initResolver()
resolver->searchOid(search);
}
static QString tableFontFileName()
{
return getUserSettingsDir() + "/tablefont";
}
MainWindow::MainWindow() : QMainWindow()
{
dbindex = new QLabel();
@ -112,6 +118,13 @@ MainWindow::MainWindow() : QMainWindow()
EVP_add_digest_alias(SN_sha512,SN_ecdsa_with_SHA512);
setAcceptDrops(true);
tableFont = QApplication::font();
QFile file(tableFontFileName());
if (file.open(QIODevice::ReadOnly)) {
QString line = QString::fromUtf8(file.readLine()).trimmed();
bool res = tableFont.fromString(line);
qDebug() << "Table font LOAD:" << line << res;
}
searchEdit = new QLineEdit();
searchEdit->setPlaceholderText(tr("Search"));
@ -126,8 +139,10 @@ MainWindow::MainWindow() : QMainWindow()
pki_base::setupColors(palette());
foreach(XcaTreeView *v, views)
foreach(XcaTreeView *v, views) {
v->setMainwin(this, searchEdit);
v->setFont(tableFont);
}
XcaProgress::setGui(new XcaProgressGui(this));
xcaWarning::setGui(new xcaWarningGui());
@ -800,15 +815,17 @@ void MainWindow::keyPressEvent(QKeyEvent *e)
QMainWindow::keyPressEvent(e);
return;
}
int size = XcaApplication::tableFont.pointSize();
int size = tableFont.pointSize();
switch (e->key()) {
case Qt::Key_Plus:
XcaApplication::tableFont.setPointSize(size +1);
tableFont.setPointSize(size +1);
updateTableFont(tableFont);
break;
case Qt::Key_Minus:
if (size > 4) {
XcaApplication::tableFont.setPointSize(size -1);
tableFont.setPointSize(size -1);
updateTableFont(tableFont);
}
break;
case Qt::Key_V:
@ -846,3 +863,41 @@ void MainWindow::default_database()
{
Database.as_default();
}
void MainWindow::changeTableFont()
{
QFontDialog dlg(tableFont, this);
connect(&dlg, SIGNAL(currentFontChanged(const QFont &)),
this, SLOT(updateTableFont(const QFont &)));
if (dlg.exec() == QDialog::Accepted)
tableFont = dlg.selectedFont();
qDebug() << tableFont.toString();
QFile file(tableFontFileName());
if (file.open(QIODevice::WriteOnly))
file.write(tableFont.toString().toUtf8());
updateTableFont(tableFont);
}
void MainWindow::resetTableFont()
{
tableFont = QApplication::font();
updateTableFont(tableFont);
QFile file(tableFontFileName());
file.remove();
}
void MainWindow::updateTableFont(const QFont &font)
{
qDebug() << "New Font: " << font.pointSize() << font.family()
<< font.styleName();
foreach(XcaTreeView *v, views) {
if (v) {
v->setFont(font);
v->update();
}
}
}

View File

@ -84,6 +84,7 @@ class MainWindow: public QMainWindow, public Ui::MainWindow
NIDlist *read_nidlist(QString name);
QLabel *statusLabel;
QString homedir;
QFont tableFont;
void keyPressEvent(QKeyEvent *e);
void update_history_menu();
void showDatabaseName();
@ -133,6 +134,9 @@ class MainWindow: public QMainWindow, public Ui::MainWindow
void exportIndexHierarchy();
void openRemoteSqlDB();
void generateDHparamDone();
void changeTableFont();
void resetTableFont();
void updateTableFont(const QFont &font);
protected slots:
void closeEvent(QCloseEvent * event);

View File

@ -16,7 +16,6 @@
#include <QFile>
#include <QAction>
QFont XcaApplication::tableFont;
QList<QLocale> XcaApplication::langAvail;
void XcaApplication::setMainwin(MainWindow *m)
@ -62,13 +61,6 @@ XcaApplication::XcaApplication(int &argc, char *argv[])
setLibraryPaths(libp);
#endif
tableFont = QFont("Courier New", QApplication::font().pointSize()
#if defined (Q_OS_WIN32)
+1
#else
+2
#endif
);
installEventFilter(this);
}

View File

@ -42,7 +42,6 @@ class XcaApplication : public QApplication
virtual ~XcaApplication();
void setMainwin(MainWindow *m);
void setupLanguage(const QLocale &lang);
static QFont tableFont;
static bool languageAvailable(const QLocale &l);
bool eventFilter(QObject *watched, QEvent *ev);
bool notify(QObject* receiver, QEvent* event);

View File

@ -56,8 +56,6 @@ XcaTreeView::XcaTreeView(QWidget *parent)
connect(&throttle, SIGNAL(timeout()), proxy, SLOT(invalidate()));
setFocusPolicy(Qt::StrongFocus);
setExpandsOnDoubleClick(false);
setFont(XcaApplication::tableFont);
}
XcaTreeView::~XcaTreeView()