| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | /**************************************************************************
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Contact:  Qt Software Information (qt-info@nokia.com) | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** 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 | 
					
						
							|  |  |  | ** contact the sales department at qt-sales@nokia.com. | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | **************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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"
 | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | #include "ui_genericmakestep.h"
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | #include <extensionsystem/pluginmanager.h>
 | 
					
						
							| 
									
										
										
										
											2009-03-18 14:35:35 +01:00
										 |  |  | #include <projectexplorer/toolchain.h>
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | #include <utils/qtcassert.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>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace { | 
					
						
							|  |  |  | bool debug = false; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using namespace GenericProjectManager; | 
					
						
							|  |  |  | using namespace GenericProjectManager::Internal; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | GenericMakeStep::GenericMakeStep(GenericProject *pro) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  |     : AbstractProcessStep(pro), m_pro(pro), m_buildParser(0) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | GenericMakeStep::~GenericMakeStep() | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     delete m_buildParser; | 
					
						
							|  |  |  |     m_buildParser = 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | bool GenericMakeStep::init(const QString &buildConfiguration) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     // TODO figure out the correct build parser
 | 
					
						
							|  |  |  |     delete m_buildParser; | 
					
						
							|  |  |  |     m_buildParser = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const QString buildParser = m_pro->buildParser(buildConfiguration); | 
					
						
							|  |  |  |     qDebug() << "*** build parser:" << buildParser; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QList<ProjectExplorer::IBuildParserFactory *> buildParserFactories = | 
					
						
							|  |  |  |             ExtensionSystem::PluginManager::instance()->getObjects<ProjectExplorer::IBuildParserFactory>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     foreach (ProjectExplorer::IBuildParserFactory *factory, buildParserFactories) { | 
					
						
							|  |  |  |         if (factory->canCreate(buildParser)) { | 
					
						
							|  |  |  |             m_buildParser = factory->create(buildParser); | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (m_buildParser) { | 
					
						
							|  |  |  |         connect(m_buildParser, SIGNAL(addToOutputWindow(const QString &)), | 
					
						
							|  |  |  |                 this, SIGNAL(addToOutputWindow(const QString &)), | 
					
						
							|  |  |  |                 Qt::DirectConnection); | 
					
						
							|  |  |  |         connect(m_buildParser, SIGNAL(addToTaskWindow(const QString &, int, int, const QString &)), | 
					
						
							|  |  |  |                 this, SLOT(slotAddToTaskWindow(const QString &, int, int, const QString &)), | 
					
						
							|  |  |  |                 Qt::DirectConnection); | 
					
						
							|  |  |  |         connect(m_buildParser, SIGNAL(enterDirectory(const QString &)), | 
					
						
							|  |  |  |                 this, SLOT(addDirectory(const QString &)), | 
					
						
							|  |  |  |                 Qt::DirectConnection); | 
					
						
							|  |  |  |         connect(m_buildParser, SIGNAL(leaveDirectory(const QString &)), | 
					
						
							|  |  |  |                 this, SLOT(removeDirectory(const QString &)), | 
					
						
							|  |  |  |                 Qt::DirectConnection); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     m_openDirectories.clear(); | 
					
						
							|  |  |  |     addDirectory(m_pro->buildDirectory(buildConfiguration)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     setEnabled(buildConfiguration, true); | 
					
						
							|  |  |  |     setWorkingDirectory(buildConfiguration, m_pro->buildDirectory(buildConfiguration)); | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     QString command = value(buildConfiguration, "makeCommand").toString(); | 
					
						
							|  |  |  |     if (command.isEmpty()) { | 
					
						
							|  |  |  |         if (ProjectExplorer::ToolChain *toolChain = m_pro->toolChain()) | 
					
						
							|  |  |  |             command = toolChain->makeCommand(); | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             command = QLatin1String("make"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     setCommand(buildConfiguration, command); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const QStringList targets = value(buildConfiguration, "buildTargets").toStringList(); | 
					
						
							|  |  |  |     QStringList arguments = value(buildConfiguration, "makeArguments").toStringList(); | 
					
						
							|  |  |  |     arguments.append(targets); | 
					
						
							|  |  |  |     setArguments(buildConfiguration, arguments); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  |     setEnvironment(buildConfiguration, m_pro->environment(buildConfiguration)); | 
					
						
							|  |  |  |     return AbstractProcessStep::init(buildConfiguration); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  | QString GenericMakeStep::name() | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     return Constants::MAKESTEP; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | QString GenericMakeStep::displayName() | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     return "Make"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  | { | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | void GenericMakeStep::stdOut(const QString &line) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     if (m_buildParser) | 
					
						
							|  |  |  |         m_buildParser->stdOutput(line); | 
					
						
							|  |  |  |     AbstractProcessStep::stdOut(line); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | void GenericMakeStep::stdError(const QString &line) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     if (m_buildParser) | 
					
						
							|  |  |  |         m_buildParser->stdError(line); | 
					
						
							|  |  |  |     AbstractProcessStep::stdError(line); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | void GenericMakeStep::slotAddToTaskWindow(const QString & fn, int type, int linenumber, const QString & description) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     QString filePath = fn; | 
					
						
							|  |  |  |     if (!filePath.isEmpty() && !QDir::isAbsolutePath(filePath)) { | 
					
						
							|  |  |  |         // We have no save way to decide which file in which subfolder
 | 
					
						
							|  |  |  |         // is meant. Therefore we apply following heuristics:
 | 
					
						
							|  |  |  |         // 1. Search for unique file in directories currently indicated as open by GNU make
 | 
					
						
							|  |  |  |         //    (Enter directory xxx, Leave directory xxx...) + current directory
 | 
					
						
							|  |  |  |         // 3. Check if file is unique in whole project
 | 
					
						
							|  |  |  |         // 4. Otherwise give up
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         filePath = filePath.trimmed(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         QList<QFileInfo> possibleFiles; | 
					
						
							|  |  |  |         foreach (const QString &dir, m_openDirectories) { | 
					
						
							|  |  |  |             QFileInfo candidate(dir + QLatin1Char('/') + filePath); | 
					
						
							|  |  |  |             if (debug) | 
					
						
							|  |  |  |                 qDebug() << "Checking path " << candidate.filePath(); | 
					
						
							|  |  |  |             if (candidate.exists() | 
					
						
							|  |  |  |                     && !possibleFiles.contains(candidate)) { | 
					
						
							|  |  |  |                 if (debug) | 
					
						
							|  |  |  |                     qDebug() << candidate.filePath() << "exists!"; | 
					
						
							|  |  |  |                 possibleFiles << candidate; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (possibleFiles.count() == 0) { | 
					
						
							|  |  |  |             if (debug) | 
					
						
							|  |  |  |                 qDebug() << "No success. Trying all files in project ..."; | 
					
						
							|  |  |  |             QString fileName = QFileInfo(filePath).fileName(); | 
					
						
							|  |  |  |             foreach (const QString &file, project()->files(ProjectExplorer::Project::AllFiles)) { | 
					
						
							|  |  |  |                 QFileInfo candidate(file); | 
					
						
							|  |  |  |                 if (candidate.fileName() == fileName) { | 
					
						
							|  |  |  |                     if (debug) | 
					
						
							|  |  |  |                         qDebug() << "Found " << file; | 
					
						
							|  |  |  |                     possibleFiles << candidate; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (possibleFiles.count() == 1) | 
					
						
							|  |  |  |             filePath = possibleFiles.first().filePath(); | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             qWarning() << "Could not find absolute location of file " << filePath; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     emit addToTaskWindow(filePath, type, linenumber, description); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | void GenericMakeStep::addDirectory(const QString &dir) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     if (!m_openDirectories.contains(dir)) | 
					
						
							|  |  |  |         m_openDirectories.insert(dir); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | void GenericMakeStep::removeDirectory(const QString &dir) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     if (m_openDirectories.contains(dir)) | 
					
						
							|  |  |  |         m_openDirectories.remove(dir); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | GenericProject *GenericMakeStep::project() const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     return m_pro; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | bool GenericMakeStep::buildsTarget(const QString &buildConfiguration, const QString &target) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     return value(buildConfiguration, "buildTargets").toStringList().contains(target); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | void GenericMakeStep::setBuildTarget(const QString &buildConfiguration, const QString &target, bool on) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     QStringList old = value(buildConfiguration, "buildTargets").toStringList(); | 
					
						
							|  |  |  |     if (on && !old.contains(target)) | 
					
						
							|  |  |  |         setValue(buildConfiguration, "buildTargets", old << target); | 
					
						
							|  |  |  |     else if(!on && old.contains(target)) | 
					
						
							|  |  |  |         setValue(buildConfiguration, "buildTargets", old.removeOne(target)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											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
 | 
					
						
							|  |  |  |     GenericProject *pro = m_makeStep->project(); | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  |     foreach (const QString &target, pro->targets()) { | 
					
						
							|  |  |  |         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*))); | 
					
						
							|  |  |  |     connect(m_ui->makeLineEdit, SIGNAL(textEdited(const QString&)), | 
					
						
							|  |  |  |             this, SLOT(makeLineEditTextEdited())); | 
					
						
							|  |  |  |     connect(m_ui->makeArgumentsLineEdit, SIGNAL(textEdited(const QString&)), | 
					
						
							|  |  |  |             this, SLOT(makeArgumentsLineEditTextEdited())); | 
					
						
							| 
									
										
										
										
											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
										 |  |  | { | 
					
						
							|  |  |  |     return "Make"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | void GenericMakeStepConfigWidget::init(const QString &buildConfiguration) | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     m_buildConfiguration = buildConfiguration; | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // TODO: Label should update when tool chain is changed
 | 
					
						
							|  |  |  |     m_ui->makeLabel->setText(tr("Override %1:").arg(m_makeStep->command(buildConfiguration))); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const QString &makeCommand = m_makeStep->value(buildConfiguration, "makeCommand").toString(); | 
					
						
							|  |  |  |     m_ui->makeLineEdit->setText(makeCommand); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const QStringList &makeArguments = | 
					
						
							|  |  |  |             m_makeStep->value(buildConfiguration, "makeArguments").toStringList(); | 
					
						
							|  |  |  |     m_ui->makeArgumentsLineEdit->setText(ProjectExplorer::Environment::joinArgumentList(makeArguments)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // 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-03-10 14:20:07 +01:00
										 |  |  |         item->setCheckState(m_makeStep->buildsTarget(buildConfiguration, item->text()) ? Qt::Checked : Qt::Unchecked); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-03-18 15:58:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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*))); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void GenericMakeStepConfigWidget::itemChanged(QListWidgetItem *item) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     QTC_ASSERT(!m_buildConfiguration.isNull(), return); | 
					
						
							|  |  |  |     m_makeStep->setBuildTarget(m_buildConfiguration, item->text(), item->checkState() & Qt::Checked); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void GenericMakeStepConfigWidget::makeLineEditTextEdited() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     QTC_ASSERT(!m_buildConfiguration.isNull(), return); | 
					
						
							|  |  |  |     m_makeStep->setValue(m_buildConfiguration, "makeCommand", m_ui->makeLineEdit->text()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void GenericMakeStepConfigWidget::makeArgumentsLineEditTextEdited() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     QTC_ASSERT(!m_buildConfiguration.isNull(), return); | 
					
						
							|  |  |  |     m_makeStep->setValue(m_buildConfiguration, "makeArguments", | 
					
						
							|  |  |  |                          ProjectExplorer::Environment::parseCombinedArgString(m_ui->makeArgumentsLineEdit->text())); | 
					
						
							| 
									
										
										
										
											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
										 |  |  | //
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | bool GenericMakeStepFactory::canCreate(const QString &name) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     return (Constants::MAKESTEP == name); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | ProjectExplorer::BuildStep *GenericMakeStepFactory::create(ProjectExplorer::Project *project, const QString &name) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     Q_ASSERT(name == Constants::MAKESTEP); | 
					
						
							|  |  |  |     GenericProject *pro = qobject_cast<GenericProject *>(project); | 
					
						
							|  |  |  |     Q_ASSERT(pro); | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  |     return new GenericMakeStep(pro); | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | QStringList GenericMakeStepFactory::canCreateForProject(ProjectExplorer::Project * /* pro */) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     return QStringList(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-18 13:33:00 +01:00
										 |  |  | QString GenericMakeStepFactory::displayNameForName(const QString & /* name */) const | 
					
						
							| 
									
										
										
										
											2009-03-10 14:20:07 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     return "Make"; | 
					
						
							|  |  |  | } |