1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of Qt for Python. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the 21 ** packaging of this file. Please review the following information to 22 ** ensure the GNU Lesser General Public License version 3 requirements 23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 24 ** 25 ** GNU General Public License Usage 26 ** Alternatively, this file may be used under the terms of the GNU 27 ** General Public License version 2.0 or (at your option) the GNU General 28 ** Public license version 3 or any later version approved by the KDE Free 29 ** Qt Foundation. The licenses are as published by the Free Software 30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 31 ** included in the packaging of this file. Please review the following 32 ** information to ensure the GNU General Public License requirements will 33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and 34 ** https://www.gnu.org/licenses/gpl-3.0.html. 35 ** 36 ** $QT_END_LICENSE$ 37 ** 38 ****************************************************************************/ 39 40 #ifndef PYSIDE_PROPERTY_H 41 #define PYSIDE_PROPERTY_H 42 43 #include <pysidemacros.h> 44 45 #include <sbkpython.h> 46 47 #include <QtCore/QMetaObject> 48 49 extern "C" 50 { 51 extern PYSIDE_API PyTypeObject *PySidePropertyTypeF(void); 52 53 struct PySidePropertyPrivate; 54 struct PYSIDE_API PySideProperty 55 { 56 PyObject_HEAD 57 PySidePropertyPrivate* d; 58 }; 59 }; 60 61 namespace PySide { namespace Property { 62 63 typedef void (*MetaCallHandler)(PySideProperty*,PyObject*,QMetaObject::Call, void**); 64 65 PYSIDE_API bool checkType(PyObject *pyObj); 66 67 /** 68 * This function call set property function and pass value as arg 69 * This function does not check the property object type 70 * 71 * @param self The property object 72 * @param source The QObject witch has the property 73 * @param value The value to set in property 74 * @return Return 0 if ok or -1 if this function fail 75 **/ 76 PYSIDE_API int setValue(PySideProperty *self, PyObject *source, PyObject *value); 77 78 /** 79 * This function call get property function 80 * This function does not check the property object type 81 * 82 * @param self The property object 83 * @param source The QObject witch has the property 84 * @return Return the result of property get function or 0 if this fail 85 **/ 86 PYSIDE_API PyObject *getValue(PySideProperty *self, PyObject *source); 87 88 /** 89 * This function return the notify name used on this property 90 * 91 * @param self The property object 92 * @return Return a const char with the notify name used 93 **/ 94 PYSIDE_API const char *getNotifyName(PySideProperty *self); 95 96 97 /** 98 * This function search in the source object for desired property 99 * 100 * @param source The QObject object 101 * @param name The property name 102 * @return Return a new reference to property object 103 **/ 104 PYSIDE_API PySideProperty *getObject(PyObject *source, PyObject *name); 105 106 PYSIDE_API void setMetaCallHandler(PySideProperty *self, MetaCallHandler handler); 107 108 PYSIDE_API void setTypeName(PySideProperty *self, const char *typeName); 109 110 PYSIDE_API void setUserData(PySideProperty *self, void *data); 111 PYSIDE_API void* userData(PySideProperty *self); 112 113 } //namespace Property 114 } //namespace PySide 115 116 #endif 117