You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/qtruby/rubylib/designer/rbuic/uic.h

182 lines
6.8 KiB

/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
** Copyright (c) 2001 Phil Thompson <phil@river-bank.demon.co.uk>
**
** 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 <tqdom.h>
#include <tqstring.h>
#include <tqstringlist.h>
#include <tqmap.h>
#include <tqtextstream.h>
#include <tqpalette.h>
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<TTQString,TTQString> 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<Buddy> 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<TTQString, TTQString> functionImpls;
void rubySlot(TTQStringList::Iterator &it);
};
#endif