Skip to content
Draft
2 changes: 2 additions & 0 deletions src/Makefile.qt.include
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ BITCOIN_QT_H = \
qt/proposalwizard.h \
qt/guiconstants.h \
qt/guiutil.h \
qt/guiutil_font.h \
qt/initexecutor.h \
qt/intro.h \
qt/macdockiconhandler.h \
Expand Down Expand Up @@ -227,6 +228,7 @@ BITCOIN_QT_BASE_CPP = \
qt/clientmodel.cpp \
qt/csvmodelwriter.cpp \
qt/guiutil.cpp \
qt/guiutil_font.cpp \
qt/initexecutor.cpp \
qt/intro.cpp \
qt/modaloverlay.cpp \
Expand Down
1 change: 1 addition & 0 deletions src/qt/addressbookpage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <qt/csvmodelwriter.h>
#include <qt/editaddressdialog.h>
#include <qt/guiutil.h>
#include <qt/guiutil_font.h>
#include <qt/optionsmodel.h>
#include <qt/qrdialog.h>

Expand Down
1 change: 1 addition & 0 deletions src/qt/addresstablemodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <qt/addresstablemodel.h>

#include <qt/guiutil.h>
#include <qt/guiutil_font.h>
#include <qt/walletmodel.h>

#include <key_io.h>
Expand Down
8 changes: 3 additions & 5 deletions src/qt/appearancewidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,9 @@ AppearanceWidget::AppearanceWidget(QWidget* parent) :
ui->theme->addItem(entry, QVariant(entry));
}

GUIUtil::FontFamily fontSystem = GUIUtil::FontFamily::SystemDefault;
GUIUtil::FontFamily fontMontserrat = GUIUtil::FontFamily::Montserrat;

ui->fontFamily->addItem(GUIUtil::fontFamilyToString(fontSystem), QVariant(static_cast<int>(fontSystem)));
ui->fontFamily->addItem(GUIUtil::fontFamilyToString(fontMontserrat), QVariant(static_cast<int>(fontMontserrat)));
for (const auto& [family, family_str, selectable] : GUIUtil::AVAILABLE_FONTS) {
if (selectable) ui->fontFamily->addItem(family_str, QVariant(static_cast<int>(family)));
}

updateWeightSlider();

Expand Down
1 change: 1 addition & 0 deletions src/qt/appearancewidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <QWidget>

#include <qt/guiutil.h>
#include <qt/guiutil_font.h>

Comment on lines 10 to 12
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Repo-wide check for missing guiutil_font.h includes.

To prevent ODR/compile issues from transitive includes, verify all TUs that use the new font APIs include <qt/guiutil_font.h>.

Also applies to: 51-55


🏁 Script executed:

#!/bin/bash
set -euo pipefail
# Find files that use new font APIs/types
mapfile -t files < <(rg -nP --glob '!**/build/**' --glob '!**/dist/**' --type=cpp \
  '(GUIUtil::(setFont|getFont|getFontFamily|getFontScale|getFontWeight[A-Za-z]*|updateFonts)\s*\()|GUIUtil::Font(Weight|Family)' \
  | cut -d: -f1 | sort -u)

missing=0
for f in "${files[@]}"; do
  if ! rg -qP '#\s*include\s*[<"]qt/guiutil_font\.h[>"]' "$f"; then
    echo "Missing include: $f"
    ((missing++)) || true
  fi
done

echo "Checked ${#files[@]} file(s). Missing includes: $missing"
# Also ensure the new sources are wired into the build
echo -e "\nBuild system references to guiutil_font:"
rg -n 'guiutil_font\.(h|cpp)' -g 'src/**' || true

Length of output: 364


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Collect all translation units using the new GUIUtil font APIs/types
rg -nP --glob '!**/build/**' --glob '!**/dist/**' --type=cpp \
  '(GUIUtil::(setFont|getFont|getFontFamily|getFontScale|getFontWeight[A-Za-z]*|updateFonts)\s*\()|GUIUtil::Font(Weight|Family)' \
  | cut -d: -f1 | sort -u > /tmp/guiutil_font_files.txt

missing=0
while IFS= read -r f; do
  if ! grep -qP '#\s*include\s*[<"]qt/guiutil_font\.h[>"]' "$f"; then
    echo "Missing include: $f"
    missing=$((missing+1))
  fi
done < /tmp/guiutil_font_files.txt

echo "Checked $(wc -l < /tmp/guiutil_font_files.txt) file(s). Missing includes: $missing"

echo -e "\nBuild system references to guiutil_font:"
rg -n 'guiutil_font\.(h|cpp)' -g 'src/**' || true

Length of output: 5278


Add missing guiutil_font.h includes
In src/qt/appearancewidget.cpp and src/qt/optionsdialog.cpp, add

#include <qt/guiutil_font.h>

at the top to ensure all uses of the new GUIUtil font APIs pull in their definitions.

🤖 Prompt for AI Agents
In src/qt/appearancewidget.cpp (top of file, after existing qt includes) and
src/qt/optionsdialog.cpp (top of file, after existing qt includes), add the
missing include directive for qt/guiutil_font.h so the new GUIUtil font APIs are
declared; ensure the include is placed alongside the other qt/guiutil includes
and rebuilt to pick up the definitions.

namespace Ui {
class AppearanceWidget;
Expand Down
1 change: 1 addition & 0 deletions src/qt/askpassphrasedialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

#include <qt/guiconstants.h>
#include <qt/guiutil.h>
#include <qt/guiutil_font.h>
#include <qt/walletmodel.h>

#include <support/allocators/secure.h>
Expand Down
11 changes: 6 additions & 5 deletions src/qt/bitcoin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <qt/clientmodel.h>
#include <qt/guiconstants.h>
#include <qt/guiutil.h>
#include <qt/guiutil_font.h>
#include <qt/initexecutor.h>
#include <qt/intro.h>
#include <qt/networkstyle.h>
Expand Down Expand Up @@ -488,10 +489,10 @@ static void SetupUIArgs(ArgsManager& argsman)
{
argsman.AddArg("-choosedatadir", strprintf(QObject::tr("Choose data directory on startup (default: %u)").toStdString(), DEFAULT_CHOOSE_DATADIR), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-custom-css-dir", "Set a directory which contains custom css files. Those will be used as stylesheets for the UI.", ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-font-family", QObject::tr("Set the font family. Possible values: %1. (default: %2)").arg("SystemDefault, Montserrat").arg(GUIUtil::fontFamilyToString(GUIUtil::getFontFamilyDefault())).toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-font-scale", QObject::tr("Set a scale factor which gets applied to the base font size. Possible range %1 (smallest fonts) to %2 (largest fonts). (default: %3)").arg(-100).arg(100).arg(GUIUtil::getFontScaleDefault()).toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-font-weight-bold", QObject::tr("Set the font weight for bold texts. Possible range %1 to %2 (default: %3)").arg(0).arg(8).arg(GUIUtil::weightToArg(GUIUtil::getFontWeightBoldDefault())).toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-font-weight-normal", QObject::tr("Set the font weight for normal texts. Possible range %1 to %2 (default: %3)").arg(0).arg(8).arg(GUIUtil::weightToArg(GUIUtil::getFontWeightNormalDefault())).toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-font-family", QObject::tr("Set the font family. Possible values: %1. (default: %2)").arg("SystemDefault, Montserrat").arg(GUIUtil::fontFamilyToString(GUIUtil::g_font_defaults.family)).toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-font-scale", QObject::tr("Set a scale factor which gets applied to the base font size. Possible range %1 (smallest fonts) to %2 (largest fonts). (default: %3)").arg(-100).arg(100).arg(GUIUtil::g_font_defaults.scale).toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-font-weight-bold", QObject::tr("Set the font weight for bold texts. Possible range %1 to %2 (default: %3)").arg(0).arg(8).arg(GUIUtil::weightToArg(GUIUtil::g_font_defaults.weight_bold)).toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-font-weight-normal", QObject::tr("Set the font weight for normal texts. Possible range %1 to %2 (default: %3)").arg(0).arg(8).arg(GUIUtil::weightToArg(GUIUtil::g_font_defaults.weight_normal)).toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-lang=<lang>", QObject::tr("Set language, for example \"de_DE\" (default: system locale)").toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-min", QObject::tr("Start minimized").toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
argsman.AddArg("-resetguisettings", QObject::tr("Reset all settings changed in the GUI").toStdString(), ArgsManager::ALLOW_ANY, OptionsCategory::GUI);
Expand Down Expand Up @@ -675,7 +676,7 @@ int GuiMain(int argc, char* argv[])
// Validate/set font family
if (gArgs.IsArgSet("-font-family")) {
GUIUtil::FontFamily family;
QString strFamily = gArgs.GetArg("-font-family", GUIUtil::fontFamilyToString(GUIUtil::getFontFamilyDefault()).toStdString()).c_str();
QString strFamily = gArgs.GetArg("-font-family", GUIUtil::fontFamilyToString(GUIUtil::g_font_defaults.family).toStdString()).c_str();
try {
family = GUIUtil::fontFamilyFromString(strFamily);
} catch (const std::exception& e) {
Expand Down
1 change: 1 addition & 0 deletions src/qt/bitcoingui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <qt/createwalletdialog.h>
#include <qt/guiconstants.h>
#include <qt/guiutil.h>
#include <qt/guiutil_font.h>
#include <qt/modaloverlay.h>
#include <qt/networkstyle.h>
#include <qt/notificator.h>
Expand Down
1 change: 1 addition & 0 deletions src/qt/coincontroldialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <qt/addresstablemodel.h>
#include <qt/bitcoinunits.h>
#include <qt/guiutil.h>
#include <qt/guiutil_font.h>
#include <qt/optionsmodel.h>
#include <qt/walletmodel.h>

Expand Down
112 changes: 112 additions & 0 deletions src/qt/forms/optionsdialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -1055,6 +1055,118 @@ https://explore.transifex.com/dash/dash/</string>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="font_groupBox">
<property name="title">
<string>Monospaced font in the Overview tab:</string>
</property>
<layout class="QVBoxLayout" name="font_verticalLayout">
<property name="leftMargin">
<number>18</number>
</property>
<property name="topMargin">
<number>18</number>
</property>
<property name="rightMargin">
<number>18</number>
</property>
<property name="bottomMargin">
<number>18</number>
</property>
<item>
<layout class="QHBoxLayout" name="embeddedFont_horizontalLayout">
<item>
<widget class="QRadioButton" name="embeddedFont_radioButton">
<property name="text">
<string>embedded &quot;%1&quot;</string>
</property>
</widget>
</item>
<item>
<spacer name="embeddedFont_horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QVBoxLayout" name="embeddedFont_verticalLayout">
<item>
<widget class="QLabel" name="embeddedFont_label_1">
<property name="text">
<string>111.11111111 DASH</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="embeddedFont_label_9">
<property name="text">
<string>909.09090909 DASH</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="Line" name="font_line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="systemFont_horizontalLayout">
<item>
<widget class="QRadioButton" name="systemFont_radioButton">
<property name="text">
<string>closest matching &quot;%1&quot;</string>
</property>
</widget>
</item>
<item>
<spacer name="systemFont_horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QVBoxLayout" name="systemFont_verticalLayout">
<item>
<widget class="QLabel" name="systemFont_label_1">
<property name="text">
<string>111.11111111 DASH</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="systemFont_label_9">
<property name="text">
<string>909.09090909 DASH</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
Expand Down
1 change: 1 addition & 0 deletions src/qt/governancelist.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include <key_io.h>
#include <qt/clientmodel.h>
#include <qt/guiutil.h>
#include <qt/guiutil_font.h>
#include <qt/optionsmodel.h>
#include <qt/walletmodel.h>
#include <script/standard.h>
Expand Down
Loading
Loading