Gui: fix Gui.addCommand() in Python3

This commit is contained in:
Zheng, Lei
2019-12-09 00:35:38 +00:00
parent 13fd54a42f
commit 8516c6fbe3

View File

@@ -1144,12 +1144,20 @@ PyObject* Application::sAddCommand(PyObject * /*self*/, PyObject *args)
return 0;
}
Py::Callable inspect(mod.getAttr("stack"));
Py::Tuple args;
Py::List list(inspect.apply(args));
args = list.getItem(0);
Py::List list(inspect.apply());
std::string file;
// usually this is the file name of the calling script
std::string file = args.getItem(1).as_string();
#if (PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION==3 && PY_MINOR_VERSION>=5))
Py::Object info = list.getItem(0);
PyObject *pyfile = PyStructSequence_GET_ITEM(*info,1);
if(!pyfile)
throw Py::Exception();
file = Py::Object(pyfile).as_string();
#else
Py::Tuple info = list.getItem(0);
file = info.getItem(1).as_string();
#endif
Base::FileInfo fi(file);
// convert backslashes to slashes
file = fi.filePath();