Author: jghali Date: Mon Apr 16 11:01:46 2018 New Revision: 22470 URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22470 Log: #15238: Conflict with Python 3 prevent scribus to run
Modified: branches/Version14x/Scribus/scribus/main_win32.cpp branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.h Modified: branches/Version14x/Scribus/scribus/main_win32.cpp URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22470&path=/branches/Version14x/Scribus/scribus/main_win32.cpp ============================================================================== --- branches/Version14x/Scribus/scribus/main_win32.cpp (original) +++ branches/Version14x/Scribus/scribus/main_win32.cpp Mon Apr 16 11:01:46 2018 @@ -64,6 +64,9 @@ bool consoleOptionEnabled(int argc, char* argv[]); void redirectIOToConsole(void); +// Python environment configuration function +void setPythonEnvironment(const QString& appPath); + // Console option arguments declared in scribusapp.cpp extern const char ARG_CONSOLE[]; extern const char ARG_CONSOLE_SHORT[]; @@ -85,7 +88,9 @@ } #endif ScribusQApp app(argc, argv); + setPythonEnvironment(app.applicationDirPath()); result = mainApp(app); + return result; } @@ -125,6 +130,48 @@ } /*! +\fn void setPythonEnvironment(const QString& appPath) +\author Jean Ghali +\date Sat Jul 03 23:00:00 CET 2009 +\brief set the Python envirionment for Scribus +\param appPath application Path +\retval None +*/ +void setPythonEnvironment(const QString& appPath) +{ + QString pythonHome = appPath + "/python"; + if (!QDir(pythonHome).exists()) + return; //assume a custom python + + QString tmp = "PYTHONHOME=" + QDir::toNativeSeparators(pythonHome); + _wputenv((const wchar_t*) tmp.utf16()); + + QString nativePath = QDir::toNativeSeparators(appPath); + tmp = "PYTHONPATH="; + tmp += nativePath; + tmp += "\\python;"; + tmp += nativePath; + tmp += "\\python\\lib;"; + tmp += nativePath; + tmp += "\\python\\dlls;"; + tmp += nativePath; + tmp += "\\python\\tcl"; + _wputenv((const wchar_t*) tmp.utf16()); + + wchar_t* oldenv = _wgetenv(L"PATH"); + tmp = "PATH="; + tmp += nativePath; + tmp += ";"; + tmp += nativePath; + tmp += "\\python"; + if (oldenv != NULL) { + tmp += ";"; + tmp += QString::fromUtf16((const ushort*) oldenv); + } + _wputenv((const wchar_t*) tmp.utf16()); +} + +/*! \fn int exceptionFilter(DWORD exceptionCode) \author Jean Ghali \date Sun Oct 30 14:30:30 CET 2005 @@ -135,7 +182,7 @@ LONG exceptionFilter(DWORD exceptionCode) { LONG result; - switch( exceptionCode ) + switch (exceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_DATATYPE_MISALIGNMENT: Modified: branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22470&path=/branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp ============================================================================== --- branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp (original) +++ branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp Mon Apr 16 11:01:46 2018 @@ -159,6 +159,15 @@ bool ScriptPlugin::initPlugin() { QString cm; +#if defined(Q_OS_WIN) + QString pyHome = qApp->applicationDirPath() + "/python"; + if (QDir(pyHome).exists()) + { + QString ph = QDir::toNativeSeparators(pyHome); + pythonHome = ph.toLocal8Bit(); + Py_SetPythonHome(pythonHome.data()); + } +#endif Py_Initialize(); if (PyUnicode_SetDefaultEncoding("utf-8")) { Modified: branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.h URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22470&path=/branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.h ============================================================================== --- branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.h (original) +++ branches/Version14x/Scribus/scribus/plugins/scriptplugin/scriptplugin.h Mon Apr 16 11:01:46 2018 @@ -11,6 +11,7 @@ #include "scplugin.h" #include "pluginapi.h" //Added by qt3to4: +#include <QByteArray> #include <QPixmap> class QString; @@ -37,6 +38,7 @@ virtual void addToMainWindowMenu(ScribusMainWindow *); // Special features (none) + QByteArray pythonHome; }; extern "C" PLUGIN_API int scriptplugin_getPluginAPIVersion(); _______________________________________________ scribus-commit mailing list scribus-commit@lists.scribus.net http://lists.scribus.net/mailman/listinfo/scribus-commit