diff --git a/src/Mod/Measure/App/AppMeasure.cpp b/src/Mod/Measure/App/AppMeasure.cpp
index af51864e93..6a3cff3cf5 100644
--- a/src/Mod/Measure/App/AppMeasure.cpp
+++ b/src/Mod/Measure/App/AppMeasure.cpp
@@ -26,24 +26,36 @@
#endif
#include
+#include
#include
#include "Measurement.h"
#include "MeasurementPy.h"
-struct PyMethodDef Measure_methods[] = {
-// {"read" , read, 1},
- {NULL, NULL, 0, NULL} /* end of table marker */
+namespace Measure {
+class Module : public Py::ExtensionModule
+{
+public:
+ Module() : Py::ExtensionModule("Measure")
+ {
+ initialize("This module is the Measure module."); // register with Python
+ }
+
+ virtual ~Module() {}
+
+private:
};
+PyObject* initModule()
+{
+ return (new Module)->module().ptr();
+}
-PyDoc_STRVAR(module_Measure_doc,
-"This module is the Measure module.");
+} // namespace Measure
/* Python entry */
-extern "C" {
-void MeasureExport initMeasure()
+PyMOD_INIT_FUNC(Measure)
{
// load dependent module
try {
@@ -51,24 +63,18 @@ void MeasureExport initMeasure()
}
catch(const Base::Exception& e) {
PyErr_SetString(PyExc_ImportError, e.what());
- return;
+ PyMOD_Return(0);
}
- PyObject* measureModule = Py_InitModule3("Measure", Measure_methods, module_Measure_doc); /* mod name, table ptr */
-
+ PyObject* mod = Measure::initModule();
// Add Types to module
- Base::Interpreter().addType(&Measure::MeasurementPy ::Type,measureModule,"Measurement");
-
- Base::Console().Log("Loading Measure module... done\n");
-
+ Base::Interpreter().addType(&Measure::MeasurementPy ::Type,mod,"Measurement");
+ Base::Console().Log("Loading Inspection module... done\n");
Measure::Measurement ::init();
+ PyMOD_Return(mod);
}
-
-
-} // extern "C"
-
// debug print for sketchsolv
void debugprint(std::string s)
{
Base::Console().Log(s.c_str());
-}
\ No newline at end of file
+}
diff --git a/src/Mod/TechDraw/App/AppTechDraw.cpp b/src/Mod/TechDraw/App/AppTechDraw.cpp
index 9f046d2ccc..b79ebc04d9 100644
--- a/src/Mod/TechDraw/App/AppTechDraw.cpp
+++ b/src/Mod/TechDraw/App/AppTechDraw.cpp
@@ -15,6 +15,7 @@
#endif
#include
+#include
#include
#include "DrawPage.h"
@@ -40,11 +41,11 @@
#include "DrawViewDetail.h"
namespace TechDraw {
-extern PyObject* initModule();
+ extern PyObject* initModule();
}
/* Python entry */
-PyMODINIT_FUNC initTechDraw()
+PyMOD_INIT_FUNC(TechDraw)
{
// load dependent module
try {
@@ -53,9 +54,9 @@ PyMODINIT_FUNC initTechDraw()
}
catch(const Base::Exception& e) {
PyErr_SetString(PyExc_ImportError, e.what());
- return;
+ PyMOD_Return(0);
}
- (void)TechDraw::initModule();
+ PyObject* mod = TechDraw::initModule();
Base::Console().Log("Loading TechDraw module... done\n");
@@ -96,4 +97,5 @@ PyMODINIT_FUNC initTechDraw()
TechDraw::DrawViewMultiPython ::init();
TechDraw::DrawTemplatePython ::init();
TechDraw::DrawViewSymbolPython::init();
+ PyMOD_Return(mod);
}
diff --git a/src/Mod/TechDraw/App/DrawPagePyImp.cpp b/src/Mod/TechDraw/App/DrawPagePyImp.cpp
index f095583f3a..7a445e7778 100644
--- a/src/Mod/TechDraw/App/DrawPagePyImp.cpp
+++ b/src/Mod/TechDraw/App/DrawPagePyImp.cpp
@@ -38,8 +38,11 @@ PyObject* DrawPagePy::addView(PyObject* args)
DrawView* view = pyView->getDrawViewPtr(); //get DrawView for pyView
int rc = page->addView(view);
-
+#if PY_MAJOR_VERSION < 3
return PyInt_FromLong((long) rc);
+#else
+ return PyLong_FromLong((long) rc);
+#endif
}
PyObject* DrawPagePy::removeView(PyObject* args)
@@ -60,7 +63,11 @@ PyObject* DrawPagePy::removeView(PyObject* args)
int rc = page->removeView(view);
+#if PY_MAJOR_VERSION < 3
return PyInt_FromLong((long) rc);
+#else
+ return PyLong_FromLong((long) rc);
+#endif
}
diff --git a/src/Mod/TechDraw/App/DrawParametricTemplatePy.xml b/src/Mod/TechDraw/App/DrawParametricTemplatePy.xml
index 89d54e5943..2f8c7388b9 100644
--- a/src/Mod/TechDraw/App/DrawParametricTemplatePy.xml
+++ b/src/Mod/TechDraw/App/DrawParametricTemplatePy.xml
@@ -22,7 +22,7 @@
Number of geometry in template
-
+
diff --git a/src/Mod/TechDraw/App/DrawParametricTemplatePyImp.cpp b/src/Mod/TechDraw/App/DrawParametricTemplatePyImp.cpp
index d4fbea50ee..9e1c3ad3cc 100644
--- a/src/Mod/TechDraw/App/DrawParametricTemplatePyImp.cpp
+++ b/src/Mod/TechDraw/App/DrawParametricTemplatePyImp.cpp
@@ -80,8 +80,16 @@ PyObject* DrawParametricTemplatePy::drawLine(PyObject *args)
}
+#if PY_MAJOR_VERSION < 3
Py::Int DrawParametricTemplatePy::getGeometryCount(void) const
{
int size = getDrawParametricTemplatePtr()->getGeometry().size();
return Py::Int(size);
}
+#else
+Py::Long DrawParametricTemplatePy::getGeometryCount(void) const
+{
+ int size = getDrawParametricTemplatePtr()->getGeometry().size();
+ return Py::Long(size);
+}
+#endif
diff --git a/src/Mod/TechDraw/App/DrawProjGroupPyImp.cpp b/src/Mod/TechDraw/App/DrawProjGroupPyImp.cpp
index a77b75e5cd..2c5840f6a1 100644
--- a/src/Mod/TechDraw/App/DrawProjGroupPyImp.cpp
+++ b/src/Mod/TechDraw/App/DrawProjGroupPyImp.cpp
@@ -49,7 +49,11 @@ PyObject* DrawProjGroupPy::removeProjection(PyObject* args)
DrawProjGroup* projGroup = getDrawProjGroupPtr();
int i = projGroup->removeProjection(projType);
+#if PY_MAJOR_VERSION < 3
return PyInt_FromLong((long) i);
+#else
+ return PyLong_FromLong((long) i);
+#endif
}
PyObject* DrawProjGroupPy::purgeProjections(PyObject* /*args*/)
@@ -57,7 +61,11 @@ PyObject* DrawProjGroupPy::purgeProjections(PyObject* /*args*/)
DrawProjGroup* projGroup = getDrawProjGroupPtr();
int i = projGroup->purgeProjections();
+#if PY_MAJOR_VERSION < 3
return PyInt_FromLong((long) i);
+#else
+ return PyLong_FromLong((long) i);
+#endif
}
PyObject* DrawProjGroupPy::getItemByLabel(PyObject* args)
diff --git a/src/Mod/TechDraw/App/DrawSVGTemplatePyImp.cpp b/src/Mod/TechDraw/App/DrawSVGTemplatePyImp.cpp
index fc7a720528..032c79567e 100644
--- a/src/Mod/TechDraw/App/DrawSVGTemplatePyImp.cpp
+++ b/src/Mod/TechDraw/App/DrawSVGTemplatePyImp.cpp
@@ -50,7 +50,11 @@ PyObject* DrawSVGTemplatePy::getEditFieldContent(PyObject* args)
}
std::string content = getDrawSVGTemplatePtr()->EditableTexts[fieldName];
if (!content.empty()) {
+#if PY_MAJOR_VERSION < 3
result = PyString_FromString(content.c_str());
+#else
+ result = PyUnicode_FromString(content.c_str());
+#endif
}
return result;
}
diff --git a/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp b/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp
index b47f392d6a..0179e67f7b 100644
--- a/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp
+++ b/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp
@@ -82,7 +82,11 @@ PyObject* DrawViewClipPy::getChildViewNames(PyObject* args)
std::vector::iterator it = strings.begin();
for( ; it != strings.end(); it++) {
+#if PY_MAJOR_VERSION < 3
PyObject* pString = PyString_FromString(it->c_str()); //TODO: unicode & py3
+#else
+ PyObject* pString = PyUnicode_FromString(it->c_str());
+#endif
//int rc =
static_cast (PyList_Append(result, pString));
}
diff --git a/src/Mod/TechDraw/App/DrawViewCollectionPyImp.cpp b/src/Mod/TechDraw/App/DrawViewCollectionPyImp.cpp
index 6c2780206b..5e2ba1628a 100644
--- a/src/Mod/TechDraw/App/DrawViewCollectionPyImp.cpp
+++ b/src/Mod/TechDraw/App/DrawViewCollectionPyImp.cpp
@@ -29,7 +29,11 @@ PyObject* DrawViewCollectionPy::addView(PyObject* args)
int i = collect->addView(view);
+#if PY_MAJOR_VERSION < 3
return PyInt_FromLong((long) i);
+#else
+ return PyLong_FromLong((long) i);
+#endif
}
PyObject* DrawViewCollectionPy::removeView(PyObject* args)
@@ -47,7 +51,11 @@ PyObject* DrawViewCollectionPy::removeView(PyObject* args)
int i = collect->removeView(view);
+#if PY_MAJOR_VERSION < 3
return PyInt_FromLong((long) i);
+#else
+ return PyLong_FromLong((long) i);
+#endif
}
diff --git a/src/Mod/TechDraw/Gui/AppTechDrawGui.cpp b/src/Mod/TechDraw/Gui/AppTechDrawGui.cpp
index 1388e4fe72..1e3946b82c 100644
--- a/src/Mod/TechDraw/Gui/AppTechDrawGui.cpp
+++ b/src/Mod/TechDraw/Gui/AppTechDrawGui.cpp
@@ -28,6 +28,7 @@
#endif
#include
+#include
#include
#include
#include
@@ -65,21 +66,38 @@ void loadTechDrawResource()
Gui::Translator::instance()->refresh();
}
-/* registration table */
-extern struct PyMethodDef TechDrawGui_Import_methods[];
+namespace TechDrawGui {
+class Module : public Py::ExtensionModule
+{
+public:
+ Module() : Py::ExtensionModule("TechDrawGui")
+ {
+ initialize("This module is the TechDrawGui module."); // register with Python
+ }
+
+ virtual ~Module() {}
+
+private:
+};
+
+PyObject* initModule()
+{
+ return (new Module)->module().ptr();
+}
+
+} // namespace TechDrawGui
/* Python entry */
-extern "C" {
-void TechDrawGuiExport initTechDrawGui()
+PyMOD_INIT_FUNC(TechDrawGui)
{
if (!Gui::Application::Instance) {
PyErr_SetString(PyExc_ImportError, "Cannot load Gui module in console application.");
- return;
+ PyMOD_Return(0);
}
+ PyObject* mod = TechDrawGui::initModule();
- (void) Py_InitModule("TechDrawGui", TechDrawGui_Import_methods); /* mod name, table ptr */
- Base::Console().Log("Loading GUI of TechDraw module... done\n");
+ Base::Console().Log("Loading TechDrawGui module... done\n");
// instantiating the commands
CreateTechDrawCommands();
@@ -113,6 +131,6 @@ void TechDrawGuiExport initTechDrawGui()
// add resources and reloads the translators
loadTechDrawResource();
-}
-} // extern "C" {
+ PyMOD_Return(mod);
+}