##// END OF EJS Templates
upgraded wrappers to current generator version...
upgraded wrappers to current generator version git-svn-id: svn://svn.code.sf.net/p/pythonqt/code/trunk@64 ea8d5007-eb21-0410-b261-ccb3ea6e24a9

File last commit:

r24:f543ed746063
r28:cf202027b50b
Show More
setupgenerator.cpp
123 lines | 5.0 KiB | text/x-c | CppLexer
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 /****************************************************************************
**
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
**
** This file is part of the Qt Script Generator project on Trolltech Labs.
**
** This file may be used under the terms of the GNU General Public
** License version 2.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of
** this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
** http://www.trolltech.com/products/qt/opensource.html
**
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://www.trolltech.com/products/qt/licensing.html or contact the
** sales department at sales@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
#include "setupgenerator.h"
florianlink
- added support for deriving CPP classes in Python and to override all public and protected virtual functions from PythonQt...
r24 #include "shellgenerator.h"
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 #include "reporthandler.h"
#include "fileout.h"
//#define Q_SCRIPT_LAZY_GENERATOR
florianlink
- added quitools...
r12 void SetupGenerator::addClass(const AbstractMetaClass *cls)
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 {
packHash[cls->package()].append(cls);
}
void writeQtScriptQtBindingsLicense(QTextStream &stream);
void maybeDeclareMetaType(QTextStream &stream, const QString &typeName,
QSet<QString> &registeredTypeNames);
bool hasDefaultConstructor(const AbstractMetaClass *meta_class);
void SetupGenerator::generate()
{
QHashIterator<QString, QList<const AbstractMetaClass*> > pack(packHash);
while (pack.hasNext()) {
pack.next();
QList<const AbstractMetaClass*> list = pack.value();
if (list.isEmpty())
continue;
florianlink
- removed phonon temporarily...
r11 QString packKey = pack.key();
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 QString packName = pack.key();
QStringList components = packName.split(".");
if ((components.size() > 2) && (components.at(0) == "com")
&& (components.at(1) == "trolltech")) {
// kill com.trolltech in key
components.removeAt(0);
components.removeAt(0);
}
packName.replace(".", "_");
florianlink
- removed phonon temporarily...
r11 packKey.replace(".", "_");
florianlink
- added quitools...
r12
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 QString shortPackName;
foreach (QString comp, components) {
comp[0] = comp[0].toUpper();
shortPackName += comp;
}
// add missing camel case (workaround..)
if (shortPackName == "QtWebkit") {
shortPackName = "QtWebKit";
} else if (shortPackName == "QtXmlpatterns") {
shortPackName = "QtXmlPatterns";
} else if (shortPackName == "QtOpengl") {
shortPackName = "QtOpenGL";
florianlink
- added quitools...
r12 } else if (shortPackName == "QtUitools") {
shortPackName = "QtUiTools";
}
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 {
florianlink
- removed phonon temporarily...
r11 FileOut initFile(m_out_dir + "/generated_cpp/" + packName + "/" + packKey + "_init.cpp");
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 QTextStream &s = initFile.stream;
if (FileOut::license)
writeQtScriptQtBindingsLicense(s);
florianlink
- added quitools...
r12
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 s << "#include <PythonQt.h>" << endl;
foreach (const AbstractMetaClass *cls, list) {
florianlink
- added support for deriving CPP classes in Python and to override all public and protected virtual functions from PythonQt...
r24 s << "#include \"" << ShellGenerator::wrapperClassName(cls) << ".h\"" << endl;
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 }
s << endl;
florianlink
- added quitools...
r12
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 // declare individual class creation functions
s << "void PythonQt_init_" << shortPackName << "() {" << endl;
florianlink
- added quitools...
r12 QStringList cppClassNames;
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 foreach (const AbstractMetaClass *cls, list) {
florianlink
- added support for deriving CPP classes in Python and to override all public and protected virtual functions from PythonQt...
r24 if (ShellGenerator::isBuiltIn(cls->name())) { continue; }
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10
florianlink
- added support for deriving CPP classes in Python and to override all public and protected virtual functions from PythonQt...
r24 QString shellCreator;
if (cls->generateShellClass()) {
shellCreator = ", PythonQtSetInstanceWrapperOnShell<" + ShellGenerator::shellClassName(cls) + ">";
}
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 if (cls->isQObject()) {
florianlink
- added support for deriving CPP classes in Python and to override all public and protected virtual functions from PythonQt...
r24 s << "PythonQt::self()->registerClass(&" << cls->qualifiedCppName() << "::staticMetaObject, \"" << shortPackName <<"\", PythonQtCreateObject<PythonQtWrapper_" << cls->name() << ">" << shellCreator << ");" << endl;
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 } else {
QString baseName = cls->baseClass()?cls->baseClass()->qualifiedCppName():"";
florianlink
- added support for deriving CPP classes in Python and to override all public and protected virtual functions from PythonQt...
r24 s << "PythonQt::self()->registerCPPClass(\""<< cls->qualifiedCppName() << "\", \"" << baseName << "\", \"" << shortPackName <<"\", PythonQtCreateObject<PythonQtWrapper_" << cls->name() << ">" << shellCreator << ");" << endl;
}
foreach(AbstractMetaClass* interface, cls->interfaces()) {
// the interface might be our own class... (e.g. QPaintDevice)
if (interface->qualifiedCppName() != cls->qualifiedCppName()) {
s << "PythonQt::self()->addParentClass(\""<< cls->qualifiedCppName() << "\", \"" << interface->qualifiedCppName() << "\",PythonQtUpcastingOffset<" << cls->qualifiedCppName() <<","<<interface->qualifiedCppName()<<">());" << endl;
}
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 }
}
s << endl;
florianlink
- added quitools...
r12
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 s << "}";
s << endl;
}
}
}