summaryrefslogtreecommitdiffstats
path: root/logic/tools/MCEditTool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'logic/tools/MCEditTool.cpp')
-rw-r--r--logic/tools/MCEditTool.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/logic/tools/MCEditTool.cpp b/logic/tools/MCEditTool.cpp
index e44ce784..c918d5d0 100644
--- a/logic/tools/MCEditTool.cpp
+++ b/logic/tools/MCEditTool.cpp
@@ -4,9 +4,12 @@
#include <QProcess>
#include <QDesktopServices>
#include <QUrl>
+// FIXME: mixing logic and UI!!!!
+#include <QInputDialog>
#include "logic/settings/SettingsObject.h"
#include "logic/BaseInstance.h"
+#include "logic/minecraft/MinecraftInstance.h"
#include "MultiMC.h"
MCEditTool::MCEditTool(InstancePtr instance, QObject *parent)
@@ -14,6 +17,36 @@ MCEditTool::MCEditTool(InstancePtr instance, QObject *parent)
{
}
+QString MCEditTool::getSave() const
+{
+ // FIXME: mixing logic and UI!!!!
+ auto mcInstance = std::dynamic_pointer_cast<MinecraftInstance>(m_instance);
+ if(!mcInstance)
+ {
+ return QString();
+ }
+ QDir saves(mcInstance->minecraftRoot() + "/saves");
+ QStringList worlds = saves.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+ QMutableListIterator<QString> it(worlds);
+ while (it.hasNext())
+ {
+ it.next();
+ if (!QDir(saves.absoluteFilePath(it.value())).exists("level.dat"))
+ {
+ it.remove();
+ }
+ }
+ bool ok = true;
+ const QString save = QInputDialog::getItem(
+ MMC->activeWindow(), tr("MCEdit"), tr("Choose which world to open:"),
+ worlds, 0, false, &ok);
+ if (ok)
+ {
+ return saves.absoluteFilePath(save);
+ }
+ return QString();
+}
+
void MCEditTool::runImpl()
{
const QString mceditPath = MMC->settings()->get("MCEditPath").toString();