summaryrefslogtreecommitdiffstats
path: root/logic/MCEditTool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'logic/MCEditTool.cpp')
-rw-r--r--logic/MCEditTool.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/logic/MCEditTool.cpp b/logic/MCEditTool.cpp
new file mode 100644
index 00000000..93ffb7a5
--- /dev/null
+++ b/logic/MCEditTool.cpp
@@ -0,0 +1,62 @@
+#include "MCEditTool.h"
+
+#include <QDir>
+#include <QProcess>
+#include <QFileDialog>
+
+#include "settingsobject.h"
+#include "logic/BaseInstance.h"
+#include "MultiMC.h"
+
+MCEditTool::MCEditTool(BaseInstance *instance, QObject *parent)
+ : BaseDetachedTool(instance, parent)
+{
+}
+
+void MCEditTool::runImpl()
+{
+ const QString mceditPath = MMC->settings()->get("MCEditPath").toString();
+ const QString save = QFileDialog::getExistingDirectory(
+ MMC->activeWindow(), tr("MCEdit"),
+ QDir(m_instance->minecraftRoot()).absoluteFilePath("saves"));
+ if (save.isEmpty())
+ {
+ return;
+ }
+ const QString program =
+ QDir(mceditPath).absoluteFilePath("mcedit.py");
+ QProcess::startDetached(program, QStringList() << save, mceditPath);
+}
+
+void MCEditFactory::registerSettings(SettingsObject *settings)
+{
+ settings->registerSetting("MCEditPath");
+}
+BaseExternalTool *MCEditFactory::createTool(BaseInstance *instance, QObject *parent)
+{
+ return new MCEditTool(instance, parent);
+}
+bool MCEditFactory::check(QString *error)
+{
+ return check(MMC->settings()->get("MCEditPath").toString(), error);
+}
+bool MCEditFactory::check(const QString &path, QString *error)
+{
+ if (path.isEmpty())
+ {
+ *error = QObject::tr("Path is empty");
+ return false;
+ }
+ const QDir dir(path);
+ if (!dir.exists())
+ {
+ *error = QObject::tr("Path does not exist");
+ return false;
+ }
+ if (!dir.exists("mcedit.py"))
+ {
+ *error = QObject::tr("Path does not contain mcedit.py");
+ return false;
+ }
+ return true;
+}