From ec62a6d1c2206068a13060c7059660290b10be92 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Sat, 28 Mar 2020 11:43:19 +0100 Subject: [PATCH] GUI: add option for disabling all tooltips --- NEWS.md | 1 + src/mkvtoolnix-gui/chapter_editor/tool.cpp | 5 ++++- .../forms/main_window/preferences_dialog.ui | 20 +++++++++++++------ src/mkvtoolnix-gui/header_editor/tool.cpp | 5 ++++- src/mkvtoolnix-gui/info/tool.cpp | 4 +++- .../main_window/main_window.cpp | 2 +- .../main_window/preferences_dialog.cpp | 13 ++++++++++++ .../main_window/preferences_dialog.h | 2 ++ src/mkvtoolnix-gui/merge/tool.cpp | 4 +++- src/mkvtoolnix-gui/util/settings.cpp | 2 ++ src/mkvtoolnix-gui/util/settings.h | 2 +- src/mkvtoolnix-gui/util/settings_names.h | 1 + src/mkvtoolnix-gui/util/widget.cpp | 5 +++++ src/mkvtoolnix-gui/watch_jobs/tool.cpp | 4 +++- 14 files changed, 57 insertions(+), 13 deletions(-) diff --git a/NEWS.md b/NEWS.md index 778ea6957..2cd6b3ed1 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,7 @@ * MKVToolNix GUI: added an option in the preferences to turn on eliding text on tab headers. If enabled, tab names will be shortened so that all tab headers fit into the window's width. Implements #2768. +* MKVToolNix GUI: added an option in the preferences to disable all tooltips. ## Bug fixes diff --git a/src/mkvtoolnix-gui/chapter_editor/tool.cpp b/src/mkvtoolnix-gui/chapter_editor/tool.cpp index 6ebc92b6d..88b68207a 100644 --- a/src/mkvtoolnix-gui/chapter_editor/tool.cpp +++ b/src/mkvtoolnix-gui/chapter_editor/tool.cpp @@ -114,12 +114,15 @@ Tool::toolShown() { void Tool::retranslateUi() { + auto buttonToolTip = Util::Settings::get().m_uiDisableToolTips ? Q("") : App::translate("CloseButton", "Close Tab"); + ui->retranslateUi(this); + for (auto idx = 0, numTabs = ui->editors->count(); idx < numTabs; ++idx) { static_cast(ui->editors->widget(idx))->retranslateUi(); auto button = Util::tabWidgetCloseTabButton(*ui->editors, idx); if (button) - button->setToolTip(App::translate("CloseButton", "Close Tab")); + button->setToolTip(buttonToolTip); } } diff --git a/src/mkvtoolnix-gui/forms/main_window/preferences_dialog.ui b/src/mkvtoolnix-gui/forms/main_window/preferences_dialog.ui index aacadb962..4554abc0b 100644 --- a/src/mkvtoolnix-gui/forms/main_window/preferences_dialog.ui +++ b/src/mkvtoolnix-gui/forms/main_window/preferences_dialog.ui @@ -147,6 +147,13 @@ + + + + Disable &tooltips + + + @@ -2052,6 +2059,12 @@ + + mtx::gui::Util::BasicTabWidget + QTabWidget +
mkvtoolnix-gui/util/basic_tab_widget.h
+ 1 +
mtx::gui::Util::LanguageComboBox QComboBox @@ -2073,12 +2086,6 @@ QComboBox
mkvtoolnix-gui/util/country_combo_box.h
- - mtx::gui::Util::BasicTabWidget - QTabWidget -
mkvtoolnix-gui/util/basic_tab_widget.h
- 1 -
mtx::gui::Info::JobSettingsWidget QWidget @@ -2099,6 +2106,7 @@ sbGuiFontPointSize cbGuiDisableHighDPIScaling cbGuiDisableDarkStyleSheet + cbGuiDisableToolTips cbGuiCheckForUpdates cbGuiTabPositions cbGuiElideTabHeaderLabels diff --git a/src/mkvtoolnix-gui/header_editor/tool.cpp b/src/mkvtoolnix-gui/header_editor/tool.cpp index baaf94dfe..e761085a2 100644 --- a/src/mkvtoolnix-gui/header_editor/tool.cpp +++ b/src/mkvtoolnix-gui/header_editor/tool.cpp @@ -107,12 +107,15 @@ Tool::toolShown() { void Tool::retranslateUi() { + auto buttonToolTip = Util::Settings::get().m_uiDisableToolTips ? Q("") : App::translate("CloseButton", "Close Tab"); + ui->retranslateUi(this); + for (auto idx = 0, numTabs = ui->editors->count(); idx < numTabs; ++idx) { static_cast(ui->editors->widget(idx))->retranslateUi(); auto button = Util::tabWidgetCloseTabButton(*ui->editors, idx); if (button) - button->setToolTip(App::translate("CloseButton", "Close Tab")); + button->setToolTip(buttonToolTip); } } diff --git a/src/mkvtoolnix-gui/info/tool.cpp b/src/mkvtoolnix-gui/info/tool.cpp index 3fbedc4f2..ca6df3ae9 100644 --- a/src/mkvtoolnix-gui/info/tool.cpp +++ b/src/mkvtoolnix-gui/info/tool.cpp @@ -93,13 +93,15 @@ Tool::toolShown() { void Tool::retranslateUi() { + auto buttonToolTip = Util::Settings::get().m_uiDisableToolTips ? Q("") : App::translate("CloseButton", "Close Tab"); + ui->retranslateUi(this); for (auto idx = 0, numTabs = ui->infos->count(); idx < numTabs; ++idx) { static_cast(ui->infos->widget(idx))->retranslateUi(); auto button = Util::tabWidgetCloseTabButton(*ui->infos, idx); if (button) - button->setToolTip(App::translate("CloseButton", "Close Tab")); + button->setToolTip(buttonToolTip); } } diff --git a/src/mkvtoolnix-gui/main_window/main_window.cpp b/src/mkvtoolnix-gui/main_window/main_window.cpp index 9e4ab423d..9c5bf40bf 100644 --- a/src/mkvtoolnix-gui/main_window/main_window.cpp +++ b/src/mkvtoolnix-gui/main_window/main_window.cpp @@ -482,7 +482,7 @@ MainWindow::editPreferencesAndShowPage(PreferencesDialog::Page page) { dlg.save(); - if (dlg.uiLocaleChanged()) + if (dlg.uiLocaleChanged() || dlg.disableToolTipsChanged()) App::instance()->initializeLocale(); if (dlg.uiLocaleChanged() || dlg.probeRangePercentageChanged()) diff --git a/src/mkvtoolnix-gui/main_window/preferences_dialog.cpp b/src/mkvtoolnix-gui/main_window/preferences_dialog.cpp index 440c7a8f9..76b30d826 100644 --- a/src/mkvtoolnix-gui/main_window/preferences_dialog.cpp +++ b/src/mkvtoolnix-gui/main_window/preferences_dialog.cpp @@ -36,6 +36,7 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, , ui{new Ui::PreferencesDialog} , m_cfg(Util::Settings::get()) , m_previousUiLocale{m_cfg.m_uiLocale} + , m_previousDisableToolTips{m_cfg.m_uiDisableToolTips} , m_previousProbeRangePercentage{m_cfg.m_probeRangePercentage} , m_ignoreNextCurrentChange{} { @@ -48,6 +49,7 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Util::restoreWidgetGeometry(this); // GUI page + ui->cbGuiDisableToolTips->setChecked(m_cfg.m_uiDisableToolTips); ui->cbGuiCheckForUpdates->setChecked(m_cfg.m_checkForUpdates); ui->cbGuiShowToolSelector->setChecked(m_cfg.m_showToolSelector); ui->cbGuiShowMoveUpDownButtons->setChecked(m_cfg.m_showMoveUpDownButtons); @@ -136,6 +138,12 @@ PreferencesDialog::uiLocaleChanged() return m_previousUiLocale != m_cfg.m_uiLocale; } +bool +PreferencesDialog::disableToolTipsChanged() + const { + return m_previousDisableToolTips != m_cfg.m_uiDisableToolTips; +} + bool PreferencesDialog::probeRangePercentageChanged() const { @@ -221,12 +229,16 @@ PreferencesDialog::setupPageSelector(Page pageToShow) { void PreferencesDialog::setupToolTips() { + if (m_cfg.m_uiDisableToolTips) + return; + // GUI page Util::setToolTip(ui->cbGuiDisableHighDPIScaling, Q("%1 %2") .arg(QY("If enabled, automatic scaling for high DPI displays will be disabled.")) .arg(QY("Changes to this option will only take effect the next time the application is started."))); + Util::setToolTip(ui->cbGuiDisableToolTips, QY("If checked, the GUI will not show helpful usage tips in popup windows while hovering over a control — such as this one.")); Util::setToolTip(ui->cbGuiDisableDarkStyleSheet, Q("%1 %2") .arg(QY("By default the GUI will start up with a dark color scheme if the color scheme in Windows is set to dark mode.")) @@ -809,6 +821,7 @@ PreferencesDialog::save() { m_cfg.m_uiFontPointSize = ui->sbGuiFontPointSize->value(); m_cfg.m_uiDisableHighDPIScaling = ui->cbGuiDisableHighDPIScaling->isChecked(); m_cfg.m_uiDisableDarkStyleSheet = ui->cbGuiDisableDarkStyleSheet->isChecked(); + m_cfg.m_uiDisableToolTips = ui->cbGuiDisableToolTips->isChecked(); m_cfg.m_checkForUpdates = ui->cbGuiCheckForUpdates->isChecked(); m_cfg.m_showToolSelector = ui->cbGuiShowToolSelector->isChecked(); m_cfg.m_showMoveUpDownButtons = ui->cbGuiShowMoveUpDownButtons->isChecked(); diff --git a/src/mkvtoolnix-gui/main_window/preferences_dialog.h b/src/mkvtoolnix-gui/main_window/preferences_dialog.h index 0c234410c..9f103d8c2 100644 --- a/src/mkvtoolnix-gui/main_window/preferences_dialog.h +++ b/src/mkvtoolnix-gui/main_window/preferences_dialog.h @@ -43,6 +43,7 @@ protected: std::unique_ptr ui; Util::Settings &m_cfg; QString const m_previousUiLocale; + bool const m_previousDisableToolTips; double m_previousProbeRangePercentage; QMap m_pageIndexes; bool m_ignoreNextCurrentChange; @@ -53,6 +54,7 @@ public: void save(); bool uiLocaleChanged() const; + bool disableToolTipsChanged() const; bool probeRangePercentageChanged() const; public slots: diff --git a/src/mkvtoolnix-gui/merge/tool.cpp b/src/mkvtoolnix-gui/merge/tool.cpp index 29e34c110..100b74ae0 100644 --- a/src/mkvtoolnix-gui/merge/tool.cpp +++ b/src/mkvtoolnix-gui/merge/tool.cpp @@ -133,13 +133,15 @@ Tool::toolShown() { void Tool::retranslateUi() { + auto buttonToolTip = Util::Settings::get().m_uiDisableToolTips ? Q("") : App::translate("CloseButton", "Close Tab"); + ui->retranslateUi(this); for (auto idx = 0, numTabs = ui->merges->count(); idx < numTabs; ++idx) { static_cast(ui->merges->widget(idx))->retranslateUi(); auto button = Util::tabWidgetCloseTabButton(*ui->merges, idx); if (button) - button->setToolTip(App::translate("CloseButton", "Close Tab")); + button->setToolTip(buttonToolTip); } } diff --git a/src/mkvtoolnix-gui/util/settings.cpp b/src/mkvtoolnix-gui/util/settings.cpp index 3a6233f79..e72ff5fcc 100644 --- a/src/mkvtoolnix-gui/util/settings.cpp +++ b/src/mkvtoolnix-gui/util/settings.cpp @@ -365,6 +365,7 @@ Settings::load() { #endif m_uiDisableHighDPIScaling = reg.value(s_valUiDisableHighDPIScaling).toBool(); m_uiDisableDarkStyleSheet = reg.value(s_valUiDisableDarkStyleSheet).toBool(); + m_uiDisableToolTips = reg.value(s_valUiDisableToolTips).toBool(); m_uiFontFamily = reg.value(s_valUiFontFamily, defaultFont.family()).toString(); m_uiFontPointSize = reg.value(s_valUiFontPointSize, defaultFont.pointSize()).toInt(); @@ -705,6 +706,7 @@ Settings::save() reg.setValue(s_valUiLocale, m_uiLocale); reg.setValue(s_valUiDisableHighDPIScaling, m_uiDisableHighDPIScaling); reg.setValue(s_valUiDisableDarkStyleSheet, m_uiDisableDarkStyleSheet); + reg.setValue(s_valUiDisableToolTips, m_uiDisableToolTips); reg.setValue(s_valUiFontFamily, m_uiFontFamily); reg.setValue(s_valUiFontPointSize, m_uiFontPointSize); diff --git a/src/mkvtoolnix-gui/util/settings.h b/src/mkvtoolnix-gui/util/settings.h index fe9c1f991..8f3a4ec38 100644 --- a/src/mkvtoolnix-gui/util/settings.h +++ b/src/mkvtoolnix-gui/util/settings.h @@ -178,7 +178,7 @@ public: bool m_useDefaultJobDescription, m_showOutputOfAllJobs, m_switchToJobOutputAfterStarting, m_resetJobWarningErrorCountersOnExit; bool m_removeOutputFileOnJobFailure; - bool m_uiDisableHighDPIScaling, m_uiDisableDarkStyleSheet; + bool m_uiDisableHighDPIScaling, m_uiDisableDarkStyleSheet, m_uiDisableToolTips; bool m_checkForUpdates; QDateTime m_lastUpdateCheck; diff --git a/src/mkvtoolnix-gui/util/settings_names.h b/src/mkvtoolnix-gui/util/settings_names.h index 6860ff8eb..d7d57abef 100644 --- a/src/mkvtoolnix-gui/util/settings_names.h +++ b/src/mkvtoolnix-gui/util/settings_names.h @@ -109,6 +109,7 @@ char const * const s_valTrackInfo = "trackInfo"; char const * const s_valType = "type"; char const * const s_valUiDisableDarkStyleSheet = "uiDisableDarkStyleSheet"; char const * const s_valUiDisableHighDPIScaling = "uiDisableHighDPIScaling"; +char const * const s_valUiDisableToolTips = "uiDisableToolTips"; char const * const s_valUiFontFamily = "uiFontFamily"; char const * const s_valUiFontPointSize = "uiFontPointSize"; char const * const s_valUiLocale = "uiLocale"; diff --git a/src/mkvtoolnix-gui/util/widget.cpp b/src/mkvtoolnix-gui/util/widget.cpp index 4ef93e810..05b807863 100644 --- a/src/mkvtoolnix-gui/util/widget.cpp +++ b/src/mkvtoolnix-gui/util/widget.cpp @@ -101,6 +101,11 @@ buttonForRole(QDialogButtonBox *box, void setToolTip(QWidget *widget, QString const &toolTip) { + if (Util::Settings::get().m_uiDisableToolTips) { + widget->setToolTip({}); + return; + } + // Qt up to and including 5.3 only word-wraps tool tips // automatically if the format is recognized to be Rich Text. See // http://doc.qt.io/qt-5/qstandarditem.html diff --git a/src/mkvtoolnix-gui/watch_jobs/tool.cpp b/src/mkvtoolnix-gui/watch_jobs/tool.cpp index adb800bd1..736897899 100644 --- a/src/mkvtoolnix-gui/watch_jobs/tool.cpp +++ b/src/mkvtoolnix-gui/watch_jobs/tool.cpp @@ -66,6 +66,8 @@ Tool::setupActions() { void Tool::retranslateUi() { + auto buttonToolTip = Util::Settings::get().m_uiDisableToolTips ? Q("") : App::translate("CloseButton", "Close Tab"); + ui->retranslateUi(this); ui->widgets->setTabText(0, QY("Current job")); @@ -74,7 +76,7 @@ Tool::retranslateUi() { for (auto idx = 0, numTabs = ui->widgets->count(); idx < numTabs; ++idx) { auto button = Util::tabWidgetCloseTabButton(*ui->widgets, idx); if (button) - button->setToolTip(App::translate("CloseButton", "Close Tab")); + button->setToolTip(buttonToolTip); } }