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:
Andre Hartmann
2019-03-31 08:04:43 +02:00
committed by André Hartmann
parent e127d599ac
commit 48073b2990
12 changed files with 131 additions and 201 deletions

View File

@@ -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());
}