PythonQtStdDecorators.cpp
161 lines
| 4.6 KiB
| text/x-c
|
CppLexer
/ src / PythonQtStdDecorators.cpp
ezust
|
r0 | /* | ||
* | ||||
* Copyright (C) 2006 MeVis Research GmbH All Rights Reserved. | ||||
* | ||||
* This library is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | ||||
* License as published by the Free Software Foundation; either | ||||
* version 2.1 of the License, or (at your option) any later version. | ||||
* | ||||
* This library is distributed 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 | ||||
* Lesser General Public License for more details. | ||||
* | ||||
* Further, this software is distributed without any warranty that it is | ||||
* free of the rightful claim of any third person regarding infringement | ||||
* or the like. Any license provided herein, whether implied or | ||||
* otherwise, applies only to this software file. Patent licenses, if | ||||
* any, provided herein do not apply to combinations of this program with | ||||
* other software, or any other product whatsoever. | ||||
* | ||||
* You should have received a copy of the GNU Lesser General Public | ||||
* License along with this library; if not, write to the Free Software | ||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
* | ||||
* Contact information: MeVis Research GmbH, Universitaetsallee 29, | ||||
* 28359 Bremen, Germany or: | ||||
* | ||||
* http://www.mevis.de | ||||
* | ||||
*/ | ||||
//---------------------------------------------------------------------------------- | ||||
/*! | ||||
// \file PythonQtStdDecorators.cpp | ||||
// \author Florian Link | ||||
// \author Last changed by $Author: florian $ | ||||
// \date 2007-04 | ||||
*/ | ||||
//---------------------------------------------------------------------------------- | ||||
#include "PythonQtStdDecorators.h" | ||||
#include "PythonQt.h" | ||||
#include "PythonQtClassInfo.h" | ||||
florianlink
|
r68 | #include <QCoreApplication> | ||
ezust
|
r0 | |||
bool PythonQtStdDecorators::connect(QObject* sender, const QByteArray& signal, PyObject* callable) | ||||
{ | ||||
florianlink
|
r62 | QByteArray signalTmp; | ||
char first = signal.at(0); | ||||
if (first>='0' && first<='9') { | ||||
signalTmp = signal; | ||||
} else { | ||||
signalTmp = "2" + signal; | ||||
} | ||||
ezust
|
r0 | if (sender) { | ||
return PythonQt::self()->addSignalHandler(sender, signalTmp, callable); | ||||
} else { | ||||
return false; | ||||
} | ||||
} | ||||
bool PythonQtStdDecorators::connect(QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot) | ||||
{ | ||||
bool r = false; | ||||
if (sender && receiver) { | ||||
florianlink
|
r62 | QByteArray signalTmp; | ||
char first = signal.at(0); | ||||
if (first>='0' && first<='9') { | ||||
signalTmp = signal; | ||||
} else { | ||||
signalTmp = "2" + signal; | ||||
} | ||||
QByteArray slotTmp; | ||||
first = slot.at(0); | ||||
if (first>='0' && first<='9') { | ||||
slotTmp = slot; | ||||
} else { | ||||
slotTmp = "1" + slot; | ||||
ezust
|
r0 | } | ||
florianlink
|
r62 | r = QObject::connect(sender, signalTmp, receiver, slotTmp); | ||
ezust
|
r0 | } | ||
return r; | ||||
} | ||||
bool PythonQtStdDecorators::disconnect(QObject* sender, const QByteArray& signal, PyObject* callable) | ||||
{ | ||||
florianlink
|
r62 | QByteArray signalTmp; | ||
char first = signal.at(0); | ||||
if (first>='0' && first<='9') { | ||||
signalTmp = signal; | ||||
} else { | ||||
signalTmp = "2" + signal; | ||||
} | ||||
ezust
|
r0 | if (sender) { | ||
return PythonQt::self()->removeSignalHandler(sender, signalTmp, callable); | ||||
} else { | ||||
return false; | ||||
} | ||||
} | ||||
bool PythonQtStdDecorators::disconnect(QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot) | ||||
{ | ||||
bool r = false; | ||||
if (sender && receiver) { | ||||
florianlink
|
r62 | QByteArray signalTmp; | ||
char first = signal.at(0); | ||||
if (first>='0' && first<='9') { | ||||
signalTmp = signal; | ||||
} else { | ||||
signalTmp = "2" + signal; | ||||
} | ||||
QByteArray slotTmp; | ||||
first = slot.at(0); | ||||
if (first>='0' && first<='9') { | ||||
slotTmp = slot; | ||||
} else { | ||||
slotTmp = "1" + slot; | ||||
ezust
|
r0 | } | ||
florianlink
|
r62 | |||
r = QObject::disconnect(sender, signalTmp, receiver, slotTmp); | ||||
ezust
|
r0 | } | ||
return r; | ||||
} | ||||
florianlink
|
r61 | #undef emit | ||
void PythonQtStdDecorators::emit(QObject* sender, const QByteArray& signal, PyObject* arg1 ,PyObject* arg2 , | ||||
PyObject* arg3 ,PyObject* arg4 ,PyObject* arg5 ,PyObject* arg6 ,PyObject* arg7 ) | ||||
{ | ||||
// TODO xxx | ||||
// use normal PythonQtSlot calling code, add "allowSignal" to member lookup?! | ||||
} | ||||
#define emit | ||||
ezust
|
r0 | QObject* PythonQtStdDecorators::parent(QObject* o) { | ||
return o->parent(); | ||||
} | ||||
void PythonQtStdDecorators::setParent(QObject* o, QObject* parent) | ||||
{ | ||||
o->setParent(parent); | ||||
} | ||||
QVariantList PythonQtStdDecorators::children(QObject* o) | ||||
{ | ||||
QVariantList v; | ||||
QListIterator<QObject*> it(o->children()); | ||||
while (it.hasNext()) { | ||||
v << qVariantFromValue(it.next()); | ||||
} | ||||
return v; | ||||
} | ||||
florianlink
|
r68 | |||
QString PythonQtStdDecorators::tr(QObject* obj, const QByteArray& text, const QByteArray& ambig, int n) | ||||
{ | ||||
return QCoreApplication::translate(obj->metaObject()->className(), text.constData(), ambig.constData(), QCoreApplication::CodecForTr, n); | ||||
} | ||||