File indexing completed on 2024-04-28 04:38:38

0001 /*
0002     SPDX-FileCopyrightText: 2009 Andreas Pakulat <apaku@gmx.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef KDEVPLATFORM_PLUGIN_IEXECUTEPLUGIN_H
0008 #define KDEVPLATFORM_PLUGIN_IEXECUTEPLUGIN_H
0009 
0010 #include <QString>
0011 
0012 namespace KDevelop
0013 {
0014 class ILaunchConfiguration;
0015 }
0016 
0017 class KJob;
0018 class QUrl;
0019 class QStringList;
0020 
0021 /**
0022 @author Andreas Pakulat
0023 */
0024 
0025 class IExecutePlugin
0026 {
0027 public:
0028     static constexpr const char* isExecutableEntry = "isExecutable";
0029     static constexpr const char* executableEntry = "Executable";
0030     static constexpr const char* workingDirEntry = "Working Directory";
0031     // TODO: migrate to more consistent key term "EnvironmentProfile"
0032     static constexpr const char* environmentProfileEntry = "EnvironmentGroup";
0033     static constexpr const char* useTerminalEntry = "Use External Terminal";
0034     static constexpr const char* terminalEntry = "External Terminal";
0035 
0036     virtual ~IExecutePlugin() {}
0037 
0038     virtual QUrl executable( KDevelop::ILaunchConfiguration* config, QString& error) const = 0;
0039     virtual QStringList arguments( KDevelop::ILaunchConfiguration* config, QString& error) const = 0;
0040     virtual QUrl workingDirectory( KDevelop::ILaunchConfiguration* config) const = 0;
0041     virtual KJob* dependencyJob( KDevelop::ILaunchConfiguration* config) const = 0;
0042     virtual QString environmentProfileName(KDevelop::ILaunchConfiguration* config) const = 0;
0043     virtual bool useTerminal( KDevelop::ILaunchConfiguration* config) const = 0;
0044     virtual QString terminal( KDevelop::ILaunchConfiguration* config) const = 0;
0045     virtual QString nativeAppConfigTypeId() const = 0;
0046 };
0047 
0048 Q_DECLARE_INTERFACE( IExecutePlugin, "org.kdevelop.IExecutePlugin" )
0049 
0050 #endif
0051