diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2019-03-31 08:04:43 +0200 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2019-04-16 14:20:22 +0000 |
commit | 48073b2990aa2d80b025446381c5ca13b84f66ca (patch) | |
tree | 136499d1696ab2213e12a4c7048ce36511cc8187 | |
parent | e127d599acd3ec22b472cd24815e37325ce5ba76 (diff) |
IOutputPane: Refactor zoom function into base class
Try to make zoom and font handling in the panes more
similar and put common stuff into IOutputPane.
Change-Id: I59c38c5eecbf67b7ca6c9d84a6f61b1292a787df
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r-- | src/plugins/coreplugin/ioutputpane.h | 17 | ||||
-rw-r--r-- | src/plugins/coreplugin/messageoutputwindow.cpp | 60 | ||||
-rw-r--r-- | src/plugins/coreplugin/messageoutputwindow.h | 9 | ||||
-rw-r--r-- | src/plugins/coreplugin/outputpanemanager.cpp | 42 | ||||
-rw-r--r-- | src/plugins/coreplugin/outputwindow.cpp | 12 | ||||
-rw-r--r-- | src/plugins/coreplugin/outputwindow.h | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/appoutputpane.cpp | 101 | ||||
-rw-r--r-- | src/plugins/projectexplorer/appoutputpane.h | 10 | ||||
-rw-r--r-- | src/plugins/projectexplorer/compileoutputwindow.cpp | 71 | ||||
-rw-r--r-- | src/plugins/projectexplorer/compileoutputwindow.h | 3 | ||||
-rw-r--r-- | src/plugins/serialterminal/serialoutputpane.cpp | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsoutputwindow.cpp | 2 |
12 files changed, 131 insertions, 201 deletions
diff --git a/src/plugins/coreplugin/ioutputpane.h b/src/plugins/coreplugin/ioutputpane.h index 9ca6b1ef80..3513d85095 100644 --- a/src/plugins/coreplugin/ioutputpane.h +++ b/src/plugins/coreplugin/ioutputpane.h @@ -32,6 +32,7 @@ #include <QString> QT_BEGIN_NAMESPACE +class QToolButton; class QWidget; QT_END_NAMESPACE @@ -46,7 +47,7 @@ public: ~IOutputPane() override; virtual QWidget *outputWidget(QWidget *parent) = 0; - virtual QList<QWidget *> toolBarWidgets() const = 0; + virtual QList<QWidget *> toolBarWidgets() const; virtual QString displayName() const = 0; virtual int priorityInStatusBar() const = 0; @@ -64,6 +65,9 @@ public: virtual void goToNext() = 0; virtual void goToPrev() = 0; + void setFont(const QFont &font); + void setWheelZoomEnabled(bool enabled); + enum Flag { NoModeSwitch = 0, ModeSwitch = 1, WithFocus = 2, EnsureSizeHint = 4}; Q_DECLARE_FLAGS(Flags, Flag) @@ -83,6 +87,17 @@ signals: void navigateStateUpdate(); void flashButton(); void setBadgeNumber(int number); + void zoomIn(int range); + void zoomOut(int range); + void wheelZoomEnabledChanged(bool enabled); + void fontChanged(const QFont &font); + +protected: + void setZoomButtonsEnabled(bool enabled); + +private: + QToolButton * const m_zoomInButton = nullptr; + QToolButton * const m_zoomOutButton = nullptr; }; } // namespace Core diff --git a/src/plugins/coreplugin/messageoutputwindow.cpp b/src/plugins/coreplugin/messageoutputwindow.cpp index 5541090379..a88f491955 100644 --- a/src/plugins/coreplugin/messageoutputwindow.cpp +++ b/src/plugins/coreplugin/messageoutputwindow.cpp @@ -41,11 +41,9 @@ namespace Internal { const char zoomSettingsKey[] = "Core/MessageOutput/Zoom"; -MessageOutputWindow::MessageOutputWindow() : - m_zoomInButton(new QToolButton), - m_zoomOutButton(new QToolButton) +MessageOutputWindow::MessageOutputWindow() { - m_widget = new OutputWindow(Context(Constants::C_GENERAL_OUTPUT_PANE)); + m_widget = new OutputWindow(Context(Constants::C_GENERAL_OUTPUT_PANE), zoomSettingsKey); m_widget->setReadOnly(true); // Let selected text be colored as if the text edit was editable, // otherwise the highlight for searching is too light @@ -55,30 +53,20 @@ MessageOutputWindow::MessageOutputWindow() : QColor activeHighlightedText = p.color(QPalette::Active, QPalette::HighlightedText); p.setColor(QPalette::HighlightedText, activeHighlightedText); m_widget->setPalette(p); + + setZoomButtonsEnabled(true); + connect(this, &IOutputPane::zoomIn, m_widget, &Core::OutputWindow::zoomIn); + connect(this, &IOutputPane::zoomOut, m_widget, &Core::OutputWindow::zoomOut); + connect(this, &IOutputPane::fontChanged, m_widget, &OutputWindow::setBaseFont); + connect(this, &IOutputPane::wheelZoomEnabledChanged, m_widget, &OutputWindow::setWheelZoomEnabled); + auto agg = new Aggregation::Aggregate; agg->add(m_widget); agg->add(new BaseTextFind(m_widget)); - - loadSettings(); - - m_zoomInButton->setToolTip(tr("Increase Font Size")); - m_zoomInButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon()); - m_zoomInButton->setAutoRaise(true); - connect(m_zoomInButton, &QToolButton::clicked, this, [this] { m_widget->zoomIn(1); }); - - m_zoomOutButton->setToolTip(tr("Decrease Font Size")); - m_zoomOutButton->setIcon(Utils::Icons::MINUS.icon()); - m_zoomOutButton->setAutoRaise(true); - connect(m_zoomOutButton, &QToolButton::clicked, this, [this] { m_widget->zoomOut(1); }); - - connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested, - this, &MessageOutputWindow::storeSettings); } MessageOutputWindow::~MessageOutputWindow() { - delete m_zoomInButton; - delete m_zoomOutButton; delete m_widget; } @@ -108,11 +96,6 @@ QWidget *MessageOutputWindow::outputWidget(QWidget *parent) return m_widget; } -QList<QWidget *> MessageOutputWindow::toolBarWidgets() const -{ - return {m_zoomInButton, m_zoomOutButton}; -} - QString MessageOutputWindow::displayName() const { return tr("General Messages"); @@ -157,30 +140,5 @@ bool MessageOutputWindow::canNavigate() const return false; } -void MessageOutputWindow::setFont(const QFont &font) -{ - m_widget->setBaseFont(font); -} - -void MessageOutputWindow::setWheelZoomEnabled(bool enabled) -{ - m_widget->setWheelZoomEnabled(enabled); -} - -void MessageOutputWindow::storeSettings() const -{ - QSettings * const s = Core::ICore::settings(); - - s->setValue(zoomSettingsKey, m_widget->fontZoom()); -} - -void MessageOutputWindow::loadSettings() -{ - QSettings * const s = Core::ICore::settings(); - - float zoom = s->value(zoomSettingsKey, 0).toFloat(); - m_widget->setFontZoom(zoom); -} - } // namespace Internal } // namespace Core diff --git a/src/plugins/coreplugin/messageoutputwindow.h b/src/plugins/coreplugin/messageoutputwindow.h index 238fbb7b81..f32bcea176 100644 --- a/src/plugins/coreplugin/messageoutputwindow.h +++ b/src/plugins/coreplugin/messageoutputwindow.h @@ -46,7 +46,6 @@ public: ~MessageOutputWindow() override; QWidget *outputWidget(QWidget *parent) override; - QList<QWidget*> toolBarWidgets() const override; QString displayName() const override; int priorityInStatusBar() const override; @@ -64,16 +63,8 @@ public: void goToPrev() override; bool canNavigate() const override; - void setFont(const QFont &font); - void setWheelZoomEnabled(bool enabled); - private: - void storeSettings() const; - void loadSettings(); - OutputWindow *m_widget; - QToolButton *m_zoomInButton = nullptr; - QToolButton *m_zoomOutButton = nullptr; }; } // namespace Internal diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp index eb411bdaa9..3122e35bac 100644 --- a/src/plugins/coreplugin/outputpanemanager.cpp +++ b/src/plugins/coreplugin/outputpanemanager.cpp @@ -88,11 +88,25 @@ static bool g_managerConstructed = false; // For debugging reasons. // OutputPane IOutputPane::IOutputPane(QObject *parent) - : QObject(parent) + : QObject(parent), + m_zoomInButton(new QToolButton), + m_zoomOutButton(new QToolButton) { // We need all pages first. Ignore latecomers and shout. QTC_ASSERT(!g_managerConstructed, return); g_outputPanes.append(OutputPaneData(this)); + + m_zoomInButton->setToolTip(tr("Increase Font Size")); + m_zoomInButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon()); + m_zoomInButton->setAutoRaise(true); + m_zoomInButton->setVisible(false); + connect(m_zoomInButton, &QToolButton::clicked, this, [this] { emit zoomIn(1); }); + + m_zoomOutButton->setToolTip(tr("Decrease Font Size")); + m_zoomOutButton->setIcon(Utils::Icons::MINUS.icon()); + m_zoomOutButton->setAutoRaise(true); + m_zoomOutButton->setVisible(false); + connect(m_zoomOutButton, &QToolButton::clicked, this, [this] { emit zoomOut(1); }); } IOutputPane::~IOutputPane() @@ -100,6 +114,32 @@ IOutputPane::~IOutputPane() const int i = Utils::indexOf(g_outputPanes, Utils::equal(&OutputPaneData::pane, this)); QTC_ASSERT(i >= 0, return); delete g_outputPanes.at(i).button; + + delete m_zoomInButton; + delete m_zoomOutButton; +} + +QList<QWidget *> IOutputPane::toolBarWidgets() const +{ + return {m_zoomInButton, m_zoomOutButton}; +} + +void IOutputPane::setFont(const QFont &font) +{ + emit fontChanged(font); +} + +void IOutputPane::setWheelZoomEnabled(bool enabled) +{ + emit wheelZoomEnabledChanged(enabled); +} + +void IOutputPane::setZoomButtonsEnabled(bool enabled) +{ + m_zoomInButton->setEnabled(enabled); + m_zoomInButton->setVisible(true); + m_zoomOutButton->setEnabled(enabled); + m_zoomOutButton->setVisible(true); } namespace Internal { diff --git a/src/plugins/coreplugin/outputwindow.cpp b/src/plugins/coreplugin/outputwindow.cpp index 33c203489d..46807e6534 100644 --- a/src/plugins/coreplugin/outputwindow.cpp +++ b/src/plugins/coreplugin/outputwindow.cpp @@ -77,8 +77,9 @@ public: /*******************/ -OutputWindow::OutputWindow(Context context, QWidget *parent) +OutputWindow::OutputWindow(Context context, const QString &settingsKey, QWidget *parent) : QPlainTextEdit(parent) + , m_settingsKey(settingsKey) , d(new Internal::OutputWindowPrivate(document())) { setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); @@ -117,6 +118,10 @@ OutputWindow::OutputWindow(Context context, QWidget *parent) connect(this, &QPlainTextEdit::redoAvailable, redoAction, &QAction::setEnabled); connect(this, &QPlainTextEdit::copyAvailable, cutAction, &QAction::setEnabled); // OutputWindow never read-only connect(this, &QPlainTextEdit::copyAvailable, copyAction, &QAction::setEnabled); + connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested, this, [this] { + if (!m_settingsKey.isEmpty()) + Core::ICore::settings()->setValue(m_settingsKey, fontZoom()); + }); undoAction->setEnabled(false); redoAction->setEnabled(false); @@ -130,6 +135,11 @@ OutputWindow::OutputWindow(Context context, QWidget *parent) m_lastMessage.start(); d->m_originalFontSize = font().pointSizeF(); + + if (!m_settingsKey.isEmpty()) { + float zoom = Core::ICore::settings()->value(m_settingsKey).toFloat(); + setFontZoom(zoom); + } } OutputWindow::~OutputWindow() diff --git a/src/plugins/coreplugin/outputwindow.h b/src/plugins/coreplugin/outputwindow.h index 56972b84e7..34ce261098 100644 --- a/src/plugins/coreplugin/outputwindow.h +++ b/src/plugins/coreplugin/outputwindow.h @@ -52,7 +52,7 @@ public: }; Q_DECLARE_FLAGS(FilterModeFlags, FilterModeFlag) - OutputWindow(Context context, QWidget *parent = nullptr); + OutputWindow(Context context, const QString &settingsKey, QWidget *parent = nullptr); ~OutputWindow() override; Utils::OutputFormatter *formatter() const; @@ -114,6 +114,7 @@ private: QColor m_highlightBgColor; QColor m_highlightTextColor; + const QString m_settingsKey; Internal::OutputWindowPrivate *d; }; diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp index f162715760..672cf72e17 100644 --- a/src/plugins/projectexplorer/appoutputpane.cpp +++ b/src/plugins/projectexplorer/appoutputpane.cpp @@ -184,8 +184,6 @@ AppOutputPane::AppOutputPane() : m_reRunButton(new QToolButton), m_stopButton(new QToolButton), m_attachButton(new QToolButton), - m_zoomInButton(new QToolButton), - m_zoomOutButton(new QToolButton), m_settingsButton(new QToolButton), m_filterOutputLineEdit(new Utils::FancyLineEdit), m_formatterWidget(new QWidget) @@ -224,19 +222,8 @@ AppOutputPane::AppOutputPane() : connect(m_attachButton, &QToolButton::clicked, this, &AppOutputPane::attachToRunControl); - m_zoomInButton->setToolTip(tr("Increase Font Size")); - m_zoomInButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon()); - m_zoomInButton->setAutoRaise(true); - - connect(m_zoomInButton, &QToolButton::clicked, - this, &AppOutputPane::zoomIn); - - m_zoomOutButton->setToolTip(tr("Decrease Font Size")); - m_zoomOutButton->setIcon(Utils::Icons::MINUS.icon()); - m_zoomOutButton->setAutoRaise(true); - - connect(m_zoomOutButton, &QToolButton::clicked, - this, &AppOutputPane::zoomOut); + connect(this, &Core::IOutputPane::zoomIn, this, &AppOutputPane::zoomIn); + connect(this, &Core::IOutputPane::zoomOut, this, &AppOutputPane::zoomOut); m_settingsButton->setToolTip(tr("Open Settings Page")); m_settingsButton->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon()); @@ -293,17 +280,8 @@ AppOutputPane::AppOutputPane() : m_mainWidget->setLayout(layout); - connect(TextEditor::TextEditorSettings::instance(), &TextEditor::TextEditorSettings::fontSettingsChanged, - this, &AppOutputPane::updateFontSettings); - - connect(TextEditor::TextEditorSettings::instance(), &TextEditor::TextEditorSettings::behaviorSettingsChanged, - this, &AppOutputPane::updateBehaviorSettings); - connect(SessionManager::instance(), &SessionManager::aboutToUnloadSession, this, &AppOutputPane::aboutToUnloadSession); - - connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested, - this, &AppOutputPane::storeZoomFactor); } AppOutputPane::~AppOutputPane() @@ -317,12 +295,6 @@ AppOutputPane::~AppOutputPane() delete m_mainWidget; } -void AppOutputPane::storeZoomFactor() -{ - QSettings *settings = Core::ICore::settings(); - settings->setValue(SETTINGS_KEY, m_zoom); -} - int AppOutputPane::currentIndex() const { if (const QWidget *w = m_tabWidget->currentWidget()) @@ -388,8 +360,8 @@ QWidget *AppOutputPane::outputWidget(QWidget *) QList<QWidget*> AppOutputPane::toolBarWidgets() const { - return { m_reRunButton, m_stopButton, m_attachButton, m_zoomInButton, - m_zoomOutButton, m_settingsButton, m_filterOutputLineEdit, m_formatterWidget }; + return QList<QWidget *>{m_reRunButton, m_stopButton, m_attachButton, m_settingsButton, + m_filterOutputLineEdit, m_formatterWidget} + IOutputPane::toolBarWidgets(); } QString AppOutputPane::displayName() const @@ -432,25 +404,6 @@ void AppOutputPane::setFocus() m_tabWidget->currentWidget()->setFocus(); } -void AppOutputPane::updateFontSettings() -{ - const TextEditor::FontSettings &fs = TextEditor::TextEditorSettings::fontSettings(); - for (const RunControlTab &rcTab : qAsConst(m_runControlTabs)) { - rcTab.window->setBaseFont(fs.font()); - rcTab.window->setHighlightBgColor(fs.toTextCharFormat(TextEditor::C_SEARCH_RESULT) - .background().color()); - rcTab.window->setHighlightTextColor(fs.toTextCharFormat(TextEditor::C_SEARCH_RESULT) - .foreground().color()); - } -} - -void AppOutputPane::updateBehaviorSettings() -{ - bool zoomEnabled = TextEditor::TextEditorSettings::behaviorSettings().m_scrollWheelZooming; - for (const RunControlTab &rcTab : qAsConst(m_runControlTabs)) - rcTab.window->setWheelZoomEnabled(zoomEnabled); -} - void AppOutputPane::updateFilter() { const QString filter = m_filterOutputLineEdit->text(); @@ -540,24 +493,37 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) const TextEditor::FontSettings &fs = TextEditor::TextEditorSettings::fontSettings(); Core::Id contextId = Core::Id(C_APP_OUTPUT).withSuffix(counter++); Core::Context context(contextId); - Core::OutputWindow *ow = new Core::OutputWindow(context, m_tabWidget); + Core::OutputWindow *ow = new Core::OutputWindow(context, SETTINGS_KEY, m_tabWidget); ow->setWindowTitle(tr("Application Output Window")); ow->setWindowIcon(Icons::WINDOW.icon()); ow->setWordWrapEnabled(m_settings.wrapOutput); ow->setMaxCharCount(m_settings.maxCharCount); - ow->setWheelZoomEnabled(TextEditor::TextEditorSettings::behaviorSettings().m_scrollWheelZooming); - ow->setBaseFont(fs.font()); ow->setHighlightBgColor(fs.toTextCharFormat(TextEditor::C_SEARCH_RESULT) .background().color()); ow->setHighlightTextColor(fs.toTextCharFormat(TextEditor::C_SEARCH_RESULT) .foreground().color()); - ow->setFontZoom(m_zoom); + + auto updateFontSettings = [ow] { + ow->setBaseFont(TextEditor::TextEditorSettings::fontSettings().font()); + }; + + auto updateBehaviorSettings = [ow] { + ow->setWheelZoomEnabled( + TextEditor::TextEditorSettings::behaviorSettings().m_scrollWheelZooming); + }; + + updateFontSettings(); + updateBehaviorSettings(); connect(ow, &Core::OutputWindow::wheelZoom, this, [this, ow]() { - m_zoom = ow->fontZoom(); + float fontZoom = ow->fontZoom(); for (const RunControlTab &tab : qAsConst(m_runControlTabs)) - tab.window->setFontZoom(m_zoom); + tab.window->setFontZoom(fontZoom); }); + connect(TextEditor::TextEditorSettings::instance(), &TextEditor::TextEditorSettings::fontSettingsChanged, + this, updateFontSettings); + connect(TextEditor::TextEditorSettings::instance(), &TextEditor::TextEditorSettings::behaviorSettingsChanged, + this, updateBehaviorSettings); auto *agg = new Aggregation::Aggregate; agg->add(ow); @@ -634,7 +600,6 @@ void AppOutputPane::loadSettings() m_settings.wrapOutput = s->value(WRAP_OUTPUT_KEY, true).toBool(); m_settings.maxCharCount = s->value(MAX_LINES_KEY, Core::Constants::DEFAULT_MAX_CHAR_COUNT).toInt() * 100; - m_zoom = s->value(SETTINGS_KEY, 0).toFloat(); } void AppOutputPane::showTabFor(RunControl *rc) @@ -754,22 +719,16 @@ void AppOutputPane::enableDefaultButtons() enableButtons(currentRunControl()); } -void AppOutputPane::zoomIn() +void AppOutputPane::zoomIn(int range) { for (const RunControlTab &tab : qAsConst(m_runControlTabs)) - tab.window->zoomIn(1); - if (m_runControlTabs.isEmpty()) - return; - m_zoom = m_runControlTabs.first().window->fontZoom(); + tab.window->zoomIn(range); } -void AppOutputPane::zoomOut() +void AppOutputPane::zoomOut(int range) { for (const RunControlTab &tab : qAsConst(m_runControlTabs)) - tab.window->zoomOut(1); - if (m_runControlTabs.isEmpty()) - return; - m_zoom = m_runControlTabs.first().window->fontZoom(); + tab.window->zoomOut(range); } void AppOutputPane::enableButtons(const RunControl *rc) @@ -789,8 +748,7 @@ void AppOutputPane::enableButtons(const RunControl *rc) m_attachButton->setEnabled(false); m_attachButton->setToolTip(msgAttachDebuggerTooltip()); } - m_zoomInButton->setEnabled(true); - m_zoomOutButton->setEnabled(true); + setZoomButtonsEnabled(true); replaceAllChildWidgets(m_formatterWidget->layout(), rc->outputFormatter() ? rc->outputFormatter()->toolbarWidgets() : @@ -801,8 +759,7 @@ void AppOutputPane::enableButtons(const RunControl *rc) m_attachButton->setEnabled(false); m_attachButton->setToolTip(msgAttachDebuggerTooltip()); m_stopAction->setEnabled(false); - m_zoomInButton->setEnabled(false); - m_zoomOutButton->setEnabled(false); + setZoomButtonsEnabled(false); } m_formatterWidget->setVisible(m_formatterWidget->layout()->count()); } diff --git a/src/plugins/projectexplorer/appoutputpane.h b/src/plugins/projectexplorer/appoutputpane.h index c44e6c728f..16c652f1cd 100644 --- a/src/plugins/projectexplorer/appoutputpane.h +++ b/src/plugins/projectexplorer/appoutputpane.h @@ -119,8 +119,8 @@ private: void updateFromSettings(); void enableDefaultButtons(); - void zoomIn(); - void zoomOut(); + void zoomIn(int range); + void zoomOut(int range); void enableButtons(const RunControl *rc); @@ -143,9 +143,6 @@ private: int tabWidgetIndexOf(int runControlIndex) const; void handleOldOutput(Core::OutputWindow *window) const; void updateCloseActions(); - void updateFontSettings(); - void storeZoomFactor(); - void updateBehaviorSettings(); void updateFilter(); void configureCurrentWindow(); void filterOutputButtonClicked(); @@ -167,14 +164,11 @@ private: QToolButton *m_reRunButton; QToolButton *m_stopButton; QToolButton *m_attachButton; - QToolButton *m_zoomInButton; - QToolButton *m_zoomOutButton; QToolButton * const m_settingsButton; QAction *m_filterActionRegexp = nullptr; QAction *m_filterActionCaseSensitive = nullptr; Utils::FancyLineEdit *m_filterOutputLineEdit = nullptr; QWidget *m_formatterWidget; - float m_zoom; AppOutputSettings m_settings; bool m_filterRegexp = false; bool m_filterCaseSensitive = false; diff --git a/src/plugins/projectexplorer/compileoutputwindow.cpp b/src/plugins/projectexplorer/compileoutputwindow.cpp index cd633054c7..022a436d93 100644 --- a/src/plugins/projectexplorer/compileoutputwindow.cpp +++ b/src/plugins/projectexplorer/compileoutputwindow.cpp @@ -76,31 +76,11 @@ class CompileOutputTextEdit : public Core::OutputWindow { Q_OBJECT public: - CompileOutputTextEdit(const Core::Context &context) : Core::OutputWindow(context) + CompileOutputTextEdit(const Core::Context &context) : Core::OutputWindow(context, SETTINGS_KEY) { - setWheelZoomEnabled(true); - - QSettings *settings = Core::ICore::settings(); - float zoom = settings->value(QLatin1String(SETTINGS_KEY), 0).toFloat(); - setFontZoom(zoom); - - fontSettingsChanged(); - - connect(TextEditor::TextEditorSettings::instance(), &TextEditor::TextEditorSettings::fontSettingsChanged, - this, &CompileOutputTextEdit::fontSettingsChanged); - - connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested, - this, &CompileOutputTextEdit::saveSettings); - setMouseTracking(true); } - void saveSettings() - { - QSettings *settings = Core::ICore::settings(); - settings->setValue(QLatin1String(SETTINGS_KEY), fontZoom()); - } - void addTask(const Task &task, int blocknumber) { m_taskids.insert(blocknumber, task.taskId); @@ -110,11 +90,6 @@ public: { m_taskids.clear(); } -private: - void fontSettingsChanged() - { - setBaseFont(TextEditor::TextEditorSettings::fontSettings().font()); - } protected: void mouseMoveEvent(QMouseEvent *ev) override @@ -158,8 +133,6 @@ private: CompileOutputWindow::CompileOutputWindow(QAction *cancelBuildAction) : m_cancelBuildButton(new QToolButton), - m_zoomInButton(new QToolButton), - m_zoomOutButton(new QToolButton), m_settingsButton(new QToolButton), m_formatter(new Utils::OutputFormatter) { @@ -185,23 +158,29 @@ CompileOutputWindow::CompileOutputWindow(QAction *cancelBuildAction) : Utils::ProxyAction::proxyActionWithIcon(cancelBuildAction, Utils::Icons::STOP_SMALL_TOOLBAR.icon()); m_cancelBuildButton->setDefaultAction(cancelBuildProxyButton); - m_zoomInButton->setToolTip(tr("Increase Font Size")); - m_zoomInButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon()); - m_zoomOutButton->setToolTip(tr("Decrease Font Size")); - m_zoomOutButton->setIcon(Utils::Icons::MINUS.icon()); m_settingsButton->setToolTip(tr("Open Settings Page")); m_settingsButton->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon()); + auto updateFontSettings = [this] { + m_outputWindow->setBaseFont(TextEditor::TextEditorSettings::fontSettings().font()); + }; + + auto updateZoomEnabled = [this] { + m_outputWindow->setWheelZoomEnabled( + TextEditor::TextEditorSettings::behaviorSettings().m_scrollWheelZooming); + }; + + setZoomButtonsEnabled(true); + updateFontSettings(); updateZoomEnabled(); - connect(TextEditor::TextEditorSettings::instance(), - &TextEditor::TextEditorSettings::behaviorSettingsChanged, - this, &CompileOutputWindow::updateZoomEnabled); + connect(this, &IOutputPane::zoomIn, m_outputWindow, &Core::OutputWindow::zoomIn); + connect(this, &IOutputPane::zoomOut, m_outputWindow, &Core::OutputWindow::zoomOut); + connect(TextEditor::TextEditorSettings::instance(), &TextEditor::TextEditorSettings::fontSettingsChanged, + this, updateFontSettings); + connect(TextEditor::TextEditorSettings::instance(), &TextEditor::TextEditorSettings::behaviorSettingsChanged, + this, updateZoomEnabled); - connect(m_zoomInButton, &QToolButton::clicked, - this, [this]() { m_outputWindow->zoomIn(1); }); - connect(m_zoomOutButton, &QToolButton::clicked, - this, [this]() { m_outputWindow->zoomOut(1); }); connect(m_settingsButton, &QToolButton::clicked, this, [] { Core::ICore::showOptionsDialog(OPTIONS_PAGE_ID); }); @@ -223,22 +202,10 @@ CompileOutputWindow::~CompileOutputWindow() ExtensionSystem::PluginManager::removeObject(m_handler); delete m_handler; delete m_cancelBuildButton; - delete m_zoomInButton; - delete m_zoomOutButton; delete m_settingsButton; delete m_formatter; } -void CompileOutputWindow::updateZoomEnabled() -{ - const TextEditor::BehaviorSettings &settings - = TextEditor::TextEditorSettings::behaviorSettings(); - bool zoomEnabled = settings.m_scrollWheelZooming; - m_zoomInButton->setEnabled(zoomEnabled); - m_zoomOutButton->setEnabled(zoomEnabled); - m_outputWindow->setWheelZoomEnabled(zoomEnabled); -} - void CompileOutputWindow::updateFromSettings() { m_outputWindow->setWordWrapEnabled(m_settings.wrapOutput); @@ -267,7 +234,7 @@ QWidget *CompileOutputWindow::outputWidget(QWidget *) QList<QWidget *> CompileOutputWindow::toolBarWidgets() const { - return {m_cancelBuildButton, m_zoomInButton, m_zoomOutButton, m_settingsButton}; + return QList<QWidget *>{m_cancelBuildButton, m_settingsButton} + IOutputPane::toolBarWidgets(); } void CompileOutputWindow::appendText(const QString &text, BuildStep::OutputFormat format) diff --git a/src/plugins/projectexplorer/compileoutputwindow.h b/src/plugins/projectexplorer/compileoutputwindow.h index bf21345f70..05a660377a 100644 --- a/src/plugins/projectexplorer/compileoutputwindow.h +++ b/src/plugins/projectexplorer/compileoutputwindow.h @@ -91,14 +91,11 @@ private: void loadSettings(); void storeSettings() const; void updateFromSettings(); - void updateZoomEnabled(); CompileOutputTextEdit *m_outputWindow; QHash<unsigned int, QPair<int, int>> m_taskPositions; ShowOutputTaskHandler *m_handler; QToolButton *m_cancelBuildButton; - QToolButton *m_zoomInButton; - QToolButton *m_zoomOutButton; QToolButton * const m_settingsButton; Utils::OutputFormatter *m_formatter; CompileOutputSettings m_settings; diff --git a/src/plugins/serialterminal/serialoutputpane.cpp b/src/plugins/serialterminal/serialoutputpane.cpp index befc7e51a5..34657313f1 100644 --- a/src/plugins/serialterminal/serialoutputpane.cpp +++ b/src/plugins/serialterminal/serialoutputpane.cpp @@ -305,7 +305,7 @@ void SerialOutputPane::createNewOutputWindow(SerialControl *rc) static uint counter = 0; Core::Id contextId = Core::Id(Constants::C_SERIAL_OUTPUT).withSuffix(counter++); Core::Context context(contextId); - Core::OutputWindow *ow = new Core::OutputWindow(context, m_tabWidget); + Core::OutputWindow *ow = new Core::OutputWindow(context, QString(), m_tabWidget); using TextEditor::TextEditorSettings; auto fontSettingsChanged = [ow] { ow->setBaseFont(TextEditorSettings::fontSettings().font()); diff --git a/src/plugins/vcsbase/vcsoutputwindow.cpp b/src/plugins/vcsbase/vcsoutputwindow.cpp index a4fc9cbdd4..98af90bdf8 100644 --- a/src/plugins/vcsbase/vcsoutputwindow.cpp +++ b/src/plugins/vcsbase/vcsoutputwindow.cpp @@ -109,7 +109,7 @@ private: }; OutputWindowPlainTextEdit::OutputWindowPlainTextEdit(QWidget *parent) : - Core::OutputWindow(Core::Context(C_VCS_OUTPUT_PANE), parent) + Core::OutputWindow(Core::Context(C_VCS_OUTPUT_PANE), QString(), parent) { setReadOnly(true); setUndoRedoEnabled(false); |