forked from qt-creator/qt-creator
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>
This commit is contained in:
committed by
André Hartmann
parent
e127d599ac
commit
48073b2990
@@ -32,6 +32,7 @@
|
|||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
class QToolButton;
|
||||||
class QWidget;
|
class QWidget;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ public:
|
|||||||
~IOutputPane() override;
|
~IOutputPane() override;
|
||||||
|
|
||||||
virtual QWidget *outputWidget(QWidget *parent) = 0;
|
virtual QWidget *outputWidget(QWidget *parent) = 0;
|
||||||
virtual QList<QWidget *> toolBarWidgets() const = 0;
|
virtual QList<QWidget *> toolBarWidgets() const;
|
||||||
virtual QString displayName() const = 0;
|
virtual QString displayName() const = 0;
|
||||||
|
|
||||||
virtual int priorityInStatusBar() const = 0;
|
virtual int priorityInStatusBar() const = 0;
|
||||||
@@ -64,6 +65,9 @@ public:
|
|||||||
virtual void goToNext() = 0;
|
virtual void goToNext() = 0;
|
||||||
virtual void goToPrev() = 0;
|
virtual void goToPrev() = 0;
|
||||||
|
|
||||||
|
void setFont(const QFont &font);
|
||||||
|
void setWheelZoomEnabled(bool enabled);
|
||||||
|
|
||||||
enum Flag { NoModeSwitch = 0, ModeSwitch = 1, WithFocus = 2, EnsureSizeHint = 4};
|
enum Flag { NoModeSwitch = 0, ModeSwitch = 1, WithFocus = 2, EnsureSizeHint = 4};
|
||||||
Q_DECLARE_FLAGS(Flags, Flag)
|
Q_DECLARE_FLAGS(Flags, Flag)
|
||||||
|
|
||||||
@@ -83,6 +87,17 @@ signals:
|
|||||||
void navigateStateUpdate();
|
void navigateStateUpdate();
|
||||||
void flashButton();
|
void flashButton();
|
||||||
void setBadgeNumber(int number);
|
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
|
} // namespace Core
|
||||||
|
@@ -41,11 +41,9 @@ namespace Internal {
|
|||||||
|
|
||||||
const char zoomSettingsKey[] = "Core/MessageOutput/Zoom";
|
const char zoomSettingsKey[] = "Core/MessageOutput/Zoom";
|
||||||
|
|
||||||
MessageOutputWindow::MessageOutputWindow() :
|
MessageOutputWindow::MessageOutputWindow()
|
||||||
m_zoomInButton(new QToolButton),
|
|
||||||
m_zoomOutButton(new QToolButton)
|
|
||||||
{
|
{
|
||||||
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);
|
m_widget->setReadOnly(true);
|
||||||
// Let selected text be colored as if the text edit was editable,
|
// Let selected text be colored as if the text edit was editable,
|
||||||
// otherwise the highlight for searching is too light
|
// otherwise the highlight for searching is too light
|
||||||
@@ -55,30 +53,20 @@ MessageOutputWindow::MessageOutputWindow() :
|
|||||||
QColor activeHighlightedText = p.color(QPalette::Active, QPalette::HighlightedText);
|
QColor activeHighlightedText = p.color(QPalette::Active, QPalette::HighlightedText);
|
||||||
p.setColor(QPalette::HighlightedText, activeHighlightedText);
|
p.setColor(QPalette::HighlightedText, activeHighlightedText);
|
||||||
m_widget->setPalette(p);
|
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;
|
auto agg = new Aggregation::Aggregate;
|
||||||
agg->add(m_widget);
|
agg->add(m_widget);
|
||||||
agg->add(new BaseTextFind(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()
|
MessageOutputWindow::~MessageOutputWindow()
|
||||||
{
|
{
|
||||||
delete m_zoomInButton;
|
|
||||||
delete m_zoomOutButton;
|
|
||||||
delete m_widget;
|
delete m_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,11 +96,6 @@ QWidget *MessageOutputWindow::outputWidget(QWidget *parent)
|
|||||||
return m_widget;
|
return m_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QWidget *> MessageOutputWindow::toolBarWidgets() const
|
|
||||||
{
|
|
||||||
return {m_zoomInButton, m_zoomOutButton};
|
|
||||||
}
|
|
||||||
|
|
||||||
QString MessageOutputWindow::displayName() const
|
QString MessageOutputWindow::displayName() const
|
||||||
{
|
{
|
||||||
return tr("General Messages");
|
return tr("General Messages");
|
||||||
@@ -157,30 +140,5 @@ bool MessageOutputWindow::canNavigate() const
|
|||||||
return false;
|
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 Internal
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
|
@@ -46,7 +46,6 @@ public:
|
|||||||
~MessageOutputWindow() override;
|
~MessageOutputWindow() override;
|
||||||
|
|
||||||
QWidget *outputWidget(QWidget *parent) override;
|
QWidget *outputWidget(QWidget *parent) override;
|
||||||
QList<QWidget*> toolBarWidgets() const override;
|
|
||||||
|
|
||||||
QString displayName() const override;
|
QString displayName() const override;
|
||||||
int priorityInStatusBar() const override;
|
int priorityInStatusBar() const override;
|
||||||
@@ -64,16 +63,8 @@ public:
|
|||||||
void goToPrev() override;
|
void goToPrev() override;
|
||||||
bool canNavigate() const override;
|
bool canNavigate() const override;
|
||||||
|
|
||||||
void setFont(const QFont &font);
|
|
||||||
void setWheelZoomEnabled(bool enabled);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void storeSettings() const;
|
|
||||||
void loadSettings();
|
|
||||||
|
|
||||||
OutputWindow *m_widget;
|
OutputWindow *m_widget;
|
||||||
QToolButton *m_zoomInButton = nullptr;
|
|
||||||
QToolButton *m_zoomOutButton = nullptr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -88,11 +88,25 @@ static bool g_managerConstructed = false; // For debugging reasons.
|
|||||||
// OutputPane
|
// OutputPane
|
||||||
|
|
||||||
IOutputPane::IOutputPane(QObject *parent)
|
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.
|
// We need all pages first. Ignore latecomers and shout.
|
||||||
QTC_ASSERT(!g_managerConstructed, return);
|
QTC_ASSERT(!g_managerConstructed, return);
|
||||||
g_outputPanes.append(OutputPaneData(this));
|
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()
|
IOutputPane::~IOutputPane()
|
||||||
@@ -100,6 +114,32 @@ IOutputPane::~IOutputPane()
|
|||||||
const int i = Utils::indexOf(g_outputPanes, Utils::equal(&OutputPaneData::pane, this));
|
const int i = Utils::indexOf(g_outputPanes, Utils::equal(&OutputPaneData::pane, this));
|
||||||
QTC_ASSERT(i >= 0, return);
|
QTC_ASSERT(i >= 0, return);
|
||||||
delete g_outputPanes.at(i).button;
|
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 {
|
namespace Internal {
|
||||||
|
@@ -77,8 +77,9 @@ public:
|
|||||||
|
|
||||||
/*******************/
|
/*******************/
|
||||||
|
|
||||||
OutputWindow::OutputWindow(Context context, QWidget *parent)
|
OutputWindow::OutputWindow(Context context, const QString &settingsKey, QWidget *parent)
|
||||||
: QPlainTextEdit(parent)
|
: QPlainTextEdit(parent)
|
||||||
|
, m_settingsKey(settingsKey)
|
||||||
, d(new Internal::OutputWindowPrivate(document()))
|
, d(new Internal::OutputWindowPrivate(document()))
|
||||||
{
|
{
|
||||||
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||||
@@ -117,6 +118,10 @@ OutputWindow::OutputWindow(Context context, QWidget *parent)
|
|||||||
connect(this, &QPlainTextEdit::redoAvailable, redoAction, &QAction::setEnabled);
|
connect(this, &QPlainTextEdit::redoAvailable, redoAction, &QAction::setEnabled);
|
||||||
connect(this, &QPlainTextEdit::copyAvailable, cutAction, &QAction::setEnabled); // OutputWindow never read-only
|
connect(this, &QPlainTextEdit::copyAvailable, cutAction, &QAction::setEnabled); // OutputWindow never read-only
|
||||||
connect(this, &QPlainTextEdit::copyAvailable, copyAction, &QAction::setEnabled);
|
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);
|
undoAction->setEnabled(false);
|
||||||
redoAction->setEnabled(false);
|
redoAction->setEnabled(false);
|
||||||
@@ -130,6 +135,11 @@ OutputWindow::OutputWindow(Context context, QWidget *parent)
|
|||||||
m_lastMessage.start();
|
m_lastMessage.start();
|
||||||
|
|
||||||
d->m_originalFontSize = font().pointSizeF();
|
d->m_originalFontSize = font().pointSizeF();
|
||||||
|
|
||||||
|
if (!m_settingsKey.isEmpty()) {
|
||||||
|
float zoom = Core::ICore::settings()->value(m_settingsKey).toFloat();
|
||||||
|
setFontZoom(zoom);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OutputWindow::~OutputWindow()
|
OutputWindow::~OutputWindow()
|
||||||
|
@@ -52,7 +52,7 @@ public:
|
|||||||
};
|
};
|
||||||
Q_DECLARE_FLAGS(FilterModeFlags, FilterModeFlag)
|
Q_DECLARE_FLAGS(FilterModeFlags, FilterModeFlag)
|
||||||
|
|
||||||
OutputWindow(Context context, QWidget *parent = nullptr);
|
OutputWindow(Context context, const QString &settingsKey, QWidget *parent = nullptr);
|
||||||
~OutputWindow() override;
|
~OutputWindow() override;
|
||||||
|
|
||||||
Utils::OutputFormatter *formatter() const;
|
Utils::OutputFormatter *formatter() const;
|
||||||
@@ -114,6 +114,7 @@ private:
|
|||||||
|
|
||||||
QColor m_highlightBgColor;
|
QColor m_highlightBgColor;
|
||||||
QColor m_highlightTextColor;
|
QColor m_highlightTextColor;
|
||||||
|
const QString m_settingsKey;
|
||||||
|
|
||||||
Internal::OutputWindowPrivate *d;
|
Internal::OutputWindowPrivate *d;
|
||||||
};
|
};
|
||||||
|
@@ -184,8 +184,6 @@ AppOutputPane::AppOutputPane() :
|
|||||||
m_reRunButton(new QToolButton),
|
m_reRunButton(new QToolButton),
|
||||||
m_stopButton(new QToolButton),
|
m_stopButton(new QToolButton),
|
||||||
m_attachButton(new QToolButton),
|
m_attachButton(new QToolButton),
|
||||||
m_zoomInButton(new QToolButton),
|
|
||||||
m_zoomOutButton(new QToolButton),
|
|
||||||
m_settingsButton(new QToolButton),
|
m_settingsButton(new QToolButton),
|
||||||
m_filterOutputLineEdit(new Utils::FancyLineEdit),
|
m_filterOutputLineEdit(new Utils::FancyLineEdit),
|
||||||
m_formatterWidget(new QWidget)
|
m_formatterWidget(new QWidget)
|
||||||
@@ -224,19 +222,8 @@ AppOutputPane::AppOutputPane() :
|
|||||||
connect(m_attachButton, &QToolButton::clicked,
|
connect(m_attachButton, &QToolButton::clicked,
|
||||||
this, &AppOutputPane::attachToRunControl);
|
this, &AppOutputPane::attachToRunControl);
|
||||||
|
|
||||||
m_zoomInButton->setToolTip(tr("Increase Font Size"));
|
connect(this, &Core::IOutputPane::zoomIn, this, &AppOutputPane::zoomIn);
|
||||||
m_zoomInButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon());
|
connect(this, &Core::IOutputPane::zoomOut, this, &AppOutputPane::zoomOut);
|
||||||
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);
|
|
||||||
|
|
||||||
m_settingsButton->setToolTip(tr("Open Settings Page"));
|
m_settingsButton->setToolTip(tr("Open Settings Page"));
|
||||||
m_settingsButton->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon());
|
m_settingsButton->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon());
|
||||||
@@ -293,17 +280,8 @@ AppOutputPane::AppOutputPane() :
|
|||||||
|
|
||||||
m_mainWidget->setLayout(layout);
|
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,
|
connect(SessionManager::instance(), &SessionManager::aboutToUnloadSession,
|
||||||
this, &AppOutputPane::aboutToUnloadSession);
|
this, &AppOutputPane::aboutToUnloadSession);
|
||||||
|
|
||||||
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
|
|
||||||
this, &AppOutputPane::storeZoomFactor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AppOutputPane::~AppOutputPane()
|
AppOutputPane::~AppOutputPane()
|
||||||
@@ -317,12 +295,6 @@ AppOutputPane::~AppOutputPane()
|
|||||||
delete m_mainWidget;
|
delete m_mainWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppOutputPane::storeZoomFactor()
|
|
||||||
{
|
|
||||||
QSettings *settings = Core::ICore::settings();
|
|
||||||
settings->setValue(SETTINGS_KEY, m_zoom);
|
|
||||||
}
|
|
||||||
|
|
||||||
int AppOutputPane::currentIndex() const
|
int AppOutputPane::currentIndex() const
|
||||||
{
|
{
|
||||||
if (const QWidget *w = m_tabWidget->currentWidget())
|
if (const QWidget *w = m_tabWidget->currentWidget())
|
||||||
@@ -388,8 +360,8 @@ QWidget *AppOutputPane::outputWidget(QWidget *)
|
|||||||
|
|
||||||
QList<QWidget*> AppOutputPane::toolBarWidgets() const
|
QList<QWidget*> AppOutputPane::toolBarWidgets() const
|
||||||
{
|
{
|
||||||
return { m_reRunButton, m_stopButton, m_attachButton, m_zoomInButton,
|
return QList<QWidget *>{m_reRunButton, m_stopButton, m_attachButton, m_settingsButton,
|
||||||
m_zoomOutButton, m_settingsButton, m_filterOutputLineEdit, m_formatterWidget };
|
m_filterOutputLineEdit, m_formatterWidget} + IOutputPane::toolBarWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString AppOutputPane::displayName() const
|
QString AppOutputPane::displayName() const
|
||||||
@@ -432,25 +404,6 @@ void AppOutputPane::setFocus()
|
|||||||
m_tabWidget->currentWidget()->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()
|
void AppOutputPane::updateFilter()
|
||||||
{
|
{
|
||||||
const QString filter = m_filterOutputLineEdit->text();
|
const QString filter = m_filterOutputLineEdit->text();
|
||||||
@@ -540,24 +493,37 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc)
|
|||||||
const TextEditor::FontSettings &fs = TextEditor::TextEditorSettings::fontSettings();
|
const TextEditor::FontSettings &fs = TextEditor::TextEditorSettings::fontSettings();
|
||||||
Core::Id contextId = Core::Id(C_APP_OUTPUT).withSuffix(counter++);
|
Core::Id contextId = Core::Id(C_APP_OUTPUT).withSuffix(counter++);
|
||||||
Core::Context context(contextId);
|
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->setWindowTitle(tr("Application Output Window"));
|
||||||
ow->setWindowIcon(Icons::WINDOW.icon());
|
ow->setWindowIcon(Icons::WINDOW.icon());
|
||||||
ow->setWordWrapEnabled(m_settings.wrapOutput);
|
ow->setWordWrapEnabled(m_settings.wrapOutput);
|
||||||
ow->setMaxCharCount(m_settings.maxCharCount);
|
ow->setMaxCharCount(m_settings.maxCharCount);
|
||||||
ow->setWheelZoomEnabled(TextEditor::TextEditorSettings::behaviorSettings().m_scrollWheelZooming);
|
|
||||||
ow->setBaseFont(fs.font());
|
|
||||||
ow->setHighlightBgColor(fs.toTextCharFormat(TextEditor::C_SEARCH_RESULT)
|
ow->setHighlightBgColor(fs.toTextCharFormat(TextEditor::C_SEARCH_RESULT)
|
||||||
.background().color());
|
.background().color());
|
||||||
ow->setHighlightTextColor(fs.toTextCharFormat(TextEditor::C_SEARCH_RESULT)
|
ow->setHighlightTextColor(fs.toTextCharFormat(TextEditor::C_SEARCH_RESULT)
|
||||||
.foreground().color());
|
.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]() {
|
connect(ow, &Core::OutputWindow::wheelZoom, this, [this, ow]() {
|
||||||
m_zoom = ow->fontZoom();
|
float fontZoom = ow->fontZoom();
|
||||||
for (const RunControlTab &tab : qAsConst(m_runControlTabs))
|
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;
|
auto *agg = new Aggregation::Aggregate;
|
||||||
agg->add(ow);
|
agg->add(ow);
|
||||||
@@ -634,7 +600,6 @@ void AppOutputPane::loadSettings()
|
|||||||
m_settings.wrapOutput = s->value(WRAP_OUTPUT_KEY, true).toBool();
|
m_settings.wrapOutput = s->value(WRAP_OUTPUT_KEY, true).toBool();
|
||||||
m_settings.maxCharCount = s->value(MAX_LINES_KEY,
|
m_settings.maxCharCount = s->value(MAX_LINES_KEY,
|
||||||
Core::Constants::DEFAULT_MAX_CHAR_COUNT).toInt() * 100;
|
Core::Constants::DEFAULT_MAX_CHAR_COUNT).toInt() * 100;
|
||||||
m_zoom = s->value(SETTINGS_KEY, 0).toFloat();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppOutputPane::showTabFor(RunControl *rc)
|
void AppOutputPane::showTabFor(RunControl *rc)
|
||||||
@@ -754,22 +719,16 @@ void AppOutputPane::enableDefaultButtons()
|
|||||||
enableButtons(currentRunControl());
|
enableButtons(currentRunControl());
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppOutputPane::zoomIn()
|
void AppOutputPane::zoomIn(int range)
|
||||||
{
|
{
|
||||||
for (const RunControlTab &tab : qAsConst(m_runControlTabs))
|
for (const RunControlTab &tab : qAsConst(m_runControlTabs))
|
||||||
tab.window->zoomIn(1);
|
tab.window->zoomIn(range);
|
||||||
if (m_runControlTabs.isEmpty())
|
|
||||||
return;
|
|
||||||
m_zoom = m_runControlTabs.first().window->fontZoom();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppOutputPane::zoomOut()
|
void AppOutputPane::zoomOut(int range)
|
||||||
{
|
{
|
||||||
for (const RunControlTab &tab : qAsConst(m_runControlTabs))
|
for (const RunControlTab &tab : qAsConst(m_runControlTabs))
|
||||||
tab.window->zoomOut(1);
|
tab.window->zoomOut(range);
|
||||||
if (m_runControlTabs.isEmpty())
|
|
||||||
return;
|
|
||||||
m_zoom = m_runControlTabs.first().window->fontZoom();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppOutputPane::enableButtons(const RunControl *rc)
|
void AppOutputPane::enableButtons(const RunControl *rc)
|
||||||
@@ -789,8 +748,7 @@ void AppOutputPane::enableButtons(const RunControl *rc)
|
|||||||
m_attachButton->setEnabled(false);
|
m_attachButton->setEnabled(false);
|
||||||
m_attachButton->setToolTip(msgAttachDebuggerTooltip());
|
m_attachButton->setToolTip(msgAttachDebuggerTooltip());
|
||||||
}
|
}
|
||||||
m_zoomInButton->setEnabled(true);
|
setZoomButtonsEnabled(true);
|
||||||
m_zoomOutButton->setEnabled(true);
|
|
||||||
|
|
||||||
replaceAllChildWidgets(m_formatterWidget->layout(), rc->outputFormatter() ?
|
replaceAllChildWidgets(m_formatterWidget->layout(), rc->outputFormatter() ?
|
||||||
rc->outputFormatter()->toolbarWidgets() :
|
rc->outputFormatter()->toolbarWidgets() :
|
||||||
@@ -801,8 +759,7 @@ void AppOutputPane::enableButtons(const RunControl *rc)
|
|||||||
m_attachButton->setEnabled(false);
|
m_attachButton->setEnabled(false);
|
||||||
m_attachButton->setToolTip(msgAttachDebuggerTooltip());
|
m_attachButton->setToolTip(msgAttachDebuggerTooltip());
|
||||||
m_stopAction->setEnabled(false);
|
m_stopAction->setEnabled(false);
|
||||||
m_zoomInButton->setEnabled(false);
|
setZoomButtonsEnabled(false);
|
||||||
m_zoomOutButton->setEnabled(false);
|
|
||||||
}
|
}
|
||||||
m_formatterWidget->setVisible(m_formatterWidget->layout()->count());
|
m_formatterWidget->setVisible(m_formatterWidget->layout()->count());
|
||||||
}
|
}
|
||||||
|
@@ -119,8 +119,8 @@ private:
|
|||||||
void updateFromSettings();
|
void updateFromSettings();
|
||||||
void enableDefaultButtons();
|
void enableDefaultButtons();
|
||||||
|
|
||||||
void zoomIn();
|
void zoomIn(int range);
|
||||||
void zoomOut();
|
void zoomOut(int range);
|
||||||
|
|
||||||
void enableButtons(const RunControl *rc);
|
void enableButtons(const RunControl *rc);
|
||||||
|
|
||||||
@@ -143,9 +143,6 @@ private:
|
|||||||
int tabWidgetIndexOf(int runControlIndex) const;
|
int tabWidgetIndexOf(int runControlIndex) const;
|
||||||
void handleOldOutput(Core::OutputWindow *window) const;
|
void handleOldOutput(Core::OutputWindow *window) const;
|
||||||
void updateCloseActions();
|
void updateCloseActions();
|
||||||
void updateFontSettings();
|
|
||||||
void storeZoomFactor();
|
|
||||||
void updateBehaviorSettings();
|
|
||||||
void updateFilter();
|
void updateFilter();
|
||||||
void configureCurrentWindow();
|
void configureCurrentWindow();
|
||||||
void filterOutputButtonClicked();
|
void filterOutputButtonClicked();
|
||||||
@@ -167,14 +164,11 @@ private:
|
|||||||
QToolButton *m_reRunButton;
|
QToolButton *m_reRunButton;
|
||||||
QToolButton *m_stopButton;
|
QToolButton *m_stopButton;
|
||||||
QToolButton *m_attachButton;
|
QToolButton *m_attachButton;
|
||||||
QToolButton *m_zoomInButton;
|
|
||||||
QToolButton *m_zoomOutButton;
|
|
||||||
QToolButton * const m_settingsButton;
|
QToolButton * const m_settingsButton;
|
||||||
QAction *m_filterActionRegexp = nullptr;
|
QAction *m_filterActionRegexp = nullptr;
|
||||||
QAction *m_filterActionCaseSensitive = nullptr;
|
QAction *m_filterActionCaseSensitive = nullptr;
|
||||||
Utils::FancyLineEdit *m_filterOutputLineEdit = nullptr;
|
Utils::FancyLineEdit *m_filterOutputLineEdit = nullptr;
|
||||||
QWidget *m_formatterWidget;
|
QWidget *m_formatterWidget;
|
||||||
float m_zoom;
|
|
||||||
AppOutputSettings m_settings;
|
AppOutputSettings m_settings;
|
||||||
bool m_filterRegexp = false;
|
bool m_filterRegexp = false;
|
||||||
bool m_filterCaseSensitive = false;
|
bool m_filterCaseSensitive = false;
|
||||||
|
@@ -76,31 +76,11 @@ class CompileOutputTextEdit : public Core::OutputWindow
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
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);
|
setMouseTracking(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void saveSettings()
|
|
||||||
{
|
|
||||||
QSettings *settings = Core::ICore::settings();
|
|
||||||
settings->setValue(QLatin1String(SETTINGS_KEY), fontZoom());
|
|
||||||
}
|
|
||||||
|
|
||||||
void addTask(const Task &task, int blocknumber)
|
void addTask(const Task &task, int blocknumber)
|
||||||
{
|
{
|
||||||
m_taskids.insert(blocknumber, task.taskId);
|
m_taskids.insert(blocknumber, task.taskId);
|
||||||
@@ -110,11 +90,6 @@ public:
|
|||||||
{
|
{
|
||||||
m_taskids.clear();
|
m_taskids.clear();
|
||||||
}
|
}
|
||||||
private:
|
|
||||||
void fontSettingsChanged()
|
|
||||||
{
|
|
||||||
setBaseFont(TextEditor::TextEditorSettings::fontSettings().font());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mouseMoveEvent(QMouseEvent *ev) override
|
void mouseMoveEvent(QMouseEvent *ev) override
|
||||||
@@ -158,8 +133,6 @@ private:
|
|||||||
|
|
||||||
CompileOutputWindow::CompileOutputWindow(QAction *cancelBuildAction) :
|
CompileOutputWindow::CompileOutputWindow(QAction *cancelBuildAction) :
|
||||||
m_cancelBuildButton(new QToolButton),
|
m_cancelBuildButton(new QToolButton),
|
||||||
m_zoomInButton(new QToolButton),
|
|
||||||
m_zoomOutButton(new QToolButton),
|
|
||||||
m_settingsButton(new QToolButton),
|
m_settingsButton(new QToolButton),
|
||||||
m_formatter(new Utils::OutputFormatter)
|
m_formatter(new Utils::OutputFormatter)
|
||||||
{
|
{
|
||||||
@@ -185,23 +158,29 @@ CompileOutputWindow::CompileOutputWindow(QAction *cancelBuildAction) :
|
|||||||
Utils::ProxyAction::proxyActionWithIcon(cancelBuildAction,
|
Utils::ProxyAction::proxyActionWithIcon(cancelBuildAction,
|
||||||
Utils::Icons::STOP_SMALL_TOOLBAR.icon());
|
Utils::Icons::STOP_SMALL_TOOLBAR.icon());
|
||||||
m_cancelBuildButton->setDefaultAction(cancelBuildProxyButton);
|
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->setToolTip(tr("Open Settings Page"));
|
||||||
m_settingsButton->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon());
|
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();
|
updateZoomEnabled();
|
||||||
|
|
||||||
connect(TextEditor::TextEditorSettings::instance(),
|
connect(this, &IOutputPane::zoomIn, m_outputWindow, &Core::OutputWindow::zoomIn);
|
||||||
&TextEditor::TextEditorSettings::behaviorSettingsChanged,
|
connect(this, &IOutputPane::zoomOut, m_outputWindow, &Core::OutputWindow::zoomOut);
|
||||||
this, &CompileOutputWindow::updateZoomEnabled);
|
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, [] {
|
connect(m_settingsButton, &QToolButton::clicked, this, [] {
|
||||||
Core::ICore::showOptionsDialog(OPTIONS_PAGE_ID);
|
Core::ICore::showOptionsDialog(OPTIONS_PAGE_ID);
|
||||||
});
|
});
|
||||||
@@ -223,22 +202,10 @@ CompileOutputWindow::~CompileOutputWindow()
|
|||||||
ExtensionSystem::PluginManager::removeObject(m_handler);
|
ExtensionSystem::PluginManager::removeObject(m_handler);
|
||||||
delete m_handler;
|
delete m_handler;
|
||||||
delete m_cancelBuildButton;
|
delete m_cancelBuildButton;
|
||||||
delete m_zoomInButton;
|
|
||||||
delete m_zoomOutButton;
|
|
||||||
delete m_settingsButton;
|
delete m_settingsButton;
|
||||||
delete m_formatter;
|
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()
|
void CompileOutputWindow::updateFromSettings()
|
||||||
{
|
{
|
||||||
m_outputWindow->setWordWrapEnabled(m_settings.wrapOutput);
|
m_outputWindow->setWordWrapEnabled(m_settings.wrapOutput);
|
||||||
@@ -267,7 +234,7 @@ QWidget *CompileOutputWindow::outputWidget(QWidget *)
|
|||||||
|
|
||||||
QList<QWidget *> CompileOutputWindow::toolBarWidgets() const
|
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)
|
void CompileOutputWindow::appendText(const QString &text, BuildStep::OutputFormat format)
|
||||||
|
@@ -91,14 +91,11 @@ private:
|
|||||||
void loadSettings();
|
void loadSettings();
|
||||||
void storeSettings() const;
|
void storeSettings() const;
|
||||||
void updateFromSettings();
|
void updateFromSettings();
|
||||||
void updateZoomEnabled();
|
|
||||||
|
|
||||||
CompileOutputTextEdit *m_outputWindow;
|
CompileOutputTextEdit *m_outputWindow;
|
||||||
QHash<unsigned int, QPair<int, int>> m_taskPositions;
|
QHash<unsigned int, QPair<int, int>> m_taskPositions;
|
||||||
ShowOutputTaskHandler *m_handler;
|
ShowOutputTaskHandler *m_handler;
|
||||||
QToolButton *m_cancelBuildButton;
|
QToolButton *m_cancelBuildButton;
|
||||||
QToolButton *m_zoomInButton;
|
|
||||||
QToolButton *m_zoomOutButton;
|
|
||||||
QToolButton * const m_settingsButton;
|
QToolButton * const m_settingsButton;
|
||||||
Utils::OutputFormatter *m_formatter;
|
Utils::OutputFormatter *m_formatter;
|
||||||
CompileOutputSettings m_settings;
|
CompileOutputSettings m_settings;
|
||||||
|
@@ -305,7 +305,7 @@ void SerialOutputPane::createNewOutputWindow(SerialControl *rc)
|
|||||||
static uint counter = 0;
|
static uint counter = 0;
|
||||||
Core::Id contextId = Core::Id(Constants::C_SERIAL_OUTPUT).withSuffix(counter++);
|
Core::Id contextId = Core::Id(Constants::C_SERIAL_OUTPUT).withSuffix(counter++);
|
||||||
Core::Context context(contextId);
|
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;
|
using TextEditor::TextEditorSettings;
|
||||||
auto fontSettingsChanged = [ow] {
|
auto fontSettingsChanged = [ow] {
|
||||||
ow->setBaseFont(TextEditorSettings::fontSettings().font());
|
ow->setBaseFont(TextEditorSettings::fontSettings().font());
|
||||||
|
@@ -109,7 +109,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
OutputWindowPlainTextEdit::OutputWindowPlainTextEdit(QWidget *parent) :
|
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);
|
setReadOnly(true);
|
||||||
setUndoRedoEnabled(false);
|
setUndoRedoEnabled(false);
|
||||||
|
Reference in New Issue
Block a user