1 /*
2     SPDX-FileCopyrightText: 2009 Andreas Pakulat <apaku@gmx.de>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifndef KDEVPLATFORM_PLUGIN_IEXECUTEPLUGIN_H
8 #define KDEVPLATFORM_PLUGIN_IEXECUTEPLUGIN_H
9 
10 #include <QString>
11 
12 namespace KDevelop
13 {
14 class ILaunchConfiguration;
15 }
16 
17 class KJob;
18 class QUrl;
19 class QStringList;
20 
21 /**
22 @author Andreas Pakulat
23 */
24 
25 class IExecutePlugin
26 {
27 public:
28     static constexpr const char* isExecutableEntry = "isExecutable";
29     static constexpr const char* executableEntry = "Executable";
30     static constexpr const char* workingDirEntry = "Working Directory";
31     // TODO: migrate to more consistent key term "EnvironmentProfile"
32     static constexpr const char* environmentProfileEntry = "EnvironmentGroup";
33     static constexpr const char* useTerminalEntry = "Use External Terminal";
34     static constexpr const char* terminalEntry = "External Terminal";
35 
~IExecutePlugin()36     virtual ~IExecutePlugin() {}
37 
38     virtual QUrl executable( KDevelop::ILaunchConfiguration* config, QString& error) const = 0;
39     virtual QStringList arguments( KDevelop::ILaunchConfiguration* config, QString& error) const = 0;
40     virtual QUrl workingDirectory( KDevelop::ILaunchConfiguration* config) const = 0;
41     virtual KJob* dependencyJob( KDevelop::ILaunchConfiguration* config) const = 0;
42     virtual QString environmentProfileName(KDevelop::ILaunchConfiguration* config) const = 0;
43     virtual bool useTerminal( KDevelop::ILaunchConfiguration* config) const = 0;
44     virtual QString terminal( KDevelop::ILaunchConfiguration* config) const = 0;
45     virtual QString nativeAppConfigTypeId() const = 0;
46 };
47 
48 Q_DECLARE_INTERFACE( IExecutePlugin, "org.kdevelop.IExecutePlugin" )
49 
50 #endif
51 
52