From 4db41b0b4b57d0de41f50b741ef289b9d559b277 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 30 Dec 2016 22:51:17 +0100 Subject: [PATCH] register Quantity type for shiboken2, handle exception to fix abort when setting quantity property of InputField via Python --- src/Gui/InputField.cpp | 9 +++++++-- src/Gui/WidgetFactory.cpp | 6 +----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Gui/InputField.cpp b/src/Gui/InputField.cpp index 5498560e40..8b57df3493 100644 --- a/src/Gui/InputField.cpp +++ b/src/Gui/InputField.cpp @@ -492,8 +492,13 @@ void InputField::setMinimum(double m) void InputField::setUnitText(const QString& str) { - Base::Quantity quant = Base::Quantity::parse(str); - setUnit(quant.getUnit()); + try { + Base::Quantity quant = Base::Quantity::parse(str); + setUnit(quant.getUnit()); + } + catch (...) { + // ignore exceptions + } } QString InputField::getUnitText(void) diff --git a/src/Gui/WidgetFactory.cpp b/src/Gui/WidgetFactory.cpp index 253e771830..03017daf15 100644 --- a/src/Gui/WidgetFactory.cpp +++ b/src/Gui/WidgetFactory.cpp @@ -108,7 +108,7 @@ PyTypeObject** SbkPySide2_QtWidgetsTypes=NULL; using namespace Gui; -#if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) +#if defined (HAVE_SHIBOKEN) namespace Shiboken { template<> struct Converter { @@ -150,13 +150,9 @@ PythonToCppFunc toCppPointerCheckFuncQuantity(PyObject* obj) void registerTypes() { -#if defined (HAVE_SHIBOKEN2) - //FIXME: This crashes with Shiboken2 -#else SbkConverter* convert = Shiboken::Conversions::createConverter(&Base::QuantityPy::Type, toPythonFuncQuantity); Shiboken::Conversions::setPythonToCppPointerFunctions(convert, toCppPointerConvFuncQuantity, toCppPointerCheckFuncQuantity); Shiboken::Conversions::registerConverterName(convert, "Base::Quantity"); -#endif } #endif