From 092a1ee39dbd725a3106f1eb0e28d3d96eaa0034 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 5 Dec 2020 06:24:33 +0100 Subject: [PATCH] Sketcher: SketchGeometryExtensionPy - add testGeometryMode/setGeometryMode interface --- .../App/SketchGeometryExtensionPy.xml | 14 +++++- .../App/SketchGeometryExtensionPyImp.cpp | 49 +++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml b/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml index c5c8ce4e1f..b48bc17237 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml +++ b/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml @@ -15,10 +15,20 @@ Describes a SketchGeometryExtension + + + Returns a boolean indicating whether the given bit is set. + + + + + Sets the given bit to true/false. + + - returns the Id of the SketchGeometryExtension. + Returns the Id of the SketchGeometryExtension. @@ -26,7 +36,7 @@ - returns the Id of the SketchGeometryExtension. + Returns the Id of the SketchGeometryExtension. diff --git a/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp b/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp index 3d5bfb2cf9..efed2ae53a 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp +++ b/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp @@ -124,6 +124,55 @@ void SketchGeometryExtensionPy::setBlocked(Py::Boolean arg) getSketchGeometryExtensionPtr()->setGeometryMode(GeometryMode::Blocked, arg); } +Py::Boolean SketchGeometryExtensionPy::getConstruction(void) const +{ + return Py::Boolean(getSketchGeometryExtensionPtr()->testGeometryMode(GeometryMode::Construction)); +} + +void SketchGeometryExtensionPy::setConstruction(Py::Boolean arg) +{ + getSketchGeometryExtensionPtr()->setGeometryMode(GeometryMode::Construction, arg); +} + +PyObject* SketchGeometryExtensionPy::testGeometryMode(PyObject *args) +{ + char* flag; + if (PyArg_ParseTuple(args, "s",&flag)) { + + GeometryMode::GeometryMode mode; + + if(getSketchGeometryExtensionPtr()->getGeometryModeFromName(flag, mode)) + return new_reference_to(Py::Boolean(getSketchGeometryExtensionPtr()->testGeometryMode(mode))); + + PyErr_SetString(PyExc_TypeError, "Flag string does not exist."); + return NULL; + } + + PyErr_SetString(PyExc_TypeError, "No flag string provided."); + return NULL; +} + +PyObject* SketchGeometryExtensionPy::setGeometryMode(PyObject *args) +{ + char * flag; + PyObject * bflag = Py_True; + if (PyArg_ParseTuple(args, "s|O!", &flag, &PyBool_Type, &bflag)) { + + GeometryMode::GeometryMode mode; + + if(getSketchGeometryExtensionPtr()->getGeometryModeFromName(flag, mode)) { + getSketchGeometryExtensionPtr()->setGeometryMode(mode, PyObject_IsTrue(bflag) ? true : false); + Py_Return; + } + + PyErr_SetString(PyExc_TypeError, "Flag string does not exist."); + return NULL; + } + + PyErr_SetString(PyExc_TypeError, "No flag string provided."); + Py_Return; +} + PyObject *SketchGeometryExtensionPy::getCustomAttributes(const char* /*attr*/) const { return 0;