Compare commits

..

7 Commits

Author SHA1 Message Date
forbes
7168c402b8 fix(build): fix DlgSettingsGeneral::applyMenuIconSize visibility and namespace
- Move applyMenuIconSize to public access so StartupProcess can call it
- Add Dialog:: namespace qualifier in StartupProcess.cpp
2026-02-08 17:01:41 -06:00
forbes
af3137dc6c chore: update silo submodule to latest main
New features:
- SSE reconnect with exponential backoff and terminal state handling
- Silo_Diag connection diagnostics command
- Server mode UI reflection in client
- Silo-aware start panel
- Database Activity pane with comments, interaction, and badges
2026-02-08 16:25:18 -06:00
forbes
173046846f fix(theme): Report View defaults, Help rebranding, hyperlink color, checkbox consistency
Report View (fixes #41):
- Enable error and log message recording by default
- Auto-show report view on errors and warnings

Help page rebranding (fixes #42):
- Remove disabled GitHub (online) option
- Remove PySide Web components disclaimer
- Rebrand 'In a FreeCAD tab' to 'In an application tab'
- Clean up FreeCAD-specific references in tooltips

Hyperlink color (fixes #43):
- Add QLabel[haslink] rule to set QPalette::Link to Catppuccin Lavender (#b4befe)
- Applied across all three stylesheet copies

Checkbox/indicator consistency (fixes #44):
- Add QGroupBox::indicator styling to match QCheckBox::indicator
- Fills checkable group boxes (e.g. Notification Area) with the same
  themed filled-square style instead of OS default checkmark
2026-02-08 15:42:16 -06:00
b6ab14cc6f Merge branch 'main' into fix/ui-appearance-polish
Some checks failed
Build and Test / build (pull_request) Failing after 17m32s
2026-02-08 21:36:51 +00:00
da46073d68 Merge pull request 'feat: expose version to Python and add update checker (#28, #29)' (#45) from feat/update-checker into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #45
2026-02-08 21:36:40 +00:00
forbes
262dfa583d fix(defaults): tune Document, Selection, and Notification preference defaults
Some checks failed
Build and Test / build (pull_request) Failing after 12m28s
Document (fixes #37):
- Increase max undo/redo steps from 20 to 50
- Reduce auto-save interval from 15 to 5 minutes
- Increase max backup files from 1 to 3
- Set license to Other with blank URL (removes Wikipedia link)

Selection (fixes #38):
- Enable preselect-on-tree-hover (PreSelection)
- Enable auto-switch to 3D view (SyncView)
- Enable auto-expand tree item (SyncSelection)

Notification Area (fixes #40):
- Reduce max notification list from 1000 to 100
- Reduce max concurrent popups from 15 to 3
- Reduce bubble width from 800px to 400px
- Reduce max popup duration from 20s to 10s
- Reduce min popup duration from 5s to 3s
2026-02-08 13:36:57 -06:00
forbes
cc5ba638d1 fix(gui): UI appearance polish — Wayland scaling, menu icon size pref, dialog cleanup
Some checks failed
Build and Test / build (pull_request) Failing after 13m13s
- Fix hazy text on Wayland by setting QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor
  and QT_ENABLE_HIGHDPI_SCALING=1 in deb and AppImage launchers; remove forced
  QT_QPA_PLATFORM=xcb from AppImage to allow native Wayland (fixes #33)

- Add menu icon size preference selector (Small/Medium/Large/Extra large) in
  General preferences, applied via QMenu stylesheet at startup and on save (fixes #46)

- Replace verbose theme customization banner with concise 'Kindred Create Theme'
  label in UI preferences; split Overlay group into 'Panel Visibility' and
  'Overlay Interaction' sections (fixes #35)

- Remove Addon Manager branding label from General preferences, change recent
  file list default from 4 to 10 (fixes #36)
2026-02-08 13:27:22 -06:00
14 changed files with 279 additions and 120 deletions

View File

@@ -112,6 +112,10 @@ export XKB_CONFIG_ROOT="${KINDRED_CREATE_HOME}/share/X11/xkb"
export FONTCONFIG_FILE="${KINDRED_CREATE_HOME}/etc/fonts/fonts.conf"
export FONTCONFIG_PATH="${KINDRED_CREATE_HOME}/etc/fonts"
# Qt Wayland fractional scaling — force integer rounding to avoid blurry text
export QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor
export QT_ENABLE_HIGHDPI_SCALING=1
# Use system CA certificates so bundled Python trusts internal CAs (e.g. FreeIPA)
# The bundled openssl has a hardcoded cafile from the build environment which
# does not exist on the target system.

View File

@@ -9,8 +9,9 @@ export PATH_TO_FREECAD_LIBDIR=${HERE}/usr/lib
export FONTCONFIG_FILE=/etc/fonts/fonts.conf
export FONTCONFIG_PATH=/etc/fonts
# Fix: Use X to run on Wayland
export QT_QPA_PLATFORM=xcb
# Qt HiDPI scaling — force integer rounding to avoid blurry text on fractional scales
export QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor
export QT_ENABLE_HIGHDPI_SCALING=1
# Show packages info if DEBUG env variable is set
if [ "$DEBUG" = 1 ]; then

View File

@@ -25,6 +25,10 @@
<FCUInt Name="colorLogging" Value="2497893887"/>
<FCUInt Name="colorWarning" Value="4192382975"/>
<FCUInt Name="colorError" Value="4086016255"/>
<FCBool Name="checkError" Value="1"/>
<FCBool Name="checkLogging" Value="1"/>
<FCBool Name="checkShowReportViewOnError" Value="1"/>
<FCBool Name="checkShowReportViewOnWarning" Value="1"/>
</FCParamGroup>
<FCParamGroup Name="View">
<FCUInt Name="BackgroundColor" Value="505294591"/>
@@ -72,9 +76,26 @@
<FCUInt Name="BacklightColor" Value="1162304255"/>
<FCFloat Name="BacklightIntensity" Value="0.30"/>
</FCParamGroup>
<FCParamGroup Name="Document">
<FCInt Name="MaxUndoSize" Value="50"/>
<FCInt Name="AutoSaveTimeout" Value="5"/>
<FCInt Name="CountBackupFiles" Value="3"/>
<FCInt Name="prefLicenseType" Value="19"/>
<FCText Name="prefLicenseUrl"></FCText>
</FCParamGroup>
<FCParamGroup Name="TreeView">
<FCUInt Name="TreeEditColor" Value="3416717311"/>
<FCUInt Name="TreeActiveColor" Value="2799935999"/>
<FCBool Name="PreSelection" Value="1"/>
<FCBool Name="SyncView" Value="1"/>
<FCBool Name="SyncSelection" Value="1"/>
</FCParamGroup>
<FCParamGroup Name="NotificationArea">
<FCInt Name="MaxWidgetMessages" Value="100"/>
<FCInt Name="MaxOpenNotifications" Value="3"/>
<FCInt Name="NotificiationWidth" Value="400"/>
<FCInt Name="NotificationTime" Value="10"/>
<FCInt Name="MinimumOnScreenTime" Value="3"/>
</FCParamGroup>
<FCParamGroup Name="General">
<FCText Name="AutoloadModule">ZToolsWorkbench</FCText>

View File

@@ -744,6 +744,33 @@ QGroupBox::title {
background-color: #1e1e2e;
}
QGroupBox::indicator {
width: 18px;
height: 18px;
border: 2px solid #585b70;
border-radius: 4px;
background-color: #313244;
}
QGroupBox::indicator:hover {
border-color: #cba6f7;
}
QGroupBox::indicator:checked {
background-color: #cba6f7;
border-color: #cba6f7;
}
QGroupBox::indicator:checked:disabled {
background-color: #6c7086;
border-color: #6c7086;
}
QGroupBox::indicator:disabled {
background-color: #181825;
border-color: #45475a;
}
/* =============================================================================
Tree View
============================================================================= */
@@ -961,6 +988,11 @@ QLabel:disabled {
color: #6c7086;
}
/* Link color — picked up by FreeCAD to set QPalette::Link */
QLabel[haslink="true"] {
color: #b4befe; /* Catppuccin Lavender */
}
/* =============================================================================
Frames
============================================================================= */

View File

@@ -744,6 +744,33 @@ QGroupBox::title {
background-color: #1e1e2e;
}
QGroupBox::indicator {
width: 18px;
height: 18px;
border: 2px solid #585b70;
border-radius: 4px;
background-color: #313244;
}
QGroupBox::indicator:hover {
border-color: #cba6f7;
}
QGroupBox::indicator:checked {
background-color: #cba6f7;
border-color: #cba6f7;
}
QGroupBox::indicator:checked:disabled {
background-color: #6c7086;
border-color: #6c7086;
}
QGroupBox::indicator:disabled {
background-color: #181825;
border-color: #45475a;
}
/* =============================================================================
Tree View
============================================================================= */
@@ -964,6 +991,11 @@ QLabel:disabled {
color: #6c7086;
}
/* Link color — picked up by FreeCAD to set QPalette::Link */
QLabel[haslink="true"] {
color: #b4befe; /* Catppuccin Lavender */
}
/* =============================================================================
Frames
============================================================================= */

View File

@@ -28,6 +28,7 @@
#include <QApplication>
#include <QFileDialog>
#include <QLocale>
#include <QMenu>
#include <QMessageBox>
#include <QString>
#include <algorithm>
@@ -96,7 +97,6 @@ DlgSettingsGeneral::DlgSettingsGeneral(QWidget* parent)
ui->SaveNewPreferencePack->setEnabled(false);
ui->ManagePreferencePacks->setEnabled(false);
ui->themesCombobox->setEnabled(false);
ui->moreThemesLabel->setEnabled(false);
}
}
}
@@ -121,7 +121,6 @@ DlgSettingsGeneral::DlgSettingsGeneral(QWidget* parent)
this,
&DlgSettingsGeneral::onThemeChanged
);
connect(ui->moreThemesLabel, &QLabel::linkActivated, this, &DlgSettingsGeneral::onLinkActivated);
}
// If there are any saved config file backs, show the revert button, otherwise hide it:
@@ -147,9 +146,6 @@ DlgSettingsGeneral::DlgSettingsGeneral(QWidget* parent)
const auto visible = UnitsApi::isMultiUnitLength();
ui->comboBox_FracInch->setVisible(visible);
ui->fractionalInchLabel->setVisible(visible);
ui->moreThemesLabel->setEnabled(
Application::Instance->commandManager().getCommandByName("Std_AddonMgr") != nullptr
);
}
/**
@@ -166,7 +162,7 @@ void DlgSettingsGeneral::setRecentFileSize()
auto recent = getMainWindow()->findChild<RecentFilesAction*>(QLatin1String("recentFiles"));
if (recent) {
ParameterGrp::handle hGrp = WindowParameter::getDefaultParameter()->GetGroup("RecentFiles");
recent->resizeList(hGrp->GetInt("RecentFiles", 4));
recent->resizeList(hGrp->GetInt("RecentFiles", 10));
}
}
@@ -264,6 +260,11 @@ void DlgSettingsGeneral::saveSettings()
hGrp->SetInt("ToolbarIconSize", pixel);
getMainWindow()->setIconSize(QSize(pixel, pixel));
QVariant menuSize = ui->menuIconSize->itemData(ui->menuIconSize->currentIndex());
int menuPixel = menuSize.toInt();
hGrp->SetInt("MenuIconSize", menuPixel);
applyMenuIconSize(menuPixel);
int blinkTime {hGrp->GetBool("EnableCursorBlinking", true) ? -1 : 0};
qApp->setCursorFlashTime(blinkTime);
@@ -348,6 +349,7 @@ void DlgSettingsGeneral::loadSettings()
}
addIconSizes(getCurrentIconSize());
addMenuIconSizes(getCurrentMenuIconSize());
// TreeMode combobox setup.
loadDockWindowVisibility();
@@ -395,8 +397,9 @@ void DlgSettingsGeneral::resetSettingsToDefaults()
hGrp = WindowParameter::getDefaultParameter()->GetGroup("General");
// reset "Language" parameter
hGrp->RemoveASCII("Language");
// reset "ToolbarIconSize" parameter
// reset "ToolbarIconSize" and "MenuIconSize" parameters
hGrp->RemoveInt("ToolbarIconSize");
hGrp->RemoveInt("MenuIconSize");
// finally reset all the parameters associated to Gui::Pref* widgets
PreferencePage::resetSettingsToDefaults();
@@ -534,6 +537,63 @@ void DlgSettingsGeneral::translateIconSizes()
}
}
int DlgSettingsGeneral::getCurrentMenuIconSize() const
{
ParameterGrp::handle hGrp = WindowParameter::getDefaultParameter()->GetGroup("General");
return hGrp->GetInt("MenuIconSize", 24);
}
void DlgSettingsGeneral::addMenuIconSizes(int current)
{
ui->menuIconSize->clear();
QList<int> sizes {16, 20, 24, 28};
if (!sizes.contains(current)) {
sizes.append(current);
}
for (int size : sizes) {
ui->menuIconSize->addItem(QString(), QVariant(size));
}
int index = ui->menuIconSize->findData(QVariant(current));
ui->menuIconSize->setCurrentIndex(index);
translateMenuIconSizes();
}
void DlgSettingsGeneral::translateMenuIconSizes()
{
auto getSize = [this](int index) {
return ui->menuIconSize->itemData(index).toInt();
};
QStringList sizes;
sizes << tr("Small (%1px)").arg(getSize(0));
sizes << tr("Medium (%1px)").arg(getSize(1));
sizes << tr("Large (%1px)").arg(getSize(2));
sizes << tr("Extra large (%1px)").arg(getSize(3));
if (ui->menuIconSize->count() > 4) {
sizes << tr("Custom (%1px)").arg(getSize(4));
}
for (int index = 0; index < sizes.size(); index++) {
ui->menuIconSize->setItemText(index, sizes[index]);
}
}
void DlgSettingsGeneral::applyMenuIconSize(int pixel)
{
// Apply menu icon size via stylesheet override on all QMenu widgets
QString rule = QStringLiteral("QMenu::icon { width: %1px; height: %1px; }").arg(pixel);
for (auto* widget : qApp->allWidgets()) {
if (auto* menu = qobject_cast<QMenu*>(widget)) {
menu->setStyleSheet(rule);
}
}
// Store the rule so new menus pick it up via the main window
getMainWindow()->setProperty("_menuIconSizeRule", rule);
}
void DlgSettingsGeneral::retranslateUnits()
{
auto setItem = [&, index {0}](const std::string& item) mutable {
@@ -547,6 +607,7 @@ void DlgSettingsGeneral::changeEvent(QEvent* event)
{
if (event->type() == QEvent::LanguageChange) {
translateIconSizes();
translateMenuIconSizes();
retranslateUnits();
int index = ui->UseLocaleFormatting->currentIndex();
ui->retranslateUi(this);
@@ -823,24 +884,6 @@ void DlgSettingsGeneral::onThemeChanged(int index)
themeChanged = true;
}
void DlgSettingsGeneral::onLinkActivated(const QString& link)
{
auto const addonManagerLink = QStringLiteral("freecad:Std_AddonMgr");
if (link != addonManagerLink) {
return;
}
// Set the user preferences to include only preference packs.
// This is a quick and dirty way to open Addon Manager with only themes.
auto pref = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Addons"
);
pref->SetInt("PackageTypeSelection", 3); // 3 stands for Preference Packs
pref->SetInt("StatusSelection", 0); // 0 stands for any installation status
Gui::Application::Instance->commandManager().runCommandByName("Std_AddonMgr");
}
///////////////////////////////////////////////////////////
namespace

View File

@@ -72,7 +72,6 @@ protected Q_SLOTS:
void onManagePreferencePacksClicked();
void onImportConfigClicked();
void onThemeChanged(int index);
void onLinkActivated(const QString& link);
public Q_SLOTS:
void onUnitSystemIndexChanged(int index);
@@ -91,6 +90,12 @@ private:
int getCurrentIconSize() const;
void addIconSizes(int current);
void translateIconSizes();
int getCurrentMenuIconSize() const;
void addMenuIconSizes(int current);
void translateMenuIconSizes();
public:
static void applyMenuIconSize(int pixel);
private:
int localeIndex;

View File

@@ -219,35 +219,35 @@ dot/period will always be printed</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="moreThemesLabel">
<property name="font">
<font>
<pointsize>8</pointsize>
</font>
</property>
<property name="text">
<string>Looking for more themes? You can obtain them using the &lt;a href=&quot;freecad:Std_AddonMgr&quot;&gt;Addon Manager&lt;/a&gt;.</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<item row="1" column="0">
<widget class="QLabel" name="iconSizeLabel">
<property name="text">
<string>Size of toolbar icons</string>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="1" column="1">
<widget class="QComboBox" name="toolbarIconSize">
<property name="toolTip">
<string>Icon size in the toolbar</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="menuIconSizeLabel">
<property name="text">
<string>Size of menu icons</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="menuIconSize">
<property name="toolTip">
<string>Icon size in context menus and dropdown menus</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="treeModeLabel">
<property name="text">
@@ -278,7 +278,7 @@ dot/period will always be printed</string>
<string>How many files should be listed in recent files list</string>
</property>
<property name="value">
<number>4</number>
<number>10</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>RecentFiles</cstring>

View File

@@ -23,7 +23,7 @@
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Customize the current theme. The offered settings are optional for theme developers so they may or may not have an effect in the current theme.</string>
<string>Kindred Create Theme</string>
</property>
<property name="wordWrap">
<bool>true</bool>
@@ -392,10 +392,10 @@
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Overlay</string>
<string>Panel Visibility</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="2" column="0">
<item row="0" column="0">
<widget class="Gui::PrefCheckBox" name="hideTabBarCheckBox">
<property name="toolTip">
<string>Hide tab bar in dock overlay</string>
@@ -414,23 +414,7 @@
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="Gui::PrefCheckBox" name="hintShowTabBarCheckBox">
<property name="toolTip">
<string>Show tab bar on mouse over when auto hide</string>
</property>
<property name="text">
<string>Hint show tab bar</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>DockOverlayHintTabBar</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>View</cstring>
</property>
</widget>
</item>
<item row="4" column="0">
<item row="1" column="0">
<widget class="Gui::PrefCheckBox" name="hidePropertyViewScrollBarCheckBox">
<property name="toolTip">
<string>Hide property view scroll bar in dock overlay</string>
@@ -446,7 +430,7 @@
</property>
</widget>
</item>
<item row="5" column="0">
<item row="2" column="0">
<widget class="Gui::PrefCheckBox" name="overlayAutoHideCheckBox">
<property name="toolTip">
<string>Automatically hide overlaid dock panels when in non 3D view (e.g. TechDraw or Spreadsheet)</string>
@@ -465,13 +449,22 @@
</property>
</widget>
</item>
<item row="6" column="0">
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3b">
<property name="title">
<string>Overlay Interaction</string>
</property>
<layout class="QGridLayout" name="gridLayout_2b">
<item row="0" column="0">
<widget class="Gui::PrefCheckBox" name="mouseClickPassThroughCheckBox">
<property name="toolTip">
<string>Auto mouse click through transparent part of dock overlay.</string>
<string>Auto mouse click through transparent part of dock overlay</string>
</property>
<property name="text">
<string>Automatically pass through of the mouse cursor</string>
<string>Automatically pass through mouse cursor</string>
</property>
<property name="checked">
<bool>true</bool>
@@ -484,13 +477,13 @@
</property>
</widget>
</item>
<item row="7" column="0">
<item row="1" column="0">
<widget class="Gui::PrefCheckBox" name="mouseWheelPassThroughCheckBox">
<property name="toolTip">
<string>Automatically passes mouse wheel events through the transparent areas of an overlay panel</string>
</property>
<property name="text">
<string>Automatically pass through of the mouse wheel</string>
<string>Automatically pass through mouse wheel</string>
</property>
<property name="checked">
<bool>true</bool>
@@ -503,6 +496,22 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="Gui::PrefCheckBox" name="hintShowTabBarCheckBox">
<property name="toolTip">
<string>Show tab bar on mouse over when auto hide</string>
</property>
<property name="text">
<string>Hint show tab bar</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>DockOverlayHintTabBar</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>View</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View File

@@ -56,6 +56,7 @@
#include "Language/Translator.h"
#include "Dialogs/DlgVersionMigrator.h"
#include "FreeCADStyle.h"
#include "PreferencePages/DlgSettingsGeneral.h"
#include <App/Application.h>
#include <Base/Console.h>
@@ -226,6 +227,7 @@ void StartupPostProcess::execute()
setProcessMessages();
setAutoSaving();
setToolBarIconSize();
setMenuIconSize();
setWheelEventFilter();
setLocale();
setCursorFlashing();
@@ -281,6 +283,15 @@ void StartupPostProcess::setToolBarIconSize()
}
}
void StartupPostProcess::setMenuIconSize()
{
ParameterGrp::handle hGrp = WindowParameter::getDefaultParameter()->GetGroup("General");
int size = int(hGrp->GetInt("MenuIconSize", 0));
if (size >= 16) {
Dialog::DlgSettingsGeneral::applyMenuIconSize(size);
}
}
void StartupPostProcess::setWheelEventFilter()
{
// filter wheel events for combo boxes

View File

@@ -64,6 +64,7 @@ private:
void setProcessMessages();
void setAutoSaving();
void setToolBarIconSize();
void setMenuIconSize();
void setWheelEventFilter();
void setLocale();
void setCursorFlashing();

View File

@@ -744,6 +744,33 @@ QGroupBox::title {
background-color: #1e1e2e;
}
QGroupBox::indicator {
width: 18px;
height: 18px;
border: 2px solid #585b70;
border-radius: 4px;
background-color: #313244;
}
QGroupBox::indicator:hover {
border-color: #cba6f7;
}
QGroupBox::indicator:checked {
background-color: #cba6f7;
border-color: #cba6f7;
}
QGroupBox::indicator:checked:disabled {
background-color: #6c7086;
border-color: #6c7086;
}
QGroupBox::indicator:disabled {
background-color: #181825;
border-color: #45475a;
}
/* =============================================================================
Tree View
============================================================================= */
@@ -985,6 +1012,11 @@ QLabel:disabled {
color: #6c7086;
}
/* Link color — picked up by FreeCAD to set QPalette::Link */
QLabel[haslink="true"] {
color: #b4befe; /* Catppuccin Lavender */
}
/* =============================================================================
Frames
============================================================================= */

View File

@@ -20,34 +20,13 @@
<string>Source</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="Gui::PrefRadioButton" name="radioButton_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Fetches the documentation from pages rendered on GitHub.
This is currently not available.</string>
</property>
<property name="text">
<string>GitHub (online)</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>optionGithub</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Help</cstring>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="Gui::PrefRadioButton" name="radioOffline">
<property name="toolTip">
<string>Set this to a custom URL or the folder where the help files are located.
You can easily download the documentation for offline use by using the Addon
Manager and installing the &quot;offline-documentation&quot; addon. If this
field is left blank, FreeCAD will automatically search for the help files at
the default location ($USERAPPDATADIR/Mod/offline-documentation).</string>
If this field is left blank, the application will automatically search for
the help files at the default location ($USERAPPDATADIR/Mod/offline-documentation).</string>
</property>
<property name="text">
<string>Custom location</string>
@@ -84,10 +63,8 @@ to get French translation of the documentation.</string>
<widget class="Gui::PrefFileChooser" name="fileChooser">
<property name="toolTip">
<string>Set this to a custom URL or the folder where the help files are located.
Documentation can be downloaded for offline use via the Addon Manager and installing the
&quot;offline-documentation&quot; addon. If this field is left blank, FreeCAD will
automatically search for the help files at the default location
($USERAPPDATADIR/Mod/offline-documentation).</string>
If this field is left blank, the application will automatically search for
the help files at the default location ($USERAPPDATADIR/Mod/offline-documentation).</string>
</property>
<property name="mode">
<enum>Gui::FileChooser::Directory</enum>
@@ -116,8 +93,8 @@ automatically search for the help files at the default location
<item row="0" column="0">
<widget class="Gui::PrefRadioButton" name="radioButton">
<property name="toolTip">
<string>The documentation pages will be fetched from the official
FreeCADwiki at https://wiki.freecad.org</string>
<string>The documentation pages will be fetched from the
FreeCAD wiki at https://wiki.freecad.org</string>
</property>
<property name="text">
<string>FreeCAD Wiki (online)</string>
@@ -137,9 +114,9 @@ FreeCADwiki at https://wiki.freecad.org</string>
<widget class="Gui::PrefRadioButton" name="radioOnline">
<property name="toolTip">
<string>The documentation pages will be fetched from an automatic Markdown conversion
of the FreeCAD wiki,hosted on FreeCAD's GitHub account. This can be styled with a
custom stylesheet below and can look nicer than the wiki option. The 'Markdown' or
'Pandoc' Python module should be installed for optimal results.</string>
of the FreeCAD wiki. This can be styled with a custom stylesheet below and can
look nicer than the wiki option. The 'Markdown' or 'Pandoc' Python module should
be installed for optimal results.</string>
</property>
<property name="text">
<string>Markdown version (online)</string>
@@ -164,16 +141,7 @@ custom stylesheet below and can look nicer than the wiki option. The 'Markdown'
<string>Display</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Note: if PySide Web components are not found on the system, help pages will open in the default web browser regardless of the options below.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefRadioButton" name="radioBrowser">
<property name="toolTip">
@@ -196,10 +164,10 @@ custom stylesheet below and can look nicer than the wiki option. The 'Markdown'
<item>
<widget class="Gui::PrefRadioButton" name="radioTab">
<property name="toolTip">
<string>The documentation will open in a new tab inside the FreeCAD interface. This requires the PySide QtWebengineWidgets component.</string>
<string>The documentation will open in a new tab inside the application. This requires the PySide QtWebEngineWidgets component.</string>
</property>
<property name="text">
<string>In a FreeCAD tab</string>
<string>In an application tab</string>
</property>
<property name="checked">
<bool>false</bool>
@@ -218,8 +186,8 @@ custom stylesheet below and can look nicer than the wiki option. The 'Markdown'
<bool>true</bool>
</property>
<property name="toolTip">
<string>Documentation opens in a dockable dialog within FreeCAD, allowing simultaneous work in the 3D view.
Requires the PySide QtWebengineWidgets component.</string>
<string>Documentation opens in a dockable dialog, allowing simultaneous work in the 3D view.
Requires the PySide QtWebEngineWidgets component.</string>
</property>
<property name="text">
<string>In a separate, embeddable dialog</string>