/********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** Copyright (c) 2001 Phil Thompson ** ** This file is part of Qt Designer. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef UIC_H #define UIC_H #include #include #include #include #include #include class RubyIndent { public: RubyIndent() : tabStop(4), current(0) {calc();} void setTabStop(uint n) {tabStop = n; calc();} void operator++() {++current; calc();} void operator--() {--current; calc();} operator TTQString() {return indstr;} private: uint tabStop; uint current; TTQString indstr; void calc(); }; class Uic : public Qt { public: Uic( const TTQString &fn, TTQTextStream& out, TTQDomDocument doc, bool subcl, const TTQString &trm, const TTQString& subclname, bool omitForwardDecls, TTQString &uicClass, bool useKDE ); static void setIndent(const RubyIndent &rubyind) {indent = rubyind;} void createFormImpl( const TTQDomElement &e ); void createSubImpl( const TTQDomElement &e, const TTQString& subclname ); void createObjectDecl( const TTQDomElement& e ); void createAttrDecl( const TTQDomElement& e ); void createActionDecl( const TTQDomElement& e ); void createActionImpl( const TTQDomElement& e, const TTQString &parent ); void createToolbarImpl( const TTQDomElement &e, const TTQString &parentClass, const TTQString &parent ); void createMenuBarImpl( const TTQDomElement &e, const TTQString &parentClass, const TTQString &parent ); void createPopupMenuImpl( const TTQDomElement &e, const TTQString &parentClass, const TTQString &parent ); TTQString createObjectImpl( const TTQDomElement &e, const TTQString& parentClass, const TTQString& parent, const TTQString& layout = TTQString::null ); TTQString createLayoutImpl( const TTQDomElement &e, const TTQString& parentClass, const TTQString& parent, const TTQString& layout = TTQString::null ); TTQString createObjectInstance( const TTQString& objClass, const TTQString& parent, const TTQString& objName ); TTQString createSpacerImpl( const TTQDomElement &e, const TTQString& parentClass, const TTQString& parent, const TTQString& layout = TTQString::null ); void createExclusiveProperty( const TTQDomElement & e, const TTQString& exclusiveProp ); TTQString createListBoxItemImpl( const TTQDomElement &e, const TTQString &parent, TTQString *value = 0 ); TTQString createIconViewItemImpl( const TTQDomElement &e, const TTQString &parent ); TTQString createListViewColumnImpl( const TTQDomElement &e, const TTQString &parent, TTQString *value = 0 ); TTQString createTableRowColumnImpl( const TTQDomElement &e, const TTQString &parent, TTQString *value = 0 ); TTQString createListViewItemImpl( const TTQDomElement &e, const TTQString &parent, const TTQString &parentItem ); void createColorGroupImpl( const TTQString& cg, const TTQDomElement& e ); TTQColorGroup loadColorGroup( const TTQDomElement &e ); TTQDomElement getObjectProperty( const TTQDomElement& e, const TTQString& name ); TTQString getPixmapLoaderFunction( const TTQDomElement& e ); TTQString getFormClassName( const TTQDomElement& e ); TTQString getClassName( const TTQDomElement& e ); TTQString getObjectName( const TTQDomElement& e ); TTQString getLayoutName( const TTQDomElement& e ); TTQString getInclude( const TTQString& className ); TTQString setObjectProperty( const TTQString& objClass, const TTQString& obj, const TTQString &prop, const TTQDomElement &e, bool stdset ); TTQString registerObject( const TTQString& name ); TTQString registeredName( const TTQString& name ); bool isObjectRegistered( const TTQString& name ); TTQStringList unique( const TTQStringList& ); TTQString trcall( const TTQString& sourceText, const TTQString& comment = "" ); static void embed( TTQTextStream& out, const char* project, const TTQStringList& images ); friend void getDBConnections(Uic& uic, TTQString& s); static bool hasKDEwidget; private: void registerLayouts ( const TTQDomElement& e ); TTQTextStream& out; TTQTextOStream trout; TTQString languageChangeBody; TTQStringList objectNames; TTQMap objectMapper; TTQStringList tags; TTQStringList layouts; TTQString formName; TTQString lastItem; TTQString trmacro; bool nofwd; static RubyIndent indent; struct Buddy { Buddy( const TTQString& k, const TTQString& b ) : key( k ), buddy( b ) {} Buddy(){} // for valuelist TTQString key; TTQString buddy; bool operator==( const Buddy& other ) const { return (key == other.key); } }; struct CustomInclude { TTQString header; TTQString location; }; TTQValueList buddies; TTQStringList layoutObjects; bool isLayout( const TTQString& name ) const; uint item_used : 1; uint cg_used : 1; uint pal_used : 1; uint stdsetdef : 1; uint externPixmaps : 1; TTQString uiFileVersion; TTQString nameOfClass; TTQString pixmapLoaderFunction; void registerDatabases( const TTQDomElement& e ); bool isWidgetInTable( const TTQDomElement& e, const TTQString& connection, const TTQString& table ); bool isFrameworkCodeGenerated( const TTQDomElement& e ); TTQString getDatabaseInfo( const TTQDomElement& e, const TTQString& tag ); void createFormImpl( const TTQDomElement& e, const TTQString& form, const TTQString& connection, const TTQString& table ); TTQStringList dbConnections; TTQMap< TTQString, TTQStringList > dbCursors; TTQMap< TTQString, TTQStringList > dbForms; static bool isMainWindow; static TTQString mkBool( bool b ); static TTQString mkBool( const TTQString& s ); bool toBool( const TTQString& s ); static TTQString fixString( const TTQString &str ); static bool onlyAscii; static TTQString mkStdSet( const TTQString& prop ); static TTQString getComment( const TTQDomNode& n ); int defSpacing, defMargin; TTQString fileName; bool writeSlotImpl; bool isEmptyFunction( const TTQString& fname ); TTQMap functionImpls; void rubySlot(TTQStringList::Iterator &it); }; #endif