diff options
author | Hugo Lima <hugo.lima@openbossa.org> | 2009-12-28 10:55:54 -0200 |
---|---|---|
committer | Hugo Lima <hugo.lima@openbossa.org> | 2009-12-28 11:00:51 -0200 |
commit | e489074ccb5bf5b98564d9752907a5657506f4e4 (patch) | |
tree | 4845fb33b597b2fb2a5d32af355727169dfcfd52 /headergenerator.cpp | |
parent | 2fc991d0239cfa0111c5fa9629e183add4076bbf (diff) |
Wrapper classes of QObjects store a pointer to their own meta object, a dynamic one.
Reviewed by Marcelo Lira <marcelo.lira@openbossa.org>
Diffstat (limited to 'headergenerator.cpp')
-rw-r--r-- | headergenerator.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/headergenerator.cpp b/headergenerator.cpp index fd47a3bf4..a3391039d 100644 --- a/headergenerator.cpp +++ b/headergenerator.cpp @@ -71,6 +71,10 @@ void HeaderGenerator::generateClass(QTextStream& s, const AbstractMetaClass* met s << metaClass->typeEntry()->include().toString() << endl << endl; if (shouldGenerateCppWrapper(metaClass)) { + + if (usePySideExtensions() && metaClass->isQObject()) + s << "namespace PySide { class DynamicQMetaObject; }\n\n"; + // Class s << "class " << wrapperName; s << " : public " << metaClass->qualifiedCppName(); @@ -83,14 +87,19 @@ void HeaderGenerator::generateClass(QTextStream& s, const AbstractMetaClass* met foreach (AbstractMetaFunction *func, filterFunctions(metaClass)) writeFunction(s, func); - if (usePySideExtensions() && metaClass->isQObject()) - s << INDENT << "virtual const QMetaObject* metaObject() const;\n";; - //destructor s << INDENT << (metaClass->hasVirtualDestructor() ? "virtual " : "") << "~" << wrapperName << "();" << endl; writeCodeSnips(s, metaClass->typeEntry()->codeSnips(), CodeSnip::Declaration, TypeSystem::NativeCode); + if (usePySideExtensions() && metaClass->isQObject()) { + s << "public:\n"; + s << INDENT << "virtual const QMetaObject* metaObject() const;\n";; + s << INDENT << "virtual int qt_metacall(QMetaObject::Call call, int id, void** args);\n";; + s << "private:\n"; + s << INDENT << "mutable PySide::DynamicQMetaObject* m_metaObject;\n"; + } + s << "};" << endl << endl; } |