Drag'n Drop for macOS / Fix #1109 / ... (#1353)

This commit is contained in:
Markus
2021-10-16 05:07:36 -07:00
committed by GitHub
parent c9a7258160
commit a1dee08195
19 changed files with 384 additions and 186 deletions

View File

@@ -7,6 +7,9 @@
// qt include
#include <QCoreApplication>
#include <QDir>
#include <QFile>
#include <QVector>
#include <QStringList>
// modules to init
#include <effectengine/EffectModule.h>
@@ -31,21 +34,39 @@ PythonInit::PythonInit()
Py_SetProgramName(L"Hyperion");
// set Python module path when exists
QString py_patch = QDir::cleanPath(qApp->applicationDirPath() + "/../lib/python" + STRINGIFY(PYTHON_VERSION_MAJOR) + "." + STRINGIFY(PYTHON_VERSION_MINOR));
QString py_file = QDir::cleanPath(qApp->applicationDirPath() + "/python" + STRINGIFY(PYTHON_VERSION_MAJOR) + STRINGIFY(PYTHON_VERSION_MINOR) + ".zip");
QString py_path = QDir::cleanPath(qApp->applicationDirPath() + "/../lib/python" + STRINGIFY(PYTHON_VERSION_MAJOR) + "." + STRINGIFY(PYTHON_VERSION_MINOR));
QString py_file = QDir::cleanPath(qApp->applicationDirPath() + "/python" + STRINGIFY(PYTHON_VERSION_MAJOR) + STRINGIFY(PYTHON_VERSION_MINOR) + ".zip");
QString py_framework = QDir::cleanPath(qApp->applicationDirPath() + "/../Frameworks/Python.framework/Versions/Current/lib/python" + STRINGIFY(PYTHON_VERSION_MAJOR) + "." + STRINGIFY(PYTHON_VERSION_MINOR));
if (QFile(py_file).exists() || QDir(py_patch).exists())
if (QFile(py_file).exists() || QDir(py_path).exists() || QDir(py_framework).exists() )
{
Py_NoSiteFlag++;
if (QFile(py_file).exists())
if (QFile(py_file).exists()) // Windows
{
Py_SetPythonHome(Py_DecodeLocale(py_file.toLatin1().data(), nullptr));
Py_SetPath(Py_DecodeLocale(py_file.toLatin1().data(), nullptr));
}
else if (QDir(py_patch).exists())
else if (QDir(py_path).exists()) // Linux
{
Py_SetPythonHome(Py_DecodeLocale(py_patch.toLatin1().data(), nullptr));
Py_SetPath(Py_DecodeLocale(py_patch.toLatin1().data(), nullptr));
QStringList python_paths;
python_paths.append(QDir(py_path).absolutePath());
python_paths.append(QDir(py_path + "/lib-dynload").absolutePath());
QVector<wchar_t> joined_paths(python_paths.join(":").size() + 1, 0);
python_paths.join(":").toWCharArray(joined_paths.data());
Py_SetPath(joined_paths.data());
py_path = QDir::cleanPath(qApp->applicationDirPath() + "/../");
Py_SetPythonHome(Py_DecodeLocale(py_path.toLatin1().data(), nullptr));
}
else if (QDir(py_framework).exists()) // macOS
{
QStringList python_paths;
python_paths.append(QDir(py_framework).absolutePath());
python_paths.append(QDir(py_framework + "/lib-dynload").absolutePath());
QVector<wchar_t> joined_paths(python_paths.join(":").size() + 1, 0);
python_paths.join(":").toWCharArray(joined_paths.data());
Py_SetPath(joined_paths.data());
py_framework = QDir::cleanPath(qApp->applicationDirPath() + "/../Frameworks/Python.framework/Versions/Current");
Py_SetPythonHome(Py_DecodeLocale(py_framework.toLatin1().data(), nullptr));
}
}
#endif

View File

@@ -1,5 +1,6 @@
<RCC>
<qresource prefix="/">
<file alias="/webconfig/3RD_PARTY_LICENSES">${CMAKE_SOURCE_DIR}/3RD_PARTY_LICENSES</file>
${HYPERION_WEBCONFIG_RES}
</qresource>
</RCC>