Only show folders that really are worlds
This commit is contained in:
parent
f5273ae2b1
commit
f26b7dedad
@ -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)
|
||||
|
@ -18,6 +18,7 @@ protected:
|
||||
BaseInstance *m_instance;
|
||||
|
||||
qint64 pid(QProcess *process);
|
||||
QString getSave() const;
|
||||
};
|
||||
|
||||
class BaseDetachedTool : public BaseExternalTool
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user