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

Reply via email to