summaryrefslogtreecommitdiffstats
path: root/kdevdesigner/designer/formwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdevdesigner/designer/formwindow.cpp')
-rw-r--r--kdevdesigner/designer/formwindow.cpp2773
1 files changed, 0 insertions, 2773 deletions
diff --git a/kdevdesigner/designer/formwindow.cpp b/kdevdesigner/designer/formwindow.cpp
deleted file mode 100644
index 4e5bc09d..00000000
--- a/kdevdesigner/designer/formwindow.cpp
+++ /dev/null
@@ -1,2773 +0,0 @@
-/**********************************************************************
-** Copyright (C) 2000 Trolltech AS. All rights reserved.
-**
-** This file is part of TQt 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.
-**
-** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition
-** 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
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
-** information about TQt Commercial License Agreements.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#include "formwindow.h"
-#include "defs.h"
-#include "mainwindow.h"
-#include "widgetfactory.h"
-#include "sizehandle.h"
-#include "metadatabase.h"
-#include "resource.h"
-#include "tqlayout.h"
-#include "connectiondialog.h"
-#include <widgetdatabase.h>
-#include "pixmapchooser.h"
-#include "orderindicator.h"
-#include "hierarchyview.h"
-#include "designerappiface.h"
-#include "menubareditor.h"
-#define NO_STATIC_COLORS
-#include "globaldefs.h"
-
-#include <stdlib.h>
-
-#include <kiconloader.h>
-#include <tdelocale.h>
-#include "kdevdesigner_part.h"
-
-#include <tqevent.h>
-#include <tqpainter.h>
-#include <tqpen.h>
-#include <tqlabel.h>
-#include <tqobjectlist.h>
-#include <tqtimer.h>
-#include <tqapplication.h>
-#include <tqlayout.h>
-#include <tqspinbox.h>
-#include <tqstatusbar.h>
-#include <tqapplication.h>
-#include <tqpalette.h>
-#include <tqmessagebox.h>
-#include <tqpopupmenu.h>
-#include <tqsizegrip.h>
-#include <tqpushbutton.h>
-#include <tqwhatsthis.h>
-#include <tqmetaobject.h>
-#include <tqtooltip.h>
-#include <tqfeatures.h>
-#include <tqaccel.h>
-#include <tqpixmapcache.h>
-#include <tqbitmap.h>
-#include <tqsplitter.h>
-
-// FormWindow should be able to work to some limited degree
-// (existance, loading) without a MainWindow. Functions which require
-// a MainWindow in theory should never be called if no MainWindow
-// exists. These macros are used to let us know if that happens anyway
-// and to ensure that we don't crash
-#define CHECK_MAINWINDOW Q_ASSERT( mainWindow() ); if ( !mainWindow() ) return
-#define CHECK_MAINWINDOW_VALUE( v ) Q_ASSERT( mainWindow() ); if ( !mainWindow() ) return v
-
-static void setCursorToAll( const TQCursor &c, TQWidget *start )
-{
- start->setCursor( c );
- TQObjectList l = start->childrenListObject();
- if ( !l.isEmpty() ) {
- for ( TQObject *o = l.first(); o; o = l.next() ) {
- if ( o->isWidgetType() && !::tqqt_cast<SizeHandle*>(o) )
- setCursorToAll( c, ( (TQWidget*)o ) );
- }
- }
-}
-
-static void restoreCursors( TQWidget *start, FormWindow *fw )
-{
- if ( fw->widgets()->find( start ) )
- start->setCursor( MetaDataBase::cursor( start ) );
- else
- start->setCursor( TQt::ArrowCursor );
- TQObjectList l = start->childrenListObject();
- if ( !l.isEmpty() ) {
- for ( TQObject *o = l.first(); o; o = l.next() ) {
- if ( o->isWidgetType() && !::tqqt_cast<SizeHandle*>(o) )
- restoreCursors( ( (TQWidget*)o ), fw );
- }
- }
-}
-
-#if defined(TQ_WS_WIN32) // #### needed for the workaround for repaint problem on windows
-#include <tqt_windows.h>
-static void flickerfree_update( TQWidget *w )
-{
- InvalidateRect( w->winId(), 0, FALSE );
-}
-#endif
-
-/*!
- \class FormWindow formwindow.h
- \brief Editor window for a form
-
- The FormWindow is the widget which is used as editor for forms. It
- handles inserting, deleting, moving, resizing, etc. of widgets.
-
- Normally multiple formwindows are used at the same time in the
- Designer. So each formwindow has its own undo/redo buffer, etc.
-
- Also the formwindow has some signals to inform e.g. about selection
- changes which is interesting for the PropertyEditor.
-
- For handling the events of the child widgets (moving, etc.) the
- handleMousePress(), etc. functions are called from the application
- event filter which is implemented in MainWindow::eventFilter().
-*/
-
-FormWindow::FormWindow( FormFile *f, MainWindow *mw, TQWidget *parent, const char *name )
- : TQWidget( parent, name, WDestructiveClose ), mainwindow( mw ),
- commands( 100 ), pixInline( TRUE ), pixProject( FALSE )
-{
- ff = f;
- init();
- initSlots();
-}
-
-FormWindow::FormWindow( FormFile *f, TQWidget *parent, const char *name )
- : TQWidget( parent, name, WDestructiveClose ), mainwindow( 0 ),
- commands( 100 ), pixInline( TRUE )
-{
- ff = f;
- init();
-}
-
-void FormWindow::init()
-{
- setWFlags(getWFlags() & TQt::WStyle_Maximize);
-
- fake = qstrcmp( name(), "qt_fakewindow" ) == 0;
- MetaDataBase::addEntry( TQT_TQOBJECT(this) );
- ff->setFormWindow( this );
- iface = 0;
- proj = 0;
- propertyWidget = 0;
- toolFixed = FALSE;
- checkedSelectionsForMove = FALSE;
- mContainer = 0;
- startWidget = endWidget = 0;
- currTool = POINTER_TOOL;
- unclippedPainter = 0;
- widgetPressed = FALSE;
- drawRubber = FALSE;
- setFocusPolicy( TQ_ClickFocus );
- sizePreviewLabel = 0;
- checkSelectionsTimer = new TQTimer( this, "checkSelectionsTimer" );
- connect( checkSelectionsTimer, TQT_SIGNAL( timeout() ),
- this, TQT_SLOT( invalidCheckedSelections() ) );
- updatePropertiesTimer = new TQTimer( this );
- connect( updatePropertiesTimer, TQT_SIGNAL( timeout() ),
- this, TQT_SLOT( updatePropertiesTimerDone() ) );
- showPropertiesTimer = new TQTimer( this );
- //!!!!
- connect( showPropertiesTimer, TQT_SIGNAL( timeout() ),
- this, TQT_SLOT( showPropertiesTimerDone() ) );
- selectionChangedTimer = new TQTimer( this );
- connect( selectionChangedTimer, TQT_SIGNAL( timeout() ),
- this, TQT_SLOT( selectionChangedTimerDone() ) );
- windowsRepaintWorkaroundTimer = new TQTimer( this );
- connect( windowsRepaintWorkaroundTimer, TQT_SIGNAL( timeout() ),
- this, TQT_SLOT( windowsRepaintWorkaroundTimerTimeout() ) );
- insertParent = 0;
- connect( &commands, TQT_SIGNAL( undoRedoChanged( bool, bool, const TQString &, const TQString & ) ),
- this, TQT_SIGNAL( undoRedoChanged( bool, bool, const TQString &, const TQString & ) ) );
- propShowBlocked = FALSE;
-
- setIcon( SmallIcon( "designer_form.png" , KDevDesignerPartFactory::instance()) );
-
- connect( &commands, TQT_SIGNAL( modificationChanged( bool ) ),
- this, TQT_SLOT( modificationChanged( bool ) ) );
- buffer = 0;
-
- TQWidget *w = WidgetFactory::create( WidgetDatabase::idFromClassName( TQFRAME_OBJECT_NAME_STRING ), this );
- setMainContainer( w );
- propertyWidget = TQT_TQOBJECT(w);
- targetContainer = 0;
- hadOwnPalette = FALSE;
-
- defSpacing = BOXLAYOUT_DEFAULT_SPACING;
- defMargin = BOXLAYOUT_DEFAULT_MARGIN;
- hasLayoutFunc = FALSE;
-}
-
-void FormWindow::setMainWindow( MainWindow *w )
-{
- mainwindow = w;
- MetaDataBase::addEntry( TQT_TQOBJECT(this) );
- initSlots();
-}
-
-void FormWindow::initSlots()
-{
- if ( isFake() )
- return;
- Q_ASSERT( project() || MainWindow::self );
- if ( !project() && !MainWindow::self )
- return;
- Project *p = project() ? project() : MainWindow::self->currProject();
- if ( p && p->isCpp() ) {
- TQString code = formFile()->code();
- if ( code.isEmpty() )
- formFile()->setCode( formFile()->codeComment() );
- }
-}
-
-FormWindow::~FormWindow()
-{
- if ( MainWindow::self && MainWindow::self->objectHierarchy()->formWindow() == this )
- MainWindow::self->objectHierarchy()->setFormWindow( 0, 0 );
-
- MetaDataBase::clear( TQT_TQOBJECT(this) );
- if ( ff )
- ff->setFormWindow( 0 );
- delete iface;
-}
-
-void FormWindow::closeEvent( TQCloseEvent *e )
-{
- TQGuardedPtr<FormWindow> that = this;
- if ( ff->closeEvent() && ( !that || ( mainwindow && mainwindow->unregisterClient( this ) ) ) )
- e->accept();
- else
- e->ignore();
-}
-
-void FormWindow::paintGrid( TQWidget *w, TQPaintEvent *e )
-{
- if ( !mainWindow() || !mainWindow()->showGrid() )
- return;
- TQPixmap grid;
- TQString grid_name;
- grid_name.sprintf("FormWindowGrid_%d_%d", mainWindow()->grid().x(), mainWindow()->grid().y());
- if( !TQPixmapCache::find( grid_name, grid ) ) {
- grid = TQPixmap( 350 + ( 350 % mainWindow()->grid().x() ), 350 + ( 350 % mainWindow()->grid().y() ) );
- grid.fill( colorGroup().color( TQColorGroup::Foreground ) );
- TQBitmap mask( grid.width(), grid.height() );
- mask.fill( color0 );
- TQPainter p( &mask );
- p.setPen( color1 );
- for ( int y = 0; y < grid.width(); y += mainWindow()->grid().y()) {
- for ( int x = 0; x < grid.height(); x += mainWindow()->grid().x() ) {
- p.drawPoint( x, y );
- }
- }
- grid.setMask( mask );
- TQPixmapCache::insert( grid_name, grid );
- }
- TQPainter p( w );
- p.setClipRegion( e->rect() );
- p.drawTiledPixmap( TQRect( 0, 0, width(), height() ), grid );
-}
-
-/*! For operations like drawing a rubber band or drawing the rect
- when inserting a new widget, a unclipped painter (which draws also
- on child widgets) is needed. This method does all the initialization.
-*/
-
-void FormWindow::beginUnclippedPainter( bool doNot )
-{
- endUnclippedPainter();
- bool unclipped = testWFlags( WPaintUnclipped );
- setWFlags( WPaintUnclipped );
- unclippedPainter = new TQPainter;
- unclippedPainter->begin( this );
- if ( !unclipped )
- clearWFlags( WPaintUnclipped );
- if ( doNot ) {
- unclippedPainter->setPen( TQPen( color0, 2 ) );
- unclippedPainter->setRasterOp( NotROP );
- }
-}
-
-/*!
- Gets rid of an open unclipped painter.
-
- \sa beginUnclippedPainter()
-*/
-
-void FormWindow::endUnclippedPainter()
-{
- if ( unclippedPainter )
- unclippedPainter->end();
- delete unclippedPainter;
- unclippedPainter = 0;
-}
-
-TQPoint FormWindow::gridPoint( const TQPoint &p )
-{
- return TQPoint( ( p.x() / grid().x() ) * grid().x(),
- ( p.y() / grid().y() ) * grid().y() );
-}
-
-void FormWindow::drawSizePreview( const TQPoint &pos, const TQString& text )
-{
- unclippedPainter->save();
- unclippedPainter->setPen( TQPen( colorGroup().foreground(), 1 ));
- unclippedPainter->setRasterOp( CopyROP );
- if ( !sizePreviewPixmap.isNull() )
- unclippedPainter->drawPixmap( sizePreviewPos, sizePreviewPixmap );
- if ( text.isNull() ) {
- sizePreviewPixmap = TQPixmap(); // set null again
- unclippedPainter->restore();
- return;
- }
- TQRect r = fontMetrics().boundingRect( 0, 0, 0, 0, AlignCenter, text );
- r = TQRect( pos + TQPoint( 10, 10 ), r.size() + TQSize( 5, 5 ) );
-
- checkPreviewGeometry( r );
-
- sizePreviewPos = r.topLeft();
- sizePreviewPixmap = TQPixmap::grabWindow( winId(), r.x(), r.y(), r.width(), r.height() );
- unclippedPainter->setBrush( TQColor( 255, 255, 128 ) );
- unclippedPainter->drawRect( r );
- unclippedPainter->drawText( r, AlignCenter, text );
- unclippedPainter->restore();
-}
-
-void FormWindow::insertWidget()
-{
- CHECK_MAINWINDOW;
- if ( !insertParent )
- return;
-
- if ( currTool == POINTER_TOOL )
- return;
-
- bool useSizeHint = !oldRectValid || ( currRect.width() < 2 && currRect.height() < 2 );
- Qt::Orientation orient =Qt::Horizontal;
- TQString n = WidgetDatabase::className( currTool );
- if ( useSizeHint && ( n == "Spacer" || n == TQSLIDER_OBJECT_NAME_STRING || n == "Line" || n == TQSCROLLBAR_OBJECT_NAME_STRING ) ) {
- TQPopupMenu m( mainWindow() );
- m.insertItem( i18n( "&Horizontal" ) );
- int ver = m.insertItem( i18n( "&Vertical" ) );
- int r = m.exec( TQCursor::pos() );
- if ( r == ver )
- orient =Qt::Vertical;
- }
-
-
- TQWidget *w = WidgetFactory::create( currTool, insertParent, 0, TRUE, &currRect, orient );
- if ( !w )
- return;
-
- if ( !savePixmapInline() && currTool == WidgetDatabase::idFromClassName( "PixmapLabel" ) ) { // ### what to do for pixmaps in project
- TQPixmap pix;
- // we have to force the pixmap to get a new and unique serial number. Unfortunately detatch() doesn't do that
- pix.convertFromImage( SmallIcon( "designer_image.png" , KDevDesignerPartFactory::instance()).convertToImage() );
- ( (TQLabel*)w )->setPixmap( pix );
- }
- int id = WidgetDatabase::idFromClassName( WidgetFactory::classNameOf(TQT_TQOBJECT(w)) );
- if ( WidgetDatabase::isCustomWidget( id ) ) {
- TQWhatsThis::add( w, i18n("<b>A %1 (custom widget)</b> "
- "<p>Click <b>Edit Custom Widgets...</b> in the <b>Tools|Custom</b> "
- "menu to add and change custom widgets. You can add "
- "properties as well as signals and slots to integrate custom widgets into "
- "<i>TQt Designer</i>, and provide a pixmap which will be used to represent "
- "the widget on the form.</p>")
- .arg(WidgetDatabase::toolTip( id )) );
- TQToolTip::add( w, i18n("A %1 (custom widget)").arg(WidgetDatabase::toolTip( id )) );
- } else {
- TQString tt = WidgetDatabase::toolTip( id );
- TQString wt = WidgetDatabase::whatsThis( id );
- if ( !wt.isEmpty() && !tt.isEmpty() )
- TQWhatsThis::add( w, TQString("<b>A %1</b><p>%2</p>").arg( tt ).arg( wt ) );
- }
-
- TQString s = w->name();
- unify( TQT_TQOBJECT(w), s, TRUE );
- w->setName( s );
- insertWidget( w );
- TQRect r( currRect );
- if ( !oldRectValid ||
- ( currRect.width() < 2 && currRect.height() < 2 ) )
- r = TQRect( rectAnchor, TQSize( 0, 0 ) );
-
- TQPoint p = r.topLeft();
- p = mapToGlobal( p );
- p = insertParent->mapFromGlobal( p );
- r = TQRect( p, r.size() );
-
- if ( useSizeHint ) {
- if ( n == "Spacer" ) {
- if ( orient ==Qt::Vertical ) {
- r.setWidth( 20 );
- r.setHeight( 40 );
- } else {
- r.setWidth( 40 );
- r.setHeight( 20 );
- }
- } else {
- r.setWidth( w->sizeHint().width() );
- r.setHeight( w->sizeHint().height() );
- }
- }
-
- if ( r.width() < 2 * grid().x() )
- r.setWidth( 2 * grid().x() );
- if ( r.height() < 2 * grid().y() )
- r.setHeight( 2 * grid().y() );
-
- const TQObjectList l = insertParent->childrenListObject();
- TQObjectListIt it( l );
- TQWidgetList lst;
- if ( WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ) ) ) {
- for ( ; it.current(); ) {
- TQObject *o = it.current();
- ++it;
- if ( o->isWidgetType() &&
- ( (TQWidget*)o )->isVisibleTo( this ) &&
- insertedWidgets.find( TQT_TQWIDGET(o) ) && TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(w) ) {
- TQRect r2( ( (TQWidget*)o )->pos(),
- ( (TQWidget*)o )->size() );
- if ( r.contains( r2 ) )
- lst.append( (TQWidget*)o );
- }
- }
- }
-
- if ( !lst.isEmpty() ) {
- TQWidget *pw = WidgetFactory::containerOfWidget( w );
- if (pw) {
- TQValueList<TQPoint> op, np;
- for ( TQWidget *i = lst.first(); i; i = lst.next() ) {
- op.append( i->pos() );
- TQPoint pos = pw->mapFromGlobal( i->mapToGlobal( TQPoint( 0, 0 ) ) );
- pos -= r.topLeft();
- np.append( pos );
- }
-
- MoveCommand *mv = new MoveCommand( i18n( "Reparent Widgets" ), this,
- lst, op, np, insertParent, pw );
-
- if ( !toolFixed )
- mainwindow->resetTool();
- else
- setCursorToAll( CrossCursor, w );
-
- InsertCommand *cmd = new InsertCommand( i18n( "Insert %1" ).arg( w->name() ), this, w, r );
-
- TQPtrList<Command> commands;
- commands.append( mv );
- commands.append( cmd );
-
- MacroCommand *mc = new MacroCommand( i18n( "Insert %1" ).arg( w->name() ), this, commands );
- commandHistory()->addCommand( mc );
- mc->execute();
- }
- } else {
- if ( !toolFixed )
- mainwindow->resetTool();
- else
- setCursorToAll( CrossCursor, w );
-
- InsertCommand *cmd = new InsertCommand( i18n( "Insert %1" ).arg( w->name() ), this, w, r );
- commandHistory()->addCommand( cmd );
- cmd->execute();
- }
-
- TemplateWizardInterface *iface = mainWindow()->templateWizardInterface( w->className() );
- if ( iface ) {
- iface->setup( w->className(), w, iFace(), mainWindow()->designerInterface() );
- iface->release();
- }
-}
-
-void FormWindow::insertWidget( TQWidget *w, bool checkName )
-{
- if ( !w )
- return;
- if ( checkName ) {
- TQString s = w->name();
- unify( TQT_TQOBJECT(w), s, TRUE );
- w->setName( s );
- }
-
- MetaDataBase::addEntry( TQT_TQOBJECT(w) );
- int id = WidgetDatabase::idFromClassName( WidgetFactory::classNameOf(TQT_TQOBJECT(w)) );
- if ( WidgetDatabase::isCustomWidget( id ) ) {
- TQWhatsThis::add( w, i18n("<b>A %1 (custom widget)</b> "
- "<p>Click <b>Edit Custom Widgets...</b> in the <b>Tools|Custom</b> "
- "menu to add and change custom widgets. You can add "
- "properties as well as signals and slots to integrate custom widgets into "
- "<i>TQt Designer</i>, and provide a pixmap which will be used to represent "
- "the widget on the form.</p>")
- .arg(WidgetDatabase::toolTip( id )) );
- TQToolTip::add( w, i18n("A %1 (custom widget)").arg(WidgetDatabase::toolTip( id )) );
- } else {
- TQString tt = WidgetDatabase::toolTip( id );
- TQString wt = WidgetDatabase::whatsThis( id );
- if ( !wt.isEmpty() && !tt.isEmpty() )
- TQWhatsThis::add( w, TQString("<b>A %1</b><p>%2</p>").arg( tt ).arg( wt ) );
- }
-
- restoreCursors( w, this );
- widgets()->insert( w, w );
- w->show();
-}
-
-void FormWindow::removeWidget( TQWidget *w )
-{
- MetaDataBase::removeEntry( TQT_TQOBJECT(w) );
- widgets()->take( w );
-}
-
-void FormWindow::handleContextMenu( TQContextMenuEvent *e, TQWidget *w )
-{
- CHECK_MAINWINDOW;
- switch ( currTool ) {
- case POINTER_TOOL: {
- if ( !isMainContainer( TQT_TQOBJECT(w) ) && qstrcmp( w->name(), "central widget" ) != 0 ) { // press on a child widget
- raiseChildSelections( w ); // raise selections and select widget
- selectWidget( TQT_TQOBJECT(w) );
- // if widget is laid out, find the first non-laid out super-widget
- TQWidget *realWidget = w; // but store the original one
- while ( w->parentWidget() &&
- ( WidgetFactory::layoutType( w->parentWidget()) != WidgetFactory::NoLayout ||
- !insertedWidgets.find(w) ) )
- w = w->parentWidget();
- if ( ::tqqt_cast<TQMainWindow*>(mainContainer()) && ((TQMainWindow*)mainContainer())->centralWidget() == realWidget ) {
- e->accept();
- mainwindow->popupFormWindowMenu( e->globalPos(), this );
- } else {
- e->accept();
- mainwindow->popupWidgetMenu( e->globalPos(), this, realWidget);
- }
- } else {
- e->accept();
- clearSelection();
- mainwindow->popupFormWindowMenu( e->globalPos(), this );
- }
- break; }
- default:
- break;
- }
-}
-
-void FormWindow::handleMousePress( TQMouseEvent *e, TQWidget *w )
-{
- CHECK_MAINWINDOW;
- checkedSelectionsForMove = FALSE;
- checkSelectionsTimer->stop();
- if ( !sizePreviewLabel ) {
- sizePreviewLabel = new TQLabel( this );
- sizePreviewLabel->hide();
- sizePreviewLabel->setBackgroundColor( TQColor( 255, 255, 128 ) );
- sizePreviewLabel->setFrameStyle( TQFrame::Plain | TQFrame::Box );
- }
-
- switch ( currTool ) {
- case POINTER_TOOL:
- if ( !isMainContainer( TQT_TQOBJECT(w) ) && qstrcmp( w->name(), "central widget" ) != 0 ) { // press on a child widget
- // if the clicked widget is not in a layout, raise it
- if ( !w->parentWidget() || WidgetFactory::layoutType( w->parentWidget() ) == WidgetFactory::NoLayout )
- w->raise();
- if ( ( e->state() & ControlButton ) ) { // with control pressed, always start rubber band selection
- drawRubber = TRUE;
- currRect = TQRect( 0, 0, -1, -1 );
- startRectDraw( mapFromGlobal( e->globalPos() ), e->globalPos(), this, Rubber );
- break;
- }
-
- bool sel = isWidgetSelected( TQT_TQOBJECT(w) );
- if ( !( ( e->state() & ControlButton ) || ( e->state() & ShiftButton ) ) ) { // control not pressed...
- if ( !sel ) { // ...and widget no selectted: unselect all
- clearSelection( FALSE );
- } else { // ...widget selected
- // only if widget has a layout (it is a layout meta widget or a laid out container!), unselect its childs
- if ( WidgetFactory::layoutType( w ) != WidgetFactory::NoLayout ) {
- TQObjectList *l = w->queryList( TQWIDGET_OBJECT_NAME_STRING );
- setPropertyShowingBlocked( TRUE );
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- if ( !o->isWidgetType() )
- continue;
- if ( insertedWidgets.find( (TQWidget*)o ) )
- selectWidget( TQT_TQOBJECT(o), FALSE );
- }
- setPropertyShowingBlocked( FALSE );
- delete l;
- }
- }
- tqApp->processEvents();
- }
- if ( ( ( e->state() & ControlButton ) || ( e->state() & ShiftButton ) ) &&
- sel && e->button() == Qt::LeftButton ) { // control pressed and selected, unselect widget
- selectWidget( TQT_TQOBJECT(w), FALSE );
- break;
- }
-
- raiseChildSelections( w ); // raise selections and select widget
- selectWidget( TQT_TQOBJECT(w) );
-
- // if widget is laid out, find the first non-laid out super-widget
- while ( w->parentWidget() &&
- ( WidgetFactory::layoutType( w->parentWidget()) != WidgetFactory::NoLayout || !insertedWidgets.find(w) ) )
- w = w->parentWidget();
-
- if ( e->button() == Qt::LeftButton ) { // left button: store original geometry and more as the widget might start moving
- widgetPressed = TRUE;
- widgetGeom = TQRect( w->pos(), w->size() );
- oldPressPos = w->mapFromGlobal( e->globalPos() );
- origPressPos = oldPressPos;
- checkedSelectionsForMove = FALSE;
- moving.clear();
- if ( w->parentWidget() && !isMainContainer( TQT_TQOBJECT(w->parentWidget()) ) && !isCentralWidget( TQT_TQOBJECT(w->parentWidget()) ) ) {
- targetContainer = w->parentWidget();
- hadOwnPalette = w->parentWidget()->ownPalette();
- restorePalette = w->parentWidget()->palette();
- }
- }
- } else { // press was on the formwindow
- if ( e->button() == Qt::LeftButton ) { // left button: start rubber selection and show formwindow properties
- drawRubber = TRUE;
- if ( !( ( e->state() & ControlButton ) || ( e->state() & ShiftButton ) ) ) {
- clearSelection( FALSE );
- TQObject *opw = propertyWidget;
- propertyWidget = TQT_TQOBJECT(mainContainer());
- if ( opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- }
- currRect = TQRect( 0, 0, -1, -1 );
- startRectDraw( mapFromGlobal( e->globalPos() ), e->globalPos(), this, Rubber );
- }
- }
- break;
- case CONNECT_TOOL:
- case BUDDY_TOOL:
- if ( e->button() != Qt::LeftButton )
- break;
- validForBuddy = FALSE;
- if ( currTool == BUDDY_TOOL ) {
- if ( !::tqqt_cast<TQLabel*>(w) )
- break;
- clearSelection( FALSE );
- validForBuddy = TRUE;
- mainWindow()->statusMessage( i18n( "Set buddy for '%1' to..." ).arg( w->name() ) );
- } else {
- mainWindow()->statusMessage( i18n( "Connect '%1' with..." ).arg( w->name() ) );
- }
- saveBackground();
- startPos = mapFromGlobal( e->globalPos() );
- currentPos = startPos;
- startWidget = designerWidget( TQT_TQOBJECT(w) );
- endWidget = startWidget;
- beginUnclippedPainter( FALSE );
- drawConnectionLine();
- break;
- case ORDER_TOOL:
- if ( !isMainContainer( TQT_TQOBJECT(w) ) ) { // press on a child widget
- orderedWidgets.removeRef( w );
- orderedWidgets.append( w );
- for ( TQWidget *wid = orderedWidgets.last(); wid; wid = orderedWidgets.prev() ) {
- int i = stackedWidgets.findRef( wid );
- if ( i != -1 ) {
- stackedWidgets.removeRef( wid );
- stackedWidgets.insert( 0, wid );
- }
- }
- TQWidgetList oldl = MetaDataBase::tabOrder( this );
- TabOrderCommand *cmd = new TabOrderCommand( i18n( "Change Tab Order" ), this, oldl, stackedWidgets );
- cmd->execute();
- commandHistory()->addCommand( cmd, TRUE );
- updateOrderIndicators();
- }
- break;
- default: // any insert widget tool
- if ( e->button() == Qt::LeftButton ) {
- insertParent = WidgetFactory::containerOfWidget( mainContainer() ); // default parent for new widget is the formwindow
- if ( !isMainContainer( TQT_TQOBJECT(w) ) ) { // press was not on formwindow, check if we can find another parent
- TQWidget *wid = w;
- for (;;) {
- int id = WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(wid) ) );
- if ( ( WidgetDatabase::isContainer( id ) || wid == mainContainer() ) &&
- !::tqqt_cast<TQLayoutWidget*>(wid) && !::tqqt_cast<TQSplitter*>(wid) ) {
- insertParent = WidgetFactory::containerOfWidget( wid ); // found another parent, store it
- break;
- } else {
- wid = wid->parentWidget();
- if ( !wid )
- break;
- }
- }
- }
- startRectDraw( w->mapFromGlobal( e->globalPos() ), e->globalPos(), w, Insert );
- }
- break;
- }
-}
-
-void FormWindow::handleMouseDblClick( TQMouseEvent *, TQWidget *w )
-{
- CHECK_MAINWINDOW;
- switch ( currTool ) {
- case ORDER_TOOL:
- if ( !isMainContainer( TQT_TQOBJECT(w) ) ) { // press on a child widget
- orderedWidgets.clear();
- orderedWidgets.append( w );
- for ( TQWidget *wid = orderedWidgets.last(); wid; wid = orderedWidgets.prev() ) {
- int i = stackedWidgets.findRef( wid );
- if ( i != -1 ) {
- stackedWidgets.removeRef( wid );
- stackedWidgets.insert( 0, wid );
- }
- }
- TQWidgetList oldl = MetaDataBase::tabOrder( this );
- TabOrderCommand *cmd = new TabOrderCommand( i18n( "Change Tab Order" ), this, oldl, stackedWidgets );
- cmd->execute();
- commandHistory()->addCommand( cmd, TRUE );
- updateOrderIndicators();
- }
- default:
- if ( !WidgetFactory::isPassiveInteractor( TQT_TQOBJECT(w) ) &&
- ( isMainContainer( TQT_TQOBJECT(w) ) || TQT_BASE_OBJECT(w) == TQT_BASE_OBJECT(this) ) )
- mainWindow()->editSource();
- break;
- }
-}
-
-void FormWindow::handleMouseMove( TQMouseEvent *e, TQWidget *w )
-{
- CHECK_MAINWINDOW;
- if ( ( e->state() & Qt::LeftButton ) != Qt::LeftButton )
- return;
-
- TQWidget *newendWidget = endWidget, *oldendWidget = endWidget, *wid;
- bool drawRecRect;
- switch ( currTool ) {
- case POINTER_TOOL:
- if ( widgetPressed && allowMove( w ) ) { // we are prepated for a move
-
- // if widget is laid out, find the first non-laid out super-widget
- while ( w->parentWidget() &&
- ( WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout || !insertedWidgets.find(w ) ) )
- w = w->parentWidget();
-
- // calc correct position
- TQPoint pos = w->mapFromGlobal( e->globalPos() );
-
-#if 0
- TQPoint mpos = w->mapToParent( pos );
- // check if we are not outside the visible area, else correct coords
- if ( mpos.x() < 0 )
- pos.setX( w->mapFromParent( TQPoint( 0, mpos.y() ) ).x() );
- if ( mpos.y() < 0 )
- pos.setY( w->mapFromParent( TQPoint( mpos.x(), 0 ) ).y() );
- if ( mpos.x() > w->parentWidget()->width() )
- pos.setX( w->mapFromParent( TQPoint( w->parentWidget()->width(), mpos.y() ) ).x() );
- if ( mpos.y() > w->parentWidget()->height() )
- pos.setY( w->mapFromParent( TQPoint( mpos.x(), w->parentWidget()->height() ) ).y() );
-#endif
-
- // calc move distance and store it
- TQPoint d = oldPressPos - pos;
- if ( TQABS( d.x() ) < grid().x() )
- d.setX( 0 );
- if ( TQABS( d.y() ) < grid().y() )
- d.setY( 0 );
- if ( d.x() == 0 )
- pos.setX( oldPressPos.x() );
- if ( d.y() == 0 )
- pos.setY( oldPressPos.y() );
- oldPressPos = pos;
-
- // snap to grid
- int x = widgetGeom.x() - d.x();
- widgetGeom.setX( x );
- x = ( x / grid().x() ) * grid().x();
- int y = widgetGeom.y() - d.y();
- widgetGeom.setY( y );
- y = ( y / grid().y() ) * grid().y();
- TQPoint p = w->pos();
-
- if ( x - p.x() != 0 || y - p.y() != 0 ) { // if we actually have to move
- if ( !checkedSelectionsForMove ) { // if not checked yet, check if the correct widget are selected...
- if ( !isWidgetSelected( TQT_TQOBJECT(w) ) ) { // and unselect others. Only siblings can be moved at the same time
- setPropertyShowingBlocked( TRUE );
- selectWidget( TQT_TQOBJECT(w) );
- setPropertyShowingBlocked( FALSE );
- }
- checkSelectionsForMove( w );
- }
-
- // check whether we would have to reparent the selection and highlight the possible new parent container
- TQMapConstIterator<TQWidget*, TQPoint> it = moving.begin();
- TQWidget* wa = containerAt( e->globalPos(), it.key() );
- if ( wa && !isMainContainer( TQT_TQOBJECT(wa) ) && !isCentralWidget( TQT_TQOBJECT(wa) ) ) {
- wa = WidgetFactory::containerOfWidget( wa );
- // ok, looks like we moved onto a container
-
- if ( wa != targetContainer ) {
- if ( targetContainer ) {
- if ( hadOwnPalette )
- targetContainer->setPalette( restorePalette );
- else
- targetContainer->unsetPalette();
- }
- targetContainer = wa;
- hadOwnPalette = wa->ownPalette();
- restorePalette = wa->palette();
- wa->setPaletteBackgroundColor( wa->colorGroup().midlight() );
- }
- }
- else if ( targetContainer ) {
- if( hadOwnPalette )
- targetContainer->setPalette( restorePalette );
- else
- targetContainer->unsetPalette();
- targetContainer = 0;
- }
-
- // finally move the selected widgets and show/update preview label
- moveSelectedWidgets( x - p.x(), y - p.y() );
- sizePreviewLabel->setText( i18n( "%1/%2" ).arg( w->pos().x() ).arg( w->pos().y() ) );
- sizePreviewLabel->adjustSize();
- TQRect lg( mapFromGlobal( e->globalPos() ) + TQPoint( 16, 16 ), sizePreviewLabel->size() );
- checkPreviewGeometry( lg );
- sizePreviewLabel->setGeometry( lg );
- sizePreviewLabel->raise();
- sizePreviewLabel->show();
-#if defined(TQ_WS_WIN32)
- windowsRepaintWorkaroundTimer->start( 100, TRUE );
-#endif
- } else { // if we don't need to move, do some indication
- TQRect lg( mapFromGlobal( e->globalPos() ) + TQPoint( 16, 16 ), sizePreviewLabel->size() );
- checkPreviewGeometry( lg );
- sizePreviewLabel->move( lg.x(), lg.y() );
- }
-
- oldPressPos += ( p - w->pos() );
- } else if ( drawRubber ) { // draw rubber if we are in rubber-selection mode
- continueRectDraw( mapFromGlobal( e->globalPos() ), e->globalPos(), this, Rubber );
- }
- break;
- case CONNECT_TOOL:
- restoreConnectionLine();
- wid = tqApp->widgetAt( e->globalPos(), TRUE );
- if ( wid )
- wid = designerWidget( TQT_TQOBJECT(wid) );
- if ( wid && ( isMainContainer( TQT_TQOBJECT(wid) ) || insertedWidgets.find( wid ) ) && wid->isVisibleTo( this ) )
- newendWidget = wid;
- if ( ::tqqt_cast<TQLayoutWidget*>(newendWidget) || ::tqqt_cast<Spacer*>(newendWidget) )
- newendWidget = (TQWidget*)endWidget;
- drawRecRect = newendWidget != endWidget;
- if ( newendWidget &&
- ( isMainContainer( TQT_TQOBJECT(newendWidget) ) || insertedWidgets.find( newendWidget ) ) && !isCentralWidget( TQT_TQOBJECT(newendWidget) ) )
- endWidget = newendWidget;
- mainWindow()->statusMessage( i18n( "Connect '%1' to '%2'" ).arg( startWidget->name() ).
- arg( endWidget->name() ) );
- currentPos = mapFromGlobal( e->globalPos() );
- tqApp->processEvents();
- if ( drawRecRect )
- restoreRect( TQRect( mapToForm( ( (TQWidget*)oldendWidget )->parentWidget(), ( (TQWidget*)oldendWidget )->pos() ),
- ( (TQWidget*)oldendWidget )->size() ) );
- drawConnectionLine();
- break;
- case BUDDY_TOOL:
- if ( !validForBuddy )
- break;
- restoreConnectionLine();
- wid = tqApp->widgetAt( e->globalPos(), TRUE );
- if ( wid )
- wid = designerWidget( TQT_TQOBJECT(wid) );
- if ( wid && canBeBuddy( wid ) && wid->isVisibleTo( this ) )
- newendWidget = wid;
- else
- newendWidget = 0;
- if ( ::tqqt_cast<TQLayoutWidget*>(newendWidget) || ::tqqt_cast<Spacer*>(newendWidget) )
- newendWidget = (TQWidget*)endWidget;
- drawRecRect = newendWidget != endWidget;
- if ( !newendWidget )
- endWidget = newendWidget;
- else if ( insertedWidgets.find( newendWidget ) && !isCentralWidget( TQT_TQOBJECT(newendWidget) ) )
- endWidget = newendWidget;
- if ( endWidget )
- mainWindow()->statusMessage( i18n( "Set buddy '%1' to '%2'" ).arg( startWidget->name() ).
- arg( endWidget->name() ) );
- else
- mainWindow()->statusMessage( i18n( "Set buddy '%1' to ..." ).arg( startWidget->name() ) );
- currentPos = mapFromGlobal( e->globalPos() );
- tqApp->processEvents();
- if ( drawRecRect && oldendWidget )
- restoreRect( TQRect( mapToForm( ( (TQWidget*)oldendWidget )->parentWidget(), ( (TQWidget*)oldendWidget )->pos() ),
- ( (TQWidget*)oldendWidget )->size() ) );
- drawConnectionLine();
- break;
- case ORDER_TOOL:
- break;
- default: // we are in an insert-widget tool
- if ( insertParent ) // draw insert rect
- continueRectDraw( w->mapFromGlobal( e->globalPos() ), e->globalPos(), w, Insert );
- break;
- }
-}
-
-void FormWindow::handleMouseRelease( TQMouseEvent *e, TQWidget *w )
-{
- CHECK_MAINWINDOW;
- if ( e->button() != Qt::LeftButton )
- return;
-
- switch ( currTool ) {
- case POINTER_TOOL:
- if ( widgetPressed && allowMove( w ) ) { // we moved the widget
- sizePreviewLabel->hide();
-
- if ( moving.isEmpty() || w->pos() == *moving.find(w) )
- break;
-
- // restore targetContainer
- if ( targetContainer ) {
- if( hadOwnPalette )
- targetContainer->setPalette( restorePalette );
- else
- targetContainer->unsetPalette();
- }
-
- // tell property editor to update
- if ( propertyWidget && propertyWidget->isWidgetType() && !isMainContainer( propertyWidget ) )
- emitUpdateProperties( propertyWidget );
-
- TQMapConstIterator<TQWidget*,TQPoint> it = moving.begin();
- TQWidget *oldParent = it.key()->parentWidget();
- TQWidget *newParent = oldParent;
- // check whether we have to reparent the selection
- TQWidget* wa = containerAt( e->globalPos(), it.key() );
- if ( wa ) {
- wa = WidgetFactory::containerOfWidget( wa );
- // ok, looks like we moved onto a container
-
- // check whether we really have different parents.
- if ( wa == it.key()->parentWidget() )
- goto make_move_command;
-
- // break layout if necessary
- if ( WidgetFactory::layoutType( wa ) != WidgetFactory::NoLayout ) {
- if ( TQMessageBox::information( mainWindow(), i18n( "Inserting Widget" ),
- i18n( "You tried to insert a widget into the "
- "layout Container Widget '%1'.\n"
- "This is not possible. "
- "In order to insert the widget, the layout of '%1'\n"
- "must first be broken.\n"
- "Break the layout or cancel the operation?" ).
- arg( wa->name() ).
- arg( wa->name() ), i18n( "&Break Layout" ), i18n( "&Cancel" ) ) )
- goto make_move_command; // cancel
- breakLayout( wa );
- }
-
- // doesn't need to be a command, the MoveCommand does reparenting too
- bool emitSelChanged = FALSE;
- for ( TQMap<TQWidget*, TQPoint>::Iterator it = moving.begin(); it != moving.end(); ++it ) {
- TQWidget *i = it.key();
- if ( !emitSelChanged && ::tqqt_cast<TQButton*>(i) ) {
- if ( ::tqqt_cast<TQButtonGroup*>(i->parentWidget()) || ::tqqt_cast<TQButtonGroup*>(wa) )
- emitSelChanged = TRUE;
- if ( !::tqqt_cast<TQButtonGroup*>(wa) ) {
- MetaDataBase::setPropertyChanged( TQT_TQOBJECT(i), "buttonGroupId", FALSE );
- if ( ::tqqt_cast<TQButtonGroup*>(i->parentWidget()) )
- ( (TQButtonGroup*)i->parentWidget() )->remove( (TQButton*)i );
- }
- }
- TQPoint pos = wa->mapFromGlobal( i->mapToGlobal( TQPoint(0,0) ) );
- i->reparent( wa, pos, TRUE );
- raiseSelection( i );
- raiseChildSelections( i );
- widgetChanged( TQT_TQOBJECT(i) );
- mainWindow()->objectHierarchy()->widgetRemoved( i );
- mainWindow()->objectHierarchy()->widgetInserted( i );
- }
- if ( emitSelChanged ) {
- emit showProperties( TQT_TQOBJECT(wa) );
- emit showProperties( propertyWidget );
- }
- newParent = wa;
- }
-
- make_move_command:
- TQWidgetList widgets; // collect the widgets and its old and new positions which have been moved
- TQValueList<TQPoint> oldPos, newPos;
- for ( it = moving.begin(); it != moving.end(); ++it ) {
- widgets.append( it.key() );
- oldPos.append( *it );
- newPos.append( it.key()->pos() );
- }
- // add move command, don't execute it, this is just a summary of the operations we did during the move-event handling
- commandHistory()->addCommand( new MoveCommand( i18n( "Move" ),
- this, widgets,
- oldPos, newPos, oldParent, newParent ) );
- } else if ( drawRubber ) { // we were drawing a rubber selection
- endRectDraw(); // get rid of the rectangle
- blockSignals( TRUE );
- selectWidgets(); // select widgets which intersect the rect
- blockSignals( FALSE );
- emitSelectionChanged(); // inform about selection changes
- if ( propertyWidget )
- emitShowProperties( propertyWidget );
- }
- break;
- case CONNECT_TOOL:
- case BUDDY_TOOL:
- restoreConnectionLine();
- if ( startWidget )
- restoreRect( TQRect( mapToForm( ( (TQWidget*)startWidget )->parentWidget(),
- ( (TQWidget*)startWidget )->pos() ),
- ((TQWidget*)startWidget )->size() ) );
- if ( endWidget )
- restoreRect( TQRect( mapToForm( ( (TQWidget*)endWidget )->parentWidget(),
- ( (TQWidget*)endWidget )->pos() ),
- ( (TQWidget*)endWidget )->size() ) );
- endUnclippedPainter();
- tqApp->processEvents();
-
- if ( startWidget && endWidget ) {
- if ( currTool == CONNECT_TOOL )
- editConnections();
- else if ( currTool == BUDDY_TOOL && validForBuddy && startWidget != endWidget ) {
- TQString oldBuddy = startWidget->property( "buddy" ).toString();
- if ( oldBuddy.isNull() )
- oldBuddy = "";
- SetPropertyCommand *cmd = new SetPropertyCommand( i18n( "Set Buddy for %1" ).arg( startWidget->name() ),
- this, TQT_TQOBJECT(startWidget), mainWindow()->propertyeditor(),
- "buddy", startWidget->property( "buddy" ),
- endWidget->name(), endWidget->name(),
- oldBuddy );
- commandHistory()->addCommand( cmd, TRUE );
- cmd->execute();
- emitUpdateProperties( TQT_TQOBJECT(startWidget) );
- }
- }
- if ( !toolFixed )
- mainwindow->resetTool();
- startWidget = endWidget = 0;
- mainWindow()->statusBar()->clear();
- break;
- case ORDER_TOOL:
- break;
- default: // any insert widget tool is active
- if ( insertParent ) { // we should insert the new widget now
- endRectDraw();
- if ( WidgetFactory::layoutType( insertParent ) != WidgetFactory::NoLayout ) {
- if ( TQMessageBox::information( mainWindow(), i18n( "Inserting Widget" ),
- i18n( "You tried to insert a widget into the "
- "layout Container Widget '%1'.\n"
- "This is not possible. "
- "In order to insert the widget, the layout of '%1'\n"
- "must first be broken.\n"
- "Break the layout or cancel the operation?" ).
- arg( insertParent->name() ).
- arg( insertParent->name() ), i18n( "&Break Layout" ), i18n( "&Cancel" ) ) == 0 ) {
- breakLayout( insertParent );
- } else {
- if ( !toolFixed )
- mainWindow()->resetTool();
- break;
- }
- }
- insertWidget(); // so do it
- }
- break;
- }
- widgetPressed = FALSE;
- drawRubber = FALSE;
- insertParent = 0;
- delete buffer;
- buffer = 0;
-}
-
-void FormWindow::handleKeyPress( TQKeyEvent *e, TQWidget *w )
-{
- CHECK_MAINWINDOW;
- e->ignore();
- checkSelectionsTimer->stop();
- if ( !checkedSelectionsForMove &&
- ( e->key() == Key_Left ||
- e->key() == Key_Right ||
- e->key() == Key_Up ||
- e->key() == Key_Down ) &&
- propertyWidget->isWidgetType() )
- checkSelectionsForMove( (TQWidget*)propertyWidget );
- checkSelectionsTimer->start( 1000, TRUE );
- if ( e->key() == Key_Left || e->key() == Key_Right ||
- e->key() == Key_Up || e->key() == Key_Down ) {
- TQWidgetList widgets;
- TQValueList<TQPoint> oldPos, newPos;
- for ( WidgetSelection *s = selections.first(); s; s = selections.next() ) {
- if ( s->isUsed() ) {
- int dx = 0, dy = 0;
- bool control = e->state() & ControlButton;
-
- switch ( e->key() ) {
- case Key_Left: {
- e->accept();
- if ( control )
- dx = -1;
- else
- dx = -grid().x();
- } break;
- case Key_Right: {
- e->accept();
- if ( control )
- dx = 1;
- else
- dx = grid().x();
- } break;
- case Key_Up: {
- e->accept();
- if ( control )
- dy = -1;
- else
- dy = -grid().y();
- } break;
- case Key_Down: {
- e->accept();
- if ( control )
- dy = 1;
- else
- dy = grid().y();
- } break;
- default:
- break;
- }
-
- widgets.append( s->widget() );
- oldPos.append( s->widget()->pos() );
- newPos.append( s->widget()->pos() + TQPoint( dx, dy ) );
- }
- }
- if ( !widgets.isEmpty() ) {
- MoveCommand *cmd = new MoveCommand( i18n( "Move" ), this,
- widgets, oldPos, newPos, 0, 0 );
- commandHistory()->addCommand( cmd, TRUE );
- cmd->execute();
- }
- }
- if ( !e->isAccepted() ) {
- TQObjectList *l = queryList( TQWIDGET_OBJECT_NAME_STRING );
- if ( !l )
- return;
- if ( l->find( TQT_TQOBJECT(w) ) != -1 )
- e->accept();
- delete l;
- }
-
-}
-
-void FormWindow::handleKeyRelease( TQKeyEvent *e, TQWidget * )
-{
- e->ignore();
-}
-
-void FormWindow::selectWidget( TQObject *o, bool select )
-{
- CHECK_MAINWINDOW;
- if ( !o->isWidgetType() ) {
- // ########### do TQObject stuff
- return;
- }
-
- TQWidget *w = (TQWidget*)o;
-
- if ( isMainContainer( TQT_TQOBJECT(w) ) ) {
- TQObject *opw = propertyWidget;
- propertyWidget = TQT_TQOBJECT(mainContainer());
- if ( opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- emitShowProperties( propertyWidget );
- return;
- }
-
- if ( ::tqqt_cast<TQMainWindow*>(mainContainer()) && w == ( (TQMainWindow*)mainContainer() )->centralWidget() ) {
- TQObject *opw = propertyWidget;
- propertyWidget = TQT_TQOBJECT(mainContainer());
- if ( opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- emitShowProperties( propertyWidget );
- return;
- }
-
- if ( ::tqqt_cast<QDesignerToolBar*>(o) )
- return;
-
- if ( select ) {
- TQObject *opw = propertyWidget;
- propertyWidget = TQT_TQOBJECT(w);
- if ( opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- if ( !isPropertyShowingBlocked() )
- emitShowProperties( propertyWidget );
- WidgetSelection *s = usedSelections.find( w );
- if ( s ) {
- s->show();
- return;
- }
-
- for ( WidgetSelection *s2 = selections.first(); s2; s2 = selections.next() ) {
- if ( !s2->isUsed() ) {
- s = s2;
- }
- }
-
- if ( !s ) {
- s = new WidgetSelection( this, &usedSelections );
- selections.append( s );
- }
-
- s->setWidget( w );
- emitSelectionChanged();
- } else {
- WidgetSelection *s = usedSelections.find( w );
- if ( s )
- s->setWidget( 0 );
- TQObject *opw = propertyWidget;
- if ( !usedSelections.isEmpty() )
- propertyWidget = TQT_TQOBJECT(TQPtrDictIterator<WidgetSelection>( usedSelections ).current()->widget());
- else
- propertyWidget = TQT_TQOBJECT(mainContainer());
- if ( opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- if ( !isPropertyShowingBlocked() )
- emitShowProperties( propertyWidget );
- emitSelectionChanged();
- }
-}
-
-TQPoint FormWindow::grid() const
-{
- if ( !mainWindow() || !mainWindow()->snapGrid() )
- return TQPoint( 1, 1 );
- return mainWindow()->grid();
-}
-
-void FormWindow::updateSelection( TQWidget *w )
-{
- WidgetSelection *s = usedSelections.find( w );
- if ( !w->isVisibleTo( this ) )
- selectWidget( TQT_TQOBJECT(w), FALSE );
- else if ( s )
- s->updateGeometry();
-}
-
-void FormWindow::raiseSelection( TQWidget *w )
-{
- WidgetSelection *s = usedSelections.find( w );
- if ( s )
- s->show();
-}
-
-void FormWindow::repaintSelection( TQWidget *w )
-{
- WidgetSelection *s = usedSelections.find( w );
- if ( s )
- s->update();
-}
-
-void FormWindow::clearSelection( bool changePropertyDisplay )
-{
- TQPtrDictIterator<WidgetSelection> it( usedSelections );
- for ( ; it.current(); ++it )
- it.current()->setWidget( 0, FALSE );
-
- usedSelections.clear();
- if ( changePropertyDisplay ) {
- TQObject *opw = propertyWidget;
- propertyWidget = TQT_TQOBJECT(mainContainer());
- if ( opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- emitShowProperties( propertyWidget );
- }
- emitSelectionChanged();
-}
-
-void FormWindow::startRectDraw( const TQPoint &p, const TQPoint &global, TQWidget *, RectType t )
-{
- TQPoint pos( p );
- pos = mapFromGlobal( global );
- oldRectValid = FALSE;
- beginUnclippedPainter( TRUE );
- if ( t == Rubber )
- unclippedPainter->setPen( TQPen( color0, 1 ) );
- if ( t == Insert )
- rectAnchor = gridPoint( pos );
- else if ( t == Rubber )
- rectAnchor = pos;
- currRect = TQRect( rectAnchor, TQPoint( 0, 0 ) );
- if ( t == Insert )
- drawSizePreview( pos, i18n("Use Size Hint") );
-}
-
-void FormWindow::continueRectDraw( const TQPoint &p, const TQPoint &global, TQWidget *, RectType t )
-{
- TQPoint pos =p;
- pos = mapFromGlobal( global );
- TQPoint p2;
- if ( t == Insert )
- p2 = gridPoint( pos );
- else if ( t == Rubber )
- p2 = pos;
- TQRect r( rectAnchor, p2 );
- r = r.normalize();
-
- if ( currRect == r ) {
- TQString t = i18n( "%1/%2" );
- t = t.arg( r.width() - 1 ).arg( r.height() - 1 );
- drawSizePreview( pos, t );
- return;
- }
-
- if ( oldRectValid )
- unclippedPainter->drawRect( currRect );
- if ( r.width() > 1 || r.height() > 1 ) {
- oldRectValid = TRUE;
- currRect = r;
- if ( t == Insert ) {
- TQString t = i18n( "%1/%2" );
- t = t.arg( r.width() - 1 ).arg( r.height() - 1 );
- drawSizePreview( pos, t );
- }
- unclippedPainter->setClipRegion( TQRegion( rect() ).subtract( TQRect( sizePreviewPos, sizePreviewPixmap.size() ) ) );
- unclippedPainter->drawRect( currRect );
- unclippedPainter->setClipping( FALSE );
- } else {
- oldRectValid = FALSE;
- if ( t == Insert )
- drawSizePreview( pos, i18n("Use Size Hint") );
- }
-}
-
-void FormWindow::endRectDraw()
-{
- if ( !unclippedPainter )
- return;
-
- if ( oldRectValid )
- unclippedPainter->drawRect( currRect );
- drawSizePreview( TQPoint(-1,-1), TQString() );
- endUnclippedPainter();
-}
-
-void FormWindow::selectWidgets()
-{
- TQObjectList *l = mainContainer()->queryList( TQWIDGET_OBJECT_NAME_STRING );
- if ( l ) {
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- if ( ( (TQWidget*)o )->isVisibleTo( this ) &&
- insertedWidgets[ (void*)o ] ) {
- TQPoint p = ( (TQWidget*)o )->mapToGlobal( TQPoint(0,0) );
- p = mapFromGlobal( p );
- TQRect r( p, ( (TQWidget*)o )->size() );
- if ( r.intersects( currRect ) && !r.contains( currRect ) )
- selectWidget( TQT_TQOBJECT(o) );
- }
- }
- delete l;
- }
- emitSelectionChanged();
-}
-
-bool FormWindow::isWidgetSelected( TQObject *w )
-{
- if ( w->isWidgetType() )
- return usedSelections.find( (TQWidget*)w ) != 0;
- return FALSE; // #### do stuff for TQObjects
-}
-
-void FormWindow::moveSelectedWidgets( int dx, int dy )
-{
- TQPtrDictIterator<WidgetSelection> it( usedSelections );
- for ( ; it.current(); ++it ) {
- WidgetSelection *s = it.current();
- TQWidget *w = s->widget();
- if ( w->parentWidget() && WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout )
- continue;
- w->move( w->x() + dx, w->y() + dy );
- s->updateGeometry();
- updateChildSelections( w );
- }
-}
-
-CommandHistory *FormWindow::commandHistory()
-{
- return &commands;
-}
-
-void FormWindow::undo()
-{
- commandHistory()->undo();
-}
-
-void FormWindow::redo()
-{
- commandHistory()->redo();
-}
-
-void FormWindow::raiseChildSelections( TQWidget *w )
-{
- TQObjectList *l = w->queryList( TQWIDGET_OBJECT_NAME_STRING );
- if ( !l || !l->first() ) {
- delete l;
- return;
- }
-
- TQPtrDictIterator<WidgetSelection> it( usedSelections );
- for ( ; it.current(); ++it ) {
- if ( l->findRef( TQT_TQOBJECT(it.current()->widget()) ) != -1 )
- it.current()->show();
- }
- delete l;
-}
-
-void FormWindow::updateChildSelections( TQWidget *w )
-{
- TQObjectList *l = w->queryList( TQWIDGET_OBJECT_NAME_STRING );
- if ( l ) {
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- if ( o->isWidgetType() &&
- insertedWidgets.find( (TQWidget*)o ) )
- updateSelection( (TQWidget*)o );
- }
- delete l;
- }
-}
-
-void FormWindow::checkSelectionsForMove( TQWidget *w )
-{
- checkedSelectionsForMove = TRUE;
-
- TQObjectList *l = w->parentWidget()->queryList( TQWIDGET_OBJECT_NAME_STRING, 0, FALSE, FALSE );
- moving.clear();
- if ( l ) {
- TQPtrDictIterator<WidgetSelection> it( usedSelections );
- WidgetSelection *sel;
- while ( ( sel = it.current() ) != 0 ) {
- if ( it.current()->widget() == mainContainer() )
- continue;
- ++it;
- if ( l->find( TQT_TQOBJECT(sel->widget()) ) == -1 ) {
- if ( WidgetFactory::layoutType( w ) == WidgetFactory::NoLayout )
- sel->setWidget( 0 );
- } else {
- if ( WidgetFactory::layoutType( sel->widget()->parentWidget() ) == WidgetFactory::NoLayout ) {
- moving.insert( sel->widget(), sel->widget()->pos() );
- sel->widget()->raise();
- raiseChildSelections( sel->widget() );
- raiseSelection( sel->widget() );
- }
- }
- }
- delete l;
- }
-}
-
-void FormWindow::deleteWidgets()
-{
- CHECK_MAINWINDOW;
- TQWidgetList widgets;
- TQPtrDictIterator<WidgetSelection> it( usedSelections );
- for ( ; it.current(); ++it ) {
- TQWidget *tb = 0;
- if ( !( tb = mainWindow()->isAToolBarChild( TQT_TQOBJECT(it.current()->widget()) ) ) )
- widgets.append( it.current()->widget() );
- else
- ( (QDesignerToolBar*)tb )->removeWidget( it.current()->widget() );
- }
-
- if ( widgets.isEmpty() )
- return;
-
- DeleteCommand *cmd = new DeleteCommand( i18n( "Delete" ), this, widgets );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::editAdjustSize()
-{
- TQPtrList<Command> commands;
- TQWidgetList widgets = selectedWidgets();
- if ( widgets.isEmpty() ) {
- TQRect oldr = geometry();
- mainContainer()->adjustSize();
- resize( mainContainer()->size() );
- // check whether our own size constraint hit us
- if ( size() != mainContainer()->size() )
- mainContainer()->resize( size() );
- TQRect nr = geometry();
- if ( oldr != nr ) {
- ResizeCommand *cmd = new ResizeCommand( i18n( "Adjust Size" ), this, this, oldr, nr );
- commandHistory()->addCommand( cmd );
- }
- return;
- }
- for ( TQWidget* w = widgets.first(); w; w = widgets.next() ) {
- if ( w->parentWidget() && WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout )
- continue;
- TQRect oldr = w->geometry();
- w->adjustSize();
- TQRect nr = w->geometry();
- if ( oldr != nr )
- commands.append( new ResizeCommand( i18n("Adjust Size"), this, w, oldr, nr ) );
- }
-
- if ( commands.isEmpty() )
- return;
- for ( WidgetSelection *s = selections.first(); s; s = selections.next() )
- s->updateGeometry();
-
- MacroCommand *cmd = new MacroCommand( i18n( "Adjust Size" ), this, commands );
- commandHistory()->addCommand( cmd );
-}
-
-
-TQWidgetList FormWindow::selectedWidgets() const
-{
- TQWidgetList widgets;
- TQPtrDictIterator<WidgetSelection> it( usedSelections );
- for ( ; it.current(); ++it )
- widgets.append( it.current()->widget() );
- return widgets;
-}
-
-void FormWindow::widgetChanged( TQObject *w )
-{
- if ( w->isWidgetType() )
- updateSelection( (TQWidget*)w );
- // ########## do TQObject stuff
-}
-
-TQLabel *FormWindow::sizePreview() const
-{
- if ( !sizePreviewLabel ) {
- ( (FormWindow*)this )->sizePreviewLabel = new TQLabel( (FormWindow*)this );
- ( (FormWindow*)this )->sizePreviewLabel->hide();
- ( (FormWindow*)this )->sizePreviewLabel->setBackgroundColor( TQColor( 255, 255, 128 ) );
- ( (FormWindow*)this )->sizePreviewLabel->setFrameStyle( TQFrame::Plain | TQFrame::Box );
- }
- return sizePreviewLabel;
-}
-
-void FormWindow::invalidCheckedSelections()
-{
- checkedSelectionsForMove = FALSE;
-}
-
-void FormWindow::checkPreviewGeometry( TQRect &r )
-{
- if ( !TQT_TQRECT_OBJECT(rect()).contains( r ) ) {
- if ( r.left() < rect().left() )
- r.moveTopLeft( TQPoint( 0, r.top() ) );
- if ( r.right() > rect().right() )
- r.moveBottomRight( TQPoint( rect().right(), r.bottom() ) );
- if ( r.top() < rect().top() )
- r.moveTopLeft( TQPoint( r.left(), rect().top() ) );
- if ( r.bottom() > rect().bottom() )
- r.moveBottomRight( TQPoint( r.right(), rect().bottom() ) );
- }
-}
-
-void FormWindow::focusInEvent( TQFocusEvent * ){
-
- if (ff)
- ff->checkTimeStamp();
-}
-
-void FormWindow::focusOutEvent( TQFocusEvent * )
-{
- if ( propertyWidget && !isMainContainer( propertyWidget ) && !isWidgetSelected( propertyWidget ) ) {
- TQObject *opw = propertyWidget;
- propertyWidget = TQT_TQOBJECT(mainContainer());
- if ( opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- }
-}
-
-void FormWindow::resizeEvent( TQResizeEvent *e )
-{
- TQWidget::resizeEvent( e );
- if ( currTool == ORDER_TOOL )
- repositionOrderIndicators();
- if ( isVisible() )
- formFile()->setModified( TRUE, FormFile::WFormWindow );
-
-#if defined(TQ_WS_WIN32)
- windowsRepaintWorkaroundTimer->start( 100, TRUE );
-#endif
-}
-
-void FormWindow::windowsRepaintWorkaroundTimerTimeout()
-{
-#if defined(TQ_WS_WIN32)
- TQObjectList *l = queryList( TQWIDGET_OBJECT_NAME_STRING );
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- flickerfree_update( (TQWidget*)o );
- }
- flickerfree_update( this );
- delete l;
-#endif
-}
-
-TQPtrDict<TQWidget> *FormWindow::widgets()
-{
- return &insertedWidgets;
-}
-
-TQWidget *FormWindow::designerWidget( TQObject *o ) const
-{
- if ( !o || !o->isWidgetType() )
- return 0;
- TQWidget *w = (TQWidget*)o;
- while ( w && !isMainContainer( TQT_TQOBJECT(w) ) && !insertedWidgets[ (void*)w ] || isCentralWidget( TQT_TQOBJECT(w) ) )
- w = (TQWidget*)w->parent();
- return w;
-}
-
-void FormWindow::emitShowProperties( TQObject *w )
-{
- if ( w ) {
- TQObject *opw = propertyWidget;
- propertyWidget = w;
- if ( opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- }
- showPropertiesTimer->stop();
-// showPropertiesTimer->start( 0, TRUE );
- showPropertiesTimerDone();
-}
-
-void FormWindow::emitUpdateProperties( TQObject *w )
-{
- if ( w == propertyWidget ) {
- updatePropertiesTimer->stop();
- updatePropertiesTimer->start( 0, TRUE );
- }
-}
-
-void FormWindow::emitSelectionChanged()
-{
- selectionChangedTimer->stop();
- selectionChangedTimer->start( 0, TRUE );
-}
-
-void FormWindow::updatePropertiesTimerDone()
-{
- CHECK_MAINWINDOW;
- if ( propertyWidget && mainWindow()->formWindow() == this )
- emit updateProperties( propertyWidget );
-}
-
-void FormWindow::showPropertiesTimerDone()
-{
- CHECK_MAINWINDOW;
- if ( propertyWidget && mainWindow()->formWindow() == this )
- emit showProperties( propertyWidget );
-}
-
-void FormWindow::selectionChangedTimerDone()
-{
- emit selectionChanged();
-}
-
-void FormWindow::currentToolChanged()
-{
- CHECK_MAINWINDOW;
- toolFixed = FALSE;
- int t = mainwindow->currentTool();
- if ( currTool == t && t != ORDER_TOOL )
- return;
-
- // tool cleanup
- switch ( currTool ) {
- case ORDER_TOOL:
- hideOrderIndicators();
- break;
- case CONNECT_TOOL:
- case BUDDY_TOOL:
- restoreConnectionLine();
- if ( startWidget )
- restoreRect( TQRect( mapToForm( ( (TQWidget*)startWidget )->parentWidget(),
- ( (TQWidget*)startWidget )->pos() ),
- ( (TQWidget*)startWidget )->size() ) );
- if ( endWidget )
- restoreRect( TQRect( mapToForm( ( (TQWidget*)endWidget )->parentWidget(),
- ( (TQWidget*)endWidget )->pos() ),
- ( (TQWidget*)endWidget )->size() ) );
- endUnclippedPainter();
- break;
- case POINTER_TOOL:
- break;
- default:
- if ( insertParent )
- endRectDraw();
- break;
- }
-
- startWidget = endWidget = 0;
- widgetPressed = FALSE;
- drawRubber = FALSE;
- insertParent = 0;
- delete buffer;
- buffer = 0;
-
- currTool = t;
-
- if ( hasFocus() )
- clearSelection( FALSE );
-
- mainWindow()->statusBar()->clear();
-
- // tool setup
- switch ( currTool ) {
- case POINTER_TOOL:
- if ( propertyWidget && !isMainContainer( propertyWidget ) && !isWidgetSelected( propertyWidget ) )
- emitShowProperties( TQT_TQOBJECT(mainContainer()) );
- restoreCursors( this, this );
- break;
- case ORDER_TOOL:
- if ( mainWindow()->formWindow() == this ) {
- mainWindow()->statusMessage( i18n( "Click widgets to change the tab order...") );
- orderedWidgets.clear();
- showOrderIndicators();
- if ( mainWindow()->formWindow() == this )
- emitShowProperties( TQT_TQOBJECT(mainContainer()) );
- setCursorToAll( ArrowCursor, this );
- }
- break;
- case CONNECT_TOOL:
- case BUDDY_TOOL:
- if ( currTool == CONNECT_TOOL )
- mainWindow()->statusMessage( i18n( "Drag a line to create a connection...") );
- else
- mainWindow()->statusMessage( i18n( "Drag a line to set a buddy...") );
- setCursorToAll( CrossCursor, this );
- if ( mainWindow()->formWindow() == this )
- emitShowProperties( TQT_TQOBJECT(mainContainer()) );
- break;
- default:
- mainWindow()->statusMessage( i18n( "Click on the form to insert a %1..." ).arg( WidgetDatabase::toolTip( currTool ).lower() ) );
- setCursorToAll( CrossCursor, this );
- if ( mainWindow()->formWindow() == this )
- emitShowProperties( TQT_TQOBJECT(mainContainer()) );
- break;
- }
-}
-
-void FormWindow::showOrderIndicators()
-{
- hideOrderIndicators();
- orderIndicators.setAutoDelete( TRUE );
- TQObjectList *l = mainContainer()->queryList( TQWIDGET_OBJECT_NAME_STRING );
- stackedWidgets = MetaDataBase::tabOrder( this );
- if ( l ) {
- int order = 1;
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- TQWidget* w = (TQWidget*) o;
- if ( w->isShown() &&
- insertedWidgets[ (void*)w ] &&
- w->focusPolicy() != TQ_NoFocus ) {
- OrderIndicator* ind = new OrderIndicator( order++, w, this );
- orderIndicators.append( ind );
- if ( stackedWidgets.findRef( w ) == -1 )
- stackedWidgets.append( w );
- }
- }
- delete l;
- }
- updateOrderIndicators();
-}
-
-void FormWindow::hideOrderIndicators()
-{
- orderIndicators.clear();
-}
-
-void FormWindow::updateOrderIndicators()
-{
- int order = 1;
- for ( TQWidget *w = stackedWidgets.first(); w; w = stackedWidgets.next() ) {
- for ( OrderIndicator* i = orderIndicators.first(); i; i = orderIndicators.next() )
- i->setOrder( order, w );
- order++;
- }
-}
-
-void FormWindow::repositionOrderIndicators()
-{
- for ( OrderIndicator* i = orderIndicators.first(); i; i = orderIndicators.next() )
- i->reposition();
-}
-
-
-void FormWindow::updateUndoInfo()
-{
- commandHistory()->emitUndoRedo();
-}
-
-bool FormWindow::checkCustomWidgets()
-{
- TQStringList missingCustomWidgets;
- TQPtrDictIterator<TQWidget> it( insertedWidgets );
- for ( ; it.current(); ++it ) {
- if ( it.current()->isA( "CustomWidget" ) ) {
- TQString className = WidgetFactory::classNameOf( TQT_TQOBJECT(it.current()) );
- if ( !MetaDataBase::hasCustomWidget( className ) )
- missingCustomWidgets << className;
- }
- }
-
- if ( !missingCustomWidgets.isEmpty() ) {
- TQString txt = i18n( "The following custom widgets are used in '%1',\n"
- "but are not known to TQt Designer:\n" ).arg( name() );
- for ( TQStringList::Iterator sit = missingCustomWidgets.begin(); sit != missingCustomWidgets.end(); ++sit )
- txt += " " + *sit + "\n";
- txt += i18n( "If you save this form and generate code for it using uic, \n"
- "the generated code will not compile.\n"
- "Do you want to save this form now?" );
- if ( TQMessageBox::information( mainWindow(), i18n( "Save Form" ), txt ) == 1 )
- return FALSE;
- }
- return TRUE;
-}
-
-void FormWindow::setPropertyShowingBlocked( bool b )
-{
- propShowBlocked = b;
-}
-
-bool FormWindow::isPropertyShowingBlocked() const
-{
- return propShowBlocked;
-}
-
-int FormWindow::numSelectedWidgets() const
-{
- return usedSelections.count();
-}
-
-TQString FormWindow::copy()
-{
- CHECK_MAINWINDOW_VALUE( TQString() );
- Resource resource( mainWindow() );
- resource.setWidget( this );
- return resource.copy();
-}
-
-void FormWindow::lowerWidgets()
-{
- TQWidgetList widgets;
- TQPtrDictIterator<WidgetSelection> it( usedSelections );
- for ( ; it.current(); ++it )
- widgets.append( it.current()->widget() );
-
- LowerCommand *cmd = new LowerCommand( i18n( "Lower" ), this, widgets );
- cmd->execute();
- commandHistory()->addCommand( cmd );
-}
-
-void find_accel( const TQString &txt, TQMap<TQChar, TQWidgetList > &accels, TQWidget *w )
-{
- int i = txt.find( "&" );
- if ( i == -1 )
- return;
- TQChar c = txt[ i + 1 ];
- if ( c.isNull() || c == '&' )
- return;
- c = c.lower();
- TQMap<TQChar, TQWidgetList >::Iterator it = accels.find( c );
- if ( it == accels.end() ) {
- TQWidgetList wl;
- wl.append( w );
- accels.insert( c, wl );
- } else {
- TQWidgetList *wl = &*it;
- wl->append( w );
- }
-}
-
-void FormWindow::checkAccels()
-{
- CHECK_MAINWINDOW;
- TQMap<TQChar, TQWidgetList > accels;
- TQObjectList *l = mainContainer()->queryList( TQWIDGET_OBJECT_NAME_STRING );
- if ( l ) {
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- if ( ( (TQWidget*)o )->isVisibleTo( this ) &&
- insertedWidgets[ (void*)o ] ) {
- TQWidget *w = (TQWidget*)o;
- const TQMetaProperty* text =
- w->metaObject()->property( w->metaObject()->findProperty( "text", TRUE ), TRUE );
- const TQMetaProperty* title =
- w->metaObject()->property( w->metaObject()->findProperty( "title", TRUE ), TRUE );
- const TQMetaProperty* pageTitle =
- w->metaObject()->property( w->metaObject()->findProperty( "pageTitle", TRUE ), TRUE );
- if ( text )
- find_accel( w->property( "text" ).toString(), accels, w );
- if ( title )
- find_accel( w->property( "title" ).toString(), accels, w );
- if ( pageTitle )
- find_accel( w->property( "pageTitle" ).toString(), accels, w );
- } else if ( ::tqqt_cast<MenuBarEditor*>(o) ) {
- ((MenuBarEditor *)o)->checkAccels( accels );
- }
- }
- delete l;
- }
-
- bool ok = TRUE;
- TQWidget *wid;
- for ( TQMap<TQChar, TQWidgetList >::Iterator it = accels.begin(); it != accels.end(); ++it ) {
- if ( (*it).count() > 1 ) {
- ok = FALSE;
- switch ( TQMessageBox::information( mainWindow(), i18n( "Check Accelerators" ),
- i18n( "Accelerator '%1' is used once.", "Accelerator '%1' is used %n times.", (*it).count()
- ).arg( it.key().upper() ),
- i18n( "&Select" ),
- i18n( "&Cancel" ), TQString(), 2 ) ) {
- case 0: // select
- clearSelection( FALSE );
- for ( wid = (*it).first(); wid; wid = (*it).next() )
- selectWidget( TQT_TQOBJECT(wid), TRUE );
- return;
- case 1: // cancel
- return;
- }
- }
- }
-
- if ( ok )
- TQMessageBox::information( mainWindow(), i18n( "Check Accelerators" ),
- i18n( "No accelerator is used more than once." ) );
-}
-
-void FormWindow::raiseWidgets()
-{
- TQWidgetList widgets;
- TQPtrDictIterator<WidgetSelection> it( usedSelections );
- for ( ; it.current(); ++it )
- widgets.append( it.current()->widget() );
-
- RaiseCommand *cmd = new RaiseCommand( i18n( "Raise" ), this, widgets );
- cmd->execute();
- commandHistory()->addCommand( cmd );
-}
-
-void FormWindow::paste( const TQString &cb, TQWidget *parent )
-{
- CHECK_MAINWINDOW;
- Resource resource( mainWindow() );
- resource.setWidget( this );
- resource.paste( cb, parent );
-}
-
-void FormWindow::selectAll()
-{
- checkedSelectionsForMove = FALSE;
- blockSignals( TRUE );
- TQObjectList *l = mainContainer()->queryList( TQWIDGET_OBJECT_NAME_STRING );
- if ( l ) {
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- if ( ( (TQWidget*)o )->isVisibleTo( this ) &&
- insertedWidgets[ (void*)o ] ) {
- selectWidget( TQT_TQOBJECT(o) );
- }
- }
- delete l;
- }
-
- blockSignals( FALSE );
- emitSelectionChanged();
- if ( propertyWidget )
- emitShowProperties( propertyWidget );
- emitSelectionChanged();
-}
-
-void FormWindow::layoutHorizontal()
-{
- TQWidgetList widgets( selectedWidgets() );
- LayoutHorizontalCommand *cmd = new LayoutHorizontalCommand( i18n( "Lay OutQt::Horizontally" ),
- this, mainContainer(), 0, widgets );
- clearSelection( FALSE );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::layoutVertical()
-{
- TQWidgetList widgets( selectedWidgets() );
- LayoutVerticalCommand *cmd = new LayoutVerticalCommand( i18n( "Lay OutQt::Vertically" ),
- this, mainContainer(), 0, widgets );
- clearSelection( FALSE );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::layoutHorizontalSplit()
-{
- TQWidgetList widgets( selectedWidgets() );
- LayoutHorizontalSplitCommand *cmd = new LayoutHorizontalSplitCommand( i18n( "Lay OutQt::Horizontally (in splitter)" ),
- this, mainContainer(), 0, widgets );
- clearSelection( FALSE );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::layoutVerticalSplit()
-{
- TQWidgetList widgets( selectedWidgets() );
- LayoutVerticalSplitCommand *cmd = new LayoutVerticalSplitCommand( i18n( "Lay OutQt::Vertically (in splitter)" ),
- this, mainContainer(), 0, widgets );
- clearSelection( FALSE );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::layoutGrid()
-{
- int xres = grid().x();
- int yres = grid().y();
-
- TQWidgetList widgets( selectedWidgets() );
- LayoutGridCommand *cmd = new LayoutGridCommand( i18n( "Lay Out in a Grid" ),
- this, mainContainer(), 0, widgets, xres, yres );
- clearSelection( FALSE );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::layoutHorizontalContainer( TQWidget *w )
-{
- if ( w == this )
- w = mainContainer();
- TQObjectList l = WidgetFactory::containerOfWidget(w)->childrenListObject();
- if ( l.isEmpty() )
- return;
- TQWidgetList widgets;
- for ( TQObject *o = l.first(); o; o = l.next() ) {
- if ( o->isWidgetType() &&
- ( (TQWidget*)o )->isVisibleTo( this ) &&
- insertedWidgets.find( (TQWidget*)o ) )
- widgets.append( (TQWidget*)o );
- }
- LayoutHorizontalCommand *cmd = new LayoutHorizontalCommand( i18n( "Lay Out ChildrenQt::Horizontally" ),
- this, mainContainer(), w, widgets );
- clearSelection( FALSE );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::layoutVerticalContainer( TQWidget *w )
-{
- if ( w == this )
- w = mainContainer();
- TQObjectList l = WidgetFactory::containerOfWidget(w)->childrenListObject();
- if ( l.isEmpty() )
- return;
- TQWidgetList widgets;
- for ( TQObject *o = l.first(); o; o = l.next() ) {
- if ( o->isWidgetType() &&
- ( (TQWidget*)o )->isVisibleTo( this ) &&
- insertedWidgets.find( (TQWidget*)o ) )
- widgets.append( (TQWidget*)o );
- }
- LayoutVerticalCommand *cmd = new LayoutVerticalCommand( i18n( "Lay Out ChildrenQt::Vertically" ),
- this, mainContainer(), w, widgets );
- clearSelection( FALSE );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::layoutGridContainer( TQWidget *w )
-{
- if ( w == this )
- w = mainContainer();
- int xres = grid().x();
- int yres = grid().y();
-
- TQObjectList l = WidgetFactory::containerOfWidget(w)->childrenListObject();
- if ( l.isEmpty() )
- return;
- TQWidgetList widgets;
- for ( TQObject *o = l.first(); o; o = l.next() ) {
- if ( o->isWidgetType() &&
- ( (TQWidget*)o )->isVisibleTo( this ) &&
- insertedWidgets.find( (TQWidget*)o ) )
- widgets.append( (TQWidget*)o );
- }
- LayoutGridCommand *cmd = new LayoutGridCommand( i18n( "Lay Out Children in a Grid" ),
- this, mainContainer(), w, widgets, xres, yres );
- clearSelection( FALSE );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-void FormWindow::breakLayout( TQWidget *w )
-{
- if ( w == this )
- w = mainContainer();
- w = WidgetFactory::containerOfWidget( w );
- TQPtrList<Command> commands;
-
- for (;;) {
- if ( !w || w == this )
- break;
- if ( WidgetFactory::layoutType( w ) != WidgetFactory::NoLayout &&
- WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ) ) ) {
- Command *cmd = breakLayoutCommand( w );
- if ( cmd )
- commands.insert( 0, cmd );
- if ( !::tqqt_cast<TQLayoutWidget*>(w) && !::tqqt_cast<TQSplitter*>(w) )
- break;
- }
- w = w->parentWidget();
- }
-
- if ( commands.isEmpty() )
- return;
-
- clearSelection( FALSE );
- MacroCommand *cmd = new MacroCommand( i18n( "Break Layout" ), this, commands );
- commandHistory()->addCommand( cmd );
- cmd->execute();
-}
-
-BreakLayoutCommand *FormWindow::breakLayoutCommand( TQWidget *w )
-{
- CHECK_MAINWINDOW_VALUE( 0 );
- TQObjectList l = w->childrenListObject();
- if ( l.isEmpty() )
- return 0;
-
- TQWidgetList widgets;
- for ( TQObject *o = l.first(); o; o = l.next() ) {
- if ( o->isWidgetType() &&
- !mainWindow()->isAToolBarChild( TQT_TQOBJECT(o) ) &&
- ( (TQWidget*)o )->isVisibleTo( this ) &&
- insertedWidgets.find( (TQWidget*)o ) )
- widgets.append( (TQWidget*)o );
- }
- return new BreakLayoutCommand( i18n( "Break Layout" ), this, WidgetFactory::widgetOfContainer( w ), widgets );
-}
-
-int FormWindow::numVisibleWidgets() const
-{
- TQPtrDictIterator<TQWidget> it( insertedWidgets );
- int visible = 0;
- for ( ; it.current(); ++it ) {
- if ( it.current()->isVisibleTo( (FormWindow*)this ) )
- visible++;
- }
- return visible;
-}
-
-bool FormWindow::hasInsertedChildren( TQWidget *w ) const
-{
- if ( !w )
- return FALSE;
- w = WidgetFactory::containerOfWidget( w );
- if ( !w )
- return FALSE;
- TQObjectList *l = w->queryList( TQWIDGET_OBJECT_NAME_STRING );
- if ( !l || !l->first() ) {
- delete l;
- return FALSE;
- }
-
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- if ( o->isWidgetType() &&
- ( (TQWidget*)o )->isVisibleTo( (FormWindow*)this ) &&
- insertedWidgets.find( (TQWidget*)o ) ) {
- delete l;
- return TRUE;
- }
- }
-
- delete l;
- return FALSE;
-}
-
-bool FormWindow::allowMove( TQWidget *w )
-{
- w = w->parentWidget();
- while ( w ) {
- if ( ( isMainContainer( TQT_TQOBJECT(w) ) || insertedWidgets.find( w ) ) && WidgetFactory::layoutType( w ) == WidgetFactory::NoLayout )
- return TRUE;
- w = w->parentWidget();
- }
- return FALSE;
-}
-
-
-void FormWindow::editConnections()
-{
- CHECK_MAINWINDOW;
- buffer = 0;
- if ( !startWidget || !endWidget )
- return;
-
- ConnectionDialog dlg( mainwindow );
- mainWindow()->statusMessage( i18n( "Edit connections...") );
- dlg.addConnection( TQT_TQOBJECT(startWidget), TQT_TQOBJECT(endWidget), TQString(), TQString() );
- TQTimer::singleShot( 0, &dlg, TQT_SLOT(ensureConnectionVisible()) );
- dlg.exec();
-}
-
-void FormWindow::saveBackground()
-{
- if ( buffer )
- delete buffer;
- buffer = new TQPixmap( width(), height() );
- *buffer = TQPixmap::grabWindow( winId() );
-}
-
-void FormWindow::restoreConnectionLine()
-{
- if (!unclippedPainter || !buffer) // designer will occasionally crash if buffer is not tested to be non-zero
- return;
-
- int a =TQABS( startPos.x() - currentPos.x() );
- int b = TQABS( startPos.y() - currentPos.y() );
- TQRect r( startPos, currentPos );
-
- if ( a < 32 || b < 32 ) { // special case: vertical or horizontal line
- r = r.normalize();
- unclippedPainter->drawPixmap( r.x() - 2, r.y() - 2, *buffer,
- r.x() - 2, r.y() - 2, r.width() + 4, r.height() + 4 );
- return;
- }
-
- if ( a <= 0 )
- a = 1;
- if ( b <= 0 )
- b = 1;
- int w, h;
- if ( b > a ) {
- h = 64;
- w = ( a * h ) / b;
- } else {
- w = 64;
- h = ( b * w ) / a;
- }
-
- int dx = 2 * w / 3;
- int dy = 2 * h / 3;
- TQPoint p( startPos );
-
- if ( r.x() > r.right() ) {
- dx = dx * -1;
- p.setX( p.x() - 64 );
- r.moveBy( -64, 0 );
- }
- if ( r.y() > r.bottom() ) {
- dy = dy * -1;
- p.setY( p.y() - 64 );
- r.moveBy( 0, -64 );
- }
-
- w = h = 64;
- r = r.normalize();
- while ( r.contains( p ) ) {
- unclippedPainter->drawPixmap( p, *buffer, TQRect( p, TQSize( w, h ) ) );
- unclippedPainter->setPen( red );
- p.setX( p.x() + dx );
- p.setY( p.y() + dy );
- }
-
- unclippedPainter->drawPixmap( startPos.x() - 10, startPos.y() - 10, *buffer,
- startPos.x() - 10, startPos.y() - 10, 20, 20 );
-}
-
-void FormWindow::restoreRect( const TQRect &rect )
-{
- if (!unclippedPainter || !buffer)
- return;
-
- TQRect r( rect );
- r = r.normalize();
-
- r = TQRect( r.x() + 2, r.y() + 2, r.width() - 4, r.height() - 4 );
-
- unclippedPainter->drawPixmap( r.x() - 2, r.y() - 2, *buffer, r.x() - 2, r.y() - 2, r.width() + 4, 4 );
- unclippedPainter->drawPixmap( r.x() - 2, r.y() - 2, *buffer, r.x() - 2, r.y() - 2, 4, r.height() + 4 );
- unclippedPainter->drawPixmap( r.x() - 2, r.y() + r.height() - 3, *buffer, r.x() - 2, r.y() + r.height() - 3, r.width() + 4, 5 );
- unclippedPainter->drawPixmap( r.x() + r.width() - 2, r.y(), *buffer, r.x() + r.width() - 2, r.y(), 4, r.height() + 4 );
-}
-
-void FormWindow::drawConnectionLine()
-{
- if ( !unclippedPainter )
- return;
-
- unclippedPainter->setPen( TQPen( white, 2 ) );
- unclippedPainter->drawLine( startPos, currentPos );
- if ( validForBuddy )
- unclippedPainter->setPen( TQPen( darkRed, 1 ) );
- else
- unclippedPainter->setPen( TQPen( darkCyan, 1 ) );
- unclippedPainter->drawLine( startPos, currentPos );
-
- if ( validForBuddy )
- unclippedPainter->setPen( TQPen( darkGreen, 1 ) );
- else
- unclippedPainter->setPen( TQPen( magenta, 1 ) );
- if ( startWidget ) {
- TQWidget *s = (TQWidget*)startWidget;
- TQPoint p = mapToForm( s, TQPoint(0,0) );
- unclippedPainter->drawRect( TQRect( p + TQPoint( 2, 2 ), s->size() - TQSize( 4, 4 ) ) );
- }
- if ( endWidget ) {
- TQWidget *e = (TQWidget*)endWidget;
- TQPoint p = mapToForm( e, TQPoint(0,0) );
- unclippedPainter->drawRect( TQRect( p + TQPoint( 2, 2 ), e->size() - TQSize( 4, 4 ) ) );
- }
-}
-
-TQString FormWindow::fileName() const
-{
- return ff->absFileName();
-}
-
-void FormWindow::setFileName( const TQString &fn )
-{
- ff->setFileName( fn );
- emit fileNameChanged( ff->fileName(), this );
-}
-
-void FormWindow::modificationChanged( bool m )
-{
- emit modificationChanged( m, this );
- emit modificationChanged( m, ff->fileName() );
-}
-
-bool FormWindow::unify( TQObject *w, TQString &s, bool changeIt )
-{
- bool found = !isMainContainer( w ) && qstrcmp( name(), s.latin1() ) == 0;
- if ( !found ) {
- TQString orig = s;
- int num = 1;
- TQPtrDictIterator<TQWidget> it( insertedWidgets );
- for ( ; it.current();) {
- if ( TQT_BASE_OBJECT(it.current()) != TQT_BASE_OBJECT(w) &&
- qstrcmp( it.current()->name(), s.latin1() ) == 0 ) {
- found = TRUE;
- if ( !changeIt )
- break;
- s = orig + "_" + TQString::number( ++num );
- it.toFirst();
- } else {
- ++it;
- }
- }
- if ( !found ) {
- TQPtrList<TQAction> al;
- TQAction *a = 0;
- for ( a = actions.first(); a; a = actions.next() ) {
- TQObjectList *l = a->queryList( TQACTION_OBJECT_NAME_STRING );
- al.append( a );
- for ( TQObject *ao = l->first(); ao; ao = l->next() )
- al.append( (TQAction*)ao );
- delete l;
- }
- for ( a = al.first(); a; a = al.next() ) {
- if ( a != w &&
- qstrcmp( a->name(), s.latin1() ) == 0 ) {
- found = TRUE;
- if ( !changeIt )
- break;
- s = orig + "_" + TQString::number( ++num );
- a = actions.first();
- }
- }
- }
- if ( ::tqqt_cast<TQMainWindow*>(mainContainer()) && !found ) {
- TQObjectList *l = mainContainer()->queryList( "PopupMenuEditor" );
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- if ( o != w &&
- qstrcmp ( o->name(), s.latin1() ) == 0 ) {
- found = TRUE;
- if ( !changeIt )
- break;
- s = orig + "_" + TQString::number( ++num );
- o = l->first();
- }
- }
- delete l;
- }
- if ( ::tqqt_cast<TQMainWindow*>(mainContainer()) ) {
- if ( !found ) {
- TQObjectList *l = mainContainer()->queryList( TQDOCKWINDOW_OBJECT_NAME_STRING, 0, TRUE );
- for ( TQObject *o = l->first(); o; o = l->next() ) {
- if ( o != w &&
- qstrcmp( o->name(), s.latin1() ) == 0 ) {
- found = TRUE;
- if ( !changeIt )
- break;
- s = orig + "_" + TQString::number( ++num );
- o = l->first();
- }
- }
- delete l;
- }
- }
- }
-
- if ( !found )
- return TRUE;
- return FALSE;
-}
-
-bool FormWindow::isCustomWidgetUsed( MetaDataBase::CustomWidget *w )
-{
- TQPtrDictIterator<TQWidget> it( insertedWidgets );
- for ( ; it.current(); ++it ) {
- if ( it.current()->isA( "CustomWidget" ) ) {
- if ( qstrcmp( WidgetFactory::classNameOf( TQT_TQOBJECT(it.current()) ), w->className.utf8() ) == 0 )
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-bool FormWindow::isDatabaseWidgetUsed() const
-{
-#ifndef TQT_NO_SQL
- TQStringList dbClasses;
- dbClasses << TQDATATABLE_OBJECT_NAME_STRING; // add more here
- TQPtrDictIterator<TQWidget> it( insertedWidgets );
- for ( ; it.current(); ++it ) {
- TQString c( it.current()->className() );
- if ( dbClasses.contains( c ) > 0 ) {
- return TRUE;
- }
- }
-#endif
- return FALSE;
-}
-
-bool FormWindow::isDatabaseAware() const
-{
-#ifndef TQT_NO_SQL
- if ( TQString(mContainer->className()) == "QDesignerDataBrowser" || TQString(mContainer->className()) == "QDesignerDataView" )
- return TRUE;
- return isDatabaseWidgetUsed();
-#else
- return FALSE;
-#endif
-}
-
-void FormWindow::visibilityChanged()
-{
- if ( currTool != ORDER_TOOL ) {
- emitUpdateProperties( TQT_TQOBJECT(currentWidget()) );
- } else {
- updateOrderIndicators();
- repositionOrderIndicators();
- }
-}
-
-
-/*!
- Maps \a pos in \a w's coordinates to the form's coordinate system.
-
- This is the equivalent to mapFromGlobal(w->mapToGlobal(pos) ) but
- avoids the two roundtrips to the X-Server on Unix/X11.
- */
-TQPoint FormWindow::mapToForm( const TQWidget* w, const TQPoint& pos ) const
-{
- TQPoint p = pos;
- const TQWidget* i = w;
- while ( i && !i->isTopLevel() && !isMainContainer( TQT_TQOBJECT(const_cast<TQWidget*>(i)) ) ) {
- p = i->mapToParent( p );
- i = i->parentWidget();
- }
- return mapFromGlobal( w->mapToGlobal( pos ) );
-}
-
-static int widgetDepth( TQWidget *w )
-{
- int d = -1;
- while ( w && !w->isTopLevel() ) {
- d++;
- w = w->parentWidget();
- }
-
- return d;
-}
-
-static bool isChildOf( TQWidget *c, TQWidget *p )
-{
- while ( c && !c->isTopLevel() ) {
- if ( c == p )
- return TRUE;
- c = c->parentWidget();
- }
- return FALSE;
-}
-
-TQWidget *FormWindow::containerAt( const TQPoint &pos, TQWidget *notParentOf )
-{
- TQPtrDictIterator<TQWidget> it( insertedWidgets );
- TQWidget *container = 0;
- int depth = -1;
- TQWidgetList selected = selectedWidgets();
- if ( TQT_TQRECT_OBJECT(rect()).contains( mapFromGlobal( pos ) ) ) {
- container = mainContainer();
- depth = widgetDepth( container );
- }
-
- for ( ; it.current(); ++it ) {
- if ( ::tqqt_cast<TQLayoutWidget*>(it.current())
- || ::tqqt_cast<TQSplitter*>(it.current()) )
- continue;
- if ( !it.current()->isVisibleTo( this ) )
- continue;
- if ( selected.find( it.current() ) != -1 )
- continue;
- if ( !WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(it.current()) ) ) ) &&
- it.current() != mainContainer() )
- continue;
-
- // the rectangles of all ancestors of the container must contain the insert position
- TQWidget *w = it.current();
- while ( w && !w->isTopLevel() ) {
- if ( !TQT_TQRECT_OBJECT(w->rect()).contains( ( w->mapFromGlobal( pos ) ) ) )
- break;
- w = w->parentWidget();
- }
- if ( !( w == 0 || w->isTopLevel() ) ) continue; // we did not get through the full while loop
-
- int wd = widgetDepth( it.current() );
- if ( wd == depth && container ) {
- if ( ( it.current()->parentWidget()->childrenListObject() ).find( TQT_TQOBJECT(it.current()) ) >
- ( container->parentWidget()->childrenListObject() ).find( TQT_TQOBJECT(container) ) )
- wd++;
- }
- if ( wd > depth && !isChildOf( it.current(), notParentOf ) ) {
- depth = wd;
- container = it.current();
- }
- }
-
- return container;
-}
-
-bool FormWindow::isMainContainer( TQObject *w ) const
-{
- return w && w->isWidgetType() && ( TQT_BASE_OBJECT(w) == this || TQT_BASE_OBJECT(w) == mainContainer() );
-}
-
-void FormWindow::setMainContainer( TQWidget *w )
-{
- bool resetPropertyWidget = isMainContainer( propertyWidget );
- if ( mContainer )
- insertedWidgets.remove( mContainer );
- if ( TQT_BASE_OBJECT(propertyWidget) == TQT_BASE_OBJECT(mContainer) )
- propertyWidget = 0;
- delete mContainer;
- mContainer = w;
- insertedWidgets.insert( mContainer, mContainer );
- delete layout();
- TQHBoxLayout *l = new TQHBoxLayout( this );
- l->addWidget( w );
- if ( resetPropertyWidget ) {
- TQObject *opw = propertyWidget;
- propertyWidget = TQT_TQOBJECT(mContainer);
- if ( opw && opw->isWidgetType() )
- repaintSelection( (TQWidget*)opw );
- }
- if ( project() ) {
- LanguageInterface *iface = MetaDataBase::languageInterface( project()->language() );
- if ( iface && !project()->isCpp() && !isFake() ) {
- if ( !MetaDataBase::hasFunction( TQT_TQOBJECT(this), "init()" ) )
- MetaDataBase::addFunction( TQT_TQOBJECT(this), "init()", "", "private", "function",
- project()->language(), "void" );
- if ( !MetaDataBase::hasFunction( TQT_TQOBJECT(this), "destroy()" ) )
- MetaDataBase::addFunction( TQT_TQOBJECT(this), "destroy()", "", "private", "function",
- project()->language(), "void" );
- if ( !MetaDataBase::hasConnection( TQT_TQOBJECT(this), TQT_TQOBJECT(mainContainer()), "shown()", TQT_TQOBJECT(mainContainer()), "init" ) )
- MetaDataBase::addConnection( TQT_TQOBJECT(this), TQT_TQOBJECT(mainContainer()), "shown()", TQT_TQOBJECT(mainContainer()), "init" );
- if ( !MetaDataBase::hasConnection( TQT_TQOBJECT(this), TQT_TQOBJECT(mainContainer()), "destroyed()", TQT_TQOBJECT(mainContainer()), "destroy" ) )
- MetaDataBase::addConnection( TQT_TQOBJECT(this), TQT_TQOBJECT(mainContainer()), "destroyed()",
- TQT_TQOBJECT(mainContainer()), "destroy" );
- }
- }
-}
-
-bool FormWindow::savePixmapInline() const
-{
- return pixInline;
-}
-
-bool FormWindow::savePixmapInProject() const
-{
- return pixProject;
-}
-
-TQString FormWindow::pixmapLoaderFunction() const
-{
- return pixLoader;
-}
-
-void FormWindow::setSavePixmapInline( bool b )
-{
- pixInline = b;
- if ( b )
- pixProject = FALSE;
-}
-
-void FormWindow::setSavePixmapInProject( bool b )
-{
- pixProject = b;
- if ( b )
- pixInline = FALSE;
-}
-
-void FormWindow::setPixmapLoaderFunction( const TQString &func )
-{
- pixLoader = func;
-}
-
-void FormWindow::setActiveObject( TQObject *o )
-{
- emitShowProperties( o );
- propertyWidget = o;
-}
-
-void FormWindow::setProject( Project *pro )
-{
- proj = pro;
-}
-
-Project *FormWindow::project() const
-{
- return proj;
-}
-
-TQAction *FormWindow::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_OBJECT_NAME_STRING );
- if ( ac )
- return ac;
- }
- return 0;
-}
-
-void FormWindow::killAccels( TQObject *top )
-{
- TQObjectList *l = top->queryList( TQACCEL_OBJECT_NAME_STRING );
- if ( !l )
- return;
- for ( TQObject *o = l->first(); o; o = l->next() )
- ( (TQAccel*)o )->setEnabled( FALSE );
- delete l;
-}
-
-DesignerFormWindow *FormWindow::iFace()
-{
- if ( !iface )
- iface = new DesignerFormWindowImpl( this );
- return iface;
-}
-
-bool FormWindow::isCentralWidget( TQObject *w ) const
-{
- if ( !::tqqt_cast<TQMainWindow*>(mainContainer()) )
- return FALSE;
- return TQT_BASE_OBJECT(w) == TQT_BASE_OBJECT(( (TQMainWindow*)mainContainer() )->centralWidget());
-}
-
-int FormWindow::layoutDefaultSpacing() const
-{
- return defSpacing;
-}
-
-int FormWindow::layoutDefaultMargin() const
-{
- return defMargin;
-}
-
-void FormWindow::setLayoutDefaultSpacing( int s )
-{
- defSpacing = s;
-}
-
-void FormWindow::setLayoutDefaultMargin( int s )
-{
- defMargin = s;
-}
-
-void FormWindow::setSpacingFunction( const TQString &funct )
-{
- spacFunction = funct;
-}
-
-TQString FormWindow::spacingFunction() const
-{
- return spacFunction;
-}
-
-void FormWindow::hasLayoutFunctions( bool b )
-{
- hasLayoutFunc = b;
-}
-
-bool FormWindow::hasLayoutFunctions() const
-{
- return hasLayoutFunc;
-}
-
-void FormWindow::setMarginFunction( const TQString &funct )
-{
- margFunction = funct;
-}
-
-TQString FormWindow::marginFunction() const
-{
- return margFunction;
-}
-
-FormFile *FormWindow::formFile() const
-{
- return ff;
-}
-
-void FormWindow::setFormFile( FormFile *f )
-{
- ff = f;
- if ( ff )
- connect( this, TQT_SIGNAL( modificationChanged(bool, const TQString&) ), ff, TQT_SLOT( formWindowChangedSomehow() ) );
-}
-
-bool FormWindow::canBeBuddy( const TQWidget *w ) const
-{
- return w->focusPolicy() != TQ_NoFocus;
-}
-
-bool FormWindow::event( TQEvent *e )
-{
- if (e->type() == TQEvent::ShowMaximized)
- {
- if ( isMaximized() )
- setWindowState( windowState() & ~WindowMaximized | WindowActive);
- return true;
- }
- return TQWidget::event(e);
-}