Left base folder: C:\Temp\PyQt-win-gpl-4.7.7 Right base folder: C:\Temp\patchPyQt-win-gpl-4.7.7 --- designer\pluginloader.h 2010-09-20 14:14:04.000000000 +-0200 +++ designer\pluginloader.h 2010-10-18 17:26:23.000000000 +-0200 @@ -36,15 +36,15 @@ #include #include #include #include - +QT_BEGIN_NAMESPACE class QDesignerCustomWidgetInterface; - +QT_END_NAMESPACE class PyCustomWidgets : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) --- pylupdate\metatranslator.h 2010-09-20 14:14:04.000000000 +-0200 +++ pylupdate\metatranslator.h 2010-10-18 17:26:35.000000000 +-0200 @@ -39,13 +39,16 @@ #include #include #include #include #include + +QT_BEGIN_NAMESPACE class QTextCodec; +QT_END_NAMESPACE class MetaTranslatorMessage : public TranslatorMessage { public: enum Type { Unfinished, Finished, Obsolete }; --- pylupdate\translator.h 2010-09-20 14:14:04.000000000 +-0200 +++ pylupdate\translator.h 2010-10-18 17:26:44.000000000 +-0200 @@ -39,13 +39,15 @@ #include "QtCore/qbytearray.h" #include "QtCore/qstringlist.h" #include "QtCore/qlocale.h" #include class TranslatorPrivate; +QT_BEGIN_NAMESPACE template class QList; +QT_END_NAMESPACE class TranslatorMessage { public: TranslatorMessage(); TranslatorMessage(const char * context, const char * sourceText, --- qpy\QtCore\qpycore_api.h 2010-09-20 14:14:04.000000000 +-0200 +++ qpy\QtCore\qpycore_api.h 2010-10-18 12:43:23.000000000 +-0200 @@ -36,15 +36,15 @@ #include #include #include #include "qpycore_shared.h" - +QT_BEGIN_NAMESPACE class QObject; - +QT_END_NAMESPACE // Support for pyqtSlot() and pyqtSignature(). PyObject *qpycore_pyqtslot(PyObject *args, PyObject *kwds); PyObject *qpycore_pyqtsignature(PyObject *args, PyObject *kwds); --- qpy\QtCore\qpycore_pyqtboundsignal.h 2010-09-20 14:14:04.000000000 +-0200 +++ qpy\QtCore\qpycore_pyqtboundsignal.h 2010-10-18 12:43:27.000000000 +-0200 @@ -34,14 +34,15 @@ #include #include "qpycore_chimera.h" +QT_BEGIN_NAMESPACE class QObject; - +QT_END_NAMESPACE extern "C" { // This defines the structure of a bound PyQt signal. typedef struct { PyObject_HEAD --- qpy\QtCore\qpycore_pyqtproxy.h 2010-09-20 14:14:04.000000000 +-0200 +++ qpy\QtCore\qpycore_pyqtproxy.h 2010-10-18 12:43:31.000000000 +-0200 @@ -43,13 +43,16 @@ #include "qpycore_chimera.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_sip.h" #include "qpycore_types.h" +QT_BEGIN_NAMESPACE class QMutex; +QT_END_NAMESPACE + class PyQt_PyObject; // This class is used as a signal on behalf of Python signals and as a slot on // behalf of Python callables. It is derived from QObject but is not run // through moc. Instead the normal moc-generated methods are handwritten in --- qpy\QtCore\qpycore_qobject_helpers.h 2010-09-20 14:14:04.000000000 +-0200 +++ qpy\QtCore\qpycore_qobject_helpers.h 2010-10-18 12:43:46.000000000 +-0200 @@ -35,15 +35,15 @@ #include #include #include "qpycore_sip.h" - +QT_BEGIN_NAMESPACE class QObject; - +QT_END_NAMESPACE const QMetaObject *qpycore_qobject_metaobject(sipSimpleWrapper *pySelf, sipTypeDef *base); int qpycore_qobject_qt_metacall(sipSimpleWrapper *pySelf, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a); int qpycore_qobject_qt_metacast(sipSimpleWrapper *pySelf, sipTypeDef *base, --- qpy\QtCore\qpycore_sip.h 2010-09-20 14:14:04.000000000 +-0200 +++ qpy\QtCore\qpycore_sip.h 2010-10-18 16:48:28.000000000 +-0200 @@ -1,32 +1,32 @@ // This provides access to the SIP generated code for the QtCore module. // // Copyright (c) 2010 Riverbank Computing Limited -// +// // This file is part of PyQt. -// +// // This file may be used under the terms of the GNU General Public // License versions 2.0 or 3.0 as published by the Free Software // Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3 // included in the packaging of this file. Alternatively you may (at // your option) use any later version of the GNU General Public // License if such license has been publicly approved by Riverbank // Computing Limited (or its successors, if any) and the KDE Free Qt // Foundation. In addition, as a special exception, Riverbank gives you // certain additional rights. These rights are described in the Riverbank // GPL Exception version 1.1, which can be found in the file // GPL_EXCEPTION.txt in this package. -// +// // Please review the following information to ensure GNU General // Public Licensing requirements will be met: // http://trolltech.com/products/qt/licenses/licensing/opensource/. If // you are unsure which license is appropriate for your use, please // review the following information: // http://trolltech.com/products/qt/licenses/licensing/licensingoverview // or contact the sales department at sales@riverbankcomputing.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. #ifndef _QPYCORE_SIP_H #define _QPYCORE_SIP_H --- qpy\QtCore\qpycore_sip_helpers.h 2010-09-20 14:14:04.000000000 +-0200 +++ qpy\QtCore\qpycore_sip_helpers.h 2010-10-18 12:43:35.000000000 +-0200 @@ -34,16 +34,18 @@ #include #include "qpycore_chimera.h" +QT_BEGIN_NAMESPACE class QObject; +QT_END_NAMESPACE // Forward declarations. QObject *qpycore_find_signal(QObject *qtx, const char **sig); bool qpycore_emit(QObject *qtx, int signal_index, const Chimera::Signature *parsed_signature, PyObject *sigargs); #endif --- sip\QtCore\qglobal.sip 2010-09-20 14:14:02.000000000 +-0200 +++ sip\QtCore\qglobal.sip 2010-10-18 12:44:21.000000000 +-0200 @@ -355,20 +355,22 @@ return 0; %End }; // Hook's into Qt's resource system. %ModuleCode +QT_BEGIN_NAMESPACE extern bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); extern bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); +QT_END_NAMESPACE %End bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qFuzzyCompare(double, double); bool qIsNull(double); %If (Qt_4_2_0 -) void qsrand(uint); %End %If (Qt_4_2_0 -) int qrand(); %End --- configure.py 2010-09-20 14:13:56.000000000 +-0200 +++ configure.py 2010-10-18 17:28:12.000000000 +-0200 @@ -30,13 +30,13 @@ import sys import os import glob import optparse import shutil - +import re import sipconfig # Initialise the globals. pyqt_version = 0x040707 pyqt_version_str = "4.7.7" @@ -131,12 +131,14 @@ p.add_option("-r", "--trace", action="store_true", default=False, dest="tracing", help="build modules with tracing enabled") p.add_option("-u", "--debug", action="store_true", default=False, help="build modules with debugging symbols") p.add_option("-w", "--verbose", action="count", default=0, dest="verbose", help="verbose output during configuration") + p.add_option("--qtnamespace", default="", dest="qtnamespace", + help="Wraps all Qt library code in 'namespace name") p.add_option("-c", "--concatenate", action="store_true", default=False, dest="concat", help="concatenate each module's C++ source files") p.add_option("-j", "--concatenate-split", type="int", default=1, metavar="N", dest="split", help="split the concatenated C++ source files into N pieces " @@ -1820,12 +1822,14 @@ # This is for certain broken Linux distros and is needed to make sure that # QT_SHARED is properly defined. CONFIG += link_prl TARGET = %s SOURCES = %s """ % (app, cpp_file)) + if opts.qtnamespace: + f.write("QT_NAMESPACE = %s\n" % opts.qtnamespace) f.close() # Generate the source code. f = open(cpp_file, "w") @@ -2073,12 +2077,23 @@ macros = get_build_macros(args) if macros is None: p.print_help() sys.exit(2) + if opts.qtnamespace: + defines = macros.get('DEFINES', '') + ns_re = re.compile('(QT_NAMESPACE)\s*(=)\s*(\S+)') + ns_m = ns_re.search(defines) + if not ns_m: + defines += ' QT_NAMESPACE=%s ' % opts.qtnamespace + elif ns_m.group(3) != opts.qtnamespace: + defines = ns_re.sub(r'\1\2%s' % opts.qtnamespace, defines) + + macros['DEFINES'] = defines + sipcfg.set_build_macros(macros) # Check Qt is what we need. pyqt = check_qt_installation(macros) # Check the licenses are compatible.