summaryrefslogtreecommitdiffstats
path: root/logic
diff options
context:
space:
mode:
authorJan Dalheimer <jan@dalheimer.de>2014-02-16 12:08:39 +0100
committerJan Dalheimer <jan@dalheimer.de>2014-02-16 12:08:39 +0100
commitf26b7dedad70a46769b4c96122a7615b328a9fbb (patch)
tree7f1aaf20f9d916984878f52089f395445792b48d /logic
parentf5273ae2b1195bdbf433fbb0cf4ca47bd4c0e6b3 (diff)
downloadMultiMC-f26b7dedad70a46769b4c96122a7615b328a9fbb.tar
MultiMC-f26b7dedad70a46769b4c96122a7615b328a9fbb.tar.gz
MultiMC-f26b7dedad70a46769b4c96122a7615b328a9fbb.tar.lz
MultiMC-f26b7dedad70a46769b4c96122a7615b328a9fbb.tar.xz
MultiMC-f26b7dedad70a46769b4c96122a7615b328a9fbb.zip
Only show folders that really are worlds
Diffstat (limited to 'logic')
-rw-r--r--logic/BaseExternalTool.cpp30
-rw-r--r--logic/BaseExternalTool.h1
-rw-r--r--logic/MCEditTool.cpp12
3 files changed, 34 insertions, 9 deletions
diff --git a/logic/BaseExternalTool.cpp b/logic/BaseExternalTool.cpp
index 6dffb4d6..081c3ef0 100644
--- a/logic/BaseExternalTool.cpp
+++ b/logic/BaseExternalTool.cpp
@@ -1,10 +1,16 @@
#include "BaseExternalTool.h"
#include <QProcess>
+#include <QDir>
+#include <QInputDialog>
+
#ifdef Q_OS_WIN
#include <windows.h>
#endif
+#include "BaseInstance.h"
+#include "MultiMC.h"
+
BaseExternalTool::BaseExternalTool(BaseInstance *instance, QObject *parent)
: QObject(parent), m_instance(instance)
{
@@ -24,6 +30,30 @@ qint64 BaseExternalTool::pid(QProcess *process)
#endif
}
+QString BaseExternalTool::getSave() const
+{
+ QDir saves(m_instance->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();
+}
+
BaseDetachedTool::BaseDetachedTool(BaseInstance *instance, QObject *parent)
: BaseExternalTool(instance, parent)
diff --git a/logic/BaseExternalTool.h b/logic/BaseExternalTool.h
index 184b1f80..e8965bfd 100644
--- a/logic/BaseExternalTool.h
+++ b/logic/BaseExternalTool.h
@@ -18,6 +18,7 @@ protected:
BaseInstance *m_instance;
qint64 pid(QProcess *process);
+ QString getSave() const;
};
class BaseDetachedTool : public BaseExternalTool
diff --git a/logic/MCEditTool.cpp b/logic/MCEditTool.cpp
index 5694f654..c4edece5 100644
--- a/logic/MCEditTool.cpp
+++ b/logic/MCEditTool.cpp
@@ -2,8 +2,6 @@
#include <QDir>
#include <QProcess>
-#include <QFileDialog>
-#include <QInputDialog>
#include "settingsobject.h"
#include "logic/BaseInstance.h"
@@ -17,12 +15,8 @@ MCEditTool::MCEditTool(BaseInstance *instance, QObject *parent)
void MCEditTool::runImpl()
{
const QString mceditPath = MMC->settings()->get("MCEditPath").toString();
- const QDir saves = QDir(m_instance->minecraftRoot() + "/saves");
- bool ok = true;
- const QString save = QInputDialog::getItem(
- MMC->activeWindow(), tr("MCEdit"), tr("Choose which world to open:"),
- saves.entryList(QDir::Dirs | QDir::NoDotAndDotDot), 0, false, &ok);
- if (save.isEmpty() || !ok)
+ const QString save = getSave();
+ if (save.isNull())
{
return;
}
@@ -36,7 +30,7 @@ void MCEditTool::runImpl()
{
program = mceditDir.absoluteFilePath("mcedit.exe");
}
- QProcess::startDetached(program, QStringList() << saves.absoluteFilePath(save), mceditPath);
+ QProcess::startDetached(program, QStringList() << save, mceditPath);
}
void MCEditFactory::registerSettings(SettingsObject *settings)