mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2024-12-25 07:31:33 +08:00
Python Bindings: Fix findParent that was not working as expected (#349)
This commit is contained in:
parent
b5b251dffb
commit
130b0de646
@ -1,138 +1,138 @@
|
||||
%Import QtWidgets/QtWidgetsmod.sip
|
||||
|
||||
%If (Qt_5_0_0 -)
|
||||
|
||||
%ModuleHeaderCode
|
||||
PyObject *qtads_FindParent(PyObject* type, const QWidget *child);
|
||||
%End
|
||||
|
||||
%ModuleCode
|
||||
PyObject *qtads_FindParent(PyObject* type, const QWidget *w)
|
||||
{
|
||||
// Check that the types checking was successful.
|
||||
if (!type)
|
||||
return 0;
|
||||
|
||||
QWidget* parentWidget = w->parentWidget();
|
||||
|
||||
while (parentWidget)
|
||||
{
|
||||
PyObject *ParentImpl = sipConvertFromType(parentWidget, sipType_QObject, 0);
|
||||
if (!ParentImpl)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (PyType_IsSubtype((PyTypeObject *)type, Py_TYPE(ParentImpl)))
|
||||
return ParentImpl;
|
||||
|
||||
Py_DECREF(ParentImpl);
|
||||
|
||||
parentWidget = parentWidget->parentWidget();
|
||||
}
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
%End
|
||||
|
||||
namespace ads
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <ads_globals.h>
|
||||
%End
|
||||
|
||||
enum DockWidgetArea
|
||||
{
|
||||
NoDockWidgetArea,
|
||||
LeftDockWidgetArea,
|
||||
RightDockWidgetArea,
|
||||
TopDockWidgetArea,
|
||||
BottomDockWidgetArea,
|
||||
CenterDockWidgetArea,
|
||||
|
||||
InvalidDockWidgetArea,
|
||||
OuterDockAreas,
|
||||
AllDockAreas
|
||||
};
|
||||
typedef QFlags<ads::DockWidgetArea> DockWidgetAreas;
|
||||
|
||||
|
||||
enum TitleBarButton
|
||||
{
|
||||
TitleBarButtonTabsMenu,
|
||||
TitleBarButtonUndock,
|
||||
TitleBarButtonClose
|
||||
};
|
||||
|
||||
enum eDragState
|
||||
{
|
||||
DraggingInactive,
|
||||
DraggingMousePressed,
|
||||
DraggingTab,
|
||||
DraggingFloatingWidget
|
||||
};
|
||||
|
||||
enum eIcon
|
||||
{
|
||||
TabCloseIcon,
|
||||
DockAreaMenuIcon,
|
||||
DockAreaUndockIcon,
|
||||
DockAreaCloseIcon,
|
||||
|
||||
IconCount,
|
||||
};
|
||||
|
||||
enum eBitwiseOperator
|
||||
{
|
||||
BitwiseAnd,
|
||||
BitwiseOr
|
||||
};
|
||||
|
||||
namespace internal
|
||||
{
|
||||
void replaceSplitterWidget(QSplitter* Splitter, QWidget* From, QWidget* To);
|
||||
void hideEmptyParentSplitters(ads::CDockSplitter* FirstParentSplitter);
|
||||
|
||||
class CDockInsertParam
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <ads_globals.h>
|
||||
%End
|
||||
|
||||
public:
|
||||
Qt::Orientation orientation() const;
|
||||
bool append() const;
|
||||
int insertOffset() const;
|
||||
};
|
||||
ads::internal::CDockInsertParam dockAreaInsertParameters(ads::DockWidgetArea Area);
|
||||
|
||||
SIP_PYOBJECT findParent(SIP_PYTYPE type, const QWidget *w) const /TypeHint="QObject"/;
|
||||
%MethodCode
|
||||
sipRes = qtads_FindParent(a0, a1);
|
||||
|
||||
if (!sipRes)
|
||||
{
|
||||
sipIsErr = 1;
|
||||
}
|
||||
%End
|
||||
|
||||
QPixmap createTransparentPixmap(const QPixmap& Source, qreal Opacity);
|
||||
|
||||
QPoint globalPositionOf(QMouseEvent* ev);
|
||||
|
||||
void setButtonIcon(QAbstractButton* Button, QStyle::StandardPixmap StandarPixmap, ads::eIcon CustomIconId);
|
||||
|
||||
enum eRepolishChildOptions
|
||||
{
|
||||
RepolishIgnoreChildren,
|
||||
RepolishDirectChildren,
|
||||
RepolishChildrenRecursively
|
||||
};
|
||||
|
||||
void repolishStyle(QWidget* w, ads::internal::eRepolishChildOptions Options = ads::internal::RepolishIgnoreChildren);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
%End
|
||||
%Import QtWidgets/QtWidgetsmod.sip
|
||||
|
||||
%If (Qt_5_0_0 -)
|
||||
|
||||
%ModuleHeaderCode
|
||||
PyObject *qtads_FindParent(PyObject* type, const QWidget *child);
|
||||
%End
|
||||
|
||||
%ModuleCode
|
||||
PyObject *qtads_FindParent(PyObject* type, const QWidget *w)
|
||||
{
|
||||
// Check that the types checking was successful.
|
||||
if (!type)
|
||||
return 0;
|
||||
|
||||
QWidget* parentWidget = w->parentWidget();
|
||||
|
||||
while (parentWidget)
|
||||
{
|
||||
PyObject *ParentImpl = sipConvertFromType(parentWidget, sipType_QObject, 0);
|
||||
if (!ParentImpl)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (PyObject_IsInstance(ParentImpl, type))
|
||||
return ParentImpl;
|
||||
|
||||
Py_DECREF(ParentImpl);
|
||||
|
||||
parentWidget = parentWidget->parentWidget();
|
||||
}
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
%End
|
||||
|
||||
namespace ads
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <ads_globals.h>
|
||||
%End
|
||||
|
||||
enum DockWidgetArea
|
||||
{
|
||||
NoDockWidgetArea,
|
||||
LeftDockWidgetArea,
|
||||
RightDockWidgetArea,
|
||||
TopDockWidgetArea,
|
||||
BottomDockWidgetArea,
|
||||
CenterDockWidgetArea,
|
||||
|
||||
InvalidDockWidgetArea,
|
||||
OuterDockAreas,
|
||||
AllDockAreas
|
||||
};
|
||||
typedef QFlags<ads::DockWidgetArea> DockWidgetAreas;
|
||||
|
||||
|
||||
enum TitleBarButton
|
||||
{
|
||||
TitleBarButtonTabsMenu,
|
||||
TitleBarButtonUndock,
|
||||
TitleBarButtonClose
|
||||
};
|
||||
|
||||
enum eDragState
|
||||
{
|
||||
DraggingInactive,
|
||||
DraggingMousePressed,
|
||||
DraggingTab,
|
||||
DraggingFloatingWidget
|
||||
};
|
||||
|
||||
enum eIcon
|
||||
{
|
||||
TabCloseIcon,
|
||||
DockAreaMenuIcon,
|
||||
DockAreaUndockIcon,
|
||||
DockAreaCloseIcon,
|
||||
|
||||
IconCount,
|
||||
};
|
||||
|
||||
enum eBitwiseOperator
|
||||
{
|
||||
BitwiseAnd,
|
||||
BitwiseOr
|
||||
};
|
||||
|
||||
namespace internal
|
||||
{
|
||||
void replaceSplitterWidget(QSplitter* Splitter, QWidget* From, QWidget* To);
|
||||
void hideEmptyParentSplitters(ads::CDockSplitter* FirstParentSplitter);
|
||||
|
||||
class CDockInsertParam
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <ads_globals.h>
|
||||
%End
|
||||
|
||||
public:
|
||||
Qt::Orientation orientation() const;
|
||||
bool append() const;
|
||||
int insertOffset() const;
|
||||
};
|
||||
ads::internal::CDockInsertParam dockAreaInsertParameters(ads::DockWidgetArea Area);
|
||||
|
||||
SIP_PYOBJECT findParent(SIP_PYTYPE type, const QWidget *w) const /TypeHint="QObject"/;
|
||||
%MethodCode
|
||||
sipRes = qtads_FindParent(a0, a1);
|
||||
|
||||
if (!sipRes)
|
||||
{
|
||||
sipIsErr = 1;
|
||||
}
|
||||
%End
|
||||
|
||||
QPixmap createTransparentPixmap(const QPixmap& Source, qreal Opacity);
|
||||
|
||||
QPoint globalPositionOf(QMouseEvent* ev);
|
||||
|
||||
void setButtonIcon(QAbstractButton* Button, QStyle::StandardPixmap StandarPixmap, ads::eIcon CustomIconId);
|
||||
|
||||
enum eRepolishChildOptions
|
||||
{
|
||||
RepolishIgnoreChildren,
|
||||
RepolishDirectChildren,
|
||||
RepolishChildrenRecursively
|
||||
};
|
||||
|
||||
void repolishStyle(QWidget* w, ads::internal::eRepolishChildOptions Options = ads::internal::RepolishIgnoreChildren);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
%End
|
||||
|
Loading…
Reference in New Issue
Block a user