diff options
Diffstat (limited to 'python/pyqt/sip/qt/qobject.sip')
-rw-r--r-- | python/pyqt/sip/qt/qobject.sip | 1369 |
1 files changed, 0 insertions, 1369 deletions
diff --git a/python/pyqt/sip/qt/qobject.sip b/python/pyqt/sip/qt/qobject.sip deleted file mode 100644 index 77b1fbfc..00000000 --- a/python/pyqt/sip/qt/qobject.sip +++ /dev/null @@ -1,1369 +0,0 @@ -// This is the SIP interface definition for QObject. -// -// Copyright (c) 2007 -// Riverbank Computing Limited <info@riverbankcomputing.co.uk> -// -// This file is part of PyQt. -// -// This copy of PyQt is free software; you can redistribute it and/or modify it -// under the terms of the GNU General Public License as published by the Free -// Software Foundation; either version 2, or (at your option) any later -// version. -// -// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY -// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -// details. -// -// You should have received a copy of the GNU General Public License along with -// PyQt; see the file LICENSE. If not, write to the Free Software Foundation, -// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -%ExportedDoc -<Sect2><Title>QObject</Title> -<FuncSynopsis> - <FuncDef>bool <Function>disconnect</Function></FuncDef> - <ParamDef>const QObject *<Parameter>receiver</Parameter></ParamDef> - <ParamDef>const char *<Parameter>member</Parameter> = 0</ParamDef> -</FuncSynopsis> -<Para> -Not yet implemented. -</Para> - -<FuncSynopsis> - <FuncDef>bool <Function>disconnect</Function></FuncDef> - <ParamDef>const char *<Parameter>signal</Parameter> = 0</ParamDef> - <ParamDef>const QObject *<Parameter>receiver</Parameter> = 0</ParamDef> - <ParamDef>const char *<Parameter>member</Parameter> = 0</ParamDef> -</FuncSynopsis> -<Para> -Not yet implemented. -</Para> - -<FuncSynopsis> - <FuncDef>static bool <Function>disconnect</Function></FuncDef> - <ParamDef>const QObject *<Parameter>sender</Parameter></ParamDef> - <ParamDef>const char *<Parameter>signal</Parameter></ParamDef> - <ParamDef>const QObject *<Parameter>receiver</Parameter></ParamDef> - <ParamDef>const char *<Parameter>member</Parameter></ParamDef> -</FuncSynopsis> -<Para> -At the moment PyQt does not support the full behaviour of the corresponding Qt -method. In particular, specifying None (ie. 0 in C++) for the -<Literal>signal</Literal> and <Literal>receiver</Literal> parameters is not yet -supported. -</Para> -</Sect2> -%End - - -%If (Qt_2_00 -) - -class QObject : Qt -{ -%TypeHeaderCode -#include <qobject.h> -#include <qapplication.h> -%End - -public: - QObject(QObject * /TransferThis/ = 0,const char * = 0); - -%ConvertToSubClassCode - static struct class_graph { - char *name; - sipWrapperType **type; - int yes, no; - } graph[] = { - {sipName_QWidget, &sipClass_QWidget, 25, 1}, -#if QT_VERSION >= 0x030100 && defined(SIP_FEATURE_Qt_ASSISTANTCLIENT) - {sipName_QAssistantClient, &sipClass_QAssistantClient, -1, 2}, -#else - {NULL, NULL, -1, 2}, -#endif - {sipName_QSessionManager, &sipClass_QSessionManager, -1, 3}, - {sipName_QTranslator, &sipClass_QTranslator, -1, 4}, -#if QT_VERSION >= 0x030000 - {sipName_QProcess, &sipClass_QProcess, -1, 5}, -#else - {NULL, NULL, -1, 5}, -#endif - {sipName_QToolTipGroup, &sipClass_QToolTipGroup, -1, 6}, -#if defined(SIP_FEATURE_Qt_FILEDIALOG) - {sipName_QFileIconProvider, &sipClass_QFileIconProvider, -1, 7}, -#else - {NULL, NULL, -1, 7}, -#endif -#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_ACTION) - {sipName_QAction, &sipClass_QAction, 89, 8}, -#else - {NULL, NULL, -1, 8}, -#endif -#if QT_VERSION >= 0x030000 - {sipName_QObjectCleanupHandler, &sipClass_QObjectCleanupHandler, -1, 9}, -#else - {NULL, NULL, -1, 9}, -#endif - {sipName_QTimer, &sipClass_QTimer, -1, 10}, - {sipName_QLayout, &sipClass_QLayout, 90, 11}, -#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_NETWORKPROTOCOL) - {sipName_QUrlOperator, &sipClass_QUrlOperator, -1, 12}, -#else - {NULL, NULL, -1, 12}, -#endif - {sipName_QStyleSheet, &sipClass_QStyleSheet, -1, 13}, - {sipName_QValidator, &sipClass_QValidator, 94, 14}, -#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_NETWORKPROTOCOL) - {sipName_QNetworkOperation, &sipClass_QNetworkOperation, -1, 15}, -#else - {NULL, NULL, -1, 15}, -#endif - {sipName_QAccel, &sipClass_QAccel, -1, 16}, -#if QT_VERSION >= 0x030100 - {sipName_QEventLoop, &sipClass_QEventLoop, -1, 17}, -#else - {NULL, NULL, -1, 17}, -#endif -#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_NETWORKPROTOCOL) - {sipName_QNetworkProtocol, &sipClass_QNetworkProtocol, -1, 18}, -#else - {NULL, NULL, -1, 18}, -#endif -#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_SOUND) - {sipName_QSound, &sipClass_QSound, -1, 19}, -#else - {NULL, NULL, -1, 19}, -#endif - {sipName_QApplication, &sipClass_QApplication, -1, 20}, - {sipName_QDragObject, &sipClass_QDragObject, 97, 21}, - {sipName_QSocketNotifier, &sipClass_QSocketNotifier, -1, 22}, - {sipName_QStyle, &sipClass_QStyle, 103, 23}, - {sipName_QSignalMapper, &sipClass_QSignalMapper, -1, 24}, -#if defined(SIP_FEATURE_Qt_CLIPBOARD) - {sipName_QClipboard, &sipClass_QClipboard, -1, -1}, -#else - {NULL, NULL, -1, -1}, -#endif - {sipName_QStatusBar, &sipClass_QStatusBar, -1, 26}, -#if defined(SIP_FEATURE_Qt_SIZEGRIP) - {sipName_QSizeGrip, &sipClass_QSizeGrip, -1, 27}, -#else - {NULL, NULL, -1, 27}, -#endif - {sipName_QTabWidget, &sipClass_QTabWidget, -1, 28}, -#if QT_VERSION >= 0x030000 - {sipName_QDateEdit, &sipClass_QDateEdit, -1, 29}, -#else - {NULL, NULL, -1, 29}, -#endif - {sipName_QMainWindow, &sipClass_QMainWindow, -1, 30}, -#if QT_VERSION >= 0x030000 - {sipName_QDateTimeEdit, &sipClass_QDateTimeEdit, -1, 31}, -#else - {NULL, NULL, -1, 31}, -#endif -#if QT_VERSION >= 0x030000 - {sipName_QTimeEdit, &sipClass_QTimeEdit, -1, 32}, -#else - {NULL, NULL, -1, 32}, -#endif - {sipName_QFrame, &sipClass_QFrame, 46, 33}, - {sipName_QScrollBar, &sipClass_QScrollBar, -1, 34}, -#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_DIAL) - {sipName_QDial, &sipClass_QDial, -1, 35}, -#else - {NULL, NULL, -1, 35}, -#endif - {sipName_QButton, &sipClass_QButton, 75, 36}, - {sipName_QTabBar, &sipClass_QTabBar, -1, 37}, - {sipName_QDialog, &sipClass_QDialog, 79, 38}, - {sipName_QComboBox, &sipClass_QComboBox, -1, 39}, - {sipName_QHeader, &sipClass_QHeader, -1, 40}, -#if QT_VERSION >= 0x030000 - {sipName_QDockArea, &sipClass_QDockArea, -1, 41}, -#else - {NULL, NULL, -1, 41}, -#endif -#if QT_VERSION >= 0x030200 - {sipName_QSplashScreen, &sipClass_QSplashScreen, -1, 42}, -#else - {NULL, NULL, -1, 42}, -#endif - {sipName_QSlider, &sipClass_QSlider, -1, 43}, - {sipName_QSpinBox, &sipClass_QSpinBox, -1, 44}, -#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_WORKSPACE) - {sipName_QWorkspace, &sipClass_QWorkspace, -1, 45}, -#else - {NULL, NULL, -1, 45}, -#endif -#if QT_VERSION >= 0x030000 - {sipName_QDesktopWidget, &sipClass_QDesktopWidget, -1, -1}, -#else - {NULL, NULL, -1, -1}, -#endif - {sipName_QGrid, &sipClass_QGrid, -1, 47}, - {sipName_QLineEdit, &sipClass_QLineEdit, -1, 48}, -#if QT_VERSION >= 0x030200 - {sipName_QToolBox, &sipClass_QToolBox, -1, 49}, -#else - {NULL, NULL, -1, 49}, -#endif - {sipName_QWidgetStack, &sipClass_QWidgetStack, -1, 50}, -#if QT_VERSION >= 0x030000 - {sipName_QDockWindow, &sipClass_QDockWindow, 60, 51}, -#else - {NULL, NULL, -1, 51}, -#endif - {sipName_QMenuBar, &sipClass_QMenuBar, -1, 52}, - {sipName_QLabel, &sipClass_QLabel, -1, 53}, - {sipName_QGroupBox, &sipClass_QGroupBox, 61, 54}, - {sipName_QPopupMenu, &sipClass_QPopupMenu, -1, 55}, -#if defined(SIP_FEATURE_Qt_SPLITTER) - {sipName_QSplitter, &sipClass_QSplitter, -1, 56}, -#else - {NULL, NULL, -1, 56}, -#endif - {sipName_QProgressBar, &sipClass_QProgressBar, -1, 57}, - {sipName_QScrollView, &sipClass_QScrollView, 66, 58}, - {sipName_QHBox, &sipClass_QHBox, 74, 59}, - {sipName_QLCDNumber, &sipClass_QLCDNumber, -1, -1}, - {sipName_QToolBar, &sipClass_QToolBar, -1, -1}, - {sipName_QButtonGroup, &sipClass_QButtonGroup, 64, 62}, - {sipName_QHGroupBox, &sipClass_QHGroupBox, -1, 63}, - {sipName_QVGroupBox, &sipClass_QVGroupBox, -1, -1}, - {sipName_QVButtonGroup, &sipClass_QVButtonGroup, -1, 65}, - {sipName_QHButtonGroup, &sipClass_QHButtonGroup, -1, -1}, -#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_ICONVIEW) - {sipName_QIconView, &sipClass_QIconView, -1, 67}, -#else - {NULL, NULL, -1, 67}, -#endif - {sipName_QListView, &sipClass_QListView, -1, 68}, - {sipName_QListBox, &sipClass_QListBox, -1, 69}, -#if QT_VERSION >= 0x030000 - {sipName_QGridView, &sipClass_QGridView, -1, 70}, -#else - {NULL, NULL, -1, 70}, -#endif -#if QT_VERSION >= 0x030000 - {sipName_QTextEdit, &sipClass_QTextEdit, 71, -1}, -#else - {NULL, NULL, -1, -1}, -#endif - {sipName_QTextBrowser, &sipClass_QTextBrowser, -1, 72}, - {sipName_QMultiLineEdit, &sipClass_QMultiLineEdit, -1, 73}, - {sipName_QTextView, &sipClass_QTextView, -1, -1}, - {sipName_QVBox, &sipClass_QVBox, -1, -1}, - {sipName_QToolButton, &sipClass_QToolButton, -1, 76}, - {sipName_QRadioButton, &sipClass_QRadioButton, -1, 77}, - {sipName_QPushButton, &sipClass_QPushButton, -1, 78}, - {sipName_QCheckBox, &sipClass_QCheckBox, -1, -1}, -#if defined(WS_X11) && defined(SIP_FEATURE_Qt_PRINTDIALOG) - {sipName_QPrintDialog, &sipClass_QPrintDialog, -1, 80}, -#else - {NULL, NULL, -1, 80}, -#endif -#if QT_VERSION >= 0x030000 - {sipName_QErrorMessage, &sipClass_QErrorMessage, -1, 81}, -#else - {NULL, NULL, -1, 81}, -#endif -#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_INPUTDIALOG) - {sipName_QInputDialog, &sipClass_QInputDialog, -1, 82}, -#else - {NULL, NULL, -1, 82}, -#endif -#if defined(SIP_FEATURE_Qt_MESSAGEBOX) - {sipName_QMessageBox, &sipClass_QMessageBox, -1, 83}, -#else - {NULL, NULL, -1, 83}, -#endif -#if defined(SIP_FEATURE_Qt_WIZARD) - {sipName_QWizard, &sipClass_QWizard, -1, 84}, -#else - {NULL, NULL, -1, 84}, -#endif -#if defined(SIP_FEATURE_Qt_COLORDIALOG) - {sipName_QColorDialog, &sipClass_QColorDialog, -1, 85}, -#else - {NULL, NULL, -1, 85}, -#endif -#if defined(SIP_FEATURE_Qt_FONTDIALOG) - {sipName_QFontDialog, &sipClass_QFontDialog, -1, 86}, -#else - {NULL, NULL, -1, 86}, -#endif -#if defined(SIP_FEATURE_Qt_FILEDIALOG) - {sipName_QFileDialog, &sipClass_QFileDialog, -1, 87}, -#else - {NULL, NULL, -1, 87}, -#endif -#if defined(SIP_FEATURE_Qt_PROGRESSDIALOG) - {sipName_QProgressDialog, &sipClass_QProgressDialog, -1, 88}, -#else - {NULL, NULL, -1, 88}, -#endif -#if defined(SIP_FEATURE_Qt_TABDIALOG) - {sipName_QTabDialog, &sipClass_QTabDialog, -1, -1}, -#else - {NULL, NULL, -1, -1}, -#endif -#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_ACTION) - {sipName_QActionGroup, &sipClass_QActionGroup, -1, -1}, -#else - {NULL, NULL, -1, -1}, -#endif - {sipName_QGridLayout, &sipClass_QGridLayout, -1, 91}, - {sipName_QBoxLayout, &sipClass_QBoxLayout, 92, -1}, - {sipName_QHBoxLayout, &sipClass_QHBoxLayout, -1, 93}, - {sipName_QVBoxLayout, &sipClass_QVBoxLayout, -1, -1}, - {sipName_QDoubleValidator, &sipClass_QDoubleValidator, -1, 95}, - {sipName_QIntValidator, &sipClass_QIntValidator, -1, 96}, -#if QT_VERSION >= 0x030000 - {sipName_QRegExpValidator, &sipClass_QRegExpValidator, -1, -1}, -#else - {NULL, NULL, -1, -1}, -#endif - {sipName_QTextDrag, &sipClass_QTextDrag, -1, 98}, - {sipName_QStoredDrag, &sipClass_QStoredDrag, 101, 99}, -#if QT_VERSION >= 210 && defined(SIP_FEATURE_Qt_ICONVIEW) && defined(SIP_FEATURE_Qt_DRAGANDDROP) - {sipName_QIconDrag, &sipClass_QIconDrag, -1, 100}, -#else - {NULL, NULL, -1, 100}, -#endif - {sipName_QImageDrag, &sipClass_QImageDrag, -1, -1}, -#if QT_VERSION >= 210 - {sipName_QColorDrag, &sipClass_QColorDrag, -1, 102}, -#else - {NULL, NULL, -1, 102}, -#endif - {sipName_QUriDrag, &sipClass_QUriDrag, -1, -1}, - {sipName_QCommonStyle, &sipClass_QCommonStyle, 104, -1}, -#if defined(SIP_FEATURE_Qt_STYLE_WINDOWS) - {sipName_QWindowsStyle, &sipClass_QWindowsStyle, 106, 105}, -#else - {NULL, NULL, -1, 105}, -#endif -#if defined(SIP_FEATURE_Qt_STYLE_MOTIF) - {sipName_QMotifStyle, &sipClass_QMotifStyle, 107, -1}, -#else - {NULL, NULL, -1, -1}, -#endif -#if defined(SIP_FEATURE_Qt_STYLE_PLATINUM) - {sipName_QPlatinumStyle, &sipClass_QPlatinumStyle, -1, 110}, -#else - {NULL, NULL, -1, 110}, -#endif -#if defined(SIP_FEATURE_Qt_STYLE_CDE) - {sipName_QCDEStyle, &sipClass_QCDEStyle, -1, 108}, -#else - {NULL, NULL, -1, 108}, -#endif -#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_STYLE_MOTIFPLUS) - {sipName_QMotifPlusStyle, &sipClass_QMotifPlusStyle, -1, 109}, -#else - {NULL, NULL, -1, 109}, -#endif -#if QT_VERSION >= 220 && defined(SIP_FEATURE_Qt_STYLE_SGI) - {sipName_QSGIStyle, &sipClass_QSGIStyle, -1, -1}, -#else - {NULL, NULL, -1, -1}, -#endif -#if defined(PYQT_STYLE_WINDOWSXP) - {sipName_QWindowsXPStyle, &sipClass_QWindowsXPStyle, -1, -1}, -#else - {NULL, NULL, -1, -1}, -#endif - }; - - int i = 0; - - sipClass = NULL; - - do - { - struct class_graph *cg = &graph[i]; - - if (cg->name != NULL && sipCpp->inherits(cg->name)) - { - sipClass = *cg->type; - i = cg->yes; - } - else - i = cg->no; - } - while (i >= 0); -%End - - // This is really virtual. With the way we are implementing it doesn't - // need to be and has the advantage that the C++ implementation can be - // used in %ConvertToSubClassCode to get the C++ name for Python - // sub-classes. However, it is also means that C++ plugins can't get - // the true (Python) class name. - SIP_PYOBJECT className() const; -%MethodCode - sipRes = sipClassName(sipSelf); -%End - -%If (- Qt_3_0_0) - static QString tr(const char *) /AutoGen=Qt_TRANSLATION/; -%End -%If (Qt_2_2_0 - Qt_2_3_1) - // There was an apparent bug in moc prior to Qt v2.3.1 where this - // method wasn't automatically generated. - - static QString tr(const char *,const char *); -%End -%If (Qt_2_3_1 - Qt_3_0_0) - static QString tr(const char *,const char *) /AutoGen=Qt_TRANSLATION/; -%End -%If (Qt_3_0_0 -) - // Note that tr() and trUtf8() are really static methods. We pretend - // they aren't so that we can use self to get hold of the class name. - // We could mimic moc's behaviour more accurately by creating tr() and - // trUtf8() methods for a Python sub-class instance in the sub-class's - // ctor. - - QString tr(const char *,const char * = 0); -%MethodCode - PyObject *nmobj; - - if ((nmobj = sipClassName(sipSelf)) == NULL) - sipIsErr = 1; - else - { - char *cname = PyString_AsString(nmobj); - - Py_BEGIN_ALLOW_THREADS - - if (cname && qApp) - sipRes = new QString(qApp -> translate(cname,a0,a1,QApplication::DefaultCodec)); - else - sipRes = new QString(QString::fromLatin1(a0)); - - Py_END_ALLOW_THREADS - - Py_DECREF(nmobj); - } -%End - - QString trUtf8(const char *,const char * = 0); -%MethodCode - PyObject *nmobj; - - if ((nmobj = sipClassName(sipSelf)) == NULL) - sipIsErr = 1; - else - { - char *cname = PyString_AsString(nmobj); - - Py_BEGIN_ALLOW_THREADS - - if (cname && qApp) - sipRes = new QString(qApp -> translate(cname,a0,a1,QApplication::UnicodeUTF8)); - else - sipRes = new QString(QString::fromUtf8(a0)); - - Py_END_ALLOW_THREADS - - Py_DECREF(nmobj); - } -%End -%End - virtual QMetaObject *metaObject() const /AutoGen/; - virtual bool event(QEvent *); - virtual bool eventFilter(QObject *,QEvent *); - - bool isA(const char *) const; -%MethodCode - // The Qt implementation doesn't know anything about Python - // sub-classes. For SIP v4 we use the Python type's name. For - // SIP v3 we use the broken Qt behaviour as it's deprecated and - // we want to keep things simple. - -#if SIP_VERSION >= 0x040000 - sipRes = (strcmp(sipSelf -> ob_type -> tp_name,a0) == 0); -#else - Py_BEGIN_ALLOW_THREADS - sipRes = sipCpp -> QObject::isA(a0); - Py_END_ALLOW_THREADS -#endif -%End - - bool inherits(const char *) const; -%MethodCode - // The Qt implementation doesn't know anything about Python - // sub-classes. For SIP v4 we use the Python type's MRO. For - // SIP v3 we use the broken Qt behaviour as it's deprecated and - // we want to keep things simple. - -#if SIP_VERSION >= 0x040000 - PyObject *mro = sipSelf -> ob_type -> tp_mro; - - sipRes = 0; - - for (int i = 0; i < PyTuple_GET_SIZE(mro); ++i) - if (strcmp(((PyTypeObject *)PyTuple_GET_ITEM(mro,i)) -> tp_name,a0) == 0) - { - sipRes = 1; - break; - } -#else - Py_BEGIN_ALLOW_THREADS - sipRes = sipCpp -> QObject::inherits(a0); - Py_END_ALLOW_THREADS -#endif -%End - -%If (- Qt_3_0_0) - QStringList superClasses(bool = 0) const; -%End - const char *name() const; - const char *name(const char *) const; - virtual void setName(const char *); - bool isWidgetType() const; - bool highPriority() const; - bool signalsBlocked() const; - void blockSignals(bool); - int startTimer(int); - void killTimer(int); - void killTimers(); -%If (- Qt_3_0_0) - QObject *child(const char *,const char * = 0); -%End -%If (Qt_3_0_0 -) - QObject *child(const char *,const char * = 0,bool = 1); -%End - const QObjectList *children() const; -%If (Qt_2_1_0 -) - static const QObjectList *objectTrees(); -%End -%If (- Qt_3_0_0) - QObjectList *queryList(char * = 0,char * = 0,bool = 1,bool = 1); -%End - -%If (Qt_3_0_0 -) - QObjectList *queryList(char * = 0,char * = 0,bool = 1,bool = 1) const; -%MethodCode - // The Qt implementation doesn't know anything about Python - // sub-classes. For SIP v4 we get all classes and then use the - // Python type's MRO to weed out those we don't want. For SIP - // v3 we use the broken Qt behaviour as it's deprecated and we - // want to keep things simple. - -#if SIP_VERSION >= 0x040000 - sipRes = sipCpp -> QObject::queryList(0, a1, a2, a3); - - if (a0 && sipRes) - { - QObject *o = sipRes -> first(); - - while (o) - { - bool remove = TRUE; - PyObject *pyo = sipConvertFromInstance(o, sipClass_QObject, 0); - - if (pyo) - { - PyObject *mro = pyo -> ob_type -> tp_mro; - - for (int i = 0; i < PyTuple_GET_SIZE(mro); ++i) - if (strcmp(((PyTypeObject *)PyTuple_GET_ITEM(mro,i)) -> tp_name,a0) == 0) - { - remove = FALSE; - break; - } - - Py_DECREF(pyo); - } - - if (remove) - { - sipRes -> remove(); - o = sipRes -> current(); - } - else - o = sipRes -> next(); - } - } -#else - Py_BEGIN_ALLOW_THREADS - sipRes = sipCpp -> QObject::queryList(a0, a1, a2, a3); - Py_END_ALLOW_THREADS -#endif -%End -%End - - virtual void insertChild(QObject * /Transfer/); - virtual void removeChild(QObject * /TransferBack/); - void installEventFilter(const QObject *); - void removeEventFilter(const QObject *); - - static SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_QOBJECT,SIP_SLOT); -%MethodCode - sipRes = sipConnectRx(a0,a1,a2,a3,0); -%End - - static SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_PYCALLABLE); -%MethodCode - sipRes = sipConnectRx(a0,a1,a2,0,0); -%End - - SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_SLOT) const; -%MethodCode - sipRes = sipConnectRx(a0,a1,sipSelf,a2,0); -%End - - static SIP_PYOBJECT disconnect(SIP_QOBJECT,SIP_SIGNAL,SIP_QOBJECT,SIP_SLOT); -%MethodCode - sipRes = sipDisconnectRx(a0,a1,a2,a3); -%End - - static SIP_PYOBJECT disconnect(SIP_QOBJECT,SIP_SIGNAL,SIP_PYCALLABLE); -%MethodCode - sipRes = sipDisconnectRx(a0,a1,a2,0); -%End - -// bool disconnect(const char * = 0,const QObject * = 0,const char * = 0); -// bool disconnect(const QObject *,const char * = 0); - void dumpObjectTree(); - void dumpObjectInfo(); - QObject *parent() const; - - void emit(SIP_SIGNAL,SIP_PYTUPLE); -%MethodCode - if (sipEmitSignal(sipSelf,a0,a1) < 0) - sipIsErr = 1; -%End - -%If (Qt_PROPERTIES) -%If (Qt_2_1_0 - Qt_3_0_0) - bool setProperty(const char *,const QVariant &); - QVariant property(const char *) const; -%End -%If (Qt_3_0_0 -) - virtual bool setProperty(const char *,const QVariant &); - virtual QVariant property(const char *) const; -%End -%End - -signals: - void destroyed(); -%If (Qt_3_0_0 -) - void destroyed(QObject *); -%End - -public slots: -%If (Qt_3_0_0 -) - void deleteLater(); -%End - -public: - // This is actually protected, but we never need to call the real - // method. - SIP_PYOBJECT sender(); -%MethodCode - sipRes = sipGetSender(); -%End - -protected: - virtual void timerEvent(QTimerEvent *); - virtual void childEvent(QChildEvent *); -%If (Qt_3_0_0 -) - virtual void customEvent(QCustomEvent *); -%End - -private: - QObject(const QObject &); -}; - - -SIP_PYOBJECT QT_TR_NOOP(SIP_PYOBJECT); -%MethodCode - Py_INCREF(a0); - sipRes = a0; -%End - - -SIP_PYOBJECT QT_TRANSLATE_NOOP(SIP_PYOBJECT,SIP_PYOBJECT); -%MethodCode - Py_INCREF(a1); - sipRes = a1; -%End - -%End - - -%If (- Qt_2_00) - -class QObject -{ -%TypeHeaderCode -#include <qobject.h> -%End - -public: - QObject(QObject * /TransferThis/ = 0,const char * = 0); - -%ConvertToSubClassCode - // The table of Python class objects indexed by their names. The table - // must be sorted by name. - - static sipStringTypeClassMap map[] = { - {sipName_QAccel, &sipClass_QAccel}, - {sipName_QApplication, &sipClass_QApplication}, - {sipName_QBoxLayout, &sipClass_QBoxLayout}, - {sipName_QButton, &sipClass_QButton}, - {sipName_QButtonGroup, &sipClass_QButtonGroup}, - {sipName_QCheckBox, &sipClass_QCheckBox}, -#if defined(SIP_FEATURE_Qt_CLIPBOARD) - {sipName_QClipboard, &sipClass_QClipboard}, -#endif - {sipName_QComboBox, &sipClass_QComboBox}, - {sipName_QDialog, &sipClass_QDialog}, - {sipName_QDoubleValidator, &sipClass_QDoubleValidator}, - {sipName_QDragObject, &sipClass_QDragObject}, -#if defined(SIP_FEATURE_Qt_FILEDIALOG) - {sipName_QFileDialog, &sipClass_QFileDialog}, - {sipName_QFileIconProvider, &sipClass_QFileIconProvider}, -#endif - {sipName_QFrame, &sipClass_QFrame}, - {sipName_QGridLayout, &sipClass_QGridLayout}, - {sipName_QGroupBox, &sipClass_QGroupBox}, - {sipName_QHBoxLayout, &sipClass_QHBoxLayout}, - {sipName_QHeader, &sipClass_QHeader}, - {sipName_QImageDrag, &sipClass_QImageDrag}, - {sipName_QIntValidator, &sipClass_QIntValidator}, - {sipName_QLCDNumber, &sipClass_QLCDNumber}, - {sipName_QLabel, &sipClass_QLabel}, - {sipName_QLayout, &sipClass_QLayout}, - {sipName_QLineEdit, &sipClass_QLineEdit}, - {sipName_QListBox, &sipClass_QListBox}, - {sipName_QListView, &sipClass_QListView}, - {sipName_QMainWindow, &sipClass_QMainWindow}, - {sipName_QMenuBar, &sipClass_QMenuBar}, -#if defined(SIP_FEATURE_Qt_MESSAGEBOX) - {sipName_QMessageBox, &sipClass_QMessageBox}, -#endif - {sipName_QMultiLineEdit, &sipClass_QMultiLineEdit}, - {sipName_QPopupMenu, &sipClass_QPopupMenu}, -#if defined(WS_X11) && defined(SIP_FEATURE_Qt_PRINTDIALOG) - {sipName_QPrintDialog, &sipClass_QPrintDialog}, -#endif - {sipName_QProgressBar, &sipClass_QProgressBar}, -#if defined(SIP_FEATURE_Qt_PROGRESSDIALOG) - {sipName_QProgressDialog, &sipClass_QProgressDialog}, -#endif - {sipName_QPushButton, &sipClass_QPushButton}, - {sipName_QRadioButton, &sipClass_QRadioButton}, - {sipName_QScrollBar, &sipClass_QScrollBar}, - {sipName_QScrollView, &sipClass_QScrollView}, - {sipName_QSlider, &sipClass_QSlider}, - {sipName_QSocketNotifier, &sipClass_QSocketNotifier}, - {sipName_QSpinBox, &sipClass_QSpinBox}, -#if defined(SIP_FEATURE_Qt_SPLITTER) - {sipName_QSplitter, &sipClass_QSplitter}, -#endif - {sipName_QStatusBar, &sipClass_QStatusBar}, - {sipName_QStoredDrag, &sipClass_QStoredDrag}, - {sipName_QTabBar, &sipClass_QTabBar}, - {sipName_QTextDrag, &sipClass_QTextDrag}, - {sipName_QTimer, &sipClass_QTimer}, - {sipName_QToolBar, &sipClass_QToolBar}, - {sipName_QToolButton, &sipClass_QToolButton}, - {sipName_QToolTipGroup, &sipClass_QToolTipGroup}, - {sipName_QVBoxLayout, &sipClass_QVBoxLayout}, - {sipName_QValidator, &sipClass_QValidator}, - {sipName_QWidget, &sipClass_QWidget}, - {sipName_QWidgetStack, &sipClass_QWidgetStack} - }; - - sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0])); -%End - - static SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_QOBJECT,SIP_SLOT); -%MethodCode - sipRes = sipConnectRx(a0,a1,a2,a3,0); -%End - - static SIP_PYOBJECT connect(SIP_QOBJECT,SIP_SIGNAL,SIP_PYCALLABLE); -%MethodCode - sipRes = sipConnectRx(a0,a1,a2,0,0); -%End - - static SIP_PYOBJECT disconnect(SIP_QOBJECT,SIP_SIGNAL,SIP_QOBJECT,SIP_SLOT); -%MethodCode - sipRes = sipDisconnectRx(a0,a1,a2,a3); -%End - - static SIP_PYOBJECT disconnect(SIP_QOBJECT,SIP_SIGNAL,SIP_PYCALLABLE); -%MethodCode - sipRes = sipDisconnectRx(a0,a1,a2,0); -%End - - virtual bool event(QEvent *); - virtual bool eventFilter(QObject *,QEvent *); - const char *tr(const char *) const; - virtual QMetaObject *metaObject() const /AutoGen/; - - // This is actually virtual. However, with the way we are implementing - // it we can ignore it. - SIP_PYOBJECT className() const; -%MethodCode - sipRes = sipClassName(sipSelf); -%End - - bool isA(const char *) const; - bool inherits(const char *) const; - const char *name() const; - const char *name(const char *) const; - void setName(const char *); - bool isWidgetType() const; - bool highPriority() const; - bool signalsBlocked() const; - void blockSignals(bool); - int startTimer(int); - void killTimer(int); - void killTimers(); - const QObjectList *children() const; - QObjectList *queryList(char * = 0,char * = 0,bool = 1,bool = 1); - void insertChild(QObject * /Transfer/); - void removeChild(QObject * /TransferBack/); - void installEventFilter(const QObject *); - void removeEventFilter(const QObject *); -// bool connect(QObject *,const char *,const char *); -// bool disconnect(const char * = 0,const QObject * = 0,const char * = 0); -// bool disconnect(const QObject *,const char * = 0); - void dumpObjectTree(); - void dumpObjectInfo(); - QObject *parent() const; - - void emit(SIP_SIGNAL,SIP_PYTUPLE); -%MethodCode - if (sipEmitSignal(sipSelf,a0,a1) < 0) - sipIsErr = 1; -%End - -signals: - void destroyed(); - -public: - // This is actually protected, but we never need to call the real - // method. - SIP_PYOBJECT sender(); -%MethodCode - sipRes = sipGetSender(); -%End - -protected: - virtual void timerEvent(QTimerEvent *); - -private: - QObject(const QObject &); -}; - -%End - - -SIP_PYOBJECT SLOT(const char *); -%MethodCode - if (!a0) - { - PyErr_Format(PyExc_TypeError,"qt.SLOT() slot name cannot be None"); - sipIsErr = 1; - } - else - { - int len = strlen(a0); - - if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL) - sipIsErr = 1; - else - { - char *dp = PyString_AS_STRING(sipRes); - - *dp++ = '1'; - - memcpy(dp,a0,len + 1); - } - } -%End - - -SIP_PYOBJECT SIGNAL(const char *); -%MethodCode - if (!a0) - { - PyErr_Format(PyExc_TypeError,"qt.SIGNAL() signal cannot be None"); - sipIsErr = 1; - } - else - { - int len = strlen(a0); - - if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL) - sipIsErr = 1; - else - { - char *dp = PyString_AS_STRING(sipRes); - - *dp++ = '2'; - - memcpy(dp,a0,len + 1); - } - } -%End - - -SIP_PYOBJECT PYSIGNAL(const char *); -%MethodCode - if (!a0) - { - PyErr_Format(PyExc_TypeError,"qt.PYSIGNAL() signal cannot be None"); - sipIsErr = 1; - } - else - { - int len = strlen(a0); - - if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL) - sipIsErr = 1; - else - { - char *dp = PyString_AS_STRING(sipRes); - - *dp++ = '9'; - - memcpy(dp,a0,len + 1); - } - } -%End - - -// This is Qt support code for SIP v4.4 and later. -%ModuleCode - -#include <qobject.h> -#include <qvariant.h> -#include <qmetaobject.h> -#include <private/qucom_p.h> -#include <private/qucomextra_p.h> - - -// This class is used as a slot on behalf of connections to a Python callable. -// It is derived from QObject but is not run through moc. Instead the normal -// moc-generated methods are handwritten in order to implement a universal -// slot. This requires some knowledge of the internal implementation of -// signals and slots but it is likely that they will only change between major -// Qt versions. -class UniversalSlot : public QObject -{ -public: - UniversalSlot(QObject *qtx, sipSlotConnection *conn, const char **member); - ~UniversalSlot(); - - virtual QMetaObject *metaObject() const - { - return staticMetaObject(); - } - - virtual bool qt_invoke(int, QUObject *args); - static QMetaObject *staticMetaObject(); - - static const QObject *lastSender; - - static UniversalSlot *unislots; - UniversalSlot *nextus, *prevus; - sipSlotConnection conn; - -private: - static QMetaObject *metaObj; -}; - - -// Create a universal slot. Note that this will leak if there is no signal -// transmitter (ie. no parent) - QTimer.singleShot() for example. -UniversalSlot::UniversalSlot(QObject *qtx, sipSlotConnection *connection, const char **member) : QObject() -{ - // Save the connection. - conn = *connection; - - // Detect when the transmitter is destroyed. - if (qtx) - connect(qtx, SIGNAL(destroyed(QObject *)), SLOT(deleteLater())); - - // Return the slot to connect to. - *member = SLOT(unislot()); - - // Add this one to the global list. - nextus = unislots; - - if (nextus) - nextus -> prevus = this; - - prevus = 0; - unislots = this; -} - - -// Destroy a universal slot. -UniversalSlot::~UniversalSlot() -{ - sipFreeConnection(&conn); - - // Remove this one from the global list. - if (nextus) - nextus -> prevus = prevus; - - if (prevus) - prevus -> nextus = nextus; - else - unislots = nextus; -} - - -QMetaObject *UniversalSlot::metaObj = 0; - -#if QT_VERSION >= 0x030100 -static QMetaObjectCleanUp cleanUp_UniversalSlot("UniversalSlot", &UniversalSlot::staticMetaObject); -#else -static QMetaObjectCleanUp cleanUp_UniversalSlot; -#endif - -const QObject *UniversalSlot::lastSender = 0; -UniversalSlot *UniversalSlot::unislots = 0; - - -QMetaObject *UniversalSlot::staticMetaObject() -{ - if (metaObj) - return metaObj; - - // Define a single slot that takes no arguments and so will accept any - // connection. - static const QUMethod slot = {"unislot", 0, 0}; - static const QMetaData slot_tbl[] = { - {"unislot()", &slot, QMetaData::Public} - }; - - metaObj = QMetaObject::new_metaobject( - "UniversalSlot", QObject::staticMetaObject(), - slot_tbl, 1, - 0, 0, -#ifndef QT_NO_PROPERTIES - 0, 0, - 0, 0, -#endif - 0, 0); - - cleanUp_UniversalSlot.setMetaObject(metaObj); - - return metaObj; -} - - -bool UniversalSlot::qt_invoke(int id, QUObject *qargs) -{ - if (id - staticMetaObject()->slotOffset() != 0) - return QObject::qt_invoke(id, qargs); - - bool ok = TRUE; - const sipSignature *psig = conn.sc_signature; - QVariant *qv; - - // Save in case it is asked for later. - lastSender = sender(); - - // If the sender was a QSignal then the single argument will be wrapped - // in a QVariant instance. At the moment we handle int argument as - // that is all that is needed by PyQt (and PyKDE). - if (lastSender -> inherits("QSignal")) - qv = &static_QUType_QVariant.get(qargs + 1); - else - qv = 0; - -#ifdef WITH_THREAD - PyGILState_STATE state = PyGILState_Ensure(); -#endif - - PyObject *argtup = PyTuple_New(psig->sg_nrargs); - - if (!argtup) - ok = FALSE; - else - { - for (int a = 0; a < psig->sg_nrargs; ++a) - { - PyObject *arg; - - ++qargs; - - switch (psig->sg_args[a].atype) - { - case char_sat: - case schar_sat: - case uchar_sat: - arg = PyString_FromStringAndSize((char *)static_QUType_ptr.get(qargs), 1); - break; - - case string_sat: - case sstring_sat: - case ustring_sat: - arg = PyString_FromString((char *)static_QUType_ptr.get(qargs)); - break; - - case short_sat: - arg = PyInt_FromLong(*(short *)static_QUType_ptr.get(qargs)); - break; - - case ushort_sat: - arg = PyLong_FromUnsignedLong(*(unsigned short *)static_QUType_ptr.get(qargs)); - break; - - case int_sat: - if (qv) - arg = PyInt_FromLong(qv -> asInt()); - else - arg = PyInt_FromLong(static_QUType_int.get(qargs)); - break; - - case uint_sat: - arg = PyLong_FromUnsignedLong(*(unsigned *)static_QUType_ptr.get(qargs)); - break; - - case long_sat: - arg = PyLong_FromLong(*(long *)static_QUType_ptr.get(qargs)); - break; - - case ulong_sat: - arg = PyLong_FromUnsignedLong(*(unsigned long *)static_QUType_ptr.get(qargs)); - break; - - case longlong_sat: - arg = PyLong_FromLongLong(*(PY_LONG_LONG *)static_QUType_ptr.get(qargs)); - break; - - case ulonglong_sat: - arg = PyLong_FromUnsignedLongLong(*(unsigned PY_LONG_LONG *)static_QUType_ptr.get(qargs)); - break; - - case float_sat: - arg = PyFloat_FromDouble(*(float *)static_QUType_ptr.get(qargs)); - break; - - case double_sat: - arg = PyFloat_FromDouble(static_QUType_double.get(qargs)); - break; - - case enum_sat: - arg = sipConvertFromNamedEnum(*(int *)static_QUType_ptr.get(qargs), psig->sg_args[a].u.et); - break; - - case bool_sat: - arg = PyInt_FromLong(static_QUType_bool.get(qargs)); - break; - - case void_sat: - arg = sipConvertFromVoidPtr((void *)static_QUType_ptr.get(qargs)); - break; - - case class_sat: - case classp_sat: - arg = sipConvertFromInstance((void *)static_QUType_ptr.get(qargs),psig->sg_args[a].u.wt,0); - break; - - case mtype_sat: - case mtypep_sat: - arg = sipConvertFromMappedType((void *)static_QUType_ptr.get(qargs),psig->sg_args[a].u.mt,0); - break; - - case qvariant_sat: - case qvariantp_sat: - arg = sipConvertFromInstance((void *)&static_QUType_QVariant.get(qargs),sipClass_QVariant,0); - break; - - case pyobject_sat: - arg = (PyObject *)static_QUType_ptr.get(qargs); - break; - - default: - arg = Py_NotImplemented; - Py_INCREF(Py_NotImplemented); - } - - PyTuple_SET_ITEM(argtup, a, arg); - } - - // Dispatch to the real slot. - if (ok && sipEmitToSlot(&conn.sc_slot, argtup) < 0) - ok = FALSE; - - Py_DECREF(argtup); - } - - if (!ok) - PyErr_Print(); - -#ifdef WITH_THREAD - PyGILState_Release(state); -#endif - - return ok; -} - - -// Declare explicit C linkage. -extern "C" -{ - static void *sipQtCreateUniversalSlot(sipWrapper *, sipSlotConnection *, const char **); - static void sipQtDestroyUniversalSlot(void *); - static void *sipQtFindSlot(void *, const char *, PyObject *, const char *, const char **); - static int sipQtConnect(void *, const char *, void *, const char *, int); - static int sipQtDisconnect(void *, const char *, void *, const char *); - static int sipQtSignalsBlocked(void *); - static const void *sipQtGetSender(); - static void sipQtForgetSender(); - static int sipQtSameSignalSlotName(const char *, const char *); - static sipSlotConnection *sipQtFindConnection(void *, void **); -} - - -// Factory function to create a universal slot instance. Returns a pointer to -// the instance or 0 if there was an error. -static void *sipQtCreateUniversalSlot(sipWrapper *tx, sipSlotConnection *conn, const char **member) -{ - QObject *qtx = 0; - - // See if the transmitter is a QObject in which case we will connect - // to it's destroyed signal so that the universal slot can be destroyed - // at the same time. (Note that we used to do this by making the - // universal slot a child of the transmitter. This doesn't work as - // expected because QWidget destroys its children before emitting the - // destroyed signal.) - if (tx && PyObject_TypeCheck(tx, (PyTypeObject *)sipClass_QObject)) - qtx = reinterpret_cast<QObject *>(conn->sc_transmitter); - - return new UniversalSlot(qtx, conn, member); -} - - -// Dispose of a receiver that might be a universal slot. -static void sipQtDestroyUniversalSlot(void *rx) -{ - for (UniversalSlot *us = UniversalSlot::unislots; us; us = us->nextus) - if (us == reinterpret_cast<QObject *>(rx)) - { - delete us; - break; - } -} - - -// Search for the universal slot connected to a particular Qt signal. -static void *sipQtFindSlot(void *tx, const char *sig, PyObject *rxObj, const char *slot, const char **member) -{ - for (UniversalSlot *us = UniversalSlot::unislots; us; us = us->nextus) - if (sipSameConnection(&us->conn, tx, sig, rxObj, slot)) - { - *member = SLOT(unislot()); - return us; - } - - return 0; -} - - -// Connect a Qt signal to a Qt slot. -static int sipQtConnect(void *tx, const char *sig, void *rx, const char *slot, int) -{ - return QObject::connect(reinterpret_cast<QObject *>(tx), sig, - reinterpret_cast<QObject *>(rx), slot); -} - - -// Disconnect a Qt signal from a Qt slot. -static int sipQtDisconnect(void *tx, const char *sig, void *rx, const char *slot) -{ - return QObject::disconnect(reinterpret_cast<QObject *>(tx), sig, - reinterpret_cast<QObject *>(rx), slot); -} - - -// See if signals are currently blocked for a QObject. -static int sipQtSignalsBlocked(void *qobj) -{ - return reinterpret_cast<QObject *>(qobj)->signalsBlocked(); -} - - -// Get the last sender for QObject::sender(). -static const void *sipQtGetSender() -{ - return UniversalSlot::lastSender; -} - - -// Forget the last sender. -static void sipQtForgetSender() -{ - UniversalSlot::lastSender = 0; -} - - -// See if two signal or slot names are the same. -static int sipQtSameSignalSlotName(const char *s1, const char *s2) -{ - // moc formats signal names, so we should first convert the supplied - // string to the same format before comparing them. Instead we just - // compare them as they are, but ignoring all spaces - this will have - // the same result. - do - { - // Skip any spaces. - - while (*s1 == ' ') - ++s1; - - while (*s2 == ' ') - ++s2; - - if (*s1++ != *s2) - return 0; - } - while (*s2++ != '\0'); - - return 1; -} - - -// Return the next connection for a particular transmitter. This will be -// called with the GIL locked. -static sipSlotConnection *sipQtFindConnection(void *tx, void **context) -{ - UniversalSlot *us = *reinterpret_cast<UniversalSlot **>(context); - - if (!us) - us = UniversalSlot::unislots; - - sipSlotConnection *conn = 0; - - while (us) - { - sipSlotConnection *this_conn = &us->conn; - - us = us->nextus; - - if (this_conn->sc_transmitter == tx) - { - conn = this_conn; - break; - } - } - - *context = us; - - return conn; -} - -%End |