+ use PyCXX for module initialization

This commit is contained in:
wmayer
2016-06-09 15:16:54 +02:00
parent 40c5fef1d0
commit 2b3c1595db
8 changed files with 56 additions and 117 deletions

View File

@@ -39,23 +39,36 @@
void CreateSurfaceCommands(void);
/* registration table */
extern struct PyMethodDef SurfaceGui_methods[];
namespace SurfaceGui {
class Module : public Py::ExtensionModule<Module>
{
public:
Module() : Py::ExtensionModule<Module>("SurfaceGui")
{
initialize("This module is the SurfaceGui module."); // register with Python
}
PyDoc_STRVAR(module_SurfaceGui_doc,
"This module is the SurfaceGui module.");
virtual ~Module() {}
private:
};
PyObject* initModule()
{
return (new Module)->module().ptr();
}
} // namespace SurfaceGui
/* Python entry */
extern "C" {
void SurfaceGuiExport initSurfaceGui()
PyMODINIT_FUNC initSurfaceGui()
{
if (!Gui::Application::Instance) {
PyErr_SetString(PyExc_ImportError, "Cannot load Gui module in console application.");
return;
}
// Base::Interpreter().runString("import SurfaceGui"); infinite Python recursion comes
Base::Interpreter().runString("import Surface");
Base::Interpreter().runString("import PartGui");
// instanciating the commands
@@ -66,8 +79,6 @@ void SurfaceGuiExport initSurfaceGui()
// SurfaceGui::ViewProviderCut::init();
(void) Py_InitModule3("SurfaceGui", SurfaceGui_methods, module_SurfaceGui_doc); /* mod name, table ptr */
(void) SurfaceGui::initModule();
Base::Console().Log("Loading GUI of Surface module... done\n");
}
} // extern "C"