diff options
Diffstat (limited to 'launcher/tools/MCEditTool.cpp')
-rw-r--r-- | launcher/tools/MCEditTool.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/launcher/tools/MCEditTool.cpp b/launcher/tools/MCEditTool.cpp new file mode 100644 index 00000000..880327c7 --- /dev/null +++ b/launcher/tools/MCEditTool.cpp @@ -0,0 +1,77 @@ +#include "MCEditTool.h" + +#include <QDir> +#include <QProcess> +#include <QUrl> + +#include "settings/SettingsObject.h" +#include "BaseInstance.h" +#include "minecraft/MinecraftInstance.h" + +MCEditTool::MCEditTool(SettingsObjectPtr settings) +{ + settings->registerSetting("MCEditPath"); + m_settings = settings; +} + +void MCEditTool::setPath(QString& path) +{ + m_settings->set("MCEditPath", path); +} + +QString MCEditTool::path() const +{ + return m_settings->get("MCEditPath").toString(); +} + +bool MCEditTool::check(const QString& toolPath, QString& error) +{ + if (toolPath.isEmpty()) + { + error = QObject::tr("Path is empty"); + return false; + } + const QDir dir(toolPath); + 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; +} + +QString MCEditTool::getProgramPath() +{ +#ifdef Q_OS_OSX + return path(); +#else + const QString mceditPath = path(); + QDir mceditDir(mceditPath); +#ifdef Q_OS_LINUX + if (mceditDir.exists("mcedit.sh")) + { + return mceditDir.absoluteFilePath("mcedit.sh"); + } + else if (mceditDir.exists("mcedit.py")) + { + return mceditDir.absoluteFilePath("mcedit.py"); + } + return QString(); +#elif defined(Q_OS_WIN32) + if (mceditDir.exists("mcedit.exe")) + { + return mceditDir.absoluteFilePath("mcedit.exe"); + } + else if (mceditDir.exists("mcedit2.exe")) + { + return mceditDir.absoluteFilePath("mcedit2.exe"); + } + return QString(); +#endif +#endif +} |