Only show folders that really are worlds
This commit is contained in:
parent
f5273ae2b1
commit
f26b7dedad
@ -1,10 +1,16 @@
|
|||||||
#include "BaseExternalTool.h"
|
#include "BaseExternalTool.h"
|
||||||
|
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QInputDialog>
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "BaseInstance.h"
|
||||||
|
#include "MultiMC.h"
|
||||||
|
|
||||||
BaseExternalTool::BaseExternalTool(BaseInstance *instance, QObject *parent)
|
BaseExternalTool::BaseExternalTool(BaseInstance *instance, QObject *parent)
|
||||||
: QObject(parent), m_instance(instance)
|
: QObject(parent), m_instance(instance)
|
||||||
{
|
{
|
||||||
@ -24,6 +30,30 @@ qint64 BaseExternalTool::pid(QProcess *process)
|
|||||||
#endif
|
#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)
|
BaseDetachedTool::BaseDetachedTool(BaseInstance *instance, QObject *parent)
|
||||||
: BaseExternalTool(instance, parent)
|
: BaseExternalTool(instance, parent)
|
||||||
|
@ -18,6 +18,7 @@ protected:
|
|||||||
BaseInstance *m_instance;
|
BaseInstance *m_instance;
|
||||||
|
|
||||||
qint64 pid(QProcess *process);
|
qint64 pid(QProcess *process);
|
||||||
|
QString getSave() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BaseDetachedTool : public BaseExternalTool
|
class BaseDetachedTool : public BaseExternalTool
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QFileDialog>
|
|
||||||
#include <QInputDialog>
|
|
||||||
|
|
||||||
#include "settingsobject.h"
|
#include "settingsobject.h"
|
||||||
#include "logic/BaseInstance.h"
|
#include "logic/BaseInstance.h"
|
||||||
@ -17,12 +15,8 @@ MCEditTool::MCEditTool(BaseInstance *instance, QObject *parent)
|
|||||||
void MCEditTool::runImpl()
|
void MCEditTool::runImpl()
|
||||||
{
|
{
|
||||||
const QString mceditPath = MMC->settings()->get("MCEditPath").toString();
|
const QString mceditPath = MMC->settings()->get("MCEditPath").toString();
|
||||||
const QDir saves = QDir(m_instance->minecraftRoot() + "/saves");
|
const QString save = getSave();
|
||||||
bool ok = true;
|
if (save.isNull())
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -36,7 +30,7 @@ void MCEditTool::runImpl()
|
|||||||
{
|
{
|
||||||
program = mceditDir.absoluteFilePath("mcedit.exe");
|
program = mceditDir.absoluteFilePath("mcedit.exe");
|
||||||
}
|
}
|
||||||
QProcess::startDetached(program, QStringList() << saves.absoluteFilePath(save), mceditPath);
|
QProcess::startDetached(program, QStringList() << save, mceditPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MCEditFactory::registerSettings(SettingsObject *settings)
|
void MCEditFactory::registerSettings(SettingsObject *settings)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user