1
1
#ifndef QLAYOUT_HELP_FUNCTIONS
2
2
#define QLAYOUT_HELP_FUNCTIONS
4
void addLayoutOwnership(QLayout *layout, QLayoutItem *item);
4
void addLayoutOwnership(QLayout* layout, QLayoutItem* item);
6
inline QByteArray retrieveObjectName(PyObject *obj)
6
inline QByteArray retrieveObjectName(PyObject* obj)
8
8
Shiboken::AutoDecRef objName(PyObject_Str(obj));
9
9
return PyString_AsString(objName);
12
inline void addLayoutOwnership(QLayout *layout, QWidget *widget)
12
inline void addLayoutOwnership(QLayout* layout, QWidget* widget)
14
14
//transfer ownership to parent widget
15
QWidget *parent = layout->parentWidget();
15
QWidget* parent = layout->parentWidget();
18
18
//keep the reference while the layout is orphan
19
19
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(layout));
20
20
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget));
21
Shiboken::keepReference(reinterpret_cast<Shiboken::SbkBaseWrapper*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
21
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
23
23
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent));
24
24
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget));
25
Shiboken::setParent(pyParent, pyChild);
25
Shiboken::Object::setParent(pyParent, pyChild);
29
inline void addLayoutOwnership(QLayout *layout, QLayout *other)
29
inline void addLayoutOwnership(QLayout* layout, QLayout* other)
31
//transfer all children widgetes from other to layout parent widget
32
QWidget *parent = layout->parentWidget();
31
//transfer all children widgets from other to layout parent widget
32
QWidget* parent = layout->parentWidget();
34
34
//keep the reference while the layout is orphan
35
35
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
36
36
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(other));
37
Shiboken::keepReference(reinterpret_cast<Shiboken::SbkBaseWrapper*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
37
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
41
41
for (int i=0, i_max=other->count(); i < i_max; i++) {
42
addLayoutOwnership(layout, other->itemAt(i));
42
QLayoutItem* item = other->itemAt(i);
43
if (PyErr_Occurred() || !item)
46
addLayoutOwnership(layout, item);
45
49
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
46
50
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(other));
47
Shiboken::setParent(pyParent, pyChild);
51
Shiboken::Object::setParent(pyParent, pyChild);
51
inline void addLayoutOwnership(QLayout *layout, QLayoutItem *item)
55
inline void addLayoutOwnership(QLayout* layout, QLayoutItem* item)
53
QWidget *w = item->widget();
57
QWidget* w = item->widget();
55
59
addLayoutOwnership(layout, w);
57
QLayout *l = item->layout();
61
QLayout* l = item->layout();
59
63
addLayoutOwnership(layout, l);
62
66
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
63
67
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayoutItem*>::toPython(item));
64
Shiboken::setParent(pyParent, pyChild);
68
Shiboken::Object::setParent(pyParent, pyChild);