diff options
5 files changed, 19 insertions, 69 deletions
diff --git a/source/blender/freestyle/intern/application/Controller.cpp b/source/blender/freestyle/intern/application/Controller.cpp index 81034c1502c..81ce1622517 100644 --- a/source/blender/freestyle/intern/application/Controller.cpp +++ b/source/blender/freestyle/intern/application/Controller.cpp @@ -1024,7 +1024,6 @@ void Controller::init_options() // Directories ViewMapIO::Options::setModelsPath(cpath->getModelsPath()); - PythonInterpreter::Options::setPythonPath(cpath->getPythonPath()); TextureManager::Options::setPatternsPath(cpath->getPatternsPath()); TextureManager::Options::setBrushesPath(cpath->getModelsPath()); diff --git a/source/blender/freestyle/intern/python/BPy_Freestyle.cpp b/source/blender/freestyle/intern/python/BPy_Freestyle.cpp index dee058e6844..64e186b0def 100644 --- a/source/blender/freestyle/intern/python/BPy_Freestyle.cpp +++ b/source/blender/freestyle/intern/python/BPy_Freestyle.cpp @@ -485,6 +485,23 @@ PyObject *Freestyle_Init(void) if (!module) return NULL; PyDict_SetItemString(PySys_GetObject("modules"), module_definition.m_name, module); + + // update 'sys.path' for Freestyle Python API modules + const char * const path = BLI_get_folder(BLENDER_SYSTEM_SCRIPTS, "freestyle"); + if (path) { + char modpath[FILE_MAX]; + BLI_join_dirfile(modpath, sizeof(modpath), path, "modules"); + PyObject *sys_path = PySys_GetObject("path"); /* borrow */ + PyObject *py_modpath = PyUnicode_FromString(modpath); + PyList_Append(sys_path, py_modpath); + Py_DECREF(py_modpath); +#if 0 + printf("Adding Python path: %s\n", modpath); +#endif + } + else { + printf("Freestyle: couldn't find 'scripts/freestyle/modules', Freestyle won't work properly.\n"); + } // attach its classes (adding the object types to the module) diff --git a/source/blender/freestyle/intern/system/Interpreter.h b/source/blender/freestyle/intern/system/Interpreter.h index e1269f40468..f359fc7577f 100644 --- a/source/blender/freestyle/intern/system/Interpreter.h +++ b/source/blender/freestyle/intern/system/Interpreter.h @@ -46,7 +46,7 @@ public: _language = "Unknown"; } - virtual ~Interpreter() {}; //soc + virtual ~Interpreter() {} virtual int interpretFile(const string& filename) = 0; diff --git a/source/blender/freestyle/intern/system/PythonInterpreter.cpp b/source/blender/freestyle/intern/system/PythonInterpreter.cpp index 9e7ef39a0e4..852030e365b 100644 --- a/source/blender/freestyle/intern/system/PythonInterpreter.cpp +++ b/source/blender/freestyle/intern/system/PythonInterpreter.cpp @@ -26,10 +26,3 @@ */ #include "PythonInterpreter.h" - -namespace Freestyle { - -string PythonInterpreter::_path = ""; -bool PythonInterpreter::_initialized = false; - -} /* namespace Freestyle */ diff --git a/source/blender/freestyle/intern/system/PythonInterpreter.h b/source/blender/freestyle/intern/system/PythonInterpreter.h index 30ee6d30163..069fbcfb022 100644 --- a/source/blender/freestyle/intern/system/PythonInterpreter.h +++ b/source/blender/freestyle/intern/system/PythonInterpreter.h @@ -60,12 +60,6 @@ public: _language = "Python"; _context = 0; memset(&_freestyle_bmain, 0, sizeof(Main)); - //Py_Initialize(); - } - - virtual ~PythonInterpreter() - { - //Py_Finalize(); } void setContext(bContext *C) @@ -75,8 +69,6 @@ public: int interpretFile(const string& filename) { - initPath(); - ReportList *reports = CTX_wm_reports(_context); BKE_reports_clear(reports); char *fn = const_cast<char*>(filename.c_str()); @@ -112,8 +104,6 @@ public: int interpretText(struct Text *text, const string& name) { - initPath(); - ReportList *reports = CTX_wm_reports(_context); BKE_reports_clear(reports); @@ -131,63 +121,14 @@ public: return 0; } - struct Options - { - static void setPythonPath(const string& path) - { - _path = path; - } - - static string getPythonPath() - { - return _path; - } - }; - void reset() { - Py_Finalize(); - Py_Initialize(); - _initialized = false; + // nothing to do } private: bContext *_context; Main _freestyle_bmain; - - void initPath() - { - if (_initialized) - return; - - vector<string> pathnames; - StringUtils::getPathName(_path, "", pathnames); - - struct Text *text = BKE_text_add(&_freestyle_bmain, "tmp_freestyle_initpath.txt"); - string cmd = "import sys\n"; - txt_insert_buf(text, const_cast<char*>(cmd.c_str())); - - for (vector<string>::const_iterator it = pathnames.begin(); it != pathnames.end(); ++it) { - if (!it->empty()) { - if (G.debug & G_DEBUG_FREESTYLE) { - cout << "Adding Python path: " << *it << endl; - } - cmd = "sys.path.append(r\"" + *it + "\")\n"; - txt_insert_buf(text, const_cast<char *>(cmd.c_str())); - } - } - - BPY_text_exec(_context, text, NULL, false); - - // cleaning up - BKE_text_unlink(&_freestyle_bmain, text); - BKE_libblock_free(&_freestyle_bmain, text); - - _initialized = true; - } - - static bool _initialized; - static string _path; }; } /* namespace Freestyle */ |