diff --git a/src/Mod/Complete/App/AppComplete.cpp b/src/Mod/Complete/App/AppComplete.cpp index 1c1b95320..5c202fc90 100644 --- a/src/Mod/Complete/App/AppComplete.cpp +++ b/src/Mod/Complete/App/AppComplete.cpp @@ -26,20 +26,38 @@ # include #endif +#include +#include + #include #include #include "CompleteConfiguration.h" -extern struct PyMethodDef Complete_methods[]; +namespace Complete { +class Module : public Py::ExtensionModule +{ +public: + Module() : Py::ExtensionModule("Complete") + { + initialize("This module is the Complete module."); // register with Python + } -PyDoc_STRVAR(module_Complete_doc, -"This module is the Complete module."); + virtual ~Module() {} + +private: +}; + +PyObject* initModule() +{ + return (new Module)->module().ptr(); +} + +} // namespace Complete /* Python entry */ -extern "C" { -void AppCompleteExport initComplete() +PyMODINIT_FUNC initComplete() { // load dependent module try { @@ -70,8 +88,6 @@ void AppCompleteExport initComplete() PyErr_SetString(PyExc_ImportError, e.what()); return; } - Py_InitModule3("Complete", Complete_methods, module_Complete_doc); /* mod name, table ptr */ + (void)Complete::initModule(); Base::Console().Log("Loading Complete module... done\n"); } - -} // extern "C" diff --git a/src/Mod/Complete/App/AppCompletePy.cpp b/src/Mod/Complete/App/AppCompletePy.cpp deleted file mode 100644 index eb7ce96a1..000000000 --- a/src/Mod/Complete/App/AppCompletePy.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * - * * - * This file is part of the FreeCAD CAx development system. * - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - * This library is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" -#ifndef _PreComp_ -# include -#endif - - -/* registration table */ -struct PyMethodDef Complete_methods[] = { - {NULL, NULL} /* end of table marker */ -}; diff --git a/src/Mod/Complete/App/CMakeLists.txt b/src/Mod/Complete/App/CMakeLists.txt index abeac43c7..324315831 100644 --- a/src/Mod/Complete/App/CMakeLists.txt +++ b/src/Mod/Complete/App/CMakeLists.txt @@ -15,7 +15,6 @@ set(Complete_LIBS SET(Complete_SRCS AppComplete.cpp - AppCompletePy.cpp PreCompiled.cpp PreCompiled.h CompleteConfiguration.h diff --git a/src/Mod/Complete/Gui/AppCompleteGui.cpp b/src/Mod/Complete/Gui/AppCompleteGui.cpp index 4bd869037..6709afeaa 100644 --- a/src/Mod/Complete/Gui/AppCompleteGui.cpp +++ b/src/Mod/Complete/Gui/AppCompleteGui.cpp @@ -26,6 +26,9 @@ # include #endif +#include +#include + #include #include #include @@ -48,13 +51,30 @@ void loadCompleteResource() Gui::Translator::instance()->refresh(); } -/* registration table */ -extern struct PyMethodDef CompleteGui_Import_methods[]; +namespace CompleteGui { +class Module : public Py::ExtensionModule +{ +public: + Module() : Py::ExtensionModule("CompleteGui") + { + initialize("This module is the CompleteGui module."); // register with Python + } + + virtual ~Module() {} + +private: +}; + +PyObject* initModule() +{ + return (new Module)->module().ptr(); +} + +} // namespace CompleteGui /* Python entry */ -extern "C" { -void CompleteGuiExport initCompleteGui() +PyMODINIT_FUNC initCompleteGui() { if (!Gui::Application::Instance) { PyErr_SetString(PyExc_ImportError, "Cannot load Gui module in console application."); @@ -116,7 +136,7 @@ void CompleteGuiExport initCompleteGui() } # endif - (void) Py_InitModule("CompleteGui", CompleteGui_Import_methods); /* mod name, table ptr */ + (void) CompleteGui::initModule(); Base::Console().Log("Loading GUI of Complete module... done\n"); // instantiating the commands @@ -126,5 +146,3 @@ void CompleteGuiExport initCompleteGui() // add resources and reloads the translators loadCompleteResource(); } - -} // extern "C" { diff --git a/src/Mod/Complete/Gui/AppCompleteGuiPy.cpp b/src/Mod/Complete/Gui/AppCompleteGuiPy.cpp deleted file mode 100644 index 478c49af3..000000000 --- a/src/Mod/Complete/Gui/AppCompleteGuiPy.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2008 Werner Mayer * - * * - * This file is part of the FreeCAD CAx development system. * - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - * This library is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" -#ifndef _PreComp_ -# include -#endif - - -/* registration table */ -struct PyMethodDef CompleteGui_Import_methods[] = { - {NULL, NULL} /* end of table marker */ -}; diff --git a/src/Mod/Complete/Gui/CMakeLists.txt b/src/Mod/Complete/Gui/CMakeLists.txt index 091cfb237..2e8ebfe92 100644 --- a/src/Mod/Complete/Gui/CMakeLists.txt +++ b/src/Mod/Complete/Gui/CMakeLists.txt @@ -18,7 +18,6 @@ qt4_add_resources(Complete_QRC_SRCS Resources/Complete.qrc) SET(CompleteGui_SRCS ${Complete_QRC_SRCS} AppCompleteGui.cpp - AppCompleteGuiPy.cpp Command.cpp PreCompiled.cpp PreCompiled.h