From 85b64ad76705cd152fb2b0525de75fe4e832c31c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Wed, 2 Nov 2016 02:33:55 +0100 Subject: NOISSUE MCEdit integration - remove old 'tool', replace with Worlds --- api/logic/tools/MCEditTool.cpp | 121 +++++++++++++---------------------------- api/logic/tools/MCEditTool.h | 29 ++++------ 2 files changed, 47 insertions(+), 103 deletions(-) (limited to 'api') diff --git a/api/logic/tools/MCEditTool.cpp b/api/logic/tools/MCEditTool.cpp index 8e0d7ae2..74715d3f 100644 --- a/api/logic/tools/MCEditTool.cpp +++ b/api/logic/tools/MCEditTool.cpp @@ -8,117 +8,70 @@ #include "BaseInstance.h" #include "minecraft/MinecraftInstance.h" -MCEditTool::MCEditTool(SettingsObjectPtr settings, InstancePtr instance, QObject *parent) - : BaseDetachedTool(settings, instance, parent) +MCEditTool::MCEditTool(SettingsObjectPtr settings) { + settings->registerSetting("MCEditPath"); + m_settings = settings; +} + +void MCEditTool::setPath(QString& path) +{ + m_settings->set("MCEditPath", path); } -QString MCEditTool::getSave() const +QString MCEditTool::path() const { - auto mcInstance = std::dynamic_pointer_cast(m_instance); - if(!mcInstance) + return m_settings->get("MCEditPath").toString(); +} + +bool MCEditTool::check(const QString& toolPath, QString& error) +{ + if (toolPath.isEmpty()) { - return QString(); + error = QObject::tr("Path is empty"); + return false; } - QDir saves(mcInstance->minecraftRoot() + "/saves"); - QStringList worlds = saves.entryList(QDir::Dirs | QDir::NoDotAndDotDot); - QMutableListIterator it(worlds); - while (it.hasNext()) + const QDir dir(toolPath); + if (!dir.exists()) { - it.next(); - if (!QDir(saves.absoluteFilePath(it.value())).exists("level.dat")) - { - it.remove(); - } + error = QObject::tr("Path does not exist"); + return false; } - bool ok = true; - // FIXME: mixing logic and UI!!!! - /* - const QString save = QInputDialog::getItem(QApplication::activeWindow(), tr("MCEdit"), tr("Choose which world to open:"), - worlds, 0, false, &ok); - if (ok) + if (!dir.exists("mcedit.sh") && !dir.exists("mcedit.py") && !dir.exists("mcedit.exe") && !dir.exists("Contents") && !dir.exists("mcedit2.exe")) { - return saves.absoluteFilePath(save); + error = QObject::tr("Path does not seem to be a MCEdit path"); + return false; } - */ - return QString(); + return true; } -void MCEditTool::runImpl() +QString MCEditTool::getProgramPath() { - const QString mceditPath = globalSettings->get("MCEditPath").toString(); - const QString save = getSave(); - if (save.isNull()) - { - return; - } #ifdef Q_OS_OSX - QProcess *process = new QProcess(); - connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), process, SLOT(deleteLater())); - process->setProgram(mceditPath); - process->setArguments(QStringList() << save); - process->start(); + return path(); #else + const QString mceditPath = path(); QDir mceditDir(mceditPath); - QString program; - #ifdef Q_OS_LINUX +#ifdef Q_OS_LINUX if (mceditDir.exists("mcedit.sh")) { - program = mceditDir.absoluteFilePath("mcedit.sh"); + return mceditDir.absoluteFilePath("mcedit.sh"); } else if (mceditDir.exists("mcedit.py")) { - program = mceditDir.absoluteFilePath("mcedit.py"); + return mceditDir.absoluteFilePath("mcedit.py"); } - #elif defined(Q_OS_WIN32) + return QString(); +#elif defined(Q_OS_WIN32) if (mceditDir.exists("mcedit.exe")) { - program = mceditDir.absoluteFilePath("mcedit.exe"); + return mceditDir.absoluteFilePath("mcedit.exe"); } else if (mceditDir.exists("mcedit2.exe")) { - program = mceditDir.absoluteFilePath("mcedit2.exe"); + return mceditDir.absoluteFilePath("mcedit2.exe"); } - #endif - /* - if(program.size()) - { - DesktopServices::openFile(program, save, mceditPath); - } - */ + return QString(); +#endif #endif -} - -void MCEditFactory::registerSettings(SettingsObjectPtr settings) -{ - settings->registerSetting("MCEditPath"); - globalSettings = settings; -} -BaseExternalTool *MCEditFactory::createTool(InstancePtr instance, QObject *parent) -{ - return new MCEditTool(globalSettings, instance, parent); -} -bool MCEditFactory::check(QString *error) -{ - return check(globalSettings->get("MCEditPath").toString(), error); -} -bool MCEditFactory::check(const QString &path, QString *error) -{ - if (path.isEmpty()) - { - *error = QObject::tr("Path is empty"); - return false; - } - const QDir dir(path); - if (!dir.exists()) - { - *error = QObject::tr("Path does not exist"); - return false; - } - if (!dir.exists("mcedit.sh") && !dir.exists("mcedit.py") && !dir.exists("mcedit.exe") && !dir.exists("Contents") && !dir.exists("mcedit2.exe")) - { - *error = QObject::tr("Path does not seem to be a MCEdit path"); - return false; - } - return true; } diff --git a/api/logic/tools/MCEditTool.h b/api/logic/tools/MCEditTool.h index c287f1ea..51feb1fe 100644 --- a/api/logic/tools/MCEditTool.h +++ b/api/logic/tools/MCEditTool.h @@ -1,26 +1,17 @@ #pragma once -#include "BaseExternalTool.h" - +#include +#include "settings/SettingsObject.h" #include "multimc_logic_export.h" -class MULTIMC_LOGIC_EXPORT MCEditTool : public BaseDetachedTool -{ - Q_OBJECT -public: - explicit MCEditTool(SettingsObjectPtr settings, InstancePtr instance, QObject *parent = 0); - -protected: - QString getSave() const; - void runImpl() override; -}; - -class MULTIMC_LOGIC_EXPORT MCEditFactory : public BaseDetachedToolFactory +class MULTIMC_LOGIC_EXPORT MCEditTool { public: - QString name() const override { return "MCEdit"; } - void registerSettings(SettingsObjectPtr settings) override; - BaseExternalTool *createTool(InstancePtr instance, QObject *parent = 0) override; - bool check(QString *error) override; - bool check(const QString &path, QString *error) override; + MCEditTool(SettingsObjectPtr settings); + void setPath(QString & path); + QString path() const; + bool check(const QString &toolPath, QString &error); + QString getProgramPath(); +private: + SettingsObjectPtr m_settings; }; -- cgit v1.2.3