| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | /**************************************************************************
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-03-05 11:25:49 +01:00
										 |  |  | ** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-06-17 00:01:27 +10:00
										 |  |  | ** Contact: Nokia Corporation (qt-info@nokia.com) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** Commercial Usage | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Licensees holding valid Qt Commercial licenses may use this file in | 
					
						
							|  |  |  | ** accordance with the Qt Commercial License Agreement provided with the | 
					
						
							|  |  |  | ** Software or, alternatively, in accordance with the terms contained in | 
					
						
							|  |  |  | ** a written agreement between you and Nokia. | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** GNU Lesser General Public License Usage | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Alternatively, this file may be used under the terms of the GNU Lesser | 
					
						
							|  |  |  | ** General Public License version 2.1 as published by the Free Software | 
					
						
							|  |  |  | ** Foundation and appearing in the file LICENSE.LGPL included in the | 
					
						
							|  |  |  | ** packaging of this file.  Please review the following information to | 
					
						
							|  |  |  | ** ensure the GNU Lesser General Public License version 2.1 requirements | 
					
						
							|  |  |  | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** If you are unsure which license is appropriate for your use, please | 
					
						
							| 
									
										
										
										
											2009-08-14 09:30:56 +02:00
										 |  |  | ** contact the sales department at http://qt.nokia.com/contact.
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | **************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | #include "genericmakestep.h"
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | #include "genericprojectconstants.h"
 | 
					
						
							|  |  |  | #include "genericproject.h"
 | 
					
						
							| 
									
										
										
										
											2010-02-08 15:50:06 +01:00
										 |  |  | #include "generictarget.h"
 | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | #include "ui_genericmakestep.h"
 | 
					
						
							| 
									
										
										
										
											2009-11-25 18:50:20 +01:00
										 |  |  | #include "genericbuildconfiguration.h"
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | #include <extensionsystem/pluginmanager.h>
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | #include <projectexplorer/buildsteplist.h>
 | 
					
						
							| 
									
										
										
										
											2009-03-18 14:35:35 +01:00
										 |  |  | #include <projectexplorer/toolchain.h>
 | 
					
						
							| 
									
										
										
										
											2009-09-29 11:39:55 +02:00
										 |  |  | #include <projectexplorer/projectexplorer.h>
 | 
					
						
							| 
									
										
										
										
											2009-12-09 13:54:46 +01:00
										 |  |  | #include <projectexplorer/gnumakeparser.h>
 | 
					
						
							| 
									
										
										
										
											2009-07-13 11:39:08 +02:00
										 |  |  | #include <coreplugin/variablemanager.h>
 | 
					
						
							| 
									
										
										
										
											2010-11-08 19:54:19 +01:00
										 |  |  | #include <utils/stringutils.h>
 | 
					
						
							| 
									
										
										
										
											2010-01-07 18:17:24 +01:00
										 |  |  | #include <utils/qtcassert.h>
 | 
					
						
							| 
									
										
										
										
											2010-10-19 11:14:03 +02:00
										 |  |  | #include <utils/qtcprocess.h>
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | #include <QtGui/QFormLayout>
 | 
					
						
							|  |  |  | #include <QtGui/QGroupBox>
 | 
					
						
							|  |  |  | #include <QtGui/QCheckBox>
 | 
					
						
							|  |  |  | #include <QtGui/QLineEdit>
 | 
					
						
							|  |  |  | #include <QtGui/QListWidget>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using namespace GenericProjectManager; | 
					
						
							|  |  |  | using namespace GenericProjectManager::Internal; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | namespace { | 
					
						
							|  |  |  | const char * const GENERIC_MS_ID("GenericProjectManager.GenericMakeStep"); | 
					
						
							|  |  |  | const char * const GENERIC_MS_DISPLAY_NAME(QT_TRANSLATE_NOOP("GenericProjectManager::Internal::GenericMakeStep", | 
					
						
							|  |  |  |                                                              "Make")); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const char * const BUILD_TARGETS_KEY("GenericProjectManager.GenericMakeStep.BuildTargets"); | 
					
						
							|  |  |  | const char * const MAKE_ARGUMENTS_KEY("GenericProjectManager.GenericMakeStep.MakeArguments"); | 
					
						
							|  |  |  | const char * const MAKE_COMMAND_KEY("GenericProjectManager.GenericMakeStep.MakeCommand"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | GenericMakeStep::GenericMakeStep(ProjectExplorer::BuildStepList *parent) : | 
					
						
							|  |  |  |     AbstractProcessStep(parent, QLatin1String(GENERIC_MS_ID)) | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     ctor(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | GenericMakeStep::GenericMakeStep(ProjectExplorer::BuildStepList *parent, const QString &id) : | 
					
						
							|  |  |  |     AbstractProcessStep(parent, id) | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     ctor(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | GenericMakeStep::GenericMakeStep(ProjectExplorer::BuildStepList *parent, GenericMakeStep *bs) : | 
					
						
							|  |  |  |     AbstractProcessStep(parent, bs), | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |     m_buildTargets(bs->m_buildTargets), | 
					
						
							|  |  |  |     m_makeArguments(bs->m_makeArguments), | 
					
						
							|  |  |  |     m_makeCommand(bs->m_makeCommand) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |     ctor(); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | void GenericMakeStep::ctor() | 
					
						
							| 
									
										
										
										
											2009-11-19 17:45:43 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-08-19 12:26:21 +02:00
										 |  |  |     setDefaultDisplayName(QCoreApplication::translate("GenericProjectManager::Internal::GenericMakeStep", | 
					
						
							|  |  |  |                                                       GENERIC_MS_DISPLAY_NAME)); | 
					
						
							| 
									
										
										
										
											2009-11-19 17:45:43 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | GenericMakeStep::~GenericMakeStep() | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-26 14:43:27 +01:00
										 |  |  | GenericBuildConfiguration *GenericMakeStep::genericBuildConfiguration() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return static_cast<GenericBuildConfiguration *>(buildConfiguration()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  | bool GenericMakeStep::init() | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-11-26 14:43:27 +01:00
										 |  |  |     GenericBuildConfiguration *bc = genericBuildConfiguration(); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 19:06:51 +02:00
										 |  |  |     setEnabled(true); | 
					
						
							| 
									
										
										
										
											2010-11-12 17:23:55 +01:00
										 |  |  |     ProjectExplorer::ProcessParameters *pp = processParameters(); | 
					
						
							|  |  |  |     pp->setMacroExpander(bc->macroExpander()); | 
					
						
							|  |  |  |     pp->setWorkingDirectory(bc->buildDirectory()); | 
					
						
							|  |  |  |     pp->setEnvironment(bc->environment()); | 
					
						
							|  |  |  |     pp->setCommand(makeCommand()); | 
					
						
							|  |  |  |     pp->setArguments(allArguments()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     setOutputParser(new ProjectExplorer::GnuMakeParser(pp->effectiveWorkingDirectory())); | 
					
						
							| 
									
										
										
										
											2010-02-08 15:50:06 +01:00
										 |  |  |     if (bc->genericTarget()->genericProject()->toolChain()) | 
					
						
							|  |  |  |         appendOutputParser(bc->genericTarget()->genericProject()->toolChain()->outputParser()); | 
					
						
							| 
									
										
										
										
											2009-12-09 13:54:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return AbstractProcessStep::init(); | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | QVariantMap GenericMakeStep::toMap() const | 
					
						
							| 
									
										
										
										
											2009-10-15 19:06:51 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |     QVariantMap map(AbstractProcessStep::toMap()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     map.insert(QLatin1String(BUILD_TARGETS_KEY), m_buildTargets); | 
					
						
							|  |  |  |     map.insert(QLatin1String(MAKE_ARGUMENTS_KEY), m_makeArguments); | 
					
						
							|  |  |  |     map.insert(QLatin1String(MAKE_COMMAND_KEY), m_makeCommand); | 
					
						
							|  |  |  |     return map; | 
					
						
							| 
									
										
										
										
											2009-10-15 19:06:51 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | bool GenericMakeStep::fromMap(const QVariantMap &map) | 
					
						
							| 
									
										
										
										
											2009-10-15 19:06:51 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |     m_buildTargets = map.value(QLatin1String(BUILD_TARGETS_KEY)).toStringList(); | 
					
						
							| 
									
										
										
										
											2010-10-19 11:14:03 +02:00
										 |  |  |     m_makeArguments = map.value(QLatin1String(MAKE_ARGUMENTS_KEY)).toString(); | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |     m_makeCommand = map.value(QLatin1String(MAKE_COMMAND_KEY)).toString(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return BuildStep::fromMap(map); | 
					
						
							| 
									
										
										
										
											2009-10-15 19:06:51 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-12 17:23:55 +01:00
										 |  |  | QString GenericMakeStep::allArguments() const | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-11-12 17:23:55 +01:00
										 |  |  |     QString args = m_makeArguments; | 
					
						
							|  |  |  |     Utils::QtcProcess::addArgs(&args, m_buildTargets); | 
					
						
							|  |  |  |     return args; | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  | QString GenericMakeStep::makeCommand() const | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  |     QString command = m_makeCommand; | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  |     if (command.isEmpty()) { | 
					
						
							| 
									
										
										
										
											2010-02-08 15:50:06 +01:00
										 |  |  |         GenericProject *pro = genericBuildConfiguration()->genericTarget()->genericProject(); | 
					
						
							| 
									
										
										
										
											2009-11-23 15:47:26 +01:00
										 |  |  |         if (ProjectExplorer::ToolChain *toolChain = pro->toolChain()) | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  |             command = toolChain->makeCommand(); | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             command = QLatin1String("make"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return command; | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | void GenericMakeStep::run(QFutureInterface<bool> &fi) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     AbstractProcessStep::run(fi); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | ProjectExplorer::BuildStepConfigWidget *GenericMakeStep::createConfigWidget() | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  |     return new GenericMakeStepConfigWidget(this); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | bool GenericMakeStep::immutable() const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-02-25 14:23:11 +01:00
										 |  |  |     return false; | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  | bool GenericMakeStep::buildsTarget(const QString &target) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  |     return m_buildTargets.contains(target); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  | void GenericMakeStep::setBuildTarget(const QString &target, bool on) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  |     QStringList old = m_buildTargets; | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  |     if (on && !old.contains(target)) | 
					
						
							| 
									
										
										
										
											2009-10-15 19:06:51 +02:00
										 |  |  |          old << target; | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  |     else if(!on && old.contains(target)) | 
					
						
							| 
									
										
										
										
											2009-10-27 16:14:18 +01:00
										 |  |  |         old.removeOne(target); | 
					
						
							| 
									
										
										
										
											2009-10-15 19:06:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  |     m_buildTargets = old; | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | // GenericMakeStepConfigWidget
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | //
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | GenericMakeStepConfigWidget::GenericMakeStepConfigWidget(GenericMakeStep *makeStep) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  |     : m_makeStep(makeStep) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  |     m_ui = new Ui::GenericMakeStep; | 
					
						
							|  |  |  |     m_ui->setupUi(this); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // TODO update this list also on rescans of the GenericLists.txt
 | 
					
						
							| 
									
										
										
										
											2010-02-08 15:50:06 +01:00
										 |  |  |     GenericProject *pro = m_makeStep->genericBuildConfiguration()->genericTarget()->genericProject(); | 
					
						
							|  |  |  |     foreach (const QString &target, pro->buildTargets()) { | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  |         QListWidgetItem *item = new QListWidgetItem(target, m_ui->targetsList); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  |         item->setFlags(item->flags() | Qt::ItemIsUserCheckable); | 
					
						
							|  |  |  |         item->setCheckState(Qt::Unchecked); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  |     connect(m_ui->targetsList, SIGNAL(itemChanged(QListWidgetItem*)), | 
					
						
							|  |  |  |             this, SLOT(itemChanged(QListWidgetItem*))); | 
					
						
							| 
									
										
										
										
											2009-03-18 17:43:55 +01:00
										 |  |  |     connect(m_ui->makeLineEdit, SIGNAL(textEdited(QString)), | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  |             this, SLOT(makeLineEditTextEdited())); | 
					
						
							| 
									
										
										
										
											2009-03-18 17:43:55 +01:00
										 |  |  |     connect(m_ui->makeArgumentsLineEdit, SIGNAL(textEdited(QString)), | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  |             this, SLOT(makeArgumentsLineEditTextEdited())); | 
					
						
							| 
									
										
										
										
											2009-08-12 17:02:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(settingsChanged()), | 
					
						
							|  |  |  |             this, SLOT(updateMakeOverrrideLabel())); | 
					
						
							|  |  |  |     connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(settingsChanged()), | 
					
						
							|  |  |  |             this, SLOT(updateDetails())); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | QString GenericMakeStepConfigWidget::displayName() const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |     return tr("Make", "GenericMakestep display name."); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-12 17:02:28 +02:00
										 |  |  | // TODO: Label should update when tool chain is changed
 | 
					
						
							|  |  |  | void GenericMakeStepConfigWidget::updateMakeOverrrideLabel() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  |     m_ui->makeLabel->setText(tr("Override %1:").arg(m_makeStep->makeCommand())); | 
					
						
							| 
									
										
										
										
											2009-08-12 17:02:28 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  | void GenericMakeStepConfigWidget::init() | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-08-12 17:02:28 +02:00
										 |  |  |     updateMakeOverrrideLabel(); | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-19 11:14:03 +02:00
										 |  |  |     m_ui->makeLineEdit->setText(m_makeStep->m_makeCommand); | 
					
						
							|  |  |  |     m_ui->makeArgumentsLineEdit->setText(m_makeStep->m_makeArguments); | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Disconnect to make the changes to the items
 | 
					
						
							|  |  |  |     disconnect(m_ui->targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int count = m_ui->targetsList->count(); | 
					
						
							|  |  |  |     for (int i = 0; i < count; ++i) { | 
					
						
							|  |  |  |         QListWidgetItem *item = m_ui->targetsList->item(i); | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  |         item->setCheckState(m_makeStep->buildsTarget(item->text()) ? Qt::Checked : Qt::Unchecked); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  |     updateDetails(); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  |     // and connect again
 | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  |     connect(m_ui->targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  | void GenericMakeStepConfigWidget::updateDetails() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2010-11-12 17:23:55 +01:00
										 |  |  |     GenericBuildConfiguration *bc = m_makeStep->genericBuildConfiguration(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ProjectExplorer::ProcessParameters param; | 
					
						
							|  |  |  |     param.setMacroExpander(bc->macroExpander()); | 
					
						
							|  |  |  |     param.setWorkingDirectory(bc->buildDirectory()); | 
					
						
							|  |  |  |     param.setEnvironment(bc->environment()); | 
					
						
							|  |  |  |     param.setCommand(m_makeStep->makeCommand()); | 
					
						
							|  |  |  |     param.setArguments(m_makeStep->allArguments()); | 
					
						
							|  |  |  |     m_summaryText = param.summary(displayName()); | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  |     emit updateSummary(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-06 15:31:32 +02:00
										 |  |  | QString GenericMakeStepConfigWidget::summaryText() const | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  |     return m_summaryText; | 
					
						
							| 
									
										
										
										
											2009-08-06 15:31:32 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | void GenericMakeStepConfigWidget::itemChanged(QListWidgetItem *item) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  |     m_makeStep->setBuildTarget(item->text(), item->checkState() & Qt::Checked); | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  |     updateDetails(); | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void GenericMakeStepConfigWidget::makeLineEditTextEdited() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  |     m_makeStep->m_makeCommand = m_ui->makeLineEdit->text(); | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  |     updateDetails(); | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void GenericMakeStepConfigWidget::makeArgumentsLineEditTextEdited() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2010-10-19 11:14:03 +02:00
										 |  |  |     m_makeStep->m_makeArguments = m_ui->makeArgumentsLineEdit->text(); | 
					
						
							| 
									
										
										
										
											2009-08-06 18:31:46 +02:00
										 |  |  |     updateDetails(); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | // GenericMakeStepFactory
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | //
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | GenericMakeStepFactory::GenericMakeStepFactory(QObject *parent) : | 
					
						
							|  |  |  |     ProjectExplorer::IBuildStepFactory(parent) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GenericMakeStepFactory::~GenericMakeStepFactory() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | bool GenericMakeStepFactory::canCreate(ProjectExplorer::BuildStepList *parent, | 
					
						
							| 
									
										
										
										
											2010-03-16 14:36:59 +01:00
										 |  |  |                                        const QString &id) const | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  |     if (parent->target()->project()->id() != QLatin1String(Constants::GENERICPROJECT_ID)) | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |         return false; | 
					
						
							|  |  |  |     return id == QLatin1String(GENERIC_MS_ID); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | ProjectExplorer::BuildStep *GenericMakeStepFactory::create(ProjectExplorer::BuildStepList *parent, | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |                                                            const QString &id) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  |     if (!canCreate(parent, id)) | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |         return 0; | 
					
						
							|  |  |  |     return new GenericMakeStep(parent); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | bool GenericMakeStepFactory::canClone(ProjectExplorer::BuildStepList *parent, | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |                                       ProjectExplorer::BuildStep *source) const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     const QString id(source->id()); | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  |     return canCreate(parent, id); | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | ProjectExplorer::BuildStep *GenericMakeStepFactory::clone(ProjectExplorer::BuildStepList *parent, | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |                                                           ProjectExplorer::BuildStep *source) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  |     if (!canClone(parent, source)) | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |         return 0; | 
					
						
							|  |  |  |     GenericMakeStep *old(qobject_cast<GenericMakeStep *>(source)); | 
					
						
							|  |  |  |     Q_ASSERT(old); | 
					
						
							|  |  |  |     return new GenericMakeStep(parent, old); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | bool GenericMakeStepFactory::canRestore(ProjectExplorer::BuildStepList *parent, | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |                                         const QVariantMap &map) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |     QString id(ProjectExplorer::idFromMap(map)); | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  |     return canCreate(parent, id); | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | ProjectExplorer::BuildStep *GenericMakeStepFactory::restore(ProjectExplorer::BuildStepList *parent, | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |                                                             const QVariantMap &map) | 
					
						
							| 
									
										
										
										
											2009-10-27 14:16:28 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  |     if (!canRestore(parent, map)) | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |         return 0; | 
					
						
							|  |  |  |     GenericMakeStep *bs(new GenericMakeStep(parent)); | 
					
						
							|  |  |  |     if (bs->fromMap(map)) | 
					
						
							|  |  |  |         return bs; | 
					
						
							|  |  |  |     delete bs; | 
					
						
							|  |  |  |     return 0; | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  | QStringList GenericMakeStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-16 14:00:41 +02:00
										 |  |  |     if (parent->target()->project()->id() != QLatin1String(Constants::GENERICPROJECT_ID)) | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |         return QStringList(); | 
					
						
							|  |  |  |     return QStringList() << QLatin1String(GENERIC_MS_ID); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-07 18:17:24 +01:00
										 |  |  | QString GenericMakeStepFactory::displayNameForId(const QString &id) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-01-14 17:41:29 +01:00
										 |  |  |     if (id == QLatin1String(GENERIC_MS_ID)) | 
					
						
							|  |  |  |         return QCoreApplication::translate("GenericProjectManager::Internal::GenericMakeStep", | 
					
						
							|  |  |  |                                            GENERIC_MS_DISPLAY_NAME); | 
					
						
							|  |  |  |     return QString(); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } |