#include "BaseExternalTool.h" #include #include #include #ifdef Q_OS_WIN #include #endif #include "logic/BaseInstance.h" #include "MultiMC.h" BaseExternalTool::BaseExternalTool(InstancePtr instance, QObject *parent) : QObject(parent), m_instance(instance) { } BaseExternalTool::~BaseExternalTool() { } qint64 BaseExternalTool::pid(QProcess *process) { #ifdef Q_OS_WIN struct _PROCESS_INFORMATION *procinfo = process->pid(); return procinfo->dwProcessId; #else return process->pid(); #endif } QString BaseExternalTool::getSave() const { QDir saves(m_instance->minecraftRoot() + "/saves"); QStringList worlds = saves.entryList(QDir::Dirs | QDir::NoDotAndDotDot); QMutableListIterator 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(InstancePtr instance, QObject *parent) : BaseExternalTool(instance, parent) { } void BaseDetachedTool::run() { runImpl(); } BaseExternalToolFactory::~BaseExternalToolFactory() { } BaseDetachedTool *BaseDetachedToolFactory::createDetachedTool(InstancePtr instance, QObject *parent) { return qobject_cast(createTool(instance, parent)); }