MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / createControlWidget

Method createControlWidget

src/Mod/Fem/Gui/ViewProviderShapeExtensionPyImp.cpp:38–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

36}
37
38PyObject* 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
80PyObject* ViewProviderShapeExtensionPy::getCustomAttributes(const char* /*attr*/) const
81{

Callers

nothing calls this directly

Calls 11

new_reference_toFunction · 0.85
createShapeWidgetMethod · 0.80
setViewProviderMethod · 0.80
setObjectNameMethod · 0.80
loadCoreModuleMethod · 0.80
fromQWidgetMethod · 0.80
sizeMethod · 0.45
nameMethod · 0.45
setWindowTitleMethod · 0.45
addWidgetMethod · 0.45

Tested by

no test coverage detected