summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/tools/designer/uilib
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/tools/designer/uilib')
-rw-r--r--tqtinterface/qt4/tools/designer/uilib/test/main.cpp50
-rw-r--r--tqtinterface/qt4/tools/designer/uilib/test/test.pro7
-rw-r--r--tqtinterface/qt4/tools/designer/uilib/tqwidgetfactory.cpp2623
-rw-r--r--tqtinterface/qt4/tools/designer/uilib/tqwidgetfactory.h188
-rw-r--r--tqtinterface/qt4/tools/designer/uilib/uilib.pro30
5 files changed, 0 insertions, 2898 deletions
diff --git a/tqtinterface/qt4/tools/designer/uilib/test/main.cpp b/tqtinterface/qt4/tools/designer/uilib/test/main.cpp
deleted file mode 100644
index dfdef0e..0000000
--- a/tqtinterface/qt4/tools/designer/uilib/test/main.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/**********************************************************************
-** Copyright (C) 2005-2008 Trolltech ASA. All rights reserved.
-**
-** This file is part of TQt GUI Designer.
-**
-** 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 Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** 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@trolltech.com.
-**
-** Licensees holding valid TQt Commercial licenses may use this file in
-** accordance with the TQt Commercial License Agreement provided with
-** the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#include <tqapplication.h>
-#include "../tqwidgetfactory.h"
-
-int main( int argc, char ** argv )
-{
- TQApplication a( argc, argv );
- if ( argc == 1 )
- return 0;
- if ( argc == 3 )
- TQWidgetFactory::loadImages( argv[ 2 ] );
- TQWidget *w = TQWidgetFactory::create( argv[ 1 ] );
- if ( !w )
- return 0;
- w->show();
- a.connect( &a, TQT_SIGNAL(lastWindowClosed()), &a, TQT_SLOT(quit()) );
- return a.exec();
-}
diff --git a/tqtinterface/qt4/tools/designer/uilib/test/test.pro b/tqtinterface/qt4/tools/designer/uilib/test/test.pro
deleted file mode 100644
index b2459c0..0000000
--- a/tqtinterface/qt4/tools/designer/uilib/test/test.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-TEMPLATE = app
-CONFIG += qt warn_on release
-HEADERS =
-SOURCES = main.cpp
-TARGET = test
-LIBS += -L$$QT_BUILD_TREE/lib -lqui
-
diff --git a/tqtinterface/qt4/tools/designer/uilib/tqwidgetfactory.cpp b/tqtinterface/qt4/tools/designer/uilib/tqwidgetfactory.cpp
deleted file mode 100644
index b8bd674..0000000
--- a/tqtinterface/qt4/tools/designer/uilib/tqwidgetfactory.cpp
+++ /dev/null
@@ -1,2623 +0,0 @@
-/**********************************************************************
-** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved.
-**
-** This file is part of TQt Designer.
-**
-** 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 Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** 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@trolltech.com.
-**
-** Licensees holding valid TQt Commercial licenses may use this file in
-** accordance with the TQt Commercial License Agreement provided with
-** the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#include "tqwidgetfactory.h"
-
-#include "../interfaces/languageinterface.h"
-#include "../interfaces/widgetinterface.h"
-
-#include <tqfeatures.h>
-#include "../designer/database2.h"
-#include <tqdom.h>
-#include <tqdir.h>
-#include <tqlayout.h>
-#include <tqmetaobject.h>
-#include <domtool.h>
-#include <uib.h>
-#include <tqapplication.h>
-#include <tqtooltip.h>
-#include <tqwhatsthis.h>
-#include <tqobjectlist.h>
-#include <private/tqpluginmanager_p.h>
-#include <tqmime.h>
-#include <tqdragobject.h>
-
-#ifndef TQT_NO_SQL
-#include <tqsqlrecord.h>
-#include <tqsqldatabase.h>
-#include <tqdatatable.h>
-#endif
-
-// include all TQt widgets we support
-#include <tqpushbutton.h>
-#include <tqtoolbutton.h>
-#include <tqcheckbox.h>
-#include <tqradiobutton.h>
-#include <tqgroupbox.h>
-#include <tqbuttongroup.h>
-#include <tqiconview.h>
-#include <tqheader.h>
-#ifndef TQT_NO_TABLE
-#include <tqtable.h>
-#endif
-#include <tqlistbox.h>
-#include <tqlistview.h>
-#include <tqlineedit.h>
-#include <tqspinbox.h>
-#include <tqmultilineedit.h>
-#include <tqlabel.h>
-#include <tqwidget.h>
-#include <tqtabwidget.h>
-#include <tqcombobox.h>
-#include <tqdialog.h>
-#include <tqwizard.h>
-#include <tqlcdnumber.h>
-#include <tqprogressbar.h>
-#include <tqtextview.h>
-#include <tqtextbrowser.h>
-#include <tqdial.h>
-#include <tqslider.h>
-#include <tqframe.h>
-#include <tqwidgetstack.h>
-#include <tqtoolbox.h>
-#include <tqtextedit.h>
-#include <tqscrollbar.h>
-#include <tqmainwindow.h>
-#include <tqsplitter.h>
-#include <tqaction.h>
-#include <tqpopupmenu.h>
-#include <tqmenubar.h>
-#include <tqpopupmenu.h>
-#include <tqdatetimeedit.h>
-#include <tqvbox.h>
-#include <tqhbox.h>
-#include <tqgrid.h>
-
-#include <stdlib.h>
-
-class TQWidgetFactoryPrivate
-{
-public:
- TQCString translationContext;
- TQListViewItem *lastItem;
- TQDict<bool> customWidgets;
-};
-
-static TQPtrList<TQWidgetFactory> widgetFactories;
-static TQPluginManager<LanguageInterface> *languageInterfaceManager = 0;
-static TQPluginManager<WidgetInterface> *widgetInterfaceManager = 0;
-
-static TQMap<TQString, bool> *availableWidgetMap = 0;
-static TQStringList *availableWidgetList = 0;
-
-TQMap<TQWidget*, TQString> *qwf_forms = 0;
-TQString *qwf_language = 0;
-bool qwf_execute_code = TRUE;
-bool qwf_stays_on_top = FALSE;
-TQString qwf_currFileName = "";
-TQObject *qwf_form_object = 0;
-TQString *qwf_plugin_dir = 0;
-
-static void setupPluginDir()
-{
- if ( !qwf_plugin_dir )
- qwf_plugin_dir = new TQString( "/designer" );
-}
-
-static void setupWidgetListAndMap()
-{
- if ( availableWidgetMap )
- return;
- setupPluginDir();
- availableWidgetList = new TQStringList;
- (*availableWidgetList) << "TQPushButton" << "TQToolButton" << "TQCheckBox" << "TQRadioButton"
- << "TQGroupBox" << "TQButtonGroup" << "TQIconView" << "TQTable"
- << "TQListBox" << "TQListView" << "TQLineEdit" << "TQSpinBox"
- << "TQMultiLineEdit" << "TQLabel" << "TextLabel" << "PixmapLabel"
- << "TQLayoutWidget" << "TQTabWidget" << "TQComboBox"
- << "TQWidget" << "TQDialog" << "TQWizard" << "TQLCDNumber";
- // put less stress on the compiler by limiting the template nesting depth
- (*availableWidgetList) << "TQProgressBar" << "TQTextView" << "TQTextBrowser"
- << "TQDial" << "TQSlider" << "TQFrame" << "Line" << "TQTextEdit"
- << "TQDateEdit" << "TQTimeEdit" << "TQDateTimeEdit" << "TQScrollBar"
- << "TQPopupMenu" << "TQWidgetStack" << "TQMainWindow"
- << "TQDataTable" << "TQDataBrowser" << "TQDataView"
- << "TQVBox" << "TQHBox" << "TQGrid" << "TQToolBox" << "TQSplitter";
-
- if ( !widgetInterfaceManager )
- widgetInterfaceManager =
- new TQPluginManager<WidgetInterface>( IID_Widget, TQApplication::libraryPaths(), *qwf_plugin_dir );
-
- TQStringList l = widgetInterfaceManager->featureList();
- TQStringList::Iterator it;
- for ( it = l.begin(); it != l.end(); ++it )
- (*availableWidgetList) << *it;
-
- availableWidgetMap = new TQMap<TQString, bool>;
- for ( it = availableWidgetList->begin(); it != availableWidgetList->end(); ++it )
- availableWidgetMap->insert( *it, TRUE );
-}
-
-static TQImage loadImageData( const TQString& format, ulong len, TQByteArray data )
-{
- TQImage img;
- if ( format == "XPM.GZ" || format == "XBM.GZ" ) {
- if ( len < data.size() * 10 )
- len = data.size() * 10;
- // tqUncompress() expects the first 4 bytes to be the expected length of
- // the uncompressed data
- TQByteArray dataTmp( data.size() + 4 );
- memcpy( dataTmp.data()+4, data.data(), data.size() );
- dataTmp[0] = ( len & 0xff000000 ) >> 24;
- dataTmp[1] = ( len & 0x00ff0000 ) >> 16;
- dataTmp[2] = ( len & 0x0000ff00 ) >> 8;
- dataTmp[3] = ( len & 0x000000ff );
- TQByteArray baunzip = tqUncompress( dataTmp );
- len = baunzip.size();
- img.loadFromData( (const uchar*)baunzip.data(), len, format.left(format.find('.')) );
- } else {
- img.loadFromData( (const uchar*)data.data(), data.size(), format );
- }
- return img;
-}
-
-static TQSizePolicy::SizeType stringToSizeType( const TQString& str )
-{
- if ( str == "Fixed" ) {
- return TQSizePolicy::Fixed;
- } else if ( str == "Minimum" ) {
- return TQSizePolicy::Minimum;
- } else if ( str == "Maximum" ) {
- return TQSizePolicy::Maximum;
- } else if ( str == "Preferred" ) {
- return TQSizePolicy::Preferred;
- } else if ( str == "MinimumExpanding" ) {
- return TQSizePolicy::MinimumExpanding;
- } else if ( str == "Expanding" ) {
- return TQSizePolicy::Expanding;
- } else {
- return TQSizePolicy::Ignored;
- }
-}
-
-
-/*!
- \class TQWidgetFactory
-
- \brief The TQWidgetFactory class provides for the dynamic creation of widgets
- from TQt Designer .ui files.
-
- This class basically offers two things:
-
- \list
-
- \i Dynamically creating widgets from \link designer-manual.book TQt
- Designer\endlink user interface description files.
- You can do this using the static function TQWidgetFactory::create().
- This function also performs signal and slot connections, tab
- ordering, etc., as defined in the .ui file, and returns the
- top-level widget in the .ui file. After creating the widget you can
- use TQObject::child() and TQObject::queryList() to access child
- widgets of this returned widget.
-
- \i Adding additional widget factories to be able to create custom
- widgets. See createWidget() for details.
-
- \endlist
-
- This class is not included in the TQt library itself. To use it you
- must link against \c libqui.so (Unix) or \c qui.lib (Windows), which is
- built into \c INSTALL/lib if you built \e{TQt Designer} (\c INSTALL is
- the directory where TQt is installed ).
-
- If you create a TQMainWindow using a TQWidgetFactory, be aware that
- it already has a central widget. Therefore, you need to delete this
- one before setting another one.
-
- See the "Creating Dynamic Dialogs from .ui Files" section of the \link
- designer-manual.book TQt Designer manual\endlink for an example. See
- also the \l{TQWidgetPlugin} class and the \link plugins-howto.html
- Plugins documentation\endlink.
-*/
-
-/*! Constructs a TQWidgetFactory. */
-
-TQWidgetFactory::TQWidgetFactory()
- : d( new TQWidgetFactoryPrivate() ), dbControls( 0 ),
- usePixmapCollection( FALSE ), defMargin( 11 ), defSpacing( 6 )
-{
- widgetFactories.setAutoDelete( TRUE );
- d->customWidgets.setAutoDelete( TRUE );
-}
-
-/*! \fn TQWidgetFactory::~TQWidgetFactory()
- Destructor.
-*/
-TQWidgetFactory::~TQWidgetFactory()
-{
- delete d;
-}
-
-/*!
-
- Loads the \e{TQt Designer} user interface description file \a uiFile
- and returns the top-level widget in that description. \a parent and
- \a name are passed to the constructor of the top-level widget.
-
- This function also performs signal and slot connections, tab
- ordering, etc., as described in the .ui file. In \e{TQt Designer} it
- is possible to add custom Q_SLOTS to a form and connect to them. If
- you want these connections to be made, you must create a class
- derived from TQObject, which implements all these Tslots. Then pass an
- instance of the object as \a connector to this function. If you do
- this, the connections to the custom Q_SLOTS will be done using the \a
- connector as slot.
-
- If something fails, 0 is returned.
-
- The ownership of the returned widget is passed to the caller.
-*/
-
-TQWidget *TQWidgetFactory::create( const TQString &uiFile, TQObject *connector,
- TQWidget *parent, const char *name )
-{
- setupPluginDir();
- TQFile f( uiFile );
- bool failed = FALSE;
- if ( !f.open( IO_ReadOnly ) )
- failed = TRUE;
- if ( failed && tqApp->type() == TQApplication::Tty ) {
- // for TQSA: If we have no GUI, we have no form definition
- // files, but just the code. So try if only the code exists.
- f.setName( uiFile + ".qs" );
- failed = !f.open( IO_ReadOnly );
- }
- if ( failed )
- return 0;
-
- qwf_currFileName = uiFile;
- TQWidget *w = TQWidgetFactory::create( &f, connector, parent, name );
- if ( !qwf_forms )
- qwf_forms = new TQMap<TQWidget*, TQString>;
- qwf_forms->insert( w, uiFile );
- return w;
-}
-
-#undef Q_SLOTS
-
-/*! \overload
- Loads the user interface description from tqdevice \a dev.
- */
-
-TQWidget *TQWidgetFactory::create( TQIODevice *dev, TQObject *connector, TQWidget *parent, const char *name )
-{
- setupPluginDir();
- TQWidget *w = 0;
- TQDomDocument doc;
- TQString errMsg;
- int errLine;
-
- TQWidgetFactory *widgetFactory = new TQWidgetFactory;
- widgetFactory->toplevel = 0;
-
- // If we have no GUI, we only want to load the code
- if ( tqApp->type() != TQApplication::Tty ) {
- TQIODevice::Offset start = dev->at();
- TQ_UINT32 magic;
- TQDataStream in( dev );
- in >> magic;
- if ( magic == UibMagic ) {
- w = widgetFactory->createFromUibFile( in, connector, parent, name );
- } else {
- in.unsetDevice();
- dev->at( start );
- if ( doc.setContent( dev, &errMsg, &errLine ) ) {
- w = widgetFactory->createFromUiFile( doc, connector, parent, name );
- } else {
- // qDebug( TQString("Parse error: ") + errMsg + TQString(" in line %d"), errLine );
- }
- }
- if ( !w ) {
- delete widgetFactory;
- return 0;
- }
- }
-
- if ( !languageInterfaceManager )
- languageInterfaceManager =
- new TQPluginManager<LanguageInterface>( IID_Language, TQApplication::libraryPaths(), *qwf_plugin_dir );
- widgetFactory->loadExtraSource();
-
- if ( widgetFactory->toplevel ) {
-#ifndef TQT_NO_SQL
- TQMap<TQWidget*, SqlWidgetConnection>::Iterator cit = widgetFactory->sqlWidgetConnections.begin();
- for( ; cit != widgetFactory->sqlWidgetConnections.end(); ++cit ) {
- if ( widgetFactory->noDatabaseWidgets.find( cit.key()->name() ) !=
- widgetFactory->noDatabaseWidgets.end() )
- continue;
- if ( cit.key()->inherits( "TQDesignerDataBrowser2" ) )
- ( (TQDesignerDataBrowser2*)cit.key() )->initPreview( (*cit).conn, (*cit).table,
- TQT_TQOBJECT(cit.key()), *(*cit).dbControls );
- else if ( cit.key()->inherits( "TQDesignerDataView2" ) )
- ( (TQDesignerDataView2*)cit.key() )->initPreview( (*cit).conn, (*cit).table,
- TQT_TQOBJECT(cit.key()), *(*cit).dbControls );
- }
-
- for ( TQMap<TQString, TQStringList>::Iterator it = widgetFactory->dbTables.begin();
- it != widgetFactory->dbTables.end(); ++it ) {
- TQDataTable *table = (TQDataTable*)widgetFactory->toplevel->child( it.key(), "TQDataTable" );
- if ( !table )
- continue;
- if ( widgetFactory->noDatabaseWidgets.find( table->name() ) !=
- widgetFactory->noDatabaseWidgets.end() )
- continue;
- TQValueList<Field> fieldMap = *widgetFactory->fieldMaps.find( table );
- TQString conn = (*it)[ 0 ];
- TQSqlCursor* c = 0;
- TQSqlDatabase *db = 0;
- if ( conn.isEmpty() || conn == "(default)" ) {
- db = TQSqlDatabase::database();
- c = new TQSqlCursor( (*it)[ 1 ] );
- } else {
- db = TQSqlDatabase::database( conn );
- c = new TQSqlCursor( (*it)[ 1 ], TRUE, db );
- }
- if ( db ) {
- table->setSqlCursor( c, fieldMap.isEmpty(), TRUE );
- table->refresh( TQDataTable::RefreshAll );
- }
- }
-#endif
- }
-
- for ( TQMap<TQString, TQString>::Iterator it = widgetFactory->buddies.begin();
- it != widgetFactory->buddies.end(); ++it ) {
- TQLabel *label = (TQLabel*)widgetFactory->toplevel->child( it.key(), "TQLabel" );
- TQWidget *buddy = (TQWidget*)widgetFactory->toplevel->child( *it, "TQWidget" );
- if ( label && buddy )
- label->setBuddy( buddy );
- }
-
- delete widgetFactory;
-
- TQApplication::sendPostedEvents();
-
- return w;
-}
-
-TQWidget *TQWidgetFactory::createFromUiFile( TQDomDocument doc, TQObject *connector,
- TQWidget *parent, const char *name )
-{
- DomTool::fixDocument( doc );
-
- uiFileVersion = doc.firstChild().toElement().attribute("version");
- TQDomElement e = doc.firstChild().toElement().firstChild().toElement();
-
- TQDomElement variables = e;
- while ( variables.tagName() != "variables" && !variables.isNull() )
- variables = variables.nextSibling().toElement();
-
- TQDomElement Tslots = e;
- while ( Tslots.tagName() != "Q_SLOTS" && !Tslots.isNull() )
- Tslots = Tslots.nextSibling().toElement();
-
- TQDomElement connections = e;
- while ( connections.tagName() != "connections" && !connections.isNull() )
- connections = connections.nextSibling().toElement();
-
- TQDomElement imageCollection = e;
- while ( imageCollection.tagName() != "images" && !imageCollection.isNull() )
- imageCollection = imageCollection.nextSibling().toElement();
-
- TQDomElement tabOrder = e;
- while ( tabOrder.tagName() != "tabstops" && !tabOrder.isNull() )
- tabOrder = tabOrder.nextSibling().toElement();
-
- TQDomElement actions = e;
- while ( actions.tagName() != "actions" && !actions.isNull() )
- actions = actions.nextSibling().toElement();
-
- TQDomElement toolbars = e;
- while ( toolbars.tagName() != "toolbars" && !toolbars.isNull() )
- toolbars = toolbars.nextSibling().toElement();
-
- TQDomElement menubar = e;
- while ( menubar.tagName() != "menubar" && !menubar.isNull() )
- menubar = menubar.nextSibling().toElement();
-
- TQDomElement functions = e;
- while ( functions.tagName() != "functions" && !functions.isNull() )
- functions = functions.nextSibling().toElement();
-
- TQDomElement widget;
- while ( !e.isNull() ) {
- if ( e.tagName() == "class" ) {
- d->translationContext = e.firstChild().toText().data();
- } else if ( e.tagName() == "widget" ) {
- widget = e;
- } else if ( e.tagName() == "pixmapinproject" ) {
- usePixmapCollection = TRUE;
- } else if ( e.tagName() == "layoutdefaults" ) {
- defSpacing = e.attribute( "spacing", TQString::number( defSpacing ) ).toInt();
- defMargin = e.attribute( "margin", TQString::number( defMargin ) ).toInt();
- }
- e = e.nextSibling().toElement();
- }
-
- if ( !imageCollection.isNull() )
- loadImageCollection( imageCollection );
-
- createWidgetInternal( widget, parent, 0, widget.attribute("class", "TQWidget") );
- TQWidget *w = toplevel;
- if ( !w )
- return 0;
-
- if ( !actions.isNull() )
- loadActions( actions );
- if ( !toolbars.isNull() )
- loadToolBars( toolbars );
- if ( !menubar.isNull() )
- loadMenuBar( menubar );
-
- if ( !connections.isNull() )
- loadConnections( connections, connector );
- if ( w && name && tqstrlen( name ) > 0 )
- w->setName( name );
-
- if ( !tabOrder.isNull() )
- loadTabOrder( tabOrder );
-
-#if 0
- if ( !functions.isNull() ) // compatibiliy with early 3.0 betas
- loadFunctions( functions );
-#endif
-
- return w;
-}
-
-void TQWidgetFactory::unpackUInt16( TQDataStream& in, TQ_UINT16& n )
-{
- TQ_UINT8 half;
- in >> half;
- if ( half == 255 ) {
- in >> n;
- } else {
- n = half;
- }
-}
-
-void TQWidgetFactory::unpackUInt32( TQDataStream& in, TQ_UINT32& n )
-{
- TQ_UINT16 half;
- in >> half;
- if ( half == 65535 ) {
- in >> n;
- } else {
- n = half;
- }
-}
-
-void TQWidgetFactory::unpackByteArray( TQDataStream& in, TQByteArray& array )
-{
- TQ_UINT32 size;
- unpackUInt32( in, size );
- array.resize( size );
- in.readRawBytes( array.data(), size );
-}
-
-void TQWidgetFactory::unpackCString( const UibStrTable& strings, TQDataStream& in,
- TQCString& cstr )
-{
- TQ_UINT32 n;
- unpackUInt32( in, n );
- cstr = strings.asCString( n );
-}
-
-void TQWidgetFactory::unpackString( const UibStrTable& strings, TQDataStream& in,
- TQString& str )
-{
- TQ_UINT32 n;
- unpackUInt32( in, n );
- str = strings.asString( n );
-}
-
-void TQWidgetFactory::unpackStringSplit( const UibStrTable& strings,
- TQDataStream& in, TQString& str )
-{
- TQString remainder;
- unpackString( strings, in, str );
- unpackString( strings, in, remainder );
- str += remainder;
-}
-
-void TQWidgetFactory::unpackVariant( const UibStrTable& strings, TQDataStream& in,
- TQVariant& value )
-{
- TQString imageName;
- TQ_UINT32 number;
- TQ_UINT16 count;
- TQ_UINT16 x;
- TQ_UINT16 y;
- TQ_UINT16 width;
- TQ_UINT16 height;
- TQ_UINT8 bit;
- TQ_UINT8 type;
-
- in >> type;
-
- switch ( type ) {
- case TQVariant::String:
- unpackString( strings, in, value.asString() );
- break;
- case TQVariant::Pixmap:
- unpackString( strings, in, imageName );
- if ( imageName.isEmpty() ) {
- value.asPixmap() = TQPixmap();
- } else {
- value.asPixmap() = loadPixmap( imageName );
- }
- break;
- case TQVariant::Image:
- unpackString( strings, in, imageName );
- if ( imageName.isEmpty() ) {
- value.asImage() = TQImage();
- } else {
- value.asImage() = loadFromCollection( imageName );
- }
- break;
- case TQVariant::IconSet:
- unpackString( strings, in, imageName );
- if ( imageName.isEmpty() ) {
- value.asIconSet() = TQIconSet();
- } else {
- value.asIconSet() = TQIconSet( loadPixmap(imageName) );
- }
- break;
- case TQVariant::StringList:
- unpackUInt16( in, count );
- while ( count-- ) {
- TQString str;
- unpackString( strings, in, str );
- value.asStringList().append( str );
- }
- break;
- case TQVariant::Rect:
- unpackUInt16( in, x );
- unpackUInt16( in, y );
- unpackUInt16( in, width );
- unpackUInt16( in, height );
- value = TQRect( x, y, width, height );
- break;
- case TQVariant::Size:
- unpackUInt16( in, width );
- unpackUInt16( in, height );
- value = TQSize( width, height );
- break;
- case TQVariant::Color:
- in >> value.asColor();
- break;
- case TQVariant::Point:
- unpackUInt16( in, x );
- unpackUInt16( in, y );
- value = TQPoint( x, y );
- break;
- case TQVariant::Int:
- unpackUInt32( in, number );
- value = (int) number;
- break;
- case TQVariant::Bool:
- in >> bit;
- value = TQVariant( bit != 0, 0 );
- break;
- case TQVariant::Double:
- in >> value.asDouble();
- break;
- case TQVariant::CString:
- unpackCString( strings, in, value.asCString() );
- break;
- case TQVariant::Cursor:
- in >> value.asCursor();
- break;
- case TQVariant::Date:
- in >> value.asDate();
- break;
- case TQVariant::Time:
- in >> value.asTime();
- break;
- case TQVariant::DateTime:
- in >> value.asDateTime();
- break;
- default:
- in >> value;
- }
-}
-
-void TQWidgetFactory::inputSpacer( const UibStrTable& strings, TQDataStream& in,
- TQLayout *parent )
-{
- TQCString name;
- TQVariant value;
- TQCString comment;
- TQSizePolicy::SizeType sizeType = TQSizePolicy::Preferred;
- bool vertical = FALSE;
- int w = 0;
- int h = 0;
- TQ_UINT16 column = 0;
- TQ_UINT16 row = 0;
- TQ_UINT16 colspan = 1;
- TQ_UINT16 rowspan = 1;
- TQ_UINT8 objectTag;
-
- in >> objectTag;
- while ( !in.atEnd() && objectTag != Object_End ) {
- switch ( objectTag ) {
- case Object_GridCell:
- unpackUInt16( in, column );
- unpackUInt16( in, row );
- unpackUInt16( in, colspan );
- unpackUInt16( in, rowspan );
- break;
- case Object_VariantProperty:
- unpackCString( strings, in, name );
- unpackVariant( strings, in, value );
-
- if ( name == "orientation" ) {
- vertical = ( value == "Vertical" );
- } else if ( name == "tqsizeHint" ) {
- w = value.toSize().width();
- h = value.toSize().height();
- } else if ( name == "sizeType" ) {
- sizeType = stringToSizeType( value.toString() );
- }
- break;
- default:
- qFatal( "Corrupt" );
- }
- in >> objectTag;
- }
-
- if ( parent != 0 ) {
- TQSpacerItem *spacer;
- if ( vertical ) {
- spacer = new TQSpacerItem( w, h, TQSizePolicy::Minimum, sizeType );
- } else {
- spacer = new TQSpacerItem( w, h, sizeType, TQSizePolicy::Minimum );
- }
-
- if ( parent->inherits("TQGridLayout") ) {
- ((TQGridLayout *) parent)->addMultiCell( spacer, row,
- row + rowspan - 1, column, column + colspan - 1,
- vertical ? Qt::AlignHCenter : Qt::AlignVCenter );
- } else {
- parent->addItem( spacer );
- }
- }
-}
-
-void TQWidgetFactory::inputColumnOrRow( const UibStrTable& strings,
- TQDataStream& in, TQObject *parent,
- bool isRow )
-{
- TQString text;
- TQPixmap pixmap;
- TQString field;
- bool clickable = TRUE;
- bool resizable = TRUE;
-
- TQCString name;
- TQVariant value;
- TQCString comment;
- TQString str;
- TQ_UINT8 objectTag;
-
- in >> objectTag;
- while ( !in.atEnd() && objectTag != Object_End ) {
- switch ( objectTag ) {
- case Object_TextProperty:
- unpackCString( strings, in, name );
- unpackCString( strings, in, value.asCString() );
- unpackCString( strings, in, comment );
- str = translate( value.asCString().data(), comment.data() );
-
- if ( name == "field" ) {
- field = str;
- } else if ( name == "text" ) {
- text = str;
- }
- break;
- case Object_VariantProperty:
- unpackCString( strings, in, name );
- unpackVariant( strings, in, value );
-
- if ( name == "clickable" ) {
- clickable = value.toBool();
- } else if ( name == "pixmap" ) {
- pixmap = value.asPixmap();
- } else if ( name == "resizable" ) {
- resizable = value.toBool();
- }
- break;
- default:
- qFatal( "Corrupt" );
- }
- in >> objectTag;
- }
-
- if ( parent != 0 ) {
- if ( parent->inherits("TQListView") ) {
- createListViewColumn( (TQListView *) parent, text, pixmap, clickable,
- resizable );
-#ifndef TQT_NO_TABLE
- } else if ( parent->inherits("TQTable") ) {
- createTableColumnOrRow( (TQTable *) parent, text, pixmap, field,
- isRow );
-#endif
- }
- }
-}
-
-void TQWidgetFactory::inputItem( const UibStrTable& strings, TQDataStream& in,
- TQObject *parent, TQListViewItem *parentItem )
-{
- TQStringList texts;
- TQValueList<TQPixmap> pixmaps;
- TQCString name;
- TQVariant value;
- TQCString comment;
- TQ_UINT8 objectTag;
-
- TQListView *listView = 0;
- if ( parent != 0 && parent->inherits("TQListView") )
- parent = TQT_TQOBJECT((TQListView *) parent);
- TQListViewItem *item = 0;
- if ( listView != 0 ) {
- if ( parentItem == 0 ) {
- item = new TQListViewItem( listView, d->lastItem );
- } else {
- item = new TQListViewItem( parentItem, d->lastItem );
- }
- d->lastItem = item;
- }
-
- in >> objectTag;
- while ( !in.atEnd() && objectTag != Object_End ) {
- switch ( objectTag ) {
- case Object_Item:
- if ( listView != 0 )
- d->lastItem->setOpen( TRUE );
- inputItem( strings, in, parent, item );
- break;
- case Object_TextProperty:
- unpackCString( strings, in, name );
- unpackCString( strings, in, value.asCString() );
- unpackCString( strings, in, comment );
-
- if ( name == "text" )
- texts << translate( value.asCString().data(), comment.data() );
- break;
- case Object_VariantProperty:
- unpackCString( strings, in, name );
- unpackVariant( strings, in, value );
-
- if ( name == "pixmap" )
- pixmaps << value.asPixmap();
- break;
- default:
- qFatal( "Corrupt" );
- }
- in >> objectTag;
- }
-
- if ( listView != 0 ) {
- int i = 0;
- TQStringList::ConstIterator t = texts.begin();
- while ( t != texts.end() ) {
- item->setText( i, *t );
- ++i;
- ++t;
- }
-
- int j = 0;
- TQValueList<TQPixmap>::ConstIterator p = pixmaps.begin();
- while ( p != pixmaps.end() ) {
- item->setPixmap( j, *p );
- ++j;
- ++p;
- }
- } else {
- TQString text = texts.last();
- TQPixmap pixmap = pixmaps.last();
-
- if ( parent != 0 ) {
- if ( parent->inherits("TQComboBox") ||
- parent->inherits("TQListBox") ) {
- TQListBox *listBox = (TQListBox *) parent->tqqt_cast( "TQListBox" );
- if ( listBox == 0 )
- listBox = ((TQComboBox *) parent)->listBox();
-
- if ( pixmap.isNull() ) {
- (void) new TQListBoxText( listBox, text );
- } else {
- (void) new TQListBoxPixmap( listBox, pixmap, text );
- }
- #ifndef TQT_NO_ICONVIEW
- } else if ( parent->inherits("TQIconView") ) {
- (void) new TQIconViewItem( (TQIconView *) parent, text, pixmap );
- #endif
- }
- }
- }
-}
-
-void TQWidgetFactory::inputMenuItem( TQObject **objects,
- const UibStrTable& strings, TQDataStream& in,
- TQMenuBar *menuBar )
-{
- TQCString name;
- TQCString text;
- TQ_UINT16 actionNo;
- TQ_UINT8 objectTag;
-
- unpackCString( strings, in, name );
- unpackCString( strings, in, text );
-
- TQPopupMenu *popupMenu = new TQPopupMenu( menuBar->parentWidget(), name );
-
- in >> objectTag;
- while ( !in.atEnd() && objectTag != Object_End ) {
- switch ( objectTag ) {
- case Object_ActionRef:
- unpackUInt16( in, actionNo );
- ((TQAction *) objects[actionNo])->addTo( popupMenu );
- break;
- case Object_Separator:
- popupMenu->insertSeparator();
- break;
- default:
- qFatal( "Corrupt" );
- }
- in >> objectTag;
- }
- menuBar->insertItem( translate(text.data()), popupMenu );
-}
-
-TQObject *TQWidgetFactory::inputObject( TQObject **objects, int& numObjects,
- const UibStrTable& strings,
- TQDataStream& in, TQWidget *ancestorWidget,
- TQObject *parent, TQCString className )
-{
- TQObject *obj = 0;
- TQWidget *widget = 0;
- TQLayout *tqlayout = 0;
- TQWidget *parentWidget = 0;
- TQLayout *parentLayout = 0;
-
- bool isTQObject = !className.isEmpty();
- if ( isTQObject ) {
- if ( parent != 0 ) {
- if ( parent->isWidgetType() ) {
- if ( parent->inherits("TQMainWindow") ) {
- parentWidget = ((TQMainWindow *) parent)->centralWidget();
- } else {
- parentWidget = (TQWidget *) parent;
- }
- } else if ( parent->inherits("TQLayout") ) {
- parentLayout = (TQLayout *) parent;
- parentWidget = ancestorWidget;
- }
- }
-
- if ( className == "TQAction" ) {
- unpackCString( strings, in, className );
- if ( className == "TQActionGroup" ) {
- obj = TQT_TQOBJECT(new TQActionGroup( parent ));
- } else {
- obj = TQT_TQOBJECT(new TQAction( parent ));
- }
- } else if ( className == "TQLayout" ) {
- unpackCString( strings, in, className );
- LayoutType type = Grid;
- if ( className == "TQHBoxLayout" ) {
- type = HBox;
- } else if ( className == "TQVBoxLayout" ) {
- type = VBox;
- }
- if ( parentLayout != 0 && parentLayout->inherits("TQGridLayout") ) {
- tqlayout = createLayout( 0, 0, type );
- } else {
- tqlayout = createLayout( parentWidget, parentLayout, type );
- }
- obj = TQT_TQOBJECT(tqlayout);
- } else if ( className == "TQMenuBar" ) {
- unpackCString( strings, in, className );
- widget = ((TQMainWindow *) parent)->menuBar();
- obj = TQT_TQOBJECT(widget);
- } else if ( className == "TQToolBar" ) {
- TQ_UINT8 dock;
- in >> dock;
- unpackCString( strings, in, className );
- widget = new TQToolBar( TQString(), (TQMainWindow *) parent,
- (TQt::TQt::Dock) dock );
- obj = TQT_TQOBJECT(widget);
- } else if ( className == "TQWidget" ) {
- unpackCString( strings, in, className );
- widget = createWidget( className, parentWidget, 0 );
- obj = TQT_TQOBJECT(widget);
- }
-
- if ( widget != 0 )
- ancestorWidget = widget;
- d->lastItem = 0;
- objects[numObjects++] = obj;
- }
-
- TQCString name;
- TQVariant value;
- TQCString comment;
- TQString str;
- TQ_UINT16 actionNo;
- int metAttribute = 0;
- TQ_UINT16 column = 0;
- TQ_UINT16 row = 0;
- TQ_UINT16 colspan = 1;
- TQ_UINT16 rowspan = 1;
- TQ_UINT8 paletteTag;
- TQ_UINT8 objectTag;
-
- in >> objectTag;
- while ( !in.atEnd() && objectTag != Object_End ) {
- switch ( objectTag ) {
- case Object_ActionRef:
- unpackUInt16( in, actionNo );
- ((TQAction *) objects[actionNo])->addTo( (TQToolBar *) widget );
- break;
- case Object_Attribute:
- metAttribute = 2;
- break;
- case Object_Column:
- inputColumnOrRow( strings, in, obj, FALSE );
- break;
- case Object_Event:
- unpackCString( strings, in, name );
- unpackVariant( strings, in, value );
- // ### do something with value.asStringList()
- break;
- case Object_FontProperty:
- {
- TQFont font;
- TQString family;
- TQ_UINT16 pointSize;
- TQ_UINT8 fontFlags;
-
- unpackCString( strings, in, name );
- in >> fontFlags;
-
- if ( fontFlags & Font_Family ) {
- unpackString( strings, in, family );
- font.setFamily( family );
- }
- if ( fontFlags & Font_PointSize ) {
- unpackUInt16( in, pointSize );
- font.setPointSize( pointSize );
- }
- if ( fontFlags & Font_Bold )
- font.setBold( TRUE );
- if ( fontFlags & Font_Italic )
- font.setItalic( TRUE );
- if ( fontFlags & Font_Underline )
- font.setUnderline( TRUE );
- if ( fontFlags & Font_StrikeOut )
- font.setStrikeOut( TRUE );
-
- if ( obj != 0 )
- setProperty( obj, name, font );
- }
- break;
- case Object_GridCell:
- unpackUInt16( in, column );
- unpackUInt16( in, row );
- unpackUInt16( in, colspan );
- unpackUInt16( in, rowspan );
- break;
- case Object_Item:
- inputItem( strings, in, obj );
- break;
- case Object_MenuItem:
- inputMenuItem( objects, strings, in, (TQMenuBar *) widget );
- break;
- case Object_PaletteProperty:
- {
- TQPalette palette;
- TQColorGroup tqcolorGroup;
- TQColor color;
- int role = -1;
-
- unpackCString( strings, in, name );
-
- in >> paletteTag;
- while ( !in.atEnd() && paletteTag != Palette_End ) {
- switch ( paletteTag ) {
- case Palette_Active:
- palette.setActive( tqcolorGroup );
- role = -1;
- break;
- case Palette_Inactive:
- palette.setInactive( tqcolorGroup );
- role = -1;
- break;
- case Palette_Disabled:
- palette.setDisabled( tqcolorGroup );
- role = -1;
- break;
- case Palette_Color:
- role++;
- in >> color;
- tqcolorGroup.setColor( (TQColorGroup::ColorRole) role,
- color );
- break;
- case Palette_Pixmap:
- unpackVariant( strings, in, value );
- tqcolorGroup.setBrush( (TQColorGroup::ColorRole) role,
- TQBrush(color, value.asPixmap()) );
- break;
- default:
- qFatal( "Corrupt" );
- }
- in >> paletteTag;
- }
- if ( obj != 0 )
- setProperty( obj, name, palette );
- }
- break;
- case Object_Row:
- inputColumnOrRow( strings, in, obj, TRUE );
- break;
- case Object_Spacer:
- inputSpacer( strings, in, tqlayout );
- break;
- case Object_Separator:
- ((TQToolBar *) widget)->addSeparator();
- break;
- case Object_SubAction:
- inputObject( objects, numObjects, strings, in, parentWidget,
- obj != 0 ? obj : parent, "TQAction" );
- break;
- case Object_SubLayout:
- inputObject( objects, numObjects, strings, in, parentWidget, obj,
- "TQLayout" );
- break;
- case Object_SubWidget:
- inputObject( objects, numObjects, strings, in, parentWidget, obj,
- "TQWidget" );
- break;
- case Object_TextProperty:
- unpackCString( strings, in, name );
- unpackCString( strings, in, value.asCString() );
- unpackCString( strings, in, comment );
- str = translate( value.asCString().data(), comment.data() );
-
- if ( metAttribute > 0 ) {
- if ( name == "title" ) {
- if ( parent != 0 ) {
- if ( parent->inherits("TQTabWidget") ) {
- ((TQTabWidget *) parent)->insertTab( widget, str );
- } else if ( parent->inherits("TQWizard") ) {
- ((TQWizard *) parent)->addPage( widget, str );
- }
- }
- }
- } else {
- if ( obj != 0 )
- setProperty( obj, name, str );
- }
- break;
- case Object_VariantProperty:
- unpackCString( strings, in, name );
- unpackVariant( strings, in, value );
-
- if ( metAttribute > 0 ) {
- if ( name == "id" ) {
- if ( parent != 0 && parent->inherits("TQWidgetStack") )
- ((TQWidgetStack *) parent)->addWidget( widget, value.toInt() );
- }
- } else {
- if ( obj != 0 )
- setProperty( obj, name, value );
- }
- break;
- default:
- qFatal( "Corrupt" );
- }
- in >> objectTag;
- metAttribute--;
- }
-
- if ( parentLayout != 0 ) {
- if ( widget != 0 ) {
- if ( parentLayout->inherits("TQGridLayout") ) {
- ((TQGridLayout *) parentLayout)->addMultiCellWidget(
- widget, row, row + rowspan - 1, column,
- column + colspan - 1 );
- } else {
- ((TQBoxLayout *) parentLayout)->addWidget( widget );
- }
- } else if ( tqlayout != 0 ) {
- if ( parentLayout->inherits("TQGridLayout") ) {
- ((TQGridLayout *) parentLayout)->addMultiCellLayout(
- tqlayout, row, row + rowspan - 1, column,
- column + colspan - 1 );
- }
- }
- }
- return obj;
-}
-
-TQWidget *TQWidgetFactory::createFromUibFile( TQDataStream& in,
- TQObject * /* connector */ , TQWidget *parent, const char *name )
-{
-#define END_OF_BLOCK() \
- ( in.atEnd() || in.tqdevice()->at() >= nextBlock )
-
- TQ_UINT8 lf;
- TQ_UINT8 cr;
- in >> lf;
- in >> cr;
- if ( lf != '\n' || cr != '\r' ) {
- qWarning( "File corrupted" );
- return 0;
- }
-
- TQ_UINT8 qdatastreamVersion;
- in >> qdatastreamVersion;
- if ( (int) qdatastreamVersion > in.version() ) {
- qWarning( "Incompatible version of TQt" );
- return 0;
- }
- in.setVersion( qdatastreamVersion );
-
- UibStrTable strings;
- TQObject **objects = 0;
- int numObjects = 0;
-
- TQ_UINT8 blockType;
- TQ_UINT32 blockSize;
-
- in >> blockType;
- while ( !in.atEnd() && blockType != Block_End ) {
- unpackUInt32( in, blockSize );
- TQIODevice::Offset nextBlock = in.tqdevice()->at() + blockSize;
-
- switch ( blockType ) {
- case Block_Actions:
- inputObject( objects, numObjects, strings, in, toplevel, TQT_TQOBJECT(toplevel) );
- break;
- case Block_Buddies:
- {
- TQ_UINT16 labelNo;
- TQ_UINT16 buddyNo;
-
- do {
- unpackUInt16( in, labelNo );
- unpackUInt16( in, buddyNo );
- TQLabel *label =
- (TQLabel *) objects[labelNo]->tqqt_cast( "TQLabel" );
- if ( label != 0 )
- label->setBuddy( (TQWidget *) objects[buddyNo] );
- } while ( !END_OF_BLOCK() );
- }
- break;
- case Block_Connections:
- {
- TQString language = "C++";
- TQ_UINT16 senderNo = 0;
- TQString signal = "clicked()";
- TQ_UINT16 receiverNo = 0;
- TQString slot = "accept()";
- TQ_UINT8 connectionFlags;
-
- do {
- in >> connectionFlags;
- if ( connectionFlags & Connection_Language )
- unpackString( strings, in, language );
- if ( connectionFlags & Connection_Sender )
- unpackUInt16( in, senderNo );
- if ( connectionFlags & Connection_Signal )
- unpackStringSplit( strings, in, signal );
- if ( connectionFlags & Connection_Receiver )
- unpackUInt16( in, receiverNo );
- if ( connectionFlags & Connection_Slot )
- unpackStringSplit( strings, in, slot );
- // ###
-#if 0
- qWarning( "connect( %p, %s, %p, %s )", objects[senderNo],
- signal.latin1(), objects[receiverNo],
- slot.latin1() );
-#endif
- } while ( !END_OF_BLOCK() );
- }
- break;
- case Block_Functions:
- // ###
- qWarning( "Block_Functions not supported" );
- in.tqdevice()->at( nextBlock );
- break;
- case Block_Images:
- {
- TQString format;
- TQ_UINT32 length;
- TQByteArray data;
- Image image;
-
- do {
- unpackString( strings, in, image.name );
- unpackString( strings, in, format );
- unpackUInt32( in, length );
- unpackByteArray( in, data );
- image.img = loadImageData( format, length, data );
- images += image;
- } while ( !END_OF_BLOCK() );
- }
- break;
- case Block_Intro:
- {
- TQ_INT16 defaultMargin;
- TQ_INT16 defaultSpacing;
- TQ_UINT16 maxObjects;
- TQ_UINT8 introFlags;
-
- in >> introFlags;
- in >> defaultMargin;
- in >> defaultSpacing;
- unpackUInt16( in, maxObjects );
- unpackCString( strings, in, d->translationContext );
-
- if ( introFlags & Intro_Pixmapinproject )
- usePixmapCollection = TRUE;
- if ( defaultMargin != -32768 )
- defMargin = defaultMargin;
- if ( defaultSpacing != -32768 )
- defSpacing = defaultSpacing;
- objects = new TQObject *[maxObjects];
- }
- break;
- case Block_Menubar:
- inputObject( objects, numObjects, strings, in, toplevel, TQT_TQOBJECT(toplevel),
- "TQMenuBar" );
- break;
- case Block_Slots:
- {
- TQString language;
- TQString slot;
-
- do {
- unpackString( strings, in, language );
- unpackStringSplit( strings, in, slot );
- } while ( !END_OF_BLOCK() );
- }
- break;
- case Block_Strings:
- strings.readBlock( in, blockSize );
- break;
- case Block_Tabstops:
- {
- TQ_UINT16 beforeNo;
- TQ_UINT16 afterNo;
-
- unpackUInt16( in, beforeNo );
- while ( !END_OF_BLOCK() ) {
- unpackUInt16( in, afterNo );
- toplevel->setTabOrder( (TQWidget *) objects[beforeNo],
- (TQWidget *) objects[afterNo] );
- beforeNo = afterNo;
- }
- }
- break;
- case Block_Toolbars:
- do {
- inputObject( objects, numObjects, strings, in, toplevel,
- TQT_TQOBJECT(toplevel), "TQToolBar" );
- } while ( !END_OF_BLOCK() );
- break;
- case Block_Variables:
- // ###
- qWarning( "Block_Variables not supported" );
- in.tqdevice()->at( nextBlock );
- break;
- case Block_Widget:
- toplevel = (TQWidget *)
- inputObject( objects, numObjects, strings, in, toplevel, TQT_TQOBJECT(parent),
- "TQWidget" );
- if ( toplevel != 0 )
- toplevel->setName( name );
- break;
- default:
- qWarning( "Version error" );
- return 0;
- }
- in >> blockType;
- }
- delete[] objects;
- return toplevel;
-}
-
-/*! Installs a widget factory \a factory, which normally contains
- additional widgets that can then be created using a TQWidgetFactory.
- See createWidget() for further details.
-*/
-
-void TQWidgetFactory::addWidgetFactory( TQWidgetFactory *factory )
-{
- widgetFactories.append( factory );
-}
-
-/*!
- Creates a widget of the type \a className passing \a parent and \a
- name to its constructor.
-
- If \a className is a widget in the TQt library, it is directly
- created by this function. If the widget isn't in the TQt library,
- each of the installed widget plugins is asked, in turn, to create
- the widget. As soon as a plugin says it can create the widget it
- is asked to do so. It may occur that none of the plugins can
- create the widget, in which case each installed widget factory is
- asked to create the widget (see addWidgetFactory()). If the widget
- cannot be created by any of these means, 0 is returned.
-
- If you have a custom widget, and want it to be created using the
- widget factory, there are two approaches you can use:
-
- \list 1
-
- \i Write a widget plugin. This allows you to use the widget in
- \e{TQt Designer} and in this TQWidgetFactory. See the widget plugin
- documentation for further details. (See the "Creating Custom
- Widgets with Plugins" section of the \link designer-manual.book TQt
- Designer manual\endlink for an example.
-
- \i Subclass TQWidgetFactory. Then reimplement this function to
- create and return an instance of your custom widget if \a
- className equals the name of your widget, otherwise return 0. Then
- at the beginning of your program where you want to use the widget
- factory to create widgets do a:
- \code
- TQWidgetFactory::addWidgetFactory( new MyWidgetFactory );
- \endcode
- where MyWidgetFactory is your TQWidgetFactory subclass.
-
- \endlist
-*/
-
-TQWidget *TQWidgetFactory::createWidget( const TQString &className, TQWidget *parent,
- const char *name ) const
-{
- // create widgets we know
- if ( className == "TQPushButton" ) {
- return new TQPushButton( parent, name );
- } else if ( className == "TQToolButton" ) {
- return new TQToolButton( parent, name );
- } else if ( className == "TQCheckBox" ) {
- return new TQCheckBox( parent, name );
- } else if ( className == "TQRadioButton" ) {
- return new TQRadioButton( parent, name );
- } else if ( className == "TQGroupBox" ) {
- return new TQGroupBox( parent, name );
- } else if ( className == "TQButtonGroup" ) {
- return new TQButtonGroup( parent, name );
- } else if ( className == "TQIconView" ) {
-#if !defined(TQT_NO_ICONVIEW)
- return new TQIconView( parent, name );
-#endif
- } else if ( className == "TQTable" ) {
-#if !defined(TQT_NO_TABLE)
- return new TQTable( parent, name );
-#endif
- } else if ( className == "TQListBox" ) {
- return new TQListBox( parent, name );
- } else if ( className == "TQListView" ) {
- return new TQListView( parent, name );
- } else if ( className == "TQLineEdit" ) {
- return new TQLineEdit( parent, name );
- } else if ( className == "TQSpinBox" ) {
- return new TQSpinBox( parent, name );
- } else if ( className == "TQMultiLineEdit" ) {
- return new TQMultiLineEdit( parent, name );
- } else if ( className == "TQLabel" || className == "TextLabel" || className == "PixmapLabel" ) {
- return new TQLabel( parent, name );
- } else if ( className == "TQLayoutWidget" ) {
- return new TQWidget( parent, name );
- } else if ( className == "TQTabWidget" ) {
- return new TQTabWidget( parent, name );
- } else if ( className == "TQComboBox" ) {
- return new TQComboBox( FALSE, parent, name );
- } else if ( className == "TQWidget" ) {
- if ( !qwf_stays_on_top )
- return new TQWidget( parent, name );
- return new TQWidget( parent, name, TQt::WStyle_StaysOnTop );
- } else if ( className == "TQDialog" ) {
- if ( !qwf_stays_on_top )
- return new TQDialog( parent, name );
- return new TQDialog( parent, name, FALSE, (WFlags)TQt::WStyle_StaysOnTop );
- } else if ( className == "TQWizard" ) {
- return new TQWizard( parent, name );
- } else if ( className == "TQLCDNumber" ) {
- return new TQLCDNumber( parent, name );
- } else if ( className == "TQProgressBar" ) {
- return new TQProgressBar( parent, name );
- } else if ( className == "TQTextView" ) {
- return new TQTextView( parent, name );
- } else if ( className == "TQTextBrowser" ) {
- return new TQTextBrowser( parent, name );
- } else if ( className == "TQDial" ) {
- return new TQDial( parent, name );
- } else if ( className == "TQSlider" ) {
- return new TQSlider( parent, name );
- } else if ( className == "TQFrame" ) {
- return new TQFrame( parent, name );
- } else if ( className == "TQSplitter" ) {
- return new TQSplitter( parent, name );
- } else if ( className == "Line" ) {
- TQFrame *f = new TQFrame( parent, name );
- f->setFrameStyle( TQFrame::HLine | TQFrame::Sunken );
- return f;
- } else if ( className == "TQTextEdit" ) {
- return new TQTextEdit( parent, name );
- } else if ( className == "TQDateEdit" ) {
- return new TQDateEdit( parent, name );
- } else if ( className == "TQTimeEdit" ) {
- return new TQTimeEdit( parent, name );
- } else if ( className == "TQDateTimeEdit" ) {
- return new TQDateTimeEdit( parent, name );
- } else if ( className == "TQScrollBar" ) {
- return new TQScrollBar( parent, name );
- } else if ( className == "TQPopupMenu" ) {
- return new TQPopupMenu( parent, name );
- } else if ( className == "TQWidgetStack" ) {
- return new TQWidgetStack( parent, name );
- } else if ( className == "TQToolBox" ) {
- return new TQToolBox( parent, name );
- } else if ( className == "TQVBox" ) {
- return new TQVBox( parent, name );
- } else if ( className == "TQHBox" ) {
- return new TQHBox( parent, name );
- } else if ( className == "TQGrid" ) {
- return new TQGrid( 4, parent, name );
- } else if ( className == "TQMainWindow" ) {
- TQMainWindow *mw = 0;
- if ( !qwf_stays_on_top )
- mw = new TQMainWindow( parent, name );
- else
- mw = new TQMainWindow( parent, name, (WFlags)(TQt::WType_TopLevel | TQt::WStyle_StaysOnTop) );
- mw->setCentralWidget( new TQWidget( mw, "qt_central_widget" ) );
- mw->centralWidget()->show();
- (void)mw->statusBar();
- return mw;
-
- }
-#if !defined(TQT_NO_SQL)
- else if ( className == "TQDataTable" ) {
- return new TQDataTable( parent, name );
- } else if ( className == "TQDataBrowser" ) {
- return new TQDesignerDataBrowser2( parent, name );
- } else if ( className == "TQDataView" ) {
- return new TQDesignerDataView2( parent, name );
- }
-#endif
-
- setupPluginDir();
- // try to create it using the loaded widget plugins
- if ( !widgetInterfaceManager )
- widgetInterfaceManager =
- new TQPluginManager<WidgetInterface>( IID_Widget, TQApplication::libraryPaths(),
- *qwf_plugin_dir );
-
- TQInterfacePtr<WidgetInterface> iface = 0;
- widgetInterfaceManager->queryInterface( className, &iface );
- if ( iface ) {
- TQWidget *w = iface->create( className, parent, name );
- if ( w ) {
- d->customWidgets.replace( className.latin1(), new bool(TRUE) );
- return w;
- }
- }
-
- // hope we have a factory which can do it
- for ( TQWidgetFactory* f = widgetFactories.first(); f; f = widgetFactories.next() ) {
- TQWidget *w = f->createWidget( className, parent, name );
- if ( w )
- return w;
- }
-
- // no success
- return 0;
-}
-
-/*! Returns the names of the widgets this factory can create. */
-
-TQStringList TQWidgetFactory::widgets()
-{
- setupWidgetListAndMap();
- return *availableWidgetList;
-}
-
-/*! Returns TRUE if the widget factory can create the specified \a widget;
-otherwise returns FALSE. */
-
-bool TQWidgetFactory::supportsWidget( const TQString &widget )
-{
- setupWidgetListAndMap();
- return ( availableWidgetMap->find( widget ) != availableWidgetMap->end() );
-}
-
-TQWidget *TQWidgetFactory::createWidgetInternal( const TQDomElement &e, TQWidget *parent,
- TQLayout* tqlayout, const TQString &classNameArg )
-{
- d->lastItem = 0;
- TQDomElement n = e.firstChild().toElement();
- TQWidget *w = 0; // the widget that got created
- TQObject *obj = 0; // gets the properties
-
- TQString className = classNameArg;
-
- int row = e.attribute( "row" ).toInt();
- int col = e.attribute( "column" ).toInt();
- int rowspan = e.attribute( "rowspan" ).toInt();
- int colspan = e.attribute( "colspan" ).toInt();
- if ( rowspan < 1 )
- rowspan = 1;
- if ( colspan < 1 )
- colspan = 1;
-
- bool isTQLayoutWidget = FALSE;
-
- if ( !className.isEmpty() ) {
- if ( !tqlayout && className == "TQLayoutWidget" ) {
- className = "TQWidget";
- isTQLayoutWidget = TRUE;
- }
- if ( tqlayout && className == "TQLayoutWidget" ) {
- // hide tqlayout widgets
- w = parent;
- } else {
- obj = TQT_TQOBJECT(TQWidgetFactory::createWidget( className, parent, 0 ));
- if ( !obj )
- return 0;
- w = (TQWidget*)obj;
- if ( !toplevel )
- toplevel = w;
- if ( w->inherits( "TQMainWindow" ) )
- w = ( (TQMainWindow*)w )->centralWidget();
- if ( tqlayout ) {
- switch( layoutType( tqlayout ) ) {
- case HBox:
- ( (TQHBoxLayout*)tqlayout )->addWidget( w );
- break;
- case VBox:
- ( (TQVBoxLayout*)tqlayout )->addWidget( w );
- break;
- case Grid:
- ( (TQGridLayout*)tqlayout )->addMultiCellWidget( w, row, row + rowspan - 1,
- col, col + colspan - 1 );
- break;
- default:
- break;
- }
- }
-
- tqlayout = 0;
- }
- }
-#ifdef TQT_CONTAINER_CUSTOM_WIDGETS
- TQString parentClassName = parent ? parent->className() : 0;
- bool isPlugin = parent ? !!d->customWidgets.find( parent->className() ) : FALSE;
- if ( isPlugin )
- qWarning( "####### loading custom container widgets without page support not implemented!" );
- // ### TODO loading for custom container widgets without pages
-#endif
-
- int idx = 0;
- while ( !n.isNull() ) {
- if ( n.tagName() == "spacer" ) {
- createSpacer( n, tqlayout );
- } else if ( n.tagName() == "widget" ) {
- TQMap< TQString, TQString> *oldDbControls = dbControls;
- createWidgetInternal( n, w, tqlayout, n.attribute( "class", "TQWidget" ) );
- dbControls = oldDbControls;
- } else if ( n.tagName() == "hbox" ) {
- TQLayout *parentLayout = tqlayout;
- if ( tqlayout && tqlayout->inherits( "TQGridLayout" ) )
- tqlayout = createLayout( 0, 0, TQWidgetFactory::HBox, isTQLayoutWidget );
- else
- tqlayout = createLayout( w, tqlayout, TQWidgetFactory::HBox, isTQLayoutWidget );
- obj = TQT_TQOBJECT(tqlayout);
- n = n.firstChild().toElement();
- if ( parentLayout && parentLayout->inherits( "TQGridLayout" ) )
- ( (TQGridLayout*)parentLayout )->addMultiCellLayout( tqlayout, row,
- row + rowspan - 1, col, col + colspan - 1 );
- continue;
- } else if ( n.tagName() == "grid" ) {
- TQLayout *parentLayout = tqlayout;
- if ( tqlayout && tqlayout->inherits( "TQGridLayout" ) )
- tqlayout = createLayout( 0, 0, TQWidgetFactory::Grid, isTQLayoutWidget );
- else
- tqlayout = createLayout( w, tqlayout, TQWidgetFactory::Grid, isTQLayoutWidget );
- obj = TQT_TQOBJECT(tqlayout);
- n = n.firstChild().toElement();
- if ( parentLayout && parentLayout->inherits( "TQGridLayout" ) )
- ( (TQGridLayout*)parentLayout )->addMultiCellLayout( tqlayout, row,
- row + rowspan - 1, col, col + colspan - 1 );
- continue;
- } else if ( n.tagName() == "vbox" ) {
- TQLayout *parentLayout = tqlayout;
- if ( tqlayout && tqlayout->inherits( "TQGridLayout" ) )
- tqlayout = createLayout( 0, 0, TQWidgetFactory::VBox, isTQLayoutWidget );
- else
- tqlayout = createLayout( w, tqlayout, TQWidgetFactory::VBox, isTQLayoutWidget );
- obj = TQT_TQOBJECT(tqlayout);
- n = n.firstChild().toElement();
- if ( parentLayout && parentLayout->inherits( "TQGridLayout" ) )
- ( (TQGridLayout*)parentLayout )->addMultiCellLayout( tqlayout, row,
- row + rowspan - 1, col, col + colspan - 1 );
- continue;
- } else if ( n.tagName() == "property" && obj ) {
- setProperty( obj, n.attribute( "name" ), n.firstChild().toElement() );
- } else if ( n.tagName() == "attribute" && w ) {
- TQString attrib = n.attribute( "name" );
- TQVariant v = DomTool::elementToVariant( n.firstChild().toElement(), TQVariant() );
- if ( parent ) {
- if ( parent->inherits( "TQTabWidget" ) ) {
- if ( attrib == "title" )
- ( (TQTabWidget*)parent )->insertTab( w, translate( v.toString() ) );
- } else if ( parent->inherits( "TQWidgetStack" ) ) {
- if ( attrib == "id" )
- ( (TQWidgetStack*)parent )->addWidget( w, v.toInt() );
- } else if ( parent->inherits( "TQToolBox" ) ) {
- if ( attrib == "label" )
- ( (TQToolBox*)parent )->addItem( w, v.toString() );
- } else if ( parent->inherits( "TQWizard" ) ) {
- if ( attrib == "title" )
- ( (TQWizard*)parent )->addPage( w, translate( v.toString() ) );
-#ifdef TQT_CONTAINER_CUSTOM_WIDGETS
- } else if ( isPlugin ) {
- if ( attrib == "label" ) {
- WidgetInterface *iface = 0;
- widgetInterfaceManager->queryInterface( parentClassName, &iface );
- if ( iface ) {
- TQWidgetContainerInterfacePrivate *iface2 = 0;
- iface->queryInterface( IID_TQWidgetContainer,
- (TQUnknownInterface**)&iface2 );
- if ( iface2 ) {
- iface2->insertPage( parentClassName,
- (TQWidget*)parent, translate( v.toString() ), -1, w );
- iface2->release();
- }
- iface->release();
- }
- }
-#endif
- }
- }
- } else if ( n.tagName() == "item" ) {
- createItem( n, w );
- } else if ( n.tagName() == "column" || n.tagName() == "row" ) {
- createColumn( n, w );
- }
-
- n = n.nextSibling().toElement();
- idx++;
- }
-
- return w;
-}
-
-TQLayout *TQWidgetFactory::createLayout( TQWidget *widget, TQLayout* tqlayout,
- LayoutType type, bool isTQLayoutWidget )
-{
- int spacing = defSpacing;
- int margin = defMargin;
-
- if ( tqlayout || !widget || isTQLayoutWidget )
- margin = 0;
-
- if ( !tqlayout && widget && widget->inherits( "TQTabWidget" ) )
- widget = ((TQTabWidget*)widget)->currentPage();
-
- if ( !tqlayout && widget && widget->inherits( "TQWizard" ) )
- widget = ((TQWizard*)widget)->currentPage();
-
- if ( !tqlayout && widget && widget->inherits( "TQWidgetStack" ) )
- widget = ((TQWidgetStack*)widget)->visibleWidget();
-
- if ( !tqlayout && widget && widget->inherits( "TQToolBox" ) )
- widget = ((TQToolBox*)widget)->currentItem();
-
- TQLayout *l = 0;
- int align = 0;
- if ( !tqlayout && widget && widget->inherits( "TQGroupBox" ) ) {
- TQGroupBox *gb = (TQGroupBox*)widget;
- gb->setColumnLayout( 0, Qt::Vertical );
- tqlayout = gb->tqlayout();
- tqlayout->setMargin( 0 );
- tqlayout->setSpacing( 0 );
- align = TQt::AlignTop;
- }
- if ( tqlayout ) {
- switch ( type ) {
- case HBox:
- l = new TQHBoxLayout( tqlayout );
- break;
- case VBox:
- l = new TQVBoxLayout( tqlayout );
- break;
- case Grid:
- l = TQT_TQLAYOUT(new TQGridLayout( tqlayout ));
- break;
- default:
- return 0;
- }
- } else {
- switch ( type ) {
- case HBox:
- l = new TQHBoxLayout( widget );
- break;
- case VBox:
- l = new TQVBoxLayout( widget );
- break;
- case Grid:
- l = TQT_TQLAYOUT(new TQGridLayout( widget ));
- break;
- default:
- return 0;
- }
- }
- l->setAlignment( (Qt::AlignmentFlag)align );
- l->setMargin( margin );
- l->setSpacing( spacing );
- return l;
-}
-
-TQWidgetFactory::LayoutType TQWidgetFactory::layoutType( TQLayout *tqlayout ) const
-{
- if ( tqlayout->inherits( "TQHBoxLayout" ) )
- return HBox;
- else if ( tqlayout->inherits( "TQVBoxLayout" ) )
- return VBox;
- else if ( tqlayout->inherits( "TQGridLayout" ) )
- return Grid;
- return NoLayout;
-}
-
-void TQWidgetFactory::setProperty( TQObject* obj, const TQString &prop,
- TQVariant value )
-{
- int offset = obj->tqmetaObject()->findProperty( prop, TRUE );
-
- if ( offset != -1 ) {
- if ( prop == "geometry" && TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(toplevel) ) {
- toplevel->resize( value.toRect().size() );
- } else if ( prop == "accel" ) {
- obj->setProperty( prop, TQVariant(value.toKeySequence()) );
- } else {
- if ( value.type() == TQVariant::String ||
- value.type() == TQVariant::CString ) {
- const TQMetaProperty *metaProp =
- obj->tqmetaObject()->property( offset, TRUE );
- if ( metaProp != 0 && metaProp->isEnumType() ) {
- if ( metaProp->isSetType() ) {
- TQStrList flagsCStr;
- TQStringList flagsStr =
- TQStringList::split( '|', value.asString() );
- TQStringList::ConstIterator f = flagsStr.begin();
- while ( f != flagsStr.end() ) {
- flagsCStr.append( *f );
- ++f;
- }
- value = TQVariant( metaProp->keysToValue(flagsCStr) );
- } else {
- TQCString key = value.toCString();
- value = TQVariant( metaProp->keyToValue(key) );
- }
- }
- }
- obj->setProperty( prop, value );
- }
- } else {
- if ( obj->isWidgetType() ) {
- if ( prop == "toolTip" ) {
- if ( !value.toString().isEmpty() )
- TQToolTip::add( (TQWidget*)obj, translate( value.toString() ) );
- } else if ( prop == "whatsThis" ) {
- if ( !value.toString().isEmpty() )
- TQWhatsThis::add( (TQWidget*)obj, translate( value.toString() ) );
- } else if ( prop == "buddy" ) {
- buddies.insert( obj->name(), value.toCString() );
- } else if ( prop == "buttonGroupId" ) {
- if ( obj->inherits( "TQButton" ) && obj->parent()->inherits( "TQButtonGroup" ) )
- ( (TQButtonGroup*)obj->parent() )->insert( (TQButton*)obj, value.toInt() );
-#ifndef TQT_NO_SQL
- } else if ( prop == "database" && !obj->inherits( "TQDataView" )
- && !obj->inherits( "TQDataBrowser" ) ) {
- const TQStringList& lst = value.asStringList();
- if ( lst.count() > 2 ) {
- if ( dbControls )
- dbControls->insert( obj->name(), lst[ 2 ] );
- } else if ( lst.count() == 2 ) {
- dbTables.insert( obj->name(), lst );
- }
- } else if ( prop == "database" ) {
- const TQStringList& lst = value.asStringList();
- if ( lst.count() == 2 && obj->inherits( "TQWidget" ) ) {
- SqlWidgetConnection conn( lst[ 0 ], lst[ 1 ] );
- sqlWidgetConnections.insert( (TQWidget*)obj, conn );
- dbControls = conn.dbControls;
- }
-#endif
- } else if ( prop == "frameworkCode" ) {
- if ( value.isValid() && !value.toBool() )
- noDatabaseWidgets << obj->name();
- }
- }
- }
-}
-
-void TQWidgetFactory::setProperty( TQObject* widget, const TQString &prop, const TQDomElement &e )
-{
- TQString comment;
- TQVariant value( DomTool::elementToVariant( e, TQVariant(), comment ) );
-
- if ( e.tagName() == "string" ) {
- value = translate( value.asString(), comment );
- } else if ( e.tagName() == "pixmap" ) {
- TQPixmap pix = loadPixmap( value.toString() );
- if ( !pix.isNull() )
- value = pix;
- } else if ( e.tagName() == "iconset" ) {
- TQPixmap pix = loadPixmap( value.toString() );
- if ( !pix.isNull() )
- value = TQIconSet( pix );
- } else if ( e.tagName() == "image" ) {
- value = loadFromCollection( value.toString() );
- } else if ( e.tagName() == "palette" ) {
- TQDomElement n = e.firstChild().toElement();
- TQPalette p;
- while ( !n.isNull() ) {
- TQColorGroup cg;
- if ( n.tagName() == "active" ) {
- cg = loadColorGroup( n );
- p.setActive( cg );
- } else if ( n.tagName() == "inactive" ) {
- cg = loadColorGroup( n );
- p.setInactive( cg );
- } else if ( n.tagName() == "disabled" ) {
- cg = loadColorGroup( n );
- p.setDisabled( cg );
- }
- n = n.nextSibling().toElement();
- }
- value = p;
- }
- setProperty( widget, prop, value );
-}
-
-void TQWidgetFactory::createSpacer( const TQDomElement &e, TQLayout *tqlayout )
-{
- TQDomElement n = e.firstChild().toElement();
- int row = e.attribute( "row" ).toInt();
- int col = e.attribute( "column" ).toInt();
- int rowspan = e.attribute( "rowspan" ).toInt();
- int colspan = e.attribute( "colspan" ).toInt();
-
- Qt::Orientation orient = Qt::Horizontal;
- int w = 0, h = 0;
- TQSizePolicy::SizeType sizeType = TQSizePolicy::Preferred;
- while ( !n.isNull() ) {
- if ( n.tagName() == "property" ) {
- TQString prop = n.attribute( "name" );
- if ( prop == "orientation" ) {
- if ( n.firstChild().firstChild().toText().data() == "Horizontal" )
- orient = Qt::Horizontal;
- else
- orient = Qt::Vertical;
- } else if ( prop == "sizeType" ) {
- sizeType = stringToSizeType( n.firstChild().firstChild().toText().data() );
- } else if ( prop == "tqsizeHint" ) {
- w = n.firstChild().firstChild().firstChild().toText().data().toInt();
- h = n.firstChild().firstChild().nextSibling().firstChild().toText().data().toInt();
- }
- }
- n = n.nextSibling().toElement();
- }
-
- if ( rowspan < 1 )
- rowspan = 1;
- if ( colspan < 1 )
- colspan = 1;
- TQSpacerItem *item = new TQSpacerItem( w, h, orient == Qt::Horizontal ? sizeType : TQSizePolicy::Minimum,
- orient == Qt::Vertical ? sizeType : TQSizePolicy::Minimum );
- if ( tqlayout ) {
- if ( tqlayout->inherits( "TQBoxLayout" ) )
- ( (TQBoxLayout*)tqlayout )->addItem( TQT_TQLAYOUTITEM(item) );
- else
- ( (TQGridLayout*)tqlayout )->addMultiCell( item, row, row + rowspan - 1, col, col + colspan - 1,
- orient == Qt::Horizontal ? Qt::AlignVCenter : Qt::AlignHCenter );
- }
-}
-
-static TQImage loadImageData( TQDomElement &n2 )
-{
- TQString format = n2.attribute( "format", "PNG" );
- TQString hex = n2.firstChild().toText().data();
- int n = hex.length() / 2;
- TQByteArray data( n );
- for ( int i = 0; i < n; i++ )
- data[i] = (char) hex.mid( 2 * i, 2 ).toUInt( 0, 16 );
- return loadImageData( format, n2.attribute("length").toULong(), data );
-}
-
-void TQWidgetFactory::loadImageCollection( const TQDomElement &e )
-{
- TQDomElement n = e.firstChild().toElement();
- while ( !n.isNull() ) {
- if ( n.tagName() == "image" ) {
- Image img;
- img.name = n.attribute( "name" );
- TQDomElement n2 = n.firstChild().toElement();
- while ( !n2.isNull() ) {
- if ( n2.tagName() == "data" )
- img.img = loadImageData( n2 );
- n2 = n2.nextSibling().toElement();
- }
- images.append( img );
- n = n.nextSibling().toElement();
- }
- }
-}
-
-TQImage TQWidgetFactory::loadFromCollection( const TQString &name )
-{
- TQValueList<Image>::Iterator it = images.begin();
- for ( ; it != images.end(); ++it ) {
- if ( ( *it ).name == name )
- return ( *it ).img;
- }
- return TQImage();
-}
-
-TQPixmap TQWidgetFactory::loadPixmap( const TQString& name )
-{
- TQPixmap pix;
- if ( usePixmapCollection ) {
- const TQMimeSource *m = TQT_TQMIMESOURCE_CONST(TQMimeSourceFactory::defaultFactory()->data( name ));
- if ( m )
- TQImageDrag::decode( m, pix );
- } else {
- pix.convertFromImage( loadFromCollection(name) );
- }
- return pix;
-}
-
-TQPixmap TQWidgetFactory::loadPixmap( const TQDomElement &e )
-{
- return loadPixmap( e.firstChild().toText().data() );
-}
-
-TQColorGroup TQWidgetFactory::loadColorGroup( const TQDomElement &e )
-{
- TQColorGroup cg;
- int r = -1;
- TQDomElement n = e.firstChild().toElement();
- TQColor col;
- while ( !n.isNull() ) {
- if ( n.tagName() == "color" ) {
- r++;
- cg.setColor( (TQColorGroup::ColorRole)r, (col = DomTool::readColor( n ) ) );
- } else if ( n.tagName() == "pixmap" ) {
- TQPixmap pix = loadPixmap( n );
- cg.setBrush( (TQColorGroup::ColorRole)r, TQBrush( col, pix ) );
- }
- n = n.nextSibling().toElement();
- }
- return cg;
-}
-
-struct Connection
-{
- TQObject *sender, *receiver;
- TQCString signal, slot;
- bool operator==( const Connection &c ) const {
- return sender == c.sender && receiver == c.receiver &&
- signal == c.signal && slot == c.slot ;
- }
-
- Connection() : sender( 0 ), receiver( 0 ) { }
-};
-
-class NormalizeObject : public TQObject
-{
-public:
- NormalizeObject() : TQObject() {}
- static TQCString normalizeSignalSlot( const char *signalSlot ) { return TQObject::normalizeSignalSlot( signalSlot ); }
-};
-
-void TQWidgetFactory::loadConnections( const TQDomElement &e, TQObject *connector )
-{
- TQDomElement n = e.firstChild().toElement();
- while ( !n.isNull() ) {
- if ( n.tagName() == "connection" ) {
- TQString lang = n.attribute( "language", "C++" );
- TQDomElement n2 = n.firstChild().toElement();
- Connection conn;
- while ( !n2.isNull() ) {
- if ( n2.tagName() == "sender" ) {
- TQString name = n2.firstChild().toText().data();
- if ( name == "this" || qstrcmp( toplevel->name(), name ) == 0 ) {
- conn.sender = TQT_TQOBJECT(toplevel);
- } else {
- if ( name == "this" )
- name = toplevel->name();
- TQObjectList *l = toplevel->queryList( 0, name, FALSE );
- if ( l ) {
- if ( l->first() )
- conn.sender = l->first();
- delete l;
- }
- }
- if ( !conn.sender )
- conn.sender = findAction( name );
- } else if ( n2.tagName() == "signal" ) {
- conn.signal = n2.firstChild().toText().data();
- } else if ( n2.tagName() == "receiver" ) {
- TQString name = n2.firstChild().toText().data();
- if ( name == "this" || qstrcmp( toplevel->name(), name ) == 0 ) {
- conn.receiver = TQT_TQOBJECT(toplevel);
- } else {
- TQObjectList *l = toplevel->queryList( 0, name, FALSE );
- if ( l ) {
- if ( l->first() )
- conn.receiver = l->first();
- delete l;
- }
- }
- } else if ( n2.tagName() == "slot" ) {
- conn.slot = n2.firstChild().toText().data();
- }
- n2 = n2.nextSibling().toElement();
- }
-
- conn.signal = NormalizeObject::normalizeSignalSlot( conn.signal );
- conn.slot = NormalizeObject::normalizeSignalSlot( conn.slot );
-
- if ( !conn.sender || !conn.receiver ) {
- n = n.nextSibling().toElement();
- continue;
- }
-
- TQObject *sender = 0, *receiver = 0;
- TQObjectList *l = toplevel->queryList( 0, conn.sender->name(), FALSE );
- if ( qstrcmp( conn.sender->name(), toplevel->name() ) == 0 ) {
- sender = TQT_TQOBJECT(toplevel);
- } else {
- if ( !l || !l->first() ) {
- delete l;
- n = n.nextSibling().toElement();
- continue;
- }
- sender = l->first();
- delete l;
- }
- if ( !sender )
- sender = findAction( conn.sender->name() );
-
- if ( qstrcmp( conn.receiver->name(), toplevel->name() ) == 0 ) {
- receiver = TQT_TQOBJECT(toplevel);
- } else {
- l = toplevel->queryList( 0, conn.receiver->name(), FALSE );
- if ( !l || !l->first() ) {
- delete l;
- n = n.nextSibling().toElement();
- continue;
- }
- receiver = l->first();
- delete l;
- }
-
- TQString s = "2""%1";
- s = s.arg( TQT_TQSTRING(conn.signal) );
- TQString s2 = "1""%1";
- s2 = s2.arg( TQT_TQSTRING(conn.slot) );
-
- TQStrList signalList = sender->tqmetaObject()->signalNames( TRUE );
- TQStrList slotList = receiver->tqmetaObject()->slotNames( TRUE );
-
- // if this is a connection to a custom slot and we have a connector, try this as receiver
- if ( slotList.find( conn.slot ) == -1 && TQT_BASE_OBJECT(receiver) == TQT_BASE_OBJECT(toplevel) && connector ) {
- slotList = connector->tqmetaObject()->slotNames( TRUE );
- receiver = connector;
- }
-
- // avoid warnings
- if ( signalList.find( conn.signal ) == -1 ||
- slotList.find( conn.slot ) == -1 ) {
- n = n.nextSibling().toElement();
- continue;
- }
- TQObject::connect( sender, s, receiver, s2 );
- }
- n = n.nextSibling().toElement();
- }
-}
-
-void TQWidgetFactory::loadTabOrder( const TQDomElement &e )
-{
- TQWidget *last = 0;
- TQDomElement n = e.firstChild().toElement();
- while ( !n.isNull() ) {
- if ( n.tagName() == "tabstop" ) {
- TQString name = n.firstChild().toText().data();
- TQObjectList *l = toplevel->queryList( 0, name, FALSE );
- if ( l ) {
- if ( l->first() ) {
- TQWidget *w = (TQWidget*)l->first();
- if ( last )
- toplevel->setTabOrder( last, w );
- last = w;
- }
- delete l;
- }
- }
- n = n.nextSibling().toElement();
- }
-}
-
-void TQWidgetFactory::createListViewColumn( TQListView *lv, const TQString& txt,
- const TQPixmap& pix, bool clickable,
- bool resizable )
-{
- if ( pix.isNull() ) {
- lv->addColumn( txt );
- } else {
- lv->addColumn( pix, txt );
- }
-
- int i = lv->header()->count() - 1;
- if ( !pix.isNull() )
- lv->header()->setLabel( i, pix, txt );
- if ( !clickable )
- lv->header()->setClickEnabled( clickable, i );
- if ( !resizable )
- lv->header()->setResizeEnabled( resizable, i );
-}
-
-#ifndef TQT_NO_TABLE
-void TQWidgetFactory::createTableColumnOrRow( TQTable *table, const TQString& txt,
- const TQPixmap& pix,
- const TQString& field, bool isRow )
-{
-#ifndef TQT_NO_SQL
- bool isSql = table->inherits( "TQDataTable" );
-#endif
- if ( isRow )
- table->setNumRows( table->numRows() + 1 );
- else {
-#ifndef TQT_NO_SQL
- if ( !isSql )
-#endif
- table->setNumCols( table->numCols() + 1 );
- }
-
- TQValueList<Field> fieldMap;
- if ( fieldMaps.find( table ) != fieldMaps.end() ) {
- fieldMap = *fieldMaps.find( table );
- fieldMaps.remove( table );
- }
-
- int i = isRow ? table->numRows() - 1 : table->numCols() - 1;
- TQHeader *h = !isRow ? table->horizontalHeader() : table->verticalHeader();
- if ( !pix.isNull() ) {
-#ifndef TQT_NO_SQL
- if ( isSql )
- ((TQDataTable*)table)->addColumn( field, txt, -1, pix );
- else
-#endif
- h->setLabel( i, pix, txt );
- } else {
-#ifndef TQT_NO_SQL
- if ( isSql )
- ((TQDataTable*)table)->addColumn( field, txt );
- else
-#endif
- h->setLabel( i, txt );
- }
- if ( !isRow && !field.isEmpty() ) {
- fieldMap.append( Field( txt, pix, field ) );
- fieldMaps.insert( table, fieldMap );
- }
-
-}
-#endif
-
-void TQWidgetFactory::createColumn( const TQDomElement &e, TQWidget *widget )
-{
- if ( widget->inherits( "TQListView" ) && e.tagName() == "column" ) {
- TQListView *lv = (TQListView*)widget;
- TQDomElement n = e.firstChild().toElement();
- TQPixmap pix;
- TQString txt;
- bool clickable = TRUE, resizable = TRUE;
- while ( !n.isNull() ) {
- if ( n.tagName() == "property" ) {
- TQString attrib = n.attribute( "name" );
- TQVariant v = DomTool::elementToVariant( n.firstChild().toElement(), TQVariant() );
- if ( attrib == "text" )
- txt = translate( v.toString() );
- else if ( attrib == "pixmap" )
- pix = loadPixmap( n.firstChild().toElement().toElement() );
- else if ( attrib == "clickable" )
- clickable = v.toBool();
- else if ( attrib == "resizable" || attrib == "resizeable" )
- resizable = v.toBool();
- }
- n = n.nextSibling().toElement();
- }
- createListViewColumn( lv, txt, pix, clickable, resizable );
- }
-#ifndef TQT_NO_TABLE
- else if ( widget->inherits( "TQTable" ) ) {
- TQTable *table = (TQTable*)widget;
-
- TQDomElement n = e.firstChild().toElement();
- TQPixmap pix;
- TQString txt;
- TQString field;
-
- while ( !n.isNull() ) {
- if ( n.tagName() == "property" ) {
- TQString attrib = n.attribute( "name" );
- TQVariant v = DomTool::elementToVariant( n.firstChild().toElement(), TQVariant() );
- if ( attrib == "text" )
- txt = translate( v.toString() );
- else if ( attrib == "pixmap" ) {
- if ( !n.firstChild().firstChild().toText().data().isEmpty() )
- pix = loadPixmap( n.firstChild().toElement().toElement() );
- } else if ( attrib == "field" )
- field = translate( v.toString() );
- }
- n = n.nextSibling().toElement();
- }
- createTableColumnOrRow( table, txt, pix, field, e.tagName() == "row" );
- }
-#endif
-}
-
-void TQWidgetFactory::loadItem( const TQDomElement &e, TQPixmap &pix, TQString &txt, bool &hasPixmap )
-{
- TQDomElement n = e;
- hasPixmap = FALSE;
- while ( !n.isNull() ) {
- if ( n.tagName() == "property" ) {
- TQString attrib = n.attribute( "name" );
- TQVariant v = DomTool::elementToVariant( n.firstChild().toElement(), TQVariant() );
- if ( attrib == "text" )
- txt = translate( v.toString() );
- else if ( attrib == "pixmap" ) {
- pix = loadPixmap( n.firstChild().toElement() );
- hasPixmap = !pix.isNull();
- }
- }
- n = n.nextSibling().toElement();
- }
-}
-
-void TQWidgetFactory::createItem( const TQDomElement &e, TQWidget *widget, TQListViewItem *i )
-{
- if ( widget->inherits( "TQListBox" ) || widget->inherits( "TQComboBox" ) ) {
- TQDomElement n = e.firstChild().toElement();
- TQPixmap pix;
- bool hasPixmap = FALSE;
- TQString txt;
- loadItem( n, pix, txt, hasPixmap );
- TQListBox *lb = 0;
- if ( widget->inherits( "TQListBox" ) ) {
- lb = (TQListBox*)widget;
- } else {
- TQComboBox *cb = (TQComboBox*)widget;
- lb = cb->listBox();
- if (!lb) {
- lb = new TQListBox(cb);
- cb->setListBox(lb);
- }
- }
- if ( hasPixmap ) {
- new TQListBoxPixmap( lb, pix, txt );
- } else {
- new TQListBoxText( lb, txt );
- }
-#ifndef TQT_NO_ICONVIEW
- } else if ( widget->inherits( "TQIconView" ) ) {
- TQDomElement n = e.firstChild().toElement();
- TQPixmap pix;
- bool hasPixmap = FALSE;
- TQString txt;
- loadItem( n, pix, txt, hasPixmap );
-
- TQIconView *iv = (TQIconView*)widget;
- new TQIconViewItem( iv, txt, pix );
-#endif
- } else if ( widget->inherits( "TQListView" ) ) {
- TQDomElement n = e.firstChild().toElement();
- TQPixmap pix;
- TQValueList<TQPixmap> pixmaps;
- TQStringList textes;
- TQListViewItem *item = 0;
- TQListView *lv = (TQListView*)widget;
- if ( i )
- item = new TQListViewItem( i, d->lastItem );
- else
- item = new TQListViewItem( lv, d->lastItem );
- while ( !n.isNull() ) {
- if ( n.tagName() == "property" ) {
- TQString attrib = n.attribute( "name" );
- TQVariant v = DomTool::elementToVariant( n.firstChild().toElement(), TQVariant() );
- if ( attrib == "text" )
- textes << translate( v.toString() );
- else if ( attrib == "pixmap" ) {
- TQString s = v.toString();
- if ( s.isEmpty() ) {
- pixmaps << TQPixmap();
- } else {
- pix = loadPixmap( n.firstChild().toElement() );
- pixmaps << pix;
- }
- }
- } else if ( n.tagName() == "item" ) {
- item->setOpen( TRUE );
- createItem( n, widget, item );
- }
-
- n = n.nextSibling().toElement();
- }
-
- for ( int i = 0; i < lv->columns(); ++i ) {
- item->setText( i, textes[ i ] );
- item->setPixmap( i, pixmaps[ i ] );
- }
- d->lastItem = item;
- }
-}
-
-
-
-void TQWidgetFactory::loadChildAction( TQObject *parent, const TQDomElement &e )
-{
- TQDomElement n = e;
- TQAction *a = 0;
- bool hasMenuText = FALSE;
- if ( n.tagName() == "action" ) {
- a = new TQAction( parent );
- TQDomElement n2 = n.firstChild().toElement();
-
- while ( !n2.isNull() ) {
- if ( n2.tagName() == "property" ) {
- TQString prop(n2.attribute("name"));
- if (prop == "menuText")
- hasMenuText = TRUE;
- setProperty( a, prop, n2.firstChild().toElement() );
- }
- n2 = n2.nextSibling().toElement();
- }
- if ( !parent->inherits( "TQAction" ) )
- actionList.append( a );
- } else if ( n.tagName() == "actiongroup" ) {
- a = new TQActionGroup( parent );
- TQDomElement n2 = n.firstChild().toElement();
- while ( !n2.isNull() ) {
- if ( n2.tagName() == "property" ) {
- TQString prop(n2.attribute("name"));
- if (prop == "menuText")
- hasMenuText = TRUE;
- setProperty( a, prop, n2.firstChild().toElement() );
- } else if ( n2.tagName() == "action" ||
- n2.tagName() == "actiongroup" ) {
- loadChildAction( a, n2 );
-
- }
- n2 = n2.nextSibling().toElement();
- }
- if ( !parent->inherits( "TQAction" ) )
- actionList.append( a );
- }
-
- if (a && !hasMenuText && !a->text().isEmpty() && uiFileVersion < "3.3")
- a->setMenuText(a->text());
-}
-
-void TQWidgetFactory::loadActions( const TQDomElement &e )
-{
- TQDomElement n = e.firstChild().toElement();
- while ( !n.isNull() ) {
- if ( n.tagName() == "action" ) {
- loadChildAction( TQT_TQOBJECT(toplevel), n );
- } else if ( n.tagName() == "actiongroup" ) {
- loadChildAction( TQT_TQOBJECT(toplevel), n );
- }
- n = n.nextSibling().toElement();
- }
-}
-
-void TQWidgetFactory::loadToolBars( const TQDomElement &e )
-{
- TQDomElement n = e.firstChild().toElement();
- TQMainWindow *mw = ( (TQMainWindow*)toplevel );
- TQToolBar *tb = 0;
- while ( !n.isNull() ) {
- if ( n.tagName() == "toolbar" ) {
- TQt::TQt::Dock dock = (TQt::TQt::Dock)n.attribute( "dock" ).toInt();
- tb = new TQToolBar( TQString(), mw, dock );
- tb->setLabel( n.attribute( "label" ) );
- tb->setName( n.attribute( "name" ) );
- TQDomElement n2 = n.firstChild().toElement();
- while ( !n2.isNull() ) {
- if ( n2.tagName() == "action" ) {
- TQAction *a = findAction( n2.attribute( "name" ) );
- if ( a )
- a->addTo( tb );
- } else if ( n2.tagName() == "separator" ) {
- tb->addSeparator();
- } else if ( n2.tagName() == "widget" ) {
- (void)createWidgetInternal( n2, tb, 0, n2.attribute( "class", "TQWidget" ) );
- } else if ( n2.tagName() == "property" ) {
- setProperty( TQT_TQOBJECT(tb), n2.attribute( "name" ), n2.firstChild().toElement() );
- }
- n2 = n2.nextSibling().toElement();
- }
- }
- n = n.nextSibling().toElement();
- }
-}
-
-void TQWidgetFactory::loadMenuBar( const TQDomElement &e )
-{
- TQDomElement n = e.firstChild().toElement();
- TQMainWindow *mw = ( (TQMainWindow*)toplevel );
- TQMenuBar *mb = mw->menuBar();
- while ( !n.isNull() ) {
- if ( n.tagName() == "item" ) {
- TQPopupMenu *popup = new TQPopupMenu( mw );
- loadPopupMenu( popup, n );
- popup->setName( n.attribute( "name" ) );
- mb->insertItem( translate( n.attribute( "text" ) ), popup );
- } else if ( n.tagName() == "property" ) {
- setProperty( TQT_TQOBJECT(mb), n.attribute( "name" ), n.firstChild().toElement() );
- } else if ( n.tagName() == "separator" ) {
- mb->insertSeparator();
- }
- n = n.nextSibling().toElement();
- }
-}
-
-void TQWidgetFactory::loadPopupMenu( TQPopupMenu *p, const TQDomElement &e )
-{
- TQMainWindow *mw = ( (TQMainWindow*)toplevel );
- TQDomElement n = e.firstChild().toElement();
- while ( !n.isNull() ) {
- if ( n.tagName() == "action" || n.tagName() == "actiongroup" ) {
- TQAction *a = findAction( n.attribute( "name" ) );
- TQDomElement n2 = n.nextSibling().toElement();
- if ( n2.tagName() == "item") { // load submenu
- TQPopupMenu *popup = new TQPopupMenu( mw );
- popup->setName( n2.attribute( "name" ) );
- if ( a ) {
- p->setAccel( a->accel(), p->insertItem( a->iconSet(),
- translate( n2.attribute( "text" ).utf8().data() ),
- popup ) );
- } else {
- p->insertItem( translate( n2.attribute( "text" ).utf8().data() ), popup );
- }
- loadPopupMenu( popup, n2 );
- n = n2;
- } else {
- if ( a ) {
- a->addTo( p );
- }
- }
- a = 0;
- } else if ( n.tagName() == "separator" ) {
- p->insertSeparator();
- }
- n = n.nextSibling().toElement();
- }
-}
-
-// compatibility with early 3.0 betas
-// ### remove for 4.0
-void TQWidgetFactory::loadFunctions( const TQDomElement & )
-{
-}
-
-TQAction *TQWidgetFactory::findAction( const TQString &name )
-{
- for ( TQAction *a = actionList.first(); a; a = actionList.next() ) {
- if ( TQString( a->name() ) == name )
- return a;
- TQAction *ac = (TQAction*)a->child( name.latin1(), "TQAction" );
- if ( ac )
- return ac;
- }
- return 0;
-}
-
-/*!
- If you use a pixmap collection (which is the default for new
- projects) rather than saving the pixmaps within the .ui XML file,
- you must load the pixmap collection. TQWidgetFactory looks in the
- default TQMimeSourceFactory for the pixmaps. Either add it there
- manually, or call this function and specify the directory where
- the images can be found, as \a dir. This is normally the
- directory called \c images in the project's directory.
-*/
-
-void TQWidgetFactory::loadImages( const TQString &dir )
-{
- TQDir d( dir );
- TQStringList l = d.entryList( TQDir::Files );
- for ( TQStringList::Iterator it = l.begin(); it != l.end(); ++it )
- TQMimeSourceFactory::defaultFactory()->setPixmap( *it, TQPixmap( d.path() + "/" + *it, "PNG" ) );
-
-}
-
-void TQWidgetFactory::loadExtraSource()
-{
- if ( !qwf_language || !languageInterfaceManager )
- return;
- TQString lang = *qwf_language;
- LanguageInterface *iface = 0;
- languageInterfaceManager->queryInterface( lang, &iface );
- if ( !iface )
- return;
- TQFile f( qwf_currFileName + iface->formCodeExtension() );
- if ( f.open( IO_ReadOnly ) ) {
- TQTextStream ts( &f );
- code = ts.read();
- }
-}
-
-TQString TQWidgetFactory::translate( const TQString& sourceText, const TQString& comment )
-{
- return tqApp->translate( d->translationContext, sourceText.utf8(), comment.utf8(),
- TQApplication::UnicodeUTF8 );
-}
-
-TQString TQWidgetFactory::translate( const char *sourceText, const char *comment )
-{
- return tqApp->translate( d->translationContext, sourceText, comment,
- TQApplication::UnicodeUTF8 );
-}
diff --git a/tqtinterface/qt4/tools/designer/uilib/tqwidgetfactory.h b/tqtinterface/qt4/tools/designer/uilib/tqwidgetfactory.h
deleted file mode 100644
index bc4bd7c..0000000
--- a/tqtinterface/qt4/tools/designer/uilib/tqwidgetfactory.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/**********************************************************************
-** Copyright (C) 2005-2008 Trolltech ASA. All rights reserved.
-**
-** This file is part of TQt Designer.
-**
-** 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 Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** 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@trolltech.com.
-**
-** Licensees holding valid TQt Commercial licenses may use this file in
-** accordance with the TQt Commercial License Agreement provided with
-** the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#ifndef TQWIDGETFACTORY_H
-#define TQWIDGETFACTORY_H
-
-#ifndef TQT_H
-#include <tqstring.h>
-#include <tqptrlist.h>
-#include <tqimage.h>
-#include <tqpixmap.h>
-#include <tqvaluelist.h>
-#include <tqmap.h>
-#include <tqaction.h>
-#endif // TQT_H
-
-class TQDomDocument;
-class TQDomElement;
-class TQLayout;
-class TQListView;
-class TQListViewItem;
-class TQMenuBar;
-class TQTable;
-class TQWidget;
-class TQWidgetFactoryPrivate;
-class UibStrTable;
-
-class TQWidgetFactory
-{
-public:
- TQWidgetFactory();
- virtual ~TQWidgetFactory();
-
- static TQWidget *create( const TQString &uiFile, TQObject *connector = 0, TQWidget *parent = 0, const char *name = 0 );
- static TQWidget *create( TQIODevice *dev, TQObject *connector = 0, TQWidget *parent = 0, const char *name = 0 );
- inline static TQWidget *create( TQFile *dev, TQObject *connector = 0, TQWidget *parent = 0, const char *name = 0 ) { return create(TQT_TQIODEVICE(dev), connector, parent, name); }
- static void addWidgetFactory( TQWidgetFactory *factory );
- static void loadImages( const TQString &dir );
-
- virtual TQWidget *createWidget( const TQString &className, TQWidget *parent, const char *name ) const;
- static TQStringList widgets();
- static bool supportsWidget( const TQString &widget );
-
-private:
- enum LayoutType { HBox, VBox, Grid, NoLayout };
- void loadImageCollection( const TQDomElement &e );
- void loadConnections( const TQDomElement &e, TQObject *connector );
- void loadTabOrder( const TQDomElement &e );
- TQWidget *createWidgetInternal( const TQDomElement &e, TQWidget *parent, TQLayout* tqlayout, const TQString &classNameArg );
- TQLayout *createLayout( TQWidget *widget, TQLayout* tqlayout, LayoutType type, bool isTQLayoutWidget = FALSE );
- LayoutType layoutType( TQLayout *l ) const;
- void setProperty( TQObject* widget, const TQString &prop, TQVariant value );
- void setProperty( TQObject* widget, const TQString &prop, const TQDomElement &e );
- void createSpacer( const TQDomElement &e, TQLayout *tqlayout );
- TQImage loadFromCollection( const TQString &name );
- TQPixmap loadPixmap( const TQString &name );
- TQPixmap loadPixmap( const TQDomElement &e );
- TQColorGroup loadColorGroup( const TQDomElement &e );
- void createListViewColumn( TQListView *lv, const TQString& txt,
- const TQPixmap& pix, bool clickable,
- bool resizable );
-#ifndef TQT_NO_TABLE
- void createTableColumnOrRow( TQTable *table, const TQString& txt,
- const TQPixmap& pix, const TQString& field,
- bool isRow );
-#endif
- void createColumn( const TQDomElement &e, TQWidget *widget );
- void loadItem( const TQDomElement &e, TQPixmap &pix, TQString &txt, bool &hasPixmap );
- void createItem( const TQDomElement &e, TQWidget *widget, TQListViewItem *i = 0 );
- void loadChildAction( TQObject *parent, const TQDomElement &e );
- void loadActions( const TQDomElement &e );
- void loadToolBars( const TQDomElement &e );
- void loadMenuBar( const TQDomElement &e );
- void loadPopupMenu( TQPopupMenu *p, const TQDomElement &e );
- void loadFunctions( const TQDomElement &e );
- TQAction *findAction( const TQString &name );
- void loadExtraSource();
- TQString translate( const char *sourceText, const char *comment = "" );
- TQString translate( const TQString& sourceText, const TQString& comment = TQString() );
-
- void unpackUInt16( TQDataStream& in, TQ_UINT16& n );
- void unpackUInt32( TQDataStream& in, TQ_UINT32& n );
- void unpackByteArray( TQDataStream& in, TQByteArray& array );
- void unpackCString( const UibStrTable& strings, TQDataStream& in,
- TQCString& cstr );
- void unpackString( const UibStrTable& strings, TQDataStream& in,
- TQString& str );
- void unpackStringSplit( const UibStrTable& strings, TQDataStream& in,
- TQString& str );
- void unpackVariant( const UibStrTable& strings, TQDataStream& in,
- TQVariant& value );
- void inputSpacer( const UibStrTable& strings, TQDataStream& in,
- TQLayout *parent );
- void inputColumnOrRow( const UibStrTable& strings, TQDataStream& in,
- TQObject *parent, bool isRow );
- void inputItem( const UibStrTable& strings, TQDataStream& in,
- TQObject *parent, TQListViewItem *parentItem = 0 );
- void inputMenuItem( TQObject **objects, const UibStrTable& strings,
- TQDataStream& in, TQMenuBar *menuBar );
- TQObject *inputObject( TQObject **objects, int& numObjects,
- const UibStrTable& strings, TQDataStream& in,
- TQWidget *ancestorWidget, TQObject *parent,
- TQCString className = "" );
- TQWidget *createFromUiFile( TQDomDocument doc, TQObject *connector,
- TQWidget *parent, const char *name );
- TQWidget *createFromUibFile( TQDataStream& in, TQObject *connector,
- TQWidget *parent, const char *name );
-
-private:
- struct Image {
- TQImage img;
- TQString name;
- bool operator==( const Image &i ) const {
- return ( i.name == name &&
- i.img == img );
- }
- };
-
- struct Field
- {
- Field() {}
- Field( const TQString &s1, const TQPixmap &p, const TQString &s2 ) : name( s1 ), pix( p ), field( s2 ) {}
- TQString name;
- TQPixmap pix;
- TQString field;
- TQ_DUMMY_COMPARISON_OPERATOR( Field )
- };
-
- struct SqlWidgetConnection
- {
- SqlWidgetConnection() {}
- SqlWidgetConnection( const TQString &c, const TQString &t )
- : conn( c ), table( t ), dbControls( new TQMap<TQString, TQString>() ) {}
- TQString conn;
- TQString table;
- TQMap<TQString, TQString> *dbControls;
- TQ_DUMMY_COMPARISON_OPERATOR( SqlWidgetConnection )
- };
-
- TQValueList<Image> images;
- TQWidget *toplevel;
- TQWidgetFactoryPrivate *d;
- TQMap<TQString, TQString> *dbControls;
- TQMap<TQString, TQStringList> dbTables;
- TQMap<TQWidget*, SqlWidgetConnection> sqlWidgetConnections;
- TQMap<TQString, TQString> buddies;
- TQMap<TQTable*, TQValueList<Field> > fieldMaps;
- TQPtrList<TQAction> actionList;
- TQMap<TQString, TQString> languageSlots;
- TQStringList noDatabaseWidgets;
- bool usePixmapCollection;
- int defMargin;
- int defSpacing;
- TQString code;
- TQString uiFileVersion;
-};
-
-#endif
diff --git a/tqtinterface/qt4/tools/designer/uilib/uilib.pro b/tqtinterface/qt4/tools/designer/uilib/uilib.pro
deleted file mode 100644
index 35fff6e..0000000
--- a/tqtinterface/qt4/tools/designer/uilib/uilib.pro
+++ /dev/null
@@ -1,30 +0,0 @@
-TEMPLATE = lib
-CONFIG += qt warn_on release
-win32:CONFIG += static
-win32:CONFIG -= dll
-SOURCES = tqwidgetfactory.cpp \
- ../shared/domtool.cpp \
- ../shared/uib.cpp
-
-HEADERS = ../shared/domtool.h \
- ../shared/uib.h
-
-sql:SOURCES += ../designer/database.cpp
-sql:HEADERS += ../designer/database2.h
-
-DEFINES += QT_INTERNAL_XML
-!win32-borland:DEFINES += Q_TEMPLATE_EXTERN=extern
-include( ../../../src/qt_professional.pri )
-TARGET = qui
-INCLUDEPATH += ../shared
-DESTDIR = ../../../lib
-VERSION = 1.0.0
-DEFINES += RESOURCE
-
-unix {
- target.path=$$libs.path
-
- INSTALLS += target
-}
-
-mac:QMAKE_LFLAGS_PREBIND = -prebind -seg1addr 0xB9000000