aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/incredibuild/ibconsolestepconfigwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/incredibuild/ibconsolestepconfigwidget.cpp')
-rw-r--r--src/plugins/incredibuild/ibconsolestepconfigwidget.cpp163
1 files changed, 163 insertions, 0 deletions
diff --git a/src/plugins/incredibuild/ibconsolestepconfigwidget.cpp b/src/plugins/incredibuild/ibconsolestepconfigwidget.cpp
new file mode 100644
index 0000000000..5e67345e1d
--- /dev/null
+++ b/src/plugins/incredibuild/ibconsolestepconfigwidget.cpp
@@ -0,0 +1,163 @@
+/****************************************************************************
+**
+** 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