diff -r 000000000000 -r 1918ee327afb src/tools/uic3/ui3reader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/tools/uic3/ui3reader.h Mon Jan 11 14:00:40 2010 +0000 @@ -0,0 +1,233 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef UI3READER_H +#define UI3READER_H + +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class DomUI; +class DomFont; +class DomWidget; +class DomProperty; +class DomLayout; +class DomLayoutItem; +class DomActionGroup; +class Porting; +struct Color; + +typedef QList > ColorGroup; + +class Ui3Reader +{ +public: + Ui3Reader(QTextStream &stream); + ~Ui3Reader(); + + void computeDeps(const QDomElement &e, QStringList &globalIncludes, QStringList &localIncludes, bool impl = false); + void generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc, bool implicitIncludes); + + void generate(const QString &fn, const QString &outputFn, + QDomDocument doc, bool decl, bool subcl, const QString &trm, + const QString& subclname, bool omitForwardDecls, bool implicitIncludes, const QString &convertedUiFile); + + void embed(const char *project, const QStringList &images); + + void setTrMacro(const QString &trmacro); + void setForwardDeclarationsEnabled(bool b); + void setOutputFileName(const QString &fileName); + + void createFormDecl(const QDomElement &e, bool implicitIncludes); + void createFormImpl(const QDomElement &e); + + void createWrapperDecl(const QDomElement &e, const QString &convertedUiFile); + + void createSubDecl(const QDomElement &e, const QString& subclname); + void createSubImpl(const QDomElement &e, const QString& subclname); + + void createColorGroupImpl(const QString& cg, const QDomElement& e); + ColorGroup loadColorGroup(const QDomElement &e); + + QDomElement getObjectProperty(const QDomElement& e, const QString& name); + QString getPixmapLoaderFunction(const QDomElement& e); + QString getFormClassName(const QDomElement& e); + QString getClassName(const QDomElement& e); + QString getObjectName(const QDomElement& e); + QString getLayoutName(const QDomElement& e); + + QString registerObject(const QString& name); + QString registeredName(const QString& name); + bool isObjectRegistered(const QString& name); + QStringList unique(const QStringList&); + + QString trcall(const QString& sourceText, const QString& comment = QString()); + + QDomElement parse(const QDomDocument &doc); + + void setExtractImages(bool extract, const QString &qrcOutputFile); + +private: + void init(); + + void createWrapperDeclContents(const QDomElement &e); + + void errorInvalidProperty(const QString &propertyName, const QString &widgetName, const QString &widgetClass, + int line, int col); + void errorInvalidSignal(const QString &signal, const QString &widgetName, const QString &widgetClass, + int line, int col); + void errorInvalidSlot(const QString &slot, const QString &widgetName, const QString &widgetClass, + int line, int col); + + DomUI *generateUi4(const QDomElement &e, bool implicitIncludes); + DomWidget *createWidget(const QDomElement &w, const QString &widgetClass = QString()); + void createProperties(const QDomElement &e, QList *properties, const QString &className); + void createAttributes(const QDomElement &e, QList *properties, const QString &className); + DomLayout *createLayout(const QDomElement &e); + DomLayoutItem *createLayoutItem(const QDomElement &e); + DomProperty *readProperty(const QDomElement &e); + void fixActionGroup(DomActionGroup *g); + QString fixActionProperties(QList &properties, bool isActionGroup = false); + + QString fixHeaderName(const QString &headerName) const; + QString fixClassName(const QString &className) const; + QString fixDeclaration(const QString &declaration) const; + QString fixType(const QString &type) const; + QString fixMethod(const QString &method) const; + + QDomElement findDerivedFontProperties(const QDomElement &n) const; + + void fixLayoutMargin(DomLayout *ui_layout); + + QTextStream &out; + QTextOStream trout; + QString languageChangeBody; + QString outputFileName; + QStringList objectNames; + QMap objectMapper; + QString indent; + QStringList tags; + QStringList layouts; + QString formName; + QString lastItem; + QString trmacro; + bool nofwd; + + struct Buddy + { + Buddy(const QString& k, const QString& b) + : key(k), buddy(b) {} + Buddy(){} // for valuelist + QString key; + QString buddy; + bool operator==(const Buddy& other) const + { return (key == other.key); } + }; + struct CustomInclude + { + QString header; + QString location; + Q_DUMMY_COMPARISON_OPERATOR(CustomInclude) + }; + QList buddies; + + QStringList layoutObjects; + bool isLayout(const QString& name) const; + + uint item_used : 1; + uint cg_used : 1; + uint pal_used : 1; + uint stdsetdef : 1; + uint externPixmaps : 1; + + QString uiFileVersion; + QString nameOfClass; + QStringList namespaces; + QString bareNameOfClass; + QString pixmapLoaderFunction; + + void registerDatabases(const QDomElement& e); + bool isWidgetInTable(const QDomElement& e, const QString& connection, const QString& table); + bool isFrameworkCodeGenerated(const QDomElement& e); + QString getDatabaseInfo(const QDomElement& e, const QString& tag); + void createFormImpl(const QDomElement& e, const QString& form, const QString& connection, const QString& table); + void writeFunctionsDecl(const QStringList &fuLst, const QStringList &typLst, const QStringList &specLst); + void writeFunctionsSubDecl(const QStringList &fuLst, const QStringList &typLst, const QStringList &specLst); + void writeFunctionsSubImpl(const QStringList &fuLst, const QStringList &typLst, const QStringList &specLst, + const QString &subClass, const QString &descr); + QStringList dbConnections; + QMap dbCursors; + QMap dbForms; + + static bool isMainWindow; + static QString mkBool(bool b); + static QString mkBool(const QString& s); + bool toBool(const QString& s); + static QString fixString(const QString &str, bool encode = false); + static bool onlyAscii; + static QString mkStdSet(const QString& prop); + static QString getComment(const QDomNode& n); + QVariant defSpacing, defMargin; + QString fileName; + bool writeFunctImpl; + + QDomElement root; + QDomElement widget; + + QMap candidateCustomWidgets; + Porting *m_porting; + + bool m_extractImages; + QString m_qrcOutputFile; + QMap m_imageMap; +}; + +QT_END_NAMESPACE + +#endif // UI3READER_H