forked from qt-creator/qt-creator
- Using raw pointers instead of QSharedPointers. - Removing redundant pointers existence checks before delete. - Replacing empty quotes with explicit QString() instance creation. - A few spaces and tab fixes. - Save settings after migrating build steps Change-Id: Iff87d75c7047474ab8e49366ddfeced766ff1a67 Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
164 lines
6.5 KiB
C++
164 lines
6.5 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2020 The Qt Company Ltd.
|
|
** Contact: https://www.qt.io/licensing/
|
|
**
|
|
** This file is part of Qt Creator.
|
|
**
|
|
** Commercial License Usage
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
** accordance with the commercial license agreement provided with the
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
** a written agreement between you and The Qt Company. For licensing terms
|
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
** information use the contact form at https://www.qt.io/contact-us.
|
|
**
|
|
** GNU General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
** General Public License version 3 as published by the Free Software
|
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
|
** included in the packaging of this file. Please review the following
|
|
** information to ensure the GNU General Public License requirements will
|
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
|
**
|
|
****************************************************************************/
|
|
|
|
#include "ibconsolestepconfigwidget.h"
|
|
|
|
#include "ui_ibconsolebuildstep.h"
|
|
|
|
#include <coreplugin/variablechooser.h>
|
|
|
|
namespace IncrediBuild {
|
|
namespace Internal {
|
|
|
|
IBConsoleStepConfigWidget::IBConsoleStepConfigWidget(IBConsoleBuildStep *ibConsoleStep)
|
|
: ProjectExplorer::BuildStepConfigWidget(ibConsoleStep)
|
|
, m_buildStepUI(nullptr)
|
|
, m_buildStep(ibConsoleStep)
|
|
{
|
|
// On first creation of the step, attempt to detect and migrate from preceding steps
|
|
if (!ibConsoleStep->loadedFromMap())
|
|
ibConsoleStep->tryToMigrate();
|
|
|
|
m_buildStepUI = new Ui_IBConsoleBuildStep();
|
|
m_buildStepUI->setupUi(this);
|
|
Core::VariableChooser::addSupportForChildWidgets(this, ibConsoleStep->macroExpander());
|
|
|
|
m_buildStepUI->commandBuilder->addItems(m_buildStep->supportedCommandBuilders());
|
|
m_buildStepUI->commandBuilder->setCurrentText(m_buildStep->commandBuilder()->displayName());
|
|
connect(m_buildStepUI->commandBuilder, &QComboBox::currentTextChanged, this, &IBConsoleStepConfigWidget::commandBuilderChanged);
|
|
|
|
QString command, defaultCommand;
|
|
defaultCommand = m_buildStep->commandBuilder()->defaultCommand();
|
|
m_buildStepUI->makePathChooser->lineEdit()->setPlaceholderText(defaultCommand);
|
|
command = m_buildStep->commandBuilder()->command();
|
|
if (command != defaultCommand)
|
|
m_buildStepUI->makePathChooser->setPath(command);
|
|
|
|
m_buildStepUI->makePathChooser->setExpectedKind(Utils::PathChooser::Kind::ExistingCommand);
|
|
m_buildStepUI->makePathChooser->setBaseDirectory(Utils::FilePath::fromString(Utils::PathChooser::homePath()));
|
|
m_buildStepUI->makePathChooser->setHistoryCompleter(QLatin1String("IncrediBuild.IBConsole.MakeCommand.History"));
|
|
connect(m_buildStepUI->makePathChooser, &Utils::PathChooser::rawPathChanged, this, &IBConsoleStepConfigWidget::makePathEdited);
|
|
|
|
QString defaultArgs;
|
|
for (const QString &a : m_buildStep->commandBuilder()->defaultArguments())
|
|
defaultArgs += "\"" + a + "\" ";
|
|
|
|
QString args;
|
|
for (const QString &a : m_buildStep->commandBuilder()->arguments())
|
|
args += "\"" + a + "\" ";
|
|
|
|
m_buildStepUI->makeArgumentsLineEdit->setPlaceholderText(defaultArgs);
|
|
if (args != defaultArgs)
|
|
m_buildStepUI->makeArgumentsLineEdit->setText(args);
|
|
connect(m_buildStepUI->makeArgumentsLineEdit, &QLineEdit::textEdited, this, &IBConsoleStepConfigWidget::commandArgsChanged);
|
|
|
|
m_buildStepUI->niceSpin->setValue(m_buildStep->nice());
|
|
connect(m_buildStepUI->niceSpin, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &IBConsoleStepConfigWidget::niceChanged);
|
|
|
|
m_buildStepUI->keepJobsNum->setChecked(m_buildStep->keepJobNum());
|
|
connect(m_buildStepUI->keepJobsNum, &QCheckBox::stateChanged, this, &IBConsoleStepConfigWidget::keepJobNumChanged);
|
|
|
|
m_buildStepUI->alternate->setChecked(m_buildStep->alternate());
|
|
connect(m_buildStepUI->alternate, &QCheckBox::stateChanged, this, &IBConsoleStepConfigWidget::alternateChanged);
|
|
|
|
m_buildStepUI->forceRemote->setChecked(m_buildStep->forceRemote());
|
|
connect(m_buildStepUI->forceRemote, &QCheckBox::stateChanged, this, &IBConsoleStepConfigWidget::forceRemoteChanged);
|
|
}
|
|
|
|
IBConsoleStepConfigWidget::~IBConsoleStepConfigWidget()
|
|
{
|
|
delete m_buildStepUI;
|
|
m_buildStepUI = nullptr;
|
|
}
|
|
|
|
QString IBConsoleStepConfigWidget::displayName() const
|
|
{
|
|
return tr("IncrediBuild for Linux");
|
|
}
|
|
|
|
QString IBConsoleStepConfigWidget::summaryText() const
|
|
{
|
|
return "<b>" + displayName() + "</b>";
|
|
}
|
|
|
|
void IBConsoleStepConfigWidget::niceChanged(int)
|
|
{
|
|
m_buildStep->nice(m_buildStepUI->niceSpin->value());
|
|
}
|
|
|
|
void IBConsoleStepConfigWidget::commandBuilderChanged(const QString&)
|
|
{
|
|
m_buildStep->commandBuilder(m_buildStepUI->commandBuilder->currentText());
|
|
|
|
QString defaultArgs;
|
|
for (const QString &a : m_buildStep->commandBuilder()->defaultArguments())
|
|
defaultArgs += "\"" + a + "\" ";
|
|
|
|
QString args;
|
|
for (const QString &a : m_buildStep->commandBuilder()->arguments())
|
|
args += "\"" + a + "\" ";
|
|
if (args != defaultArgs)
|
|
m_buildStepUI->makeArgumentsLineEdit->setText(args);
|
|
else
|
|
m_buildStepUI->makeArgumentsLineEdit->setText("");
|
|
|
|
QString command, defaultCommand;
|
|
defaultCommand = m_buildStep->commandBuilder()->defaultCommand();
|
|
m_buildStepUI->makePathChooser->lineEdit()->setPlaceholderText(defaultCommand);
|
|
command = m_buildStep->commandBuilder()->command();
|
|
if (command != defaultCommand)
|
|
m_buildStepUI->makePathChooser->setPath(command);
|
|
else
|
|
m_buildStepUI->makePathChooser->setPath("");
|
|
}
|
|
|
|
void IBConsoleStepConfigWidget::commandArgsChanged(const QString&)
|
|
{
|
|
m_buildStep->commandBuilder()->arguments(m_buildStepUI->makeArgumentsLineEdit->text());
|
|
}
|
|
|
|
void IBConsoleStepConfigWidget::makePathEdited()
|
|
{
|
|
m_buildStep->commandBuilder()->command(m_buildStepUI->makePathChooser->rawPath());
|
|
}
|
|
|
|
void IBConsoleStepConfigWidget::keepJobNumChanged()
|
|
{
|
|
m_buildStep->keepJobNum(m_buildStepUI->keepJobsNum->checkState() == Qt::CheckState::Checked);
|
|
}
|
|
|
|
void IBConsoleStepConfigWidget::alternateChanged()
|
|
{
|
|
m_buildStep->alternate(m_buildStepUI->alternate->checkState() == Qt::CheckState::Checked);
|
|
}
|
|
|
|
void IBConsoleStepConfigWidget::forceRemoteChanged()
|
|
{
|
|
m_buildStep->forceRemote(m_buildStepUI->forceRemote->checkState() == Qt::CheckState::Checked);
|
|
}
|
|
|
|
} // namespace Internal
|
|
} // namespace IncrediBuild
|