summaryrefslogtreecommitdiffstats
path: root/logic/tools/BaseExternalTool.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2014-02-24 00:29:13 +0100
committerPetr Mrázek <peterix@gmail.com>2014-02-24 00:29:13 +0100
commitf7c97efcf3785f597417895945b24c2e7476cba8 (patch)
treec0ad8ba4b59bf9be441c2037ae7592585c3cbe58 /logic/tools/BaseExternalTool.h
parente3d2e5fd7405baa8137e300e8cc817e70df172b7 (diff)
parenta354e8bfae812b23b85b65c4a5b7e860cb18080c (diff)
downloadMultiMC-f7c97efcf3785f597417895945b24c2e7476cba8.tar
MultiMC-f7c97efcf3785f597417895945b24c2e7476cba8.tar.gz
MultiMC-f7c97efcf3785f597417895945b24c2e7476cba8.tar.lz
MultiMC-f7c97efcf3785f597417895945b24c2e7476cba8.tar.xz
MultiMC-f7c97efcf3785f597417895945b24c2e7476cba8.zip
Merge branch 'feature_profiling' into integration_json_and_tools
Diffstat (limited to 'logic/tools/BaseExternalTool.h')
-rw-r--r--logic/tools/BaseExternalTool.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/logic/tools/BaseExternalTool.h b/logic/tools/BaseExternalTool.h
new file mode 100644
index 00000000..e8965bfd
--- /dev/null
+++ b/logic/tools/BaseExternalTool.h
@@ -0,0 +1,57 @@
+#pragma once
+
+#include <QObject>
+
+class BaseInstance;
+class SettingsObject;
+class MinecraftProcess;
+class QProcess;
+
+class BaseExternalTool : public QObject
+{
+ Q_OBJECT
+public:
+ explicit BaseExternalTool(BaseInstance *instance, QObject *parent = 0);
+ virtual ~BaseExternalTool();
+
+protected:
+ BaseInstance *m_instance;
+
+ qint64 pid(QProcess *process);
+ QString getSave() const;
+};
+
+class BaseDetachedTool : public BaseExternalTool
+{
+ Q_OBJECT
+public:
+ explicit BaseDetachedTool(BaseInstance *instance, QObject *parent = 0);
+
+public
+slots:
+ void run();
+
+protected:
+ virtual void runImpl() = 0;
+};
+
+class BaseExternalToolFactory
+{
+public:
+ virtual ~BaseExternalToolFactory();
+
+ virtual QString name() const = 0;
+
+ virtual void registerSettings(SettingsObject *settings) = 0;
+
+ virtual BaseExternalTool *createTool(BaseInstance *instance, QObject *parent = 0) = 0;
+
+ virtual bool check(QString *error) = 0;
+ virtual bool check(const QString &path, QString *error) = 0;
+};
+
+class BaseDetachedToolFactory : public BaseExternalToolFactory
+{
+public:
+ virtual BaseDetachedTool *createDetachedTool(BaseInstance *instance, QObject *parent = 0);
+};