| 36 | } |
| 37 | |
| 38 | PyObject* ViewProviderShapeExtensionPy::createControlWidget(PyObject* args) |
| 39 | { |
| 40 | // we take no arguments |
| 41 | if (!PyArg_ParseTuple(args, "")) { |
| 42 | return nullptr; |
| 43 | } |
| 44 | |
| 45 | // we support having multiple shape extensions in a single object. But as this python function |
| 46 | // is always named the same, only one can be called. Therefore we check which shape |
| 47 | // extensions are available, and return a stacked widget if multiple are available |
| 48 | |
| 49 | auto view_obj = getViewProviderShapeExtensionPtr()->getExtendedViewProvider(); |
| 50 | auto shape_extensions |
| 51 | = view_obj->getExtensionsDerivedFromType<FemGui::ViewProviderShapeExtension>(); |
| 52 | |
| 53 | QWidget* widget = nullptr; |
| 54 | if (shape_extensions.size() > 1) { |
| 55 | auto stack = new QStackedWidget(); |
| 56 | for (FemGui::ViewProviderShapeExtension* extension : shape_extensions) { |
| 57 | auto ui = extension->createShapeWidget(); |
| 58 | ui->setViewProvider(view_obj); |
| 59 | ui->setObjectName(QString::fromStdString(extension->name())); |
| 60 | ui->setWindowTitle(QString::fromStdString(extension->name())); |
| 61 | stack->addWidget(ui); |
| 62 | } |
| 63 | widget = stack; |
| 64 | } |
| 65 | else { |
| 66 | auto ui = getViewProviderShapeExtensionPtr()->createShapeWidget(); |
| 67 | ui->setViewProvider(view_obj); |
| 68 | widget = ui; |
| 69 | } |
| 70 | |
| 71 | Gui::PythonWrapper wrap; |
| 72 | if (wrap.loadCoreModule()) { |
| 73 | return Py::new_reference_to(wrap.fromQWidget(widget)); |
| 74 | } |
| 75 | |
| 76 | PyErr_SetString(PyExc_TypeError, "creating the ui element failed"); |
| 77 | return nullptr; |
| 78 | } |
| 79 | |
| 80 | PyObject* ViewProviderShapeExtensionPy::getCustomAttributes(const char* /*attr*/) const |
| 81 | { |
nothing calls this directly
no test coverage detected