File indexing completed on 2024-04-21 04:35:58
0001 /* This file is part of KDevelop 0002 Copyright 2006-2008 Hamish Rodda <rodda@kde.org> 0003 Copyright 2009 Andreas Pakulat <apaku@gmx.de> 0004 Copyright 2011 Lionel Duc <lionel.data@gmail.com> 0005 Copyright 2011 Mathieu Lornac <mathieu.lornac@gmail.com> 0006 Copyright 2011 Sebastien Rannou <mxs@sbrk.org> 0007 Copyright 2016-2017 Anton Anikin <anton@anikin.xyz> 0008 0009 This program is free software; you can redistribute it and/or 0010 modify it under the terms of the GNU General Public 0011 License as published by the Free Software Foundation; either 0012 version 2 of the License, or (at your option) any later version. 0013 0014 This program is distributed in the hope that it will be useful, 0015 but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0017 General Public License for more details. 0018 0019 You should have received a copy of the GNU General Public License 0020 along with this program; see the file COPYING. If not, write to 0021 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0022 Boston, MA 02110-1301, USA. 0023 */ 0024 0025 #include "launcher.h" 0026 0027 #include "common_configpage.h" 0028 #include "configpage.h" 0029 #include "debug.h" 0030 #include "job.h" 0031 #include "launchmode.h" 0032 #include "plugin.h" 0033 #include "tool.h" 0034 0035 #include <execute/iexecuteplugin.h> 0036 #include <interfaces/icore.h> 0037 #include <interfaces/iplugincontroller.h> 0038 #include <interfaces/iruncontroller.h> 0039 #include <interfaces/iuicontroller.h> 0040 #include <util/executecompositejob.h> 0041 0042 #include <KLocalizedString> 0043 0044 namespace Valgrind 0045 { 0046 0047 Launcher::Launcher(const Tool* tool) 0048 : m_tool(tool) 0049 { 0050 Q_ASSERT(tool); 0051 0052 m_configPageFactories += tool->createConfigPageFactory(); 0053 m_configPageFactories += new CommonConfigPageFactory; 0054 } 0055 0056 Launcher::~Launcher() 0057 { 0058 qDeleteAll(m_configPageFactories); 0059 } 0060 0061 KJob* Launcher::start(const QString& launchMode, KDevelop::ILaunchConfiguration* launchConfig) 0062 { 0063 Q_ASSERT(launchConfig); 0064 0065 if (Plugin::self()->launchMode()->id() != launchMode) { 0066 return nullptr; 0067 } 0068 0069 auto iface = KDevelop::ICore::self()->pluginController()->pluginForExtension("org.kdevelop.IExecutePlugin")->extension<IExecutePlugin>(); 0070 Q_ASSERT(iface); 0071 0072 QList<KJob*> jobList; 0073 if (KJob* depJob = iface->dependencyJob(launchConfig)) { 0074 jobList += depJob; 0075 } 0076 0077 auto valgrindJob = m_tool->createJob(launchConfig); 0078 jobList += valgrindJob; 0079 0080 auto ecJob = new KDevelop::ExecuteCompositeJob(KDevelop::ICore::self()->runController(), jobList); 0081 ecJob->setObjectName(valgrindJob->statusName()); 0082 0083 return ecJob; 0084 } 0085 0086 QStringList Launcher::supportedModes() const 0087 { 0088 return { Plugin::self()->launchMode()->id() }; 0089 } 0090 0091 QList<KDevelop::LaunchConfigurationPageFactory*> Launcher::configPages() const 0092 { 0093 return m_configPageFactories; 0094 } 0095 0096 QString Launcher::name() const 0097 { 0098 return m_tool->name(); 0099 } 0100 0101 QString Launcher::description() const 0102 { 0103 return m_tool->fullName(); 0104 } 0105 0106 QString Launcher::id() 0107 { 0108 return m_tool->id(); 0109 } 0110 0111 }