diff options
Diffstat (limited to 'kdevdesigner/designer/mainwindow.cpp')
-rw-r--r-- | kdevdesigner/designer/mainwindow.cpp | 3784 |
1 files changed, 0 insertions, 3784 deletions
diff --git a/kdevdesigner/designer/mainwindow.cpp b/kdevdesigner/designer/mainwindow.cpp deleted file mode 100644 index 3d900532..00000000 --- a/kdevdesigner/designer/mainwindow.cpp +++ /dev/null @@ -1,3784 +0,0 @@ - /********************************************************************** -** Copyright (C) 2000-2002 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 "designerappiface.h" -#include "designerapp.h" - -#include "mainwindow.h" -#include "defs.h" -#include "globaldefs.h" -#include "formwindow.h" -#include "widgetdatabase.h" -#include "widgetfactory.h" -#include "propertyeditor.h" -#include "metadatabase.h" -#include "resource.h" -#include "hierarchyview.h" -#include "newformimpl.h" -#include "workspace.h" -#include "about.h" -#include "multilineeditorimpl.h" -#include "wizardeditorimpl.h" -#include "outputwindow.h" -#include "actioneditorimpl.h" -#include "actiondnd.h" -#include "project.h" -#include "projectsettingsimpl.h" -#include "tqwidgetfactory.h" -#include "pixmapcollection.h" -#include "qcompletionedit.h" -#include "sourcefile.h" -#include "orderindicator.h" -#include <tqtoolbox.h> -#include "widgetaction.h" -#include "propertyobject.h" -#include "popupmenueditor.h" -#include "menubareditor.h" - -#include "startdialog.h" -#include "createtemplate.h" -#include "editfunctions.h" -//#include "connectionviewer.h" -#include "formsettings.h" -#include "preferences.h" -#include "pixmapcollectioneditor.h" -#ifndef TQT_NO_SQL -#include "dbconnectionimpl.h" -#endif -//#include "connectioneditor.h" -#include "customwidgeteditorimpl.h" -#include "paletteeditorimpl.h" -#include "listboxeditorimpl.h" -#include "listvieweditorimpl.h" -#include "iconvieweditorimpl.h" -#include "tableeditorimpl.h" -#include "multilineeditor.h" -#include "finddialog.h" -#include "replacedialog.h" -#include "gotolinedialog.h" -#include "designeraction.h" - -#include <kiconloader.h> -#include <tdelocale.h> - -#include <tqinputdialog.h> -#include <tqtoolbar.h> -#include <tqfeatures.h> -#include <tqmetaobject.h> -#include <tqaction.h> -#include <tqpixmap.h> -#include <tqworkspace.h> -#include <tqfiledialog.h> -#include <tqclipboard.h> -#include <tqmessagebox.h> -#include <tqbuffer.h> -#include <tqdir.h> -#include <tqstyle.h> -#include <tqlabel.h> -#include <tqstatusbar.h> -#include <tqfile.h> -#include <tqcheckbox.h> -#include <tqwhatsthis.h> -#include <tqwizard.h> -#include <tqtimer.h> -#include <tqlistbox.h> -#include <tqdockwindow.h> -#include <tqstylefactory.h> -#include <tqvbox.h> -#include <tqprocess.h> -#include <tqsettings.h> -#include <tqaccel.h> -#include <tqtooltip.h> -#include <tqsizegrip.h> -#include <tqtextview.h> -#include <tqassistantclient.h> -#include <stdlib.h> - -#include "kdevdesigner_part.h" - -static bool mblockNewForms = FALSE; -extern TQMap<TQWidget*, TQString> *qwf_forms; -extern TQString *qwf_language; -extern bool qwf_execute_code; -extern bool qwf_stays_on_top; -extern void set_splash_status( const TQString &txt ); -extern TQObject* qwf_form_object; -extern TQString *qwf_plugin_dir; - -MainWindow *MainWindow::self = 0; - -TQString assistantPath() -{ - TQString path = TQDir::cleanDirPath( TQString( tqInstallPathBins() ) + - TQDir::separator() ); - return path; -} - - -static TQString textNoAccel( const TQString& text) -{ - TQString t = text; - int i; - while ( (i = t.find('&') )>= 0 ) { - t.remove(i,1); - } - return t; -} - - -MainWindow::MainWindow( KDevDesignerPart *part, bool asClient, bool single, const TQString &plgDir ) - : TQMainWindow( 0, "designer_mainwindow"/*, WType_TopLevel | (single ? 0 : WDestructiveClose) | WGroupLeader*/ ), - grd( 10, 10 ), sGrid( TRUE ), snGrid( TRUE ), restoreConfig( TRUE ), splashScreen( TRUE ), - fileFilter( i18n( "TQt User-Interface Files (*.ui)" ) ), client( asClient ), - previewing( FALSE ), databaseAutoEdit( FALSE ), autoSaveEnabled( FALSE ), autoSaveInterval( 1800 ), m_part(part) -{ -// extern void qInitImages_designercore(); -// qInitImages_designercore(); - - self = this; - setPluginDirectory( plgDir ); - customWidgetToolBar = customWidgetToolBar2 = 0; - guiStuffVisible = TRUE; - editorsReadOnly = FALSE; - sSignalHandlers = TRUE; - init_colors(); - shStartDialog = FALSE; - - desInterface = new DesignerInterfaceImpl( this ); - desInterface->addRef(); - inDebugMode = FALSE; - savePluginPaths = FALSE; - - updateFunctionsTimer = new TQTimer( this ); - connect( updateFunctionsTimer, TQT_SIGNAL( timeout() ), - this, TQT_SLOT( doFunctionsChanged() ) ); - - autoSaveTimer = new TQTimer( this ); - connect( autoSaveTimer, TQT_SIGNAL( timeout() ), - this, TQT_SLOT( fileSaveAll() ) ); - - set_splash_status( "Loading Plugins..." ); - setupPluginManagers(); - -/* if ( !single ) - tqApp->setMainWidget( this );*/ - TQWidgetFactory::addWidgetFactory( new CustomWidgetFactory ); -#ifndef TQ_WS_MACX - setIcon( BarIcon( "designer_appicon.png", KDevDesignerPartFactory::instance() ) ); -#endif - - actionGroupTools = 0; - prefDia = 0; - windowMenu = 0; - hierarchyView = 0; - actionEditor = 0; - currentProject = 0; - wspace = 0; - oWindow = 0; - singleProject = single; - - statusBar()->clear(); -#if defined(TQT_NON_COMMERCIAL) - statusBar()->addWidget( new TQLabel(i18n("Ready - This is the non-commercial version of TQt - " - "For commercial evaluations, use the help menu to register with Trolltech."), statusBar()), 1 ); -#else - statusBar()->addWidget( new TQLabel("Ready", statusBar()), 1 ); -#endif - - - set_splash_status( "Setting up GUI..." ); - setupMDI(); - setupMenuBar(); - - setupToolbox(); - - setupFileActions(); - setupEditActions(); - setupProjectActions(); - setupSearchActions(); - layoutToolBar = new TQToolBar( this, "Layout" ); - layoutToolBar->setCloseMode( TQDockWindow::Undocked ); - addToolBar( layoutToolBar, i18n( "Layout" ) ); - interpreterPluginManager = 0; - setupToolActions(); - setupLayoutActions(); - setupPreviewActions(); - setupOutputWindow(); - setupActionManager(); - setupWindowActions(); - - setupWorkspace(); - setupHierarchyView(); - setupPropertyEditor(); - setupActionEditor(); - - setupHelpActions(); - - setupRMBMenus(); - - connect( this, TQT_SIGNAL( projectChanged() ), this, TQT_SLOT( emitProjectSignals() ) ); - connect( this, TQT_SIGNAL( hasActiveWindow(bool) ), this, TQT_SLOT( emitProjectSignals() ) ); - - emit hasActiveForm( FALSE ); - emit hasActiveWindow( FALSE ); - - lastPressWidget = 0; - tqApp->installEventFilter( this ); - - TQSize as( tqApp->desktop()->size() ); - as -= TQSize( 30, 30 ); - resize( TQSize( 1200, 1000 ).boundedTo( as ) ); - - connect( tqApp->clipboard(), TQT_SIGNAL( dataChanged() ), - this, TQT_SLOT( clipboardChanged() ) ); - clipboardChanged(); - layoutChilds = FALSE; - layoutSelected = FALSE; - breakLayout = FALSE; - backPix = TRUE; - - set_splash_status( "Loading User Settings..." ); - readConfig(); - // hack to make WidgetFactory happy (so it knows TQWidget and TQDialog for resetting properties) - TQWidget *w = WidgetFactory::create( WidgetDatabase::idFromClassName( TQWIDGET_OBJECT_NAME_STRING ), this, 0, FALSE ); - delete w; - w = WidgetFactory::create( WidgetDatabase::idFromClassName( TQDIALOG_OBJECT_NAME_STRING ), this, 0, FALSE ); - delete w; - w = WidgetFactory::create( WidgetDatabase::idFromClassName( TQLABEL_OBJECT_NAME_STRING ), this, 0, FALSE ); - delete w; - w = WidgetFactory::create( WidgetDatabase::idFromClassName( TQTABWIDGET_OBJECT_NAME_STRING ), this, 0, FALSE ); - delete w; - w = WidgetFactory::create( WidgetDatabase::idFromClassName( TQFRAME_OBJECT_NAME_STRING ), this, 0, FALSE ); - delete w; - setAppropriate( (TQDockWindow*)actionEditor->parentWidget(), FALSE ); - actionEditor->parentWidget()->hide(); - - assistant = new TQAssistantClient( assistantPath(), TQT_TQOBJECT(this) ); - - statusBar()->setSizeGripEnabled( TRUE ); - set_splash_status( "Initialization Done." ); -/* if ( shStartDialog ) - TQTimer::singleShot( 0, this, TQT_SLOT( showStartDialog() ));*/ - - if ( autoSaveEnabled ) - autoSaveTimer->start( autoSaveInterval * 1000 ); - - setFocusPolicy( TQ_StrongFocus ); -} - -MainWindow::~MainWindow() -{ - TQValueList<Tab>::Iterator tit; - for ( tit = preferenceTabs.begin(); tit != preferenceTabs.end(); ++tit ) { - Tab t = *tit; - delete t.w; - } - for ( tit = projectTabs.begin(); tit != projectTabs.end(); ++tit ) { - Tab t = *tit; - delete t.w; - } - - TQMap< TQAction*, Project* >::Iterator it = projects.begin(); - while ( it != projects.end() ) { - Project *p = *it; - ++it; - delete p; - } - projects.clear(); - - delete oWindow; - oWindow = 0; - - desInterface->release(); - desInterface = 0; - - delete actionPluginManager; - delete preferencePluginManager; - delete projectSettingsPluginManager; - delete interpreterPluginManager; - delete templateWizardPluginManager; - delete editorPluginManager; - delete sourceTemplatePluginManager; - - MetaDataBase::clearDataBase(); - if(self == this) - self = 0; -} - -void MainWindow::setupMDI() -{ - TQVBox *vbox = new TQVBox( this ); - setCentralWidget( vbox ); - vbox->setFrameStyle( TQFrame::StyledPanel | TQFrame::Sunken ); - vbox->setMargin( 1 ); - vbox->setLineWidth( 1 ); - qworkspace = new TQWorkspace( vbox ); - qworkspace->setPaletteBackgroundPixmap( UserIcon( "designer_background.png", KDevDesignerPartFactory::instance() ) ); - qworkspace->setScrollBarsEnabled( TRUE ); - connect( qworkspace, TQT_SIGNAL( windowActivated( TQWidget * ) ), - this, TQT_SLOT( activeWindowChanged( TQWidget * ) ) ); - lastActiveFormWindow = 0; - qworkspace->setAcceptDrops( TRUE ); -} - -void MainWindow::setupMenuBar() -{ - menubar = menuBar(); -} - -void MainWindow::setupPropertyEditor() -{ - TQDockWindow *dw = new TQDockWindow( TQDockWindow::InDock, this ); - dw->setResizeEnabled( TRUE ); - dw->setCloseMode( TQDockWindow::Always ); - propertyEditor = new PropertyEditor( dw ); - addToolBar( dw, TQt::DockRight ); - dw->setWidget( propertyEditor ); - dw->setFixedExtentWidth( 250 ); - dw->setCaption( i18n( "Property Editor/Signal Handlers" ) ); - TQWhatsThis::add( propertyEditor, - i18n("<b>The Property Editor</b>" - "<p>You can change the appearance and behavior of the selected widget in the " - "property editor.</p>" - "<p>You can set properties for components and forms at design time and see the " - "immediately see the effects of the changes. " - "Each property has its own editor which (depending on the property) can be used " - "to enter " - "new values, open a special dialog, or to select values from a predefined list. " - "Click <b>F1</b> to get detailed help for the selected property.</p>" - "<p>You can resize the columns of the editor by dragging the separators in the " - "list's header.</p>" - "<p><b>Signal Handlers</b></p>" - "<p>In the Signal Handlers tab you can define connections between " - "the signals emitted by widgets and the slots in the form. " - "(These connections can also be made using the connection tool.)" ) ); - dw->show(); -} - -void MainWindow::setupOutputWindow() -{ - TQDockWindow *dw = new TQDockWindow( TQDockWindow::InDock, this ); - dw->setResizeEnabled( TRUE ); - dw->setCloseMode( TQDockWindow::Always ); - addToolBar( dw, TQt::DockBottom ); - oWindow = new OutputWindow( dw ); - dw->setWidget( oWindow ); - dw->setFixedExtentHeight( 150 ); - dw->setCaption( i18n( "Output Window" ) ); -} - -void MainWindow::setupHierarchyView() -{ - if ( hierarchyView ) - return; - TQDockWindow *dw = new TQDockWindow( TQDockWindow::InDock, this ); - dw->setResizeEnabled( TRUE ); - dw->setCloseMode( TQDockWindow::Always ); - hierarchyView = new HierarchyView( dw ); - addToolBar( dw, TQt::DockRight ); - dw->setWidget( hierarchyView ); - - dw->setCaption( i18n( "Object Explorer" ) ); - dw->setFixedExtentWidth( 250 ); - TQWhatsThis::add( hierarchyView, - i18n("<b>The Object Explorer</b>" - "<p>The Object Explorer provides an overview of the relationships " - "between the widgets in a form. You can use the clipboard functions using " - "a context menu for each item in the view. It is also useful for selecting widgets " - "in forms that have complex layouts.</p>" - "<p>The columns can be resized by dragging the separator in the list's header.</p>" - "<p>The second tab shows all the form's slots, class variables, includes, etc.</p>") ); - dw->show(); -} - -void MainWindow::setupWorkspace() -{ - TQDockWindow *dw = new TQDockWindow( TQDockWindow::InDock, this ); - dw->setResizeEnabled( TRUE ); - dw->setCloseMode( TQDockWindow::Always ); - TQVBox *vbox = new TQVBox( dw ); - QCompletionEdit *edit = new QCompletionEdit( vbox ); - TQToolTip::add( edit, i18n( "Start typing the buffer you want to switch to here (ALT+B)" ) ); - TQAccel *a = new TQAccel( this ); - a->connectItem( a->insertItem( ALT + Key_B ), edit, TQT_SLOT( setFocus() ) ); - wspace = new Workspace( vbox, this ); - wspace->setBufferEdit( edit ); - wspace->setCurrentProject( currentProject ); - addToolBar( dw, TQt::DockRight ); - dw->setWidget( vbox ); - - dw->setCaption( i18n( "Project Overview" ) ); - TQWhatsThis::add( wspace, i18n("<b>The Project Overview Window</b>" - "<p>The Project Overview Window displays all the current " - "project, including forms and source files.</p>" - "<p>Use the search field to rapidly switch between files.</p>")); - dw->setFixedExtentHeight( 100 ); - dw->show(); -} - -void MainWindow::setupActionEditor() -{ - TQDockWindow *dw = new TQDockWindow( TQDockWindow::OutsideDock, this, 0 ); - addDockWindow( dw, TQt::DockTornOff ); - dw->setResizeEnabled( TRUE ); - dw->setCloseMode( TQDockWindow::Always ); - actionEditor = new ActionEditor( dw ); - dw->setWidget( actionEditor ); - actionEditor->show(); - dw->setCaption( i18n( "Action Editor" ) ); - TQWhatsThis::add( actionEditor, i18n("<b>The Action Editor</b>" - "<p>The Action Editor is used to add actions and action groups to " - "a form, and to connect actions to slots. Actions and action " - "groups can be dragged into menus and into toolbars, and may " - "feature keyboard shortcuts and tooltips. If actions have pixmaps " - "these are displayed on toolbar buttons and besides their names in " - "menus.</p>" ) ); - dw->hide(); - setAppropriate( dw, FALSE ); -} - -void MainWindow::setupToolbox() -{ - TQDockWindow *dw = new TQDockWindow( TQDockWindow::InDock, this ); - dw->setResizeEnabled( TRUE ); - dw->setCloseMode( TQDockWindow::Always ); - addToolBar( dw, TQt::DockLeft ); - toolBox = new TQToolBox( dw ); - dw->setWidget( toolBox ); - dw->setFixedExtentWidth( 160 ); - dw->setCaption( i18n( "Toolbox" ) ); - dw->show(); - setDockEnabled( dw, TQt::DockTop, FALSE ); - setDockEnabled( dw, TQt::DockBottom, FALSE ); - commonWidgetsToolBar = new TQToolBar( "Common Widgets", 0, toolBox, FALSE, "Common Widgets" ); - commonWidgetsToolBar->setFrameStyle( TQFrame::NoFrame ); - commonWidgetsToolBar->setOrientation( Qt::Vertical ); - commonWidgetsToolBar->setBackgroundMode(PaletteBase); - toolBox->addItem( commonWidgetsToolBar, "Common Widgets" ); -} - -void MainWindow::setupRMBMenus() -{ - rmbWidgets = new TQPopupMenu( this ); - actionEditCut->addTo( rmbWidgets ); - actionEditCopy->addTo( rmbWidgets ); - actionEditPaste->addTo( rmbWidgets ); - actionEditDelete->addTo( rmbWidgets ); -#if 0 - rmbWidgets->insertSeparator(); - actionEditLower->addTo( rmbWidgets ); - actionEditRaise->addTo( rmbWidgets ); -#endif - rmbWidgets->insertSeparator(); - actionEditAdjustSize->addTo( rmbWidgets ); - actionEditHLayout->addTo( rmbWidgets ); - actionEditVLayout->addTo( rmbWidgets ); - actionEditGridLayout->addTo( rmbWidgets ); - actionEditSplitHorizontal->addTo( rmbWidgets ); - actionEditSplitVertical->addTo( rmbWidgets ); - actionEditBreakLayout->addTo( rmbWidgets ); - rmbWidgets->insertSeparator(); - if ( !singleProjectMode() ) - actionEditConnections->addTo( rmbWidgets ); - actionEditSource->addTo( rmbWidgets ); - - rmbFormWindow = new TQPopupMenu( this ); - actionEditPaste->addTo( rmbFormWindow ); - actionEditSelectAll->addTo( rmbFormWindow ); - actionEditAccels->addTo( rmbFormWindow ); - rmbFormWindow->insertSeparator(); - actionEditAdjustSize->addTo( rmbFormWindow ); - actionEditHLayout->addTo( rmbFormWindow ); - actionEditVLayout->addTo( rmbFormWindow ); - actionEditGridLayout->addTo( rmbFormWindow ); - actionEditBreakLayout->addTo( rmbFormWindow ); - rmbFormWindow->insertSeparator(); - if ( !singleProjectMode() ) { - actionEditFunctions->addTo( rmbFormWindow ); - actionEditConnections->addTo( rmbFormWindow ); - } - actionEditSource->addTo( rmbFormWindow ); - rmbFormWindow->insertSeparator(); - actionEditFormSettings->addTo( rmbFormWindow ); -} - -void MainWindow::toolSelected( TQAction* action ) -{ - actionCurrentTool = action; - emit currentToolChanged(); - if ( formWindow() ) - formWindow()->commandHistory()->emitUndoRedo(); -} - -int MainWindow::currentTool() const -{ - if ( !actionCurrentTool ) - return POINTER_TOOL; - return TQString::fromLatin1(actionCurrentTool->name()).toInt(); -} - -void MainWindow::runProjectPrecondition() -{ - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { - e->save(); - e->saveBreakPoints(); - } - fileSaveProject(); - - if ( currentTool() == ORDER_TOOL ) - resetTool(); - oWindow->clearErrorMessages(); - oWindow->clearDebug(); - oWindow->showDebugTab(); - previewing = TRUE; -} - -void MainWindow::runProjectPostcondition( TQObjectList *l ) -{ - inDebugMode = TRUE; - debuggingForms = *l; - enableAll( FALSE ); - for ( SourceEditor *e2 = sourceEditors.first(); e2; e2 = sourceEditors.next() ) { - if ( e2->project() == currentProject ) - e2->editorInterface()->setMode( EditorInterface::Debugging ); - } -} - -TQWidget* MainWindow::previewFormInternal( TQStyle* style, TQPalette* palet ) -{ - qwf_execute_code = FALSE; - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) - e->save(); - if ( currentTool() == ORDER_TOOL ) - resetTool(); - - FormWindow *fw = formWindow(); - if ( !fw ) - return 0; - - TQStringList databases; - TQPtrDictIterator<TQWidget> wit( *fw->widgets() ); - while ( wit.current() ) { - TQStringList lst = MetaDataBase::fakeProperty( TQT_TQOBJECT(wit.current()), "database" ).toStringList(); - if ( !lst.isEmpty() ) - databases << lst [ 0 ]; - ++wit; - } - - if ( fw->project() ) { - TQStringList::ConstIterator it; - for ( it = databases.begin(); it != databases.end(); ++it ) - fw->project()->openDatabase( *it, FALSE ); - } - TQApplication::setOverrideCursor( WaitCursor ); - - TQCString s; - TQBuffer buffer( s ); - buffer.open( IO_WriteOnly ); - Resource resource( this ); - resource.setWidget( fw ); - TQValueList<Resource::Image> images; - resource.save( TQT_TQIODEVICE(&buffer) ); - - buffer.close(); - buffer.open( IO_ReadOnly ); - - TQWidget *w = TQWidgetFactory::create( TQT_TQIODEVICE(&buffer) ); - if ( w ) { - previewedForm = w; - if ( palet ) { - if ( style ) - style->polish( *palet ); - w->setPalette( *palet ); - } - - if ( style ) - w->setStyle( style ); - - TQObjectList *l = w->queryList( TQWIDGET_OBJECT_NAME_STRING ); - for ( TQObject *o = l->first(); o; o = l->next() ) { - if ( style ) - ( (TQWidget*)o )->setStyle( style ); - } - delete l; - - w->move( fw->mapToGlobal( TQPoint(0,0) ) ); - ((MainWindow*)w )->setWFlags( WDestructiveClose ); - previewing = TRUE; - w->show(); - previewing = FALSE; - TQApplication::restoreOverrideCursor(); - return w; - } - TQApplication::restoreOverrideCursor(); - return 0; -} - -void MainWindow::previewForm() -{ - TQWidget* w = previewFormInternal(); - if ( w ) - w->show(); -} - -void MainWindow::previewForm( const TQString & style ) -{ - TQStyle* st = TQStyleFactory::create( style ); - TQWidget* w = 0; - if ( style == "Motif" ) { - TQPalette p( TQColor( 192, 192, 192 ) ); - w = previewFormInternal( st, &p ); - } else if ( style == "Windows" ) { - TQPalette p( TQColor( 212, 208, 200 ) ); - w = previewFormInternal( st, &p ); - } else if ( style == "Platinum" ) { - TQPalette p( TQColor( 220, 220, 220 ) ); - w = previewFormInternal( st, &p ); - } else if ( style == "CDE" ) { - TQPalette p( TQColor( 75, 123, 130 ) ); - p.setColor( TQPalette::Active, TQColorGroup::Base, TQColor( 55, 77, 78 ) ); - p.setColor( TQPalette::Inactive, TQColorGroup::Base, TQColor( 55, 77, 78 ) ); - p.setColor( TQPalette::Disabled, TQColorGroup::Base, TQColor( 55, 77, 78 ) ); - p.setColor( TQPalette::Active, TQColorGroup::Highlight, TQt::white ); - p.setColor( TQPalette::Active, TQColorGroup::HighlightedText, TQColor( 55, 77, 78 ) ); - p.setColor( TQPalette::Inactive, TQColorGroup::Highlight, TQt::white ); - p.setColor( TQPalette::Inactive, TQColorGroup::HighlightedText, TQColor( 55, 77, 78 ) ); - p.setColor( TQPalette::Disabled, TQColorGroup::Highlight, TQt::white ); - p.setColor( TQPalette::Disabled, TQColorGroup::HighlightedText, TQColor( 55, 77, 78 ) ); - p.setColor( TQPalette::Active, TQColorGroup::Foreground, TQt::white ); - p.setColor( TQPalette::Active, TQColorGroup::Text, TQt::white ); - p.setColor( TQPalette::Active, TQColorGroup::ButtonText, TQt::white ); - p.setColor( TQPalette::Inactive, TQColorGroup::Foreground, TQt::white ); - p.setColor( TQPalette::Inactive, TQColorGroup::Text, TQt::white ); - p.setColor( TQPalette::Inactive, TQColorGroup::ButtonText, TQt::white ); - p.setColor( TQPalette::Disabled, TQColorGroup::Foreground, TQt::lightGray ); - p.setColor( TQPalette::Disabled, TQColorGroup::Text, TQt::lightGray ); - p.setColor( TQPalette::Disabled, TQColorGroup::ButtonText, TQt::lightGray ); - - w = previewFormInternal( st, &p ); - } else if ( style == "SGI" ) { - TQPalette p( TQColor( 220, 220, 220 ) ); - w = previewFormInternal( st, &p ); - } else if ( style == "MotifPlus" ) { - TQColor gtkfg(0x00, 0x00, 0x00); - TQColor gtkdf(0x75, 0x75, 0x75); - TQColor gtksf(0xff, 0xff, 0xff); - TQColor gtkbs(0xff, 0xff, 0xff); - TQColor gtkbg(0xd6, 0xd6, 0xd6); - TQColor gtksl(0x00, 0x00, 0x9c); - TQColorGroup active(gtkfg, // foreground - gtkbg, // button - gtkbg.light(), // light - gtkbg.dark(142), // dark - gtkbg.dark(110), // mid - gtkfg, // text - gtkfg, // bright text - gtkbs, // base - gtkbg), // background - disabled(gtkdf, // foreground - gtkbg, // button - gtkbg.light(), // light - gtkbg.dark(156), // dark - gtkbg.dark(110), // mid - gtkdf, // text - gtkdf, // bright text - gtkbs, // base - gtkbg); // background - - TQPalette pal(active, disabled, active); - - pal.setColor(TQPalette::Active, TQColorGroup::Highlight, - gtksl); - pal.setColor(TQPalette::Active, TQColorGroup::HighlightedText, - gtksf); - pal.setColor(TQPalette::Inactive, TQColorGroup::Highlight, - gtksl); - pal.setColor(TQPalette::Inactive, TQColorGroup::HighlightedText, - gtksf); - pal.setColor(TQPalette::Disabled, TQColorGroup::Highlight, - gtksl); - pal.setColor(TQPalette::Disabled, TQColorGroup::HighlightedText, - gtkdf); - w = previewFormInternal( st, &pal ); - } else { - w = previewFormInternal( st ); - } - - if ( !w ) - return; - w->insertChild( TQT_TQOBJECT(st) ); - w->show(); -} - -void MainWindow::helpContents() -{ - TQWidget *focusWidget = tqApp->focusWidget(); - bool showClassDocu = TRUE; - while ( focusWidget ) { - if ( focusWidget->isA( "PropertyList" ) ) { - showClassDocu = FALSE; - break; - } - focusWidget = focusWidget->parentWidget(); - } - - TQString source = "designer-manual.html"; - if ( propertyDocumentation.isEmpty() ) { - TQString indexFile = documentationPath() + "/propertyindex"; - TQFile f( indexFile ); - if ( f.open( IO_ReadOnly ) ) { - TQTextStream ts( &f ); - while ( !ts.eof() ) { - TQString s = ts.readLine(); - int from = s.find( "\"" ); - if ( from == -1 ) - continue; - int to = s.findRev( "\"" ); - if ( to == -1 ) - continue; - propertyDocumentation[ s.mid( from + 1, to - from - 1 ) ] = s.mid( to + 2 ) + "-prop"; - } - f.close(); - } - } - - if ( propertyEditor->widget() && !showClassDocu ) { - if ( !propertyEditor->currentProperty().isEmpty() ) { - TQMetaObject* mo = propertyEditor->metaObjectOfCurrentProperty(); - TQString s; - TQString cp = propertyEditor->currentProperty(); - if ( cp == "layoutMargin" ) { - source = propertyDocumentation[ "TQLayout/margin" ]; - } else if ( cp == "layoutSpacing" ) { - source = propertyDocumentation[ "TQLayout/spacing" ]; - } else if ( cp == "toolTip" ) { - source = "tqtooltip.html#details"; - } else if ( mo && qstrcmp( mo->className(), "Spacer" ) == 0 ) { - if ( cp != "name" ) - source = "tqsizepolicy.html#SizeType"; - else - source = propertyDocumentation[ "TQObject/name" ]; - } else { - while ( mo && !propertyDocumentation.contains( ( s = TQString( mo->className() ) + "/" + cp ) ) ) - mo = mo->superClass(); - if ( mo ) - source = "p:" + propertyDocumentation[s]; - } - } - - TQString classname = WidgetFactory::classNameOf( propertyEditor->widget() ); - if ( source.isEmpty() || source == "designer-manual.html" ) { - if ( classname.lower() == "spacer" ) - source = "qspaceritem.html#details"; - else if ( classname == TQLAYOUTWIDGET_OBJECT_NAME_STRING ) - source = "layout.html"; - else - source = TQString( WidgetFactory::classNameOf( propertyEditor->widget() ) ).lower() + ".html#details"; - } - } else if ( propertyEditor->widget() ) { - source = TQString( WidgetFactory::classNameOf( propertyEditor->widget() ) ).lower() + ".html#details"; - } - - if ( !source.isEmpty() ) - assistant->showPage( documentationPath() + source ); -} - -void MainWindow::helpManual() -{ - assistant->showPage( documentationPath() + "/designer-manual.html" ); -} - -void MainWindow::helpAbout() -{ - AboutDialog dlg( this, 0, TRUE ); - if ( singleProjectMode() ) { - dlg.aboutPixmap->setText( "" ); - dlg.aboutVersion->setText( "" ); - dlg.aboutCopyright->setText( "" ); - LanguageInterface *iface = MetaDataBase::languageInterface( eProject->language() ); - dlg.aboutLicense->setText( iface->aboutText() ); - } - dlg.aboutVersion->setText(TQString("Version ") + TQString(TQT_VERSION_STR)); - dlg.resize( dlg.width(), dlg.layout()->heightForWidth(dlg.width()) ); - dlg.exec(); -} - -void MainWindow::helpAboutQt() -{ - TQMessageBox::aboutTQt( this, "TQt Designer" ); -} - -#if defined(_WS_WIN_) -#include <tqt_windows.h> -#include <tqprocess.h> -#endif - -void MainWindow::helpRegister() -{ -#if defined(_WS_WIN_) - HKEY key; - HKEY subkey; - long res; - DWORD type; - DWORD size = 255; - TQString command; - TQString sub( "htmlfile\\shell" ); -#if defined(UNICODE) - if ( TQApplication::winVersion() & TQt::WV_NT_based ) { - unsigned char data[256]; - res = RegOpenKeyExW( HKEY_CLASSES_ROOT, NULL, 0, KEY_READ, &key ); - res = RegOpenKeyExW( key, (TCHAR*)sub.ucs2(), 0, KEY_READ, &subkey ); - res = RegQueryValueExW( subkey, NULL, NULL, &type, data, &size ); - command = qt_winTQString( data ) + "\\command"; - size = 255; - res = RegOpenKeyExW( subkey, (TCHAR*)command.ucs2(), 0, KEY_READ, &subkey ); - res = RegQueryValueExW( subkey, NULL, NULL, &type, data, &size ); - command = qt_winTQString( data ); - } else -#endif - { - unsigned char data[256]; - res = RegOpenKeyExA( HKEY_CLASSES_ROOT, NULL, 0, KEY_READ, &key ); - res = RegOpenKeyExA( key, sub.local8Bit(), 0, KEY_READ, &subkey ); - res = RegQueryValueExA( subkey, NULL, NULL, &type, data, &size ); - command = TQString::fromLocal8Bit( (const char*) data ) + "\\command"; - size = 255; - res = RegOpenKeyExA( subkey, command.local8Bit(), 0, KEY_READ, &subkey ); - res = RegQueryValueExA( subkey, NULL, NULL, &type, data, &size ); - command = TQString::fromLocal8Bit( (const char*) data ); - } - - res = RegCloseKey( subkey ); - res = RegCloseKey( key ); - - TQProcess process( command + " www.trolltech.com/products/download/eval/evaluation.html" ); - if ( !process.start() ) - TQMessageBox::information( this, "Register TQt", "Launching your web browser failed.\n" - "To register TQt, point your browser to www.trolltech.com/products/download/eval/evaluation.html" ); -#endif -} - -void MainWindow::showProperties( TQObject *o ) -{ - if ( !o->isWidgetType() ) { - propertyEditor->setWidget( o, lastActiveFormWindow ); - if ( lastActiveFormWindow ) - hierarchyView->setFormWindow( lastActiveFormWindow, TQT_TQOBJECT(lastActiveFormWindow->mainContainer()) ); - else - hierarchyView->setFormWindow( 0, 0 ); - return; - } - TQWidget *w = (TQWidget*)o; - setupHierarchyView(); - FormWindow *fw = (FormWindow*)isAFormWindowChild( TQT_TQOBJECT(w) ); - if ( fw ) { - if ( fw->numSelectedWidgets() > 1 ) { - TQWidgetList wl = fw->selectedWidgets(); - if ( wl.first() != w ) { - wl.removeRef( w ); - wl.insert( 0, w ); - } - propertyEditor->setWidget( new PropertyObject( wl ), fw ); - } else { - propertyEditor->setWidget( TQT_TQOBJECT(w), fw ); - } - hierarchyView->setFormWindow( fw, TQT_TQOBJECT(w) ); - } else { - propertyEditor->setWidget( 0, 0 ); - hierarchyView->setFormWindow( 0, 0 ); - } - - if ( currentTool() == POINTER_TOOL && fw && - ( !qworkspace->activeWindow() || !::tqqt_cast<SourceEditor*>(qworkspace->activeWindow()) ) ) - fw->setFocus(); -} - -void MainWindow::resetTool() -{ - actionPointerTool->setOn( TRUE ); -} - -void MainWindow::updateProperties( TQObject * ) -{ - if ( propertyEditor ) - propertyEditor->refetchData(); -} - -bool MainWindow::eventFilter( TQObject *o, TQEvent *e ) -{ - if ( ::tqqt_cast<MenuBarEditor*>(o) || ::tqqt_cast<PopupMenuEditor*>(o) || - ( o && - ( ::tqqt_cast<MenuBarEditor*>(o->parent()) || - ::tqqt_cast<PopupMenuEditor*>(o->parent()) ) ) ) { - - if ( e->type() == TQEvent::Accel && ::tqqt_cast<PopupMenuEditor*>(o) ) { - return TRUE; // consume accel events - } else if ( e->type() == TQEvent::MouseButtonPress && ::tqqt_cast<MenuBarEditor*>(o) ) { - TQPoint pos = ((TQMouseEvent*)e)->pos(); - MenuBarEditor *m = ::tqqt_cast<MenuBarEditor*>(o); - showProperties( o ); - if ( m->findItem( pos ) >= m->count() ) - m->setFocus(); - } else if ( e->type() == TQEvent::MouseButtonPress && ::tqqt_cast<PopupMenuEditor*>(o) ) { - PopupMenuEditor *m = ::tqqt_cast<PopupMenuEditor*>(o); - PopupMenuEditorItem *i = m->at( ((TQMouseEvent*)e)->pos() ); - if ( m->find( i->action() ) != -1 && !i->isSeparator() ) - showProperties( i->action() ); - } - return TQMainWindow::eventFilter( o, e ); - } - - if ( !o || !e || !o->isWidgetType() ) - return TQMainWindow::eventFilter( o, e ); - - TQWidget *w = 0; - bool passiveInteractor; - switch ( e->type() ) { - case TQEvent::AccelOverride: - if ( ( (TQKeyEvent*)e )->key() == Key_F1 && - ( ( (TQKeyEvent*)e )->state() & ShiftButton ) != ShiftButton ) { - w = (TQWidget*)o; - while ( w ) { - if ( ::tqqt_cast<PropertyList*>(w) ) - break; - w = w->parentWidget( TRUE ); - } - if ( w ) { - propertyEditor->propertyList()->showCurrentWhatsThis(); - ( (TQKeyEvent*)e )->accept(); - return TRUE; - } - } - break; - case TQEvent::Accel: - if ( ( ( (TQKeyEvent*)e )->key() == Key_A || - ( (TQKeyEvent*)e )->key() == Key_E ) && - ( (TQKeyEvent*)e )->state() & ControlButton ) { - if ( qWorkspace()->activeWindow() && - ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) { - ( (TQKeyEvent*)e )->ignore(); - return TRUE; - } - } - break; - case TQEvent::ContextMenu: - case TQEvent::MouseButtonPress: - if ( o && currentTool() == POINTER_TOOL && - ( ::tqqt_cast<MenuBarEditor*>(o) || - ::tqqt_cast<PopupMenuEditor*>(o) || - ::tqqt_cast<QDesignerToolBar*>(o) || - ( ::tqqt_cast<TQComboBox*>(o) || - ::tqqt_cast<TQToolButton*>(o) || - ::tqqt_cast<QDesignerToolBarSeparator*>(o) ) && - o->parent() - && ( ::tqqt_cast<QDesignerToolBar*>(o->parent()) - || ::tqqt_cast<QDesignerWidgetStack*>(o->parent())) ) ) { - TQWidget *w = (TQWidget*)o; - if ( ::tqqt_cast<TQToolButton*>(w) || - ::tqqt_cast<TQComboBox*>(w) || - ::tqqt_cast<PopupMenuEditor*>(w) || - ::tqqt_cast<QDesignerToolBarSeparator*>(w) ) - w = w->parentWidget(); - TQWidget *pw = w->parentWidget(); - while ( pw ) { - if ( ::tqqt_cast<FormWindow*>(pw) ) { - ( (FormWindow*)pw )->emitShowProperties( TQT_TQOBJECT(w) ); - if ( !::tqqt_cast<QDesignerToolBar*>(o) ) - return ( !::tqqt_cast<TQToolButton*>(o) && - !::tqqt_cast<MenuBarEditor*>(o) && - !::tqqt_cast<TQComboBox*>(o) && - !::tqqt_cast<QDesignerToolBarSeparator*>(o) ); - } - pw = pw->parentWidget(); - } - } - if ( o && ( ::tqqt_cast<QDesignerToolBar*>(o) || o->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) ) - && e->type() == TQEvent::ContextMenu ) - break; - if ( isAToolBarChild( o ) && currentTool() != CONNECT_TOOL && currentTool() != BUDDY_TOOL ) - break; - if ( ::tqqt_cast<TQSizeGrip*>(o) ) - break; - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) ) - break; - if ( !w->hasFocus() ) - w->setFocus(); - passiveInteractor = WidgetFactory::isPassiveInteractor( o ); - if ( !passiveInteractor || currentTool() != ORDER_TOOL ) { - if( e->type() == TQEvent::ContextMenu ) { - ( (FormWindow*)w )->handleContextMenu( (TQContextMenuEvent*)e, - ( (FormWindow*)w )->designerWidget( o ) ); - return TRUE; - } else { - ( (FormWindow*)w )->handleMousePress( (TQMouseEvent*)e, - ( (FormWindow*)w )->designerWidget( o ) ); - } - } - lastPressWidget = (TQWidget*)o; - if ( passiveInteractor ) - TQTimer::singleShot( 0, formWindow(), TQT_SLOT( visibilityChanged() ) ); - if ( currentTool() == CONNECT_TOOL || currentTool() == BUDDY_TOOL ) - return TRUE; - return !passiveInteractor; - case TQEvent::MouseButtonRelease: - lastPressWidget = 0; - if ( isAToolBarChild( o ) && currentTool() != CONNECT_TOOL && currentTool() != BUDDY_TOOL ) - break; - if ( ::tqqt_cast<TQSizeGrip*>(o) ) - break; - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) ) - break; - passiveInteractor = WidgetFactory::isPassiveInteractor( o ); - if ( !passiveInteractor ) - ( (FormWindow*)w )->handleMouseRelease( (TQMouseEvent*)e, - ( (FormWindow*)w )->designerWidget( o ) ); - if ( passiveInteractor ) { - TQTimer::singleShot( 0, this, TQT_SLOT( selectionChanged() ) ); - TQTimer::singleShot( 0, formWindow(), TQT_SLOT( visibilityChanged() ) ); - } - return !passiveInteractor; - case TQEvent::MouseMove: - if ( isAToolBarChild( o ) && currentTool() != CONNECT_TOOL && currentTool() != BUDDY_TOOL ) - break; - w = isAFormWindowChild( o ); - if ( lastPressWidget != (TQWidget*)o && w && - !::tqqt_cast<SizeHandle*>(o) && !::tqqt_cast<OrderIndicator*>(o) && - !::tqqt_cast<PopupMenuEditor*>(o) && !::tqqt_cast<TQMenuBar*>(o) && - !::tqqt_cast<TQSizeGrip*>(o) ) - return TRUE; - if ( o && ::tqqt_cast<TQSizeGrip*>(o) ) - break; - if ( lastPressWidget != (TQWidget*)o || - ( !w || ::tqqt_cast<SizeHandle*>(o) ) || - ::tqqt_cast<OrderIndicator*>(o) ) - break; - passiveInteractor = WidgetFactory::isPassiveInteractor( o ); - if ( !passiveInteractor ) - ( (FormWindow*)w )->handleMouseMove( (TQMouseEvent*)e, - ( (FormWindow*)w )->designerWidget( o ) ); - return !passiveInteractor; - case TQEvent::KeyPress: - if ( ( (TQKeyEvent*)e )->key() == Key_Escape && currentTool() != POINTER_TOOL ) { - resetTool(); - return FALSE; - } - if ( ( (TQKeyEvent*)e )->key() == Key_Escape && incrementalSearch->hasFocus() ) { - if ( ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) { - qWorkspace()->activeWindow()->setFocus(); - return TRUE; - } - } - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) ) - break; - ( (FormWindow*)w )->handleKeyPress( (TQKeyEvent*)e, ( (FormWindow*)w )->designerWidget( o ) ); - if ( ((TQKeyEvent*)e)->isAccepted() ) - return TRUE; - break; - case TQEvent::MouseButtonDblClick: - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) ) { - if ( ::tqqt_cast<TQToolButton*>(o) && ((TQToolButton*)o)->isOn() && - o->parent() && ::tqqt_cast<TQToolBar*>(o->parent()) && formWindow() ) - formWindow()->setToolFixed(); - break; - } - if ( currentTool() == ORDER_TOOL ) { - ( (FormWindow*)w )->handleMouseDblClick( (TQMouseEvent*)e, - ( (FormWindow*)w )->designerWidget( o ) ); - return TRUE; - } - if ( !WidgetFactory::isPassiveInteractor( o ) && ( (FormWindow*)w )->formFile() ) - return openEditor( ( (FormWindow*)w )->designerWidget( o ), (FormWindow*)w ); - return TRUE; - case TQEvent::KeyRelease: - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) ) - break; - ( (FormWindow*)w )->handleKeyRelease( (TQKeyEvent*)e, ( (FormWindow*)w )->designerWidget( o ) ); - if ( ((TQKeyEvent*)e)->isAccepted() ) - return TRUE; - break; - case TQEvent::Hide: - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) ) - break; - if ( ( (FormWindow*)w )->isWidgetSelected( TQT_TQOBJECT(o) ) ) - ( (FormWindow*)w )->selectWidget( TQT_TQOBJECT(o), FALSE ); - break; - case TQEvent::Enter: - case TQEvent::Leave: - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) || - ::tqqt_cast<MenuBarEditor*>(o) ) - break; - return TRUE; - case TQEvent::Resize: - case TQEvent::Move: - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) ) - break; - if ( WidgetFactory::layoutType( (TQWidget*)o->parent() ) != WidgetFactory::NoLayout ) { - ( (FormWindow*)w )->updateSelection( (TQWidget*)o ); - if ( e->type() != TQEvent::Resize ) - ( (FormWindow*)w )->updateChildSelections( (TQWidget*)o ); - } - break; - case TQEvent::Close: - if ( o->isWidgetType() && (TQWidget*)o == (TQWidget*)previewedForm ) { - if ( lastActiveFormWindow && lastActiveFormWindow->project() ) { - TQStringList lst = - MetaDataBase::fakeProperty( TQT_TQOBJECT(lastActiveFormWindow), "database" ).toStringList(); - lastActiveFormWindow->project()->closeDatabase( lst[ 0 ] ); - } - } - break; - case TQEvent::DragEnter: - if ( TQT_BASE_OBJECT(o) == qWorkspace() || TQT_BASE_OBJECT(o) == workspace() || TQT_BASE_OBJECT(o) == workspace()->viewport() ) { - workspace()->contentsDragEnterEvent( (TQDragEnterEvent*)e ); - return TRUE; - } - break; - case TQEvent::DragMove: - if ( TQT_BASE_OBJECT(o) == qWorkspace() || TQT_BASE_OBJECT(o) == workspace() || TQT_BASE_OBJECT(o) == workspace()->viewport() ) { - workspace()->contentsDragMoveEvent( (TQDragMoveEvent*)e ); - return TRUE; - } - break; - case TQEvent::Drop: - if ( TQT_BASE_OBJECT(o) == qWorkspace() || TQT_BASE_OBJECT(o) == workspace() || TQT_BASE_OBJECT(o) == workspace()->viewport() ) { - workspace()->contentsDropEvent( (TQDropEvent*)e ); - return TRUE; - } - break; - case TQEvent::Show: - if ( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(this) ) - break; - if ( ((TQShowEvent*)e)->spontaneous() ) - break; - TQApplication::sendPostedEvents( qworkspace, TQEvent::ChildInserted ); - showEvent( (TQShowEvent*)e ); - checkTempFiles(); - return TRUE; - case TQEvent::Wheel: - if ( !( w = isAFormWindowChild( o ) ) || - ::tqqt_cast<SizeHandle*>(o) || - ::tqqt_cast<OrderIndicator*>(o) ) - break; - return TRUE; - case TQEvent::FocusIn: - if ( !::tqqt_cast<FormWindow*>(o) && isAFormWindowChild( o ) ) - return TRUE; //FIXME - if ( hierarchyView->formDefinitionView()->isRenaming() - && ( o->inherits( "Editor" ) || ::tqqt_cast<FormWindow*>(o) ) ) - TQApplication::sendPostedEvents(); - if ( o->inherits( "Editor" ) ) { - TQWidget *w = (TQWidget*)o; - while ( w ) { - if ( ::tqqt_cast<SourceEditor*>(w) ) - break; - w = w->parentWidget( TRUE ); - } - if ( ::tqqt_cast<SourceEditor*>(w) ) - ( (SourceEditor*)w )->checkTimeStamp(); - } else if ( ::tqqt_cast<FormWindow*>(o) ) { - FormWindow *fw = (FormWindow*)o; - if ( fw->formFile() && fw->formFile()->editor() ) - fw->formFile()->editor()->checkTimeStamp(); - } - break; - case TQEvent::FocusOut: - if ( !::tqqt_cast<FormWindow*>(o) && isAFormWindowChild( o ) ) - return TRUE; - break; - default: - return TQMainWindow::eventFilter( o, e ); - } - - return TQMainWindow::eventFilter( o, e ); -} - -TQWidget *MainWindow::isAFormWindowChild( TQObject *o ) const -{ - if ( ::tqqt_cast<TQWizard*>(o->parent()) && !::tqqt_cast<TQPushButton*>(o) ) - return 0; - while ( o ) { - if ( ::tqqt_cast<FormWindow*>(o) ) - return (TQWidget*)o; - o = o->parent(); - } - return 0; -} - -TQWidget *MainWindow::isAToolBarChild( TQObject *o ) const -{ - while ( o ) { - if ( ::tqqt_cast<QDesignerToolBar*>(o) ) - return (TQWidget*)o; - if ( ::tqqt_cast<FormWindow*>(o) ) - return 0; - o = o->parent(); - } - return 0; -} - -FormWindow *MainWindow::formWindow() -{ - if ( qworkspace->activeWindow() ) { - FormWindow *fw = 0; - if ( ::tqqt_cast<FormWindow*>(qworkspace->activeWindow()) ) - fw = (FormWindow*)qworkspace->activeWindow(); - else if ( lastActiveFormWindow && - qworkspace->windowList().find( lastActiveFormWindow ) != -1) - fw = lastActiveFormWindow; - return fw; - } - return 0; -} - -void MainWindow::emitProjectSignals() -{ - emit hasNonDummyProject( !currentProject->isDummy() ); - emit hasActiveWindowOrProject( !!qworkspace->activeWindow() || !currentProject->isDummy() ); -} - -void MainWindow::insertFormWindow( FormWindow *fw ) -{ - if ( fw ) - TQWhatsThis::add( fw, i18n( "<b>The Form Window</b>" - "<p>Use the various tools to add widgets or to change the layout " - "and behavior of the components in the form. Select one or multiple " - "widgets to move them or lay them out. If a single widget is chosen it can " - "be resized using the resize handles.</p>" - "<p>Changes in the <b>Property Editor</b> are visible at design time, " - "and you can preview the form in different styles.</p>" - "<p>You can change the grid resolution, or turn the grid off in the " - "<b>Preferences</b> dialog in the <b>Edit</b> menu." - "<p>You can have several forms open, and all open forms are listed " - "in the <b>Form List</b>.") ); - - connect( fw, TQT_SIGNAL( showProperties( TQObject * ) ), - this, TQT_SLOT( showProperties( TQObject * ) ) ); - connect( fw, TQT_SIGNAL( updateProperties( TQObject * ) ), - this, TQT_SLOT( updateProperties( TQObject * ) ) ); - connect( this, TQT_SIGNAL( currentToolChanged() ), - fw, TQT_SLOT( currentToolChanged() ) ); - connect( fw, TQT_SIGNAL( selectionChanged() ), - this, TQT_SLOT( selectionChanged() ) ); - connect( fw, TQT_SIGNAL( undoRedoChanged( bool, bool, const TQString &, const TQString & ) ), - this, TQT_SLOT( updateUndoRedo( bool, bool, const TQString &, const TQString & ) ) ); - - if ( !mblockNewForms ) { - } else { - fw->setProject( currentProject ); - } - fw->show(); - fw->currentToolChanged(); - if ( fw->caption().isEmpty() && tqstrlen( fw->name() ) ) - fw->setCaption( fw->name() ); - fw->mainContainer()->setCaption( fw->caption() ); - WidgetFactory::saveDefaultProperties( TQT_TQOBJECT(fw->mainContainer()), - WidgetDatabase:: - idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(fw->mainContainer()) ) ) ); - activeWindowChanged( fw ); - emit formWindowsChanged(); - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { - if ( e->project() == fw->project() ) - e->resetContext(); - } -} - -void MainWindow::createNewProject( const TQString &lang ) -{ - Project *pro = new Project( "", "", projectSettingsPluginManager ); - pro->setLanguage( lang ); - - - if ( !openProjectSettings( pro ) ) { - delete pro; - return; - } - - if ( !pro->isValid() ) { - TQMessageBox::information( this, i18n("New Project"), i18n( "Cannot create an invalid project." ) ); - delete pro; - return; - } - - TQAction *a = new TQAction( pro->makeRelative( pro->fileName() ), - pro->makeRelative( pro->fileName() ), 0, actionGroupProjects, 0, TRUE ); - projects.insert( a, pro ); - addRecentlyOpened( pro->makeAbsolute( pro->fileName() ), recentlyProjects ); - projectSelected( a ); -} - - -bool MainWindow::unregisterClient( FormWindow *w ) -{ - propertyEditor->closed( w ); - objectHierarchy()->closed( w ); - if ( w == lastActiveFormWindow ) - lastActiveFormWindow = 0; - - TQPtrList<SourceEditor> waitingForDelete; - waitingForDelete.setAutoDelete( TRUE ); - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { - if ( TQT_BASE_OBJECT(e->object()) == TQT_BASE_OBJECT(w) ) - waitingForDelete.append( e ); - } - - if ( actionEditor->form() == w ) { - actionEditor->setFormWindow( 0 ); - actionEditor->parentWidget()->hide(); - } - - return TRUE; -} - -void MainWindow::activeWindowChanged( TQWidget *w ) -{ - TQWidget *old = formWindow(); - if ( ::tqqt_cast<FormWindow*>(w) ) { - FormWindow *fw = (FormWindow*)w; - FormWindow *ofw = lastActiveFormWindow; - lastActiveFormWindow = fw; - lastActiveFormWindow->updateUndoInfo(); - emit hasActiveForm( TRUE ); - if ( formWindow() ) { - formWindow()->emitShowProperties(); - emit formModified( formWindow()->commandHistory()->isModified() ); - if ( currentTool() != POINTER_TOOL ) - formWindow()->clearSelection(); - } - workspace()->activeFormChanged( fw ); - setAppropriate( (TQDockWindow*)actionEditor->parentWidget(), - ::tqqt_cast<TQMainWindow*>(lastActiveFormWindow->mainContainer()) ); - if ( appropriate( (TQDockWindow*)actionEditor->parentWidget() ) ) { - if ( actionEditor->wantToBeShown() ) - actionEditor->parentWidget()->show(); - } else { - TQWidget *mc = 0; - if ( ofw && (mc = ofw->mainContainer()) && ::tqqt_cast<TQMainWindow*>(mc) ) - actionEditor->setWantToBeShown( !actionEditor->parentWidget()->isHidden() ); - actionEditor->parentWidget()->hide(); - } - - actionEditor->setFormWindow( lastActiveFormWindow ); - if ( wspace && fw->project() && fw->project() != currentProject ) { - for ( TQMap<TQAction*, Project *>::ConstIterator it = projects.begin(); it != projects.end(); ++it ) { - if ( *it == fw->project() ) { - projectSelected( it.key() ); - break; - } - } - } - emit formWindowChanged(); - - } else if ( w == propertyEditor ) { - propertyEditor->resetFocus(); - } else if ( !lastActiveFormWindow ) { - emit formWindowChanged(); - emit hasActiveForm( FALSE ); - actionEditUndo->setEnabled( FALSE ); - actionEditRedo->setEnabled( FALSE ); - } - - if ( !w ) { - emit formWindowChanged(); - emit hasActiveForm( FALSE ); - propertyEditor->clear(); - hierarchyView->clear(); - updateUndoRedo( FALSE, FALSE, TQString(), TQString() ); - } - - selectionChanged(); - - if ( ::tqqt_cast<SourceEditor*>(w) ) { - SourceEditor *se = (SourceEditor*)w; - TQGuardedPtr<FormWindow> fw = se->formWindow(); - if ( se->formWindow() && - lastActiveFormWindow != fw ) { - activeWindowChanged( se->formWindow() ); - } - actionSearchFind->setEnabled( TRUE ); - actionSearchIncremetal->setEnabled( TRUE ); - actionSearchReplace->setEnabled( TRUE ); - actionSearchGotoLine->setEnabled( TRUE ); - incrementalSearch->setEnabled( TRUE ); - - actionEditUndo->setEnabled( FALSE ); - actionEditRedo->setEnabled( FALSE ); - actionEditCut->setEnabled( TRUE ); - actionEditCopy->setEnabled( TRUE ); - actionEditPaste->setEnabled( TRUE ); - actionEditSelectAll->setEnabled( TRUE ); - actionEditUndo->setMenuText( i18n( "&Undo" ) ); - actionEditUndo->setToolTip( textNoAccel( actionEditUndo->menuText()) ); - actionEditRedo->setMenuText( i18n( "&Redo" ) ); - actionEditRedo->setToolTip( textNoAccel( actionEditRedo->menuText()) ); - if ( hierarchyView->sourceEditor() != w ) - hierarchyView->showClasses( se ); - actionEditor->setFormWindow( 0 ); - if ( wspace && se->project() && se->project() != currentProject ) { - for ( TQMap<TQAction*, Project *>::ConstIterator it = projects.begin(); it != projects.end(); ++it ) { - if ( *it == se->project() ) { - projectSelected( it.key() ); - break; - } - } - } - workspace()->activeEditorChanged( se ); - } else { - actionSearchFind->setEnabled( FALSE ); - actionSearchIncremetal->setEnabled( FALSE ); - actionSearchReplace->setEnabled( FALSE ); - actionSearchGotoLine->setEnabled( FALSE ); - incrementalSearch->setEnabled( FALSE ); - } - - if ( currentTool() == ORDER_TOOL && w != old ) - emit currentToolChanged(); - - emit hasActiveWindow( !!qworkspace->activeWindow() ); -} - -void MainWindow::updateUndoRedo( bool undoAvailable, bool redoAvailable, - const TQString &undoCmd, const TQString &redoCmd ) -{ - if ( qWorkspace()->activeWindow() && - ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) - return; // do not set a formWindow related command - actionEditUndo->setEnabled( undoAvailable ); - actionEditRedo->setEnabled( redoAvailable ); - if ( !undoCmd.isEmpty() ) - actionEditUndo->setMenuText( i18n( "&Undo: %1" ).arg( undoCmd ) ); - else - actionEditUndo->setMenuText( i18n( "&Undo: Not Available" ) ); - if ( !redoCmd.isEmpty() ) - actionEditRedo->setMenuText( i18n( "&Redo: %1" ).arg( redoCmd ) ); - else - actionEditRedo->setMenuText( i18n( "&Redo: Not Available" ) ); - - actionEditUndo->setToolTip( textNoAccel( actionEditUndo->menuText()) ); - actionEditRedo->setToolTip( textNoAccel( actionEditRedo->menuText()) ); - - if ( currentTool() == ORDER_TOOL ) { - actionEditUndo->setEnabled( FALSE ); - actionEditRedo->setEnabled( FALSE ); - } -} - -void MainWindow::updateEditorUndoRedo() -{ - if ( !qWorkspace()->activeWindow() || - !::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) - return; - SourceEditor *editor = (SourceEditor*)qWorkspace()->activeWindow(); - actionEditUndo->setEnabled( editor->editIsUndoAvailable() ); - actionEditRedo->setEnabled( editor->editIsRedoAvailable() ); -} - -TQWorkspace *MainWindow::qWorkspace() const -{ - return qworkspace; -} - -void MainWindow::popupFormWindowMenu( const TQPoint & gp, FormWindow *fw ) -{ - TQValueList<uint> ids; - TQMap<TQString, int> commands; - - setupRMBSpecialCommands( ids, commands, fw ); - setupRMBProperties( ids, commands, fw ); - - tqApp->processEvents(); - int r = rmbFormWindow->exec( gp ); - - handleRMBProperties( r, commands, fw ); - handleRMBSpecialCommands( r, commands, fw ); - - for ( TQValueList<uint>::ConstIterator i = ids.begin(); i != ids.end(); ++i ) - rmbFormWindow->removeItem( *i ); -} - -void MainWindow::popupWidgetMenu( const TQPoint &gp, FormWindow * /*fw*/, TQWidget * w) -{ - TQValueList<uint> ids; - TQMap<TQString, int> commands; - - setupRMBSpecialCommands( ids, commands, w ); - setupRMBProperties( ids, commands, w ); - - tqApp->processEvents(); - int r = rmbWidgets->exec( gp ); - - handleRMBProperties( r, commands, w ); - handleRMBSpecialCommands( r, commands, w ); - - for ( TQValueList<uint>::ConstIterator i = ids.begin(); i != ids.end(); ++i ) - rmbWidgets->removeItem( *i ); -} - -void MainWindow::setupRMBProperties( TQValueList<uint> &ids, TQMap<TQString, int> &props, TQWidget *w ) -{ - const TQMetaProperty* text = w->metaObject()->property( w->metaObject()->findProperty( "text", TRUE ), TRUE ); - if ( text && qstrcmp( text->type(), TQSTRING_OBJECT_NAME_STRING) != 0 ) - text = 0; - const TQMetaProperty* title = w->metaObject()->property( w->metaObject()->findProperty( "title", TRUE ), TRUE ); - if ( title && qstrcmp( title->type(), TQSTRING_OBJECT_NAME_STRING) != 0 ) - title = 0; - const TQMetaProperty* pagetitle = - w->metaObject()->property( w->metaObject()->findProperty( "pageTitle", TRUE ), TRUE ); - if ( pagetitle && qstrcmp( pagetitle->type(), TQSTRING_OBJECT_NAME_STRING) != 0 ) - pagetitle = 0; - const TQMetaProperty* pixmap = - w->metaObject()->property( w->metaObject()->findProperty( "pixmap", TRUE ), TRUE ); - if ( pixmap && qstrcmp( pixmap->type(), TQPIXMAP_OBJECT_NAME_STRING) != 0 ) - pixmap = 0; - - if ( text && text->designable(w) || - title && title->designable(w) || - pagetitle && pagetitle->designable(w) || - pixmap && pixmap->designable(w) ) { - int id = 0; - if ( ids.isEmpty() ) - ids << rmbWidgets->insertSeparator(0); - if ( pixmap && pixmap->designable(w) ) { - ids << ( id = rmbWidgets->insertItem( i18n("Choose Pixmap..."), -1, 0) ); - props.insert( "pixmap", id ); - } - if ( text && text->designable(w) && !::tqqt_cast<TQTextEdit*>(w) ) { - ids << ( id = rmbWidgets->insertItem( i18n("Edit Text..."), -1, 0) ); - props.insert( "text", id ); - } - if ( title && title->designable(w) ) { - ids << ( id = rmbWidgets->insertItem( i18n("Edit Title..."), -1, 0) ); - props.insert( "title", id ); - } - if ( pagetitle && pagetitle->designable(w) ) { - ids << ( id = rmbWidgets->insertItem( i18n("Edit Page Title..."), -1, 0) ); - props.insert( "pagetitle", id ); - } - } -} - -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS -static TQWidgetContainerInterfacePrivate *containerWidgetInterface( TQWidget *w ) -{ - WidgetInterface *iface = 0; - widgetManager()->queryInterface( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ), &iface ); - if ( !iface ) - return 0; - TQWidgetContainerInterfacePrivate *iface2 = 0; - iface->queryInterface( IID_TQWidgetContainer, (TQUnknownInterface**)&iface2 ); - if ( !iface2 ) - return 0; - iface->release(); - return iface2; -} -#endif - -void MainWindow::setupRMBSpecialCommands( TQValueList<uint> &ids, - TQMap<TQString, int> &commands, TQWidget *w ) -{ - int id; - - if ( ::tqqt_cast<TQTabWidget*>(w) ) { - if ( ids.isEmpty() ) - ids << rmbWidgets->insertSeparator( 0 ); - if ( ( (QDesignerTabWidget*)w )->count() > 1) { - ids << ( id = rmbWidgets->insertItem( i18n("Delete Page"), -1, 0 ) ); - commands.insert( "remove", id ); - } - ids << ( id = rmbWidgets->insertItem( i18n("Add Page"), -1, 0 ) ); - commands.insert( "add", id ); - } else if ( ::tqqt_cast<QDesignerWidgetStack*>(w) ) { - if ( ids.isEmpty() ) - ids << rmbWidgets->insertSeparator( 0 ); - if ( ( (QDesignerWidgetStack*)w )->count() > 1) { - ids << ( id = rmbWidgets->insertItem( i18n("Previous Page"), -1, 0 ) ); - commands.insert( "prevpage", id ); - ids << ( id = rmbWidgets->insertItem( i18n("Next Page"), -1, 0 ) ); - ids << rmbWidgets->insertSeparator( 0 ); - commands.insert( "nextpage", id ); - ids << ( id = rmbWidgets->insertItem( i18n("Delete Page"), -1, 0 ) ); - commands.insert( "remove", id ); - } - ids << ( id = rmbWidgets->insertItem( i18n("Add Page"), -1, 0 ) ); - commands.insert( "add", id ); - } else if ( ::tqqt_cast<TQToolBox*>(w) ) { - if ( ids.isEmpty() ) - ids << rmbWidgets->insertSeparator( 0 ); - if ( ( (TQToolBox*)w )->count() > 1 ) { - ids << ( id = rmbWidgets->insertItem( i18n("Delete Page"), -1, 0 ) ); - commands.insert( "remove", id ); - } - ids << ( id = rmbWidgets->insertItem( i18n("Add Page"), -1, 0 ) ); - commands.insert( "add", id ); -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS - } else if ( WidgetDatabase:: - isCustomPluginWidget( WidgetDatabase:: - idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ) ) ) { - TQWidgetContainerInterfacePrivate *iface = containerWidgetInterface( w ); - if ( iface && iface->supportsPages( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ) ) { - if ( ids.isEmpty() ) - ids << rmbWidgets->insertSeparator( 0 ); - - if ( iface->count( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ), w ) > 1 ) { - ids << ( id = rmbWidgets->insertItem( i18n( "Delete Page" ), -1, 0 ) ); - commands.insert( "remove", id ); - } - ids << ( id = rmbWidgets->insertItem( i18n("Add Page"), -1, 0 ) ); - commands.insert( "add", id ); - if ( iface->currentIndex( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ), w ) != -1 ) { - ids << ( id = rmbWidgets->insertItem( i18n("Rename Current Page..."), -1, 0 ) ); - commands.insert( "rename", id ); - } - } - if ( iface ) - iface->release(); -#endif // TQT_CONTAINER_CUSTOM_WIDGETS - } - - if ( WidgetFactory::hasSpecialEditor( WidgetDatabase:: - idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ), TQT_TQOBJECT(w) ) ) { - if ( ids.isEmpty() ) - ids << rmbWidgets->insertSeparator( 0 ); - ids << ( id = rmbWidgets->insertItem( i18n("Edit..."), -1, 0 ) ); - commands.insert( "edit", id ); - } -} - -void MainWindow::setupRMBSpecialCommands( TQValueList<uint> &ids, - TQMap<TQString, int> &commands, FormWindow *fw ) -{ - int id; - - if ( ::tqqt_cast<TQWizard*>(fw->mainContainer()) ) { - if ( ids.isEmpty() ) - ids << rmbFormWindow->insertSeparator( 0 ); - - if ( ( (TQWizard*)fw->mainContainer() )->pageCount() > 1) { - ids << ( id = rmbFormWindow->insertItem( i18n("Delete Page"), -1, 0 ) ); - commands.insert( "remove", id ); - } - - ids << ( id = rmbFormWindow->insertItem( i18n("Add Page"), -1, 0 ) ); - commands.insert( "add", id ); - - ids << ( id = rmbFormWindow->insertItem( i18n("Edit Page Title..."), -1, 0 ) ); - commands.insert( "rename", id ); - - ids << ( id = rmbFormWindow->insertItem( i18n("Edit Pages..."), -1, 0 ) ); - commands.insert( "edit", id ); - - } else if ( ::tqqt_cast<TQMainWindow*>(fw->mainContainer()) ) { - if ( ids.isEmpty() ) - ids << rmbFormWindow->insertSeparator( 0 ); - ids << ( id = rmbFormWindow->insertItem( i18n( "Add Menu Item" ), -1, 0 ) ); - commands.insert( "add_menu_item", id ); - ids << ( id = rmbFormWindow->insertItem( i18n( "Add Toolbar" ), -1, 0 ) ); - commands.insert( "add_toolbar", id ); - } -} - -void MainWindow::handleRMBProperties( int id, TQMap<TQString, int> &props, TQWidget *w ) -{ - if ( id == props[ "text" ] ) { - bool ok = FALSE; - bool oldDoWrap = FALSE; - if ( ::tqqt_cast<TQLabel*>(w) ) { - int align = w->property( "alignment" ).toInt(); - if ( align & WordBreak ) - oldDoWrap = TRUE; - } - bool doWrap = oldDoWrap; - - TQString text; - if ( ::tqqt_cast<TQTextView*>(w) || ::tqqt_cast<TQLabel*>(w) || ::tqqt_cast<TQButton*>(w) ) { - text = MultiLineEditor::getText( this, w->property( "text" ).toString(), !::tqqt_cast<TQButton*>(w), &doWrap ); - ok = !text.isNull(); - } else { - text = TQInputDialog::getText( i18n("Text"), i18n( "New text" ), - TQLineEdit::Normal, w->property("text").toString(), &ok, this ); - } - if ( ok ) { - if ( oldDoWrap != doWrap ) { - TQString pn( i18n( "Set 'wordwrap' of '%1'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "wordwrap", TQVariant( oldDoWrap, 0 ), - TQVariant( doWrap, 0 ), TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "wordwrap", TRUE ); - } - - TQString pn( i18n( "Set the 'text' of '%1'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "text", w->property( "text" ), - text, TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "text", TRUE ); - } - } else if ( id == props[ "title" ] ) { - bool ok = FALSE; - TQString title = TQInputDialog::getText( i18n("Title"), i18n( "New title" ), - TQLineEdit::Normal, w->property("title").toString(), &ok, this ); - if ( ok ) { - TQString pn( i18n( "Set the 'title' of '%2'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "title", w->property( "title" ), - title, TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "title", TRUE ); - } - } else if ( id == props[ "pagetitle" ] ) { - bool ok = FALSE; - TQString text = TQInputDialog::getText( i18n("Page Title"), i18n( "New page title" ), - TQLineEdit::Normal, w->property("pageTitle").toString(), &ok, this ); - if ( ok ) { - TQString pn( i18n( "Set the 'pageTitle' of '%2'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "pageTitle", - w->property( "pageTitle" ), - text, TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "pageTitle", TRUE ); - } - } else if ( id == props[ "pixmap" ] ) { - TQPixmap oldPix = TQVariant(w->property( "pixmap" )).toPixmap(); - TQPixmap pix = qChoosePixmap( this, formWindow(), oldPix ); - if ( !pix.isNull() ) { - TQString pn( i18n( "Set the 'pixmap' of '%2'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "pixmap", w->property( "pixmap" ), - pix, TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "pixmap", TRUE ); - } - } -} - -void MainWindow::handleRMBSpecialCommands( int id, TQMap<TQString, int> &commands, TQWidget *w ) -{ - if ( ::tqqt_cast<TQTabWidget*>(w) ) { - TQTabWidget *tw = (TQTabWidget*)w; - if ( id == commands[ "add" ] ) { - AddTabPageCommand *cmd = - new AddTabPageCommand( i18n( "Add Page to %1" ).arg( tw->name() ), formWindow(), - tw, "Tab" ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } else if ( id == commands[ "remove" ] ) { - if ( tw->currentPage() ) { - QDesignerTabWidget *dtw = (QDesignerTabWidget*)tw; - DeleteTabPageCommand *cmd = - new DeleteTabPageCommand( i18n( "Delete Page %1 of %2" ). - arg( dtw->pageTitle() ).arg( tw->name() ), - formWindow(), tw, tw->currentPage() ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } - } - } else if ( ::tqqt_cast<TQToolBox*>(w) ) { - TQToolBox *tb = (TQToolBox*)w; - if ( id == commands[ "add" ] ) { - AddToolBoxPageCommand *cmd = - new AddToolBoxPageCommand( i18n( "Add Page to %1" ).arg( tb->name() ), - formWindow(), - tb, "Page" ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } else if ( id == commands[ "remove" ] ) { - if ( tb->currentItem() ) { - DeleteToolBoxPageCommand *cmd = - new DeleteToolBoxPageCommand( i18n( "Delete Page %1 of %2" ). - arg( tb->itemLabel( tb->currentIndex() ) ). - arg( tb->name() ), - formWindow(), tb, tb->currentItem() ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } - } - } else if ( ::tqqt_cast<TQWidgetStack*>(w) ) { - QDesignerWidgetStack *ws = (QDesignerWidgetStack*)w; - if ( id == commands[ "add" ] ) { - AddWidgetStackPageCommand *cmd = - new AddWidgetStackPageCommand( i18n( "Add Page to %1" ).arg( ws->name() ), - formWindow(), ws ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } else if ( id == commands[ "remove" ] ) { - if ( ws->visibleWidget() ) { - DeleteWidgetStackPageCommand *cmd = - new DeleteWidgetStackPageCommand( i18n( "Delete Page %1 of %2" ). - arg( ws->currentPage() ).arg( ws->name() ), - formWindow(), ws, ws->visibleWidget() ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } - } else if ( id == commands[ "nextpage" ] ) { - int currentPage = w->property( "currentPage" ).toInt(); - TQString pn( i18n( "Raise next page of '%2'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = - new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "currentPage", currentPage, - currentPage + 1, TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "currentPage", TRUE ); - } else if ( id == commands[ "prevpage" ] ) { - int currentPage = w->property( "currentPage" ).toInt(); - TQString pn( i18n( "Raise previous page of '%2'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = - new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "currentPage", currentPage, - currentPage -1, TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "currentPage", TRUE ); - } -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS - } else if ( WidgetDatabase:: - isCustomPluginWidget( WidgetDatabase:: - idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ) ) ) { - if ( id == commands[ "add" ] ) { - AddContainerPageCommand *cmd = - new AddContainerPageCommand( i18n( "Add Page to %1" ).arg( w->name() ), - formWindow(), w, "Page" ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } else if ( id == commands[ "remove" ] ) { - TQWidgetContainerInterfacePrivate *iface = containerWidgetInterface( w ); - if ( iface ) { - TQString wClassName = WidgetFactory::classNameOf( TQT_TQOBJECT(w) ); - int index = iface->currentIndex( wClassName, w ); - DeleteContainerPageCommand *cmd = - new DeleteContainerPageCommand( i18n( "Delete Page %1 of %2" ). - arg( iface->pageLabel( wClassName, - w, index ) ). - arg( w->name() ), - formWindow(), w, index ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - iface->release(); - } - } else if ( id == commands[ "rename" ] ) { - TQWidgetContainerInterfacePrivate *iface = containerWidgetInterface( w ); - if ( iface ) { - bool ok = FALSE; - TQString wClassName = WidgetFactory::classNameOf( TQT_TQOBJECT(w) ); - int index = iface->currentIndex( wClassName, w ); - TQString text = TQInputDialog::getText( i18n("Page Title"), i18n( "New page title" ), - TQLineEdit::Normal, - iface->pageLabel( wClassName, w, - index ), - &ok, this ); - if ( ok ) { - RenameContainerPageCommand *cmd = - new RenameContainerPageCommand( i18n( "Rename Page %1 to %2" ). - arg( iface-> - pageLabel( wClassName, w, - index ) ). - arg( text ), formWindow(), - w, index, text ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } - iface->release(); - } - } -#endif // TQT_CONTAINER_CUSTOM_WIDGETS - } - - if ( WidgetFactory::hasSpecialEditor( WidgetDatabase:: - idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ), TQT_TQOBJECT(w) ) ) { - if ( id == commands[ "edit" ] ) - WidgetFactory::editWidget( WidgetDatabase:: - idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ), this, w, formWindow() ); - } -} - -void MainWindow::handleRMBSpecialCommands( int id, TQMap<TQString, int> &commands, FormWindow *fw ) -{ - if ( ::tqqt_cast<TQWizard*>(fw->mainContainer()) ) { - TQWizard *wiz = (TQWizard*)fw->mainContainer(); - if ( id == commands[ "add" ] ) { - AddWizardPageCommand *cmd = - new AddWizardPageCommand( i18n( "Add Page to %1" ).arg( wiz->name() ), - formWindow(), wiz, "WizardPage" ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } else if ( id == commands[ "remove" ] ) { - if ( wiz->currentPage() ) { - QDesignerWizard *dw = (QDesignerWizard*)wiz; - DeleteWizardPageCommand *cmd = - new DeleteWizardPageCommand( i18n( "Delete Page %1 of %2" ). - arg( dw->pageTitle() ).arg( wiz->name() ), - formWindow(), wiz, - wiz->indexOf( wiz->currentPage() ) ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } - } else if ( id == commands[ "edit" ] ) { - WizardEditor *e = new WizardEditor( this, wiz, fw ); - e->exec(); - delete e; - } else if ( id == commands[ "rename" ] ) { - - bool ok = FALSE; - QDesignerWizard *dw = (QDesignerWizard*)wiz; - TQString text = TQInputDialog::getText( i18n("Page Title"), i18n( "New page title" ), - TQLineEdit::Normal, dw->pageTitle(), &ok, this ); - if ( ok ) { - TQString pn( i18n( "Rename page %1 of %2" ).arg( dw->pageTitle() ).arg( wiz->name() ) ); - RenameWizardPageCommand *cmd = - new RenameWizardPageCommand( pn, formWindow() - , wiz, wiz->indexOf( wiz->currentPage() ), text ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } - } - } else if ( ::tqqt_cast<TQMainWindow*>(fw->mainContainer()) ) { - TQMainWindow *mw = (TQMainWindow*)fw->mainContainer(); - if ( id == commands[ "add_toolbar" ] ) { - AddToolBarCommand *cmd = - new AddToolBarCommand( i18n( "Add Toolbar to '%1'" ).arg( formWindow()->name() ), - formWindow(), mw ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } else if ( id == commands[ "add_menu_item" ] ) { - AddMenuCommand *cmd = - new AddMenuCommand( i18n( "Add Menu to '%1'" ).arg( formWindow()->name() ), - formWindow(), mw ); - formWindow()->commandHistory()->addCommand( cmd ); - cmd->execute(); - } - } -} - -void MainWindow::clipboardChanged() -{ - TQString text( tqApp->clipboard()->text() ); - TQString start( "<!DOCTYPE UI-SELECTION>" ); - actionEditPaste->setEnabled( text.left( start.length() ) == start ); -} - -void MainWindow::selectionChanged() -{ - layoutChilds = FALSE; - layoutSelected = FALSE; - breakLayout = FALSE; - if ( !formWindow() ) { - actionEditCut->setEnabled( FALSE ); - actionEditCopy->setEnabled( FALSE ); - actionEditDelete->setEnabled( FALSE ); - actionEditAdjustSize->setEnabled( FALSE ); - actionEditHLayout->setEnabled( FALSE ); - actionEditVLayout->setEnabled( FALSE ); - actionEditSplitHorizontal->setEnabled( FALSE ); - actionEditSplitVertical->setEnabled( FALSE ); - actionEditGridLayout->setEnabled( FALSE ); - actionEditBreakLayout->setEnabled( FALSE ); - actionEditLower->setEnabled( FALSE ); - actionEditRaise->setEnabled( FALSE ); - actionEditAdjustSize->setEnabled( FALSE ); - return; - } - - int selectedWidgets = formWindow()->numSelectedWidgets(); - bool enable = selectedWidgets > 0; - actionEditCut->setEnabled( enable ); - actionEditCopy->setEnabled( enable ); - actionEditDelete->setEnabled( enable ); - actionEditLower->setEnabled( enable ); - actionEditRaise->setEnabled( enable ); - - actionEditAdjustSize->setEnabled( FALSE ); - actionEditSplitHorizontal->setEnabled( FALSE ); - actionEditSplitVertical->setEnabled( FALSE ); - - enable = FALSE; - TQWidgetList widgets = formWindow()->selectedWidgets(); - if ( selectedWidgets > 1 ) { - int unlaidout = 0; - int laidout = 0; - for ( TQWidget *w = widgets.first(); w; w = widgets.next() ) { - if ( !w->parentWidget() || WidgetFactory::layoutType( w->parentWidget() ) == WidgetFactory::NoLayout ) - unlaidout++; - else - laidout++; - } - actionEditHLayout->setEnabled( unlaidout > 1 ); - actionEditVLayout->setEnabled( unlaidout > 1 ); - actionEditSplitHorizontal->setEnabled( unlaidout > 1 ); - actionEditSplitVertical->setEnabled( unlaidout > 1 ); - actionEditGridLayout->setEnabled( unlaidout > 1 ); - actionEditBreakLayout->setEnabled( laidout > 0 ); - actionEditAdjustSize->setEnabled( laidout > 0 ); - layoutSelected = unlaidout > 1; - breakLayout = laidout > 0; - } else if ( selectedWidgets == 1 ) { - TQWidget *w = widgets.first(); - bool isContainer = WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ) ) || - w == formWindow()->mainContainer(); - actionEditAdjustSize->setEnabled( !w->parentWidget() || - WidgetFactory::layoutType( w->parentWidget() ) == WidgetFactory::NoLayout ); - - if ( !isContainer ) { - actionEditHLayout->setEnabled( FALSE ); - actionEditVLayout->setEnabled( FALSE ); - actionEditGridLayout->setEnabled( FALSE ); - if ( w->parentWidget() && WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout ) { - actionEditBreakLayout->setEnabled( !isAToolBarChild( TQT_TQOBJECT(w) ) ); - breakLayout = TRUE; - } else { - actionEditBreakLayout->setEnabled( FALSE ); - } - } else { - if ( WidgetFactory::layoutType( w ) == WidgetFactory::NoLayout ) { - if ( !formWindow()->hasInsertedChildren( w ) ) { - actionEditHLayout->setEnabled( FALSE ); - actionEditVLayout->setEnabled( FALSE ); - actionEditGridLayout->setEnabled( FALSE ); - actionEditBreakLayout->setEnabled( FALSE ); - } else { - actionEditHLayout->setEnabled( TRUE ); - actionEditVLayout->setEnabled( TRUE ); - actionEditGridLayout->setEnabled( TRUE ); - actionEditBreakLayout->setEnabled( FALSE ); - layoutChilds = TRUE; - } - if ( w->parentWidget() && WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout ) { - actionEditBreakLayout->setEnabled( !isAToolBarChild( TQT_TQOBJECT(w) ) ); - breakLayout = TRUE; - } - } else { - actionEditHLayout->setEnabled( FALSE ); - actionEditVLayout->setEnabled( FALSE ); - actionEditGridLayout->setEnabled( FALSE ); - actionEditBreakLayout->setEnabled( !isAToolBarChild( TQT_TQOBJECT(w) ) ); - breakLayout = TRUE; - } - } - } else if ( selectedWidgets == 0 ) { - actionEditAdjustSize->setEnabled( TRUE ); - TQWidget *w = formWindow()->mainContainer(); - if ( WidgetFactory::layoutType( w ) == WidgetFactory::NoLayout ) { - if ( !formWindow()->hasInsertedChildren( w ) ) { - actionEditHLayout->setEnabled( FALSE ); - actionEditVLayout->setEnabled( FALSE ); - actionEditGridLayout->setEnabled( FALSE ); - actionEditBreakLayout->setEnabled( FALSE ); - } else { - actionEditHLayout->setEnabled( TRUE ); - actionEditVLayout->setEnabled( TRUE ); - actionEditGridLayout->setEnabled( TRUE ); - actionEditBreakLayout->setEnabled( FALSE ); - layoutChilds = TRUE; - } - } else { - actionEditHLayout->setEnabled( FALSE ); - actionEditVLayout->setEnabled( FALSE ); - actionEditGridLayout->setEnabled( FALSE ); - actionEditBreakLayout->setEnabled( TRUE ); - breakLayout = TRUE; - } - } else { - actionEditHLayout->setEnabled( FALSE ); - actionEditVLayout->setEnabled( FALSE ); - actionEditGridLayout->setEnabled( FALSE ); - actionEditBreakLayout->setEnabled( FALSE ); - } -} - -static TQString fixArgs( const TQString &s2 ) -{ - TQString s = s2; - return s.replace( ',', ';' ); -} - -void MainWindow::writeConfig() -{ - TQSettings config; - - // No search path for unix, only needs application name - config.insertSearchPath( TQSettings::Windows, "/Trolltech" ); - - TQString keybase = DesignerApplication::settingsKey(); - - if (savePluginPaths) { - TQStringList pluginPaths = TQApplication::libraryPaths(); - config.writeEntry( keybase + "PluginPaths", pluginPaths ); - } - config.writeEntry( keybase + "RestoreWorkspace", restoreConfig ); - config.writeEntry( keybase + "SplashScreen", splashScreen ); - config.writeEntry( keybase + "ShowStartDialog", shStartDialog ); - config.writeEntry( keybase + "FileFilter", fileFilter ); - config.writeEntry( keybase + "TemplatePath", templPath ); - config.writeEntry( keybase + "RecentlyOpenedFiles", recentlyFiles ); - config.writeEntry( keybase + "RecentlyOpenedProjects", recentlyProjects ); - config.writeEntry( keybase + "DatabaseAutoEdit", databaseAutoEdit ); - - config.writeEntry( keybase + "AutoSave/Enabled", autoSaveEnabled ); - config.writeEntry( keybase + "AutoSave/Interval", autoSaveInterval ); - - config.writeEntry( keybase + "Grid/Snap", snGrid ); - config.writeEntry( keybase + "Grid/Show", sGrid ); - config.writeEntry( keybase + "Grid/x", grid().x() ); - config.writeEntry( keybase + "Grid/y", grid().y() ); - config.writeEntry( keybase + "LastToolPage", - toolBox->itemLabel( toolBox->currentIndex() ) ); - - config.writeEntry( keybase + "Background/UsePixmap", backPix ); - config.writeEntry( keybase + "Background/Color", (int)qworkspace->backgroundColor().rgb() ); - if ( qworkspace->backgroundPixmap() ) - qworkspace->backgroundPixmap()->save( TQDir::home().absPath() + "/.designer/" + "background.xpm", "PNG" ); - - config.writeEntry( keybase + "Geometries/MainwindowX", x() ); - config.writeEntry( keybase + "Geometries/MainwindowY", y() ); - config.writeEntry( keybase + "Geometries/MainwindowWidth", width() ); - config.writeEntry( keybase + "Geometries/MainwindowHeight", height() ); - config.writeEntry( keybase + "Geometries/MainwindowMaximized", isMaximized() ); - config.writeEntry( keybase + "Geometries/PropertyEditorX", propertyEditor->parentWidget()->x() ); - config.writeEntry( keybase + "Geometries/PropertyEditorY", propertyEditor->parentWidget()->y() ); - config.writeEntry( keybase + "Geometries/PropertyEditorWidth", propertyEditor->parentWidget()->width() ); - config.writeEntry( keybase + "Geometries/PropertyEditorHeight", propertyEditor->parentWidget()->height() ); - config.writeEntry( keybase + "Geometries/HierarchyViewX", hierarchyView->parentWidget()->x() ); - config.writeEntry( keybase + "Geometries/HierarchyViewY", hierarchyView->parentWidget()->y() ); - config.writeEntry( keybase + "Geometries/HierarchyViewWidth", hierarchyView->parentWidget()->width() ); - config.writeEntry( keybase + "Geometries/HierarchyViewHeight", hierarchyView->parentWidget()->height() ); - config.writeEntry( keybase + "Geometries/WorkspaceX", wspace->parentWidget()->x() ); - config.writeEntry( keybase + "Geometries/WorkspaceY", wspace->parentWidget()->y() ); - config.writeEntry( keybase + "Geometries/WorkspaceWidth", wspace->parentWidget()->width() ); - config.writeEntry( keybase + "Geometries/WorkspaceHeight", wspace->parentWidget()->height() ); - - config.writeEntry( keybase + "View/TextLabels", usesTextLabel() ); - config.writeEntry( keybase + "View/BigIcons", usesBigPixmaps() ); - - TQString mwlKey = "MainwindowLayout"; - if ( singleProjectMode() ) - mwlKey += "S"; - TQString mainWindowLayout; - TQTextStream ts( &mainWindowLayout, IO_WriteOnly ); - ts << *this; - config.writeEntry( keybase + mwlKey, mainWindowLayout ); - - - TQPtrList<MetaDataBase::CustomWidget> *lst = MetaDataBase::customWidgets(); - config.writeEntry( keybase + "CustomWidgets/num", (int)lst->count() ); - int j = 0; - TQDir::home().mkdir( ".designer" ); - for ( MetaDataBase::CustomWidget *w = lst->first(); w; w = lst->next() ) { - TQStringList l; - l << w->className; - l << w->includeFile; - l << TQString::number( (int)w->includePolicy ); - l << TQString::number( w->sizeHint.width() ); - l << TQString::number( w->sizeHint.height() ); - l << TQString::number( w->lstSignals.count() ); - for ( TQValueList<TQCString>::ConstIterator it = w->lstSignals.begin(); it != w->lstSignals.end(); ++it ) - l << TQString( fixArgs( *it ) ); - l << TQString::number( w->lstSlots.count() ); - for ( TQValueList<MetaDataBase::Function>::ConstIterator it2 = w->lstSlots.begin(); it2 != w->lstSlots.end(); ++it2 ) { - l << fixArgs( (*it2).function ); - l << (*it2).access; - } - l << TQString::number( w->lstProperties.count() ); - for ( TQValueList<MetaDataBase::Property>::ConstIterator it3 = w->lstProperties.begin(); it3 != w->lstProperties.end(); ++it3 ) { - l << (*it3).property; - l << (*it3).type; - } - l << TQString::number( size_type_to_int( w->sizePolicy.horData() ) ); - l << TQString::number( size_type_to_int( w->sizePolicy.verData() ) ); - l << TQString::number( (int)w->isContainer ); - config.writeEntry( keybase + "CustomWidgets/Widget" + TQString::number( j++ ), l, ',' ); - w->pixmap->save( TQDir::home().absPath() + "/.designer/" + w->className, "XPM" ); - } - - TQStringList l; - for ( TQAction *a = commonWidgetsPage.first(); a; a = commonWidgetsPage.next() ) - l << a->text(); - config.writeEntry( keybase + "ToolBox/CommonWidgets", l ); -} - -static TQString fixArgs2( const TQString &s2 ) -{ - TQString s = s2; - return s.replace( ';', ',' ); -} - -void MainWindow::readConfig() -{ - TQString keybase = DesignerApplication::settingsKey(); - TQSettings config; - config.insertSearchPath( TQSettings::Windows, "/Trolltech" ); - - bool ok; - bool readPreviousConfig = FALSE; - TQString backPixName( TQDir::home().absPath() + "/.designer/" + "background.xpm" ); - restoreConfig = config.readBoolEntry( keybase + "RestoreWorkspace", TRUE, &ok ); - if ( !ok ) { - keybase = DesignerApplication::oldSettingsKey(); - restoreConfig = config.readBoolEntry( keybase + "RestoreWorkspace", TRUE, &ok ); - if ( !ok ) { - if ( oWindow ) { - oWindow->shuttingDown(); - ( (TQDockWindow*)oWindow->parent() )->hide(); - } - TQPixmap pix; - pix.load( backPixName ); - if ( !pix.isNull() ) - qworkspace->setBackgroundPixmap( pix ); - return; - } - readPreviousConfig = TRUE; - } - if ( !readPreviousConfig ) { - fileFilter = config.readEntry( keybase + "FileFilter", fileFilter ); - templPath = config.readEntry( keybase + "TemplatePath", TQString() ); - databaseAutoEdit = config.readBoolEntry( keybase + "DatabaseAutoEdit", databaseAutoEdit ); - shStartDialog = config.readBoolEntry( keybase + "ShowStartDialog", shStartDialog ); - autoSaveEnabled = config.readBoolEntry( keybase + "AutoSave/Enabled", autoSaveEnabled ); - autoSaveInterval = config.readNumEntry( keybase + "AutoSave/Interval", autoSaveInterval ); - } - - if ( restoreConfig || readPreviousConfig ) { - TQString s = config.readEntry( keybase + "LastToolPage" ); - for ( int i = 0; i < toolBox->count(); ++i ) { - if ( toolBox->itemLabel(i) == s ) { - toolBox->setCurrentIndex( i ); - break; - } - } - // We know that the oldSettingsKey() will return 3.1 - if ( keybase == DesignerApplication::oldSettingsKey() ) { - if (keybase.contains("3.1")) - recentlyFiles = config.readListEntry( keybase + "RecentlyOpenedFiles", ',' ); - else - recentlyFiles = config.readListEntry(keybase + "RecentlyOpenedFiles"); - - if ( recentlyFiles.count() == 1 && recentlyFiles[0].isNull() ) - recentlyFiles.clear(); - if (keybase.contains("3.1")) - recentlyProjects = config.readListEntry( keybase + "RecentlyOpenedProjects", ',' ); - else - recentlyProjects = config.readListEntry( keybase + "RecentlyOpenedProjects"); - if ( recentlyProjects.count() == 1 && recentlyProjects[0].isNull() ) - recentlyProjects.clear(); - } else { - recentlyFiles = config.readListEntry( keybase + "RecentlyOpenedFiles" ); - recentlyProjects = config.readListEntry( keybase + "RecentlyOpenedProjects" ); - } - - backPix = config.readBoolEntry( keybase + "Background/UsePixmap", TRUE ) | readPreviousConfig; - if ( backPix ) { - TQPixmap pix; - pix.load( backPixName ); - if ( !pix.isNull() ) - qworkspace->setBackgroundPixmap( pix ); - } else { - qworkspace->setBackgroundColor( TQColor( (TQRgb)config.readNumEntry( keybase + "Background/Color" ) ) ); - } - - if ( !readPreviousConfig ) { - splashScreen = config.readBoolEntry( keybase + "SplashScreen", TRUE ); - - sGrid = config.readBoolEntry( keybase + "Grid/Show", TRUE ); - snGrid = config.readBoolEntry( keybase + "Grid/Snap", TRUE ); - grd.setX( config.readNumEntry( keybase + "Grid/x", 10 ) ); - grd.setY( config.readNumEntry( keybase + "Grid/y", 10 ) ); - - if ( !config.readBoolEntry( DesignerApplication::settingsKey() + "Geometries/MainwindowMaximized", FALSE ) ) { - TQRect r( pos(), size() ); - r.setX( config.readNumEntry( keybase + "Geometries/MainwindowX", r.x() ) ); - r.setY( config.readNumEntry( keybase + "Geometries/MainwindowY", r.y() ) ); - r.setWidth( config.readNumEntry( keybase + "Geometries/MainwindowWidth", r.width() ) ); - r.setHeight( config.readNumEntry( keybase + "Geometries/MainwindowHeight", r.height() ) ); - - TQRect desk = TQApplication::desktop()->geometry(); - TQRect inter = desk.intersect( r ); - resize( r.size() ); - if ( inter.width() * inter.height() > ( r.width() * r.height() / 20 ) ) { - move( r.topLeft() ); - } - } - setUsesTextLabel( config.readBoolEntry( keybase + "View/TextLabels", FALSE ) ); - setUsesBigPixmaps( FALSE /*config.readBoolEntry( "BigIcons", FALSE )*/ ); // ### disabled for now - } - } - int num = config.readNumEntry( keybase + "CustomWidgets/num" ); - for ( int j = 0; j < num; ++j ) { - MetaDataBase::CustomWidget *w = new MetaDataBase::CustomWidget; - TQStringList l = config.readListEntry( keybase + "CustomWidgets/Widget" + TQString::number( j ), ',' ); - w->className = l[ 0 ]; - w->includeFile = l[ 1 ]; - w->includePolicy = (MetaDataBase::CustomWidget::IncludePolicy)l[ 2 ].toInt(); - w->sizeHint.setWidth( l[ 3 ].toInt() ); - w->sizeHint.setHeight( l[ 4 ].toInt() ); - uint c = 5; - if ( l.count() > c ) { - int numSignals = l[ c ].toInt(); - c++; - for ( int i = 0; i < numSignals; ++i, c++ ) - w->lstSignals.append( fixArgs2( l[ c ] ).latin1() ); - } - if ( l.count() > c ) { - int numSlots = l[ c ].toInt(); - c++; - for ( int i = 0; i < numSlots; ++i ) { - MetaDataBase::Function slot; - slot.function = fixArgs2( l[ c ] ); - c++; - slot.access = l[ c ]; - c++; - w->lstSlots.append( slot ); - } - } - if ( l.count() > c ) { - int numProperties = l[ c ].toInt(); - c++; - for ( int i = 0; i < numProperties; ++i ) { - MetaDataBase::Property prop; - prop.property = l[ c ]; - c++; - prop.type = l[ c ]; - c++; - w->lstProperties.append( prop ); - } - } if ( l.count() > c ) { - TQSizePolicy::SizeType h, v; - h = int_to_size_type( l[ c++ ].toInt() ); - v = int_to_size_type( l[ c++ ].toInt() ); - w->sizePolicy = TQSizePolicy( h, v ); - } - if ( l.count() > c ) { - w->isContainer = (bool)l[ c++ ].toInt(); - } - w->pixmap = new TQPixmap( BarIcon( TQDir::home().absPath() + "/.designer/" + w->className , KDevDesignerPartFactory::instance()) ); - MetaDataBase::addCustomWidget( w ); - } - if ( num > 0 ) - rebuildCustomWidgetGUI(); - - if ( !restoreConfig ) - return; - -#ifndef TQ_WS_MAC - /* I'm sorry to make this not happen on the Mac, but it seems to hang somewhere deep - in TQLayout, it gets into a very large loop - and seems it has to do with clever - things the designer does ###Sam */ - TQApplication::sendPostedEvents(); -#endif - - if ( !readPreviousConfig ) { - TQString mwlKey = "MainwindowLayout"; - if ( singleProjectMode() ) - mwlKey += "S"; - TQString mainWindowLayout = config.readEntry( keybase + mwlKey ); - TQTextStream ts( &mainWindowLayout, IO_ReadOnly ); - ts >> *this; - } - if ( readPreviousConfig && oWindow ) { - oWindow->shuttingDown(); - ( (TQDockWindow*)oWindow->parent() )->hide(); - } - - rebuildCustomWidgetGUI(); - - TQStringList l = config.readListEntry( keybase + "ToolBox/CommonWidgets" ); - if ( !l.isEmpty() ) { - TQPtrList<TQAction> lst; - commonWidgetsPage.clear(); - for ( TQStringList::ConstIterator it = l.begin(); it != l.end(); ++it ) { - for ( TQAction *a = toolActions.first(); a; a = toolActions.next() ) { - if ( *it == a->text() ) { - lst.append( a ); - break; - } - } - } - if ( lst != commonWidgetsPage ) { - commonWidgetsPage = lst; - rebuildCommonWidgetsToolBoxPage(); - } - } -} - -HierarchyView *MainWindow::objectHierarchy() const -{ - if ( !hierarchyView ) - ( (MainWindow*)this )->setupHierarchyView(); - return hierarchyView; -} - -TQPopupMenu *MainWindow::setupNormalHierarchyMenu( TQWidget *parent ) -{ - TQPopupMenu *menu = new TQPopupMenu( parent ); - - actionEditCut->addTo( menu ); - actionEditCopy->addTo( menu ); - actionEditPaste->addTo( menu ); - actionEditDelete->addTo( menu ); - - return menu; -} - -TQPopupMenu *MainWindow::setupTabWidgetHierarchyMenu( TQWidget *parent, const char *addSlot, const char *removeSlot ) -{ - TQPopupMenu *menu = new TQPopupMenu( parent ); - - menu->insertItem( i18n( "Add Page" ), parent, addSlot ); - menu->insertItem( i18n( "Delete Page" ), parent, removeSlot ); - menu->insertSeparator(); - actionEditCut->addTo( menu ); - actionEditCopy->addTo( menu ); - actionEditPaste->addTo( menu ); - actionEditDelete->addTo( menu ); - - return menu; -} - -void MainWindow::closeEvent( TQCloseEvent *e ) -{ - if ( singleProject ) { - hide(); - e->ignore(); - return; - } - - TQWidgetList windows = qWorkspace()->windowList(); - TQWidgetListIt wit( windows ); - while ( wit.current() ) { - TQWidget *w = wit.current(); - ++wit; - if ( ::tqqt_cast<FormWindow*>(w) ) { - if ( ( (FormWindow*)w )->formFile()->editor() ) - windows.removeRef( ( (FormWindow*)w )->formFile()->editor() ); - if ( ( (FormWindow*)w )->formFile()->formWindow() ) - windows.removeRef( ( (FormWindow*)w )->formFile()->formWindow() ); - if ( !( (FormWindow*)w )->formFile()->close() ) { - e->ignore(); - return; - } - } else if ( ::tqqt_cast<SourceEditor*>(w) ) { - if ( !( (SourceEditor*)w )->close() ) { - e->ignore(); - return; - } - } - w->close(); - } - - TQMapConstIterator<TQAction*, Project*> it = projects.begin(); - while( it != projects.end() ) { - Project *pro = it.data(); - ++it; - if ( pro->isModified() ) { - switch ( TQMessageBox::warning( this, i18n( "Save Project Settings" ), - i18n( "Save changes to '%1'?" ).arg( pro->fileName() ), - i18n( "&Yes" ), i18n( "&No" ), i18n( "&Cancel" ), 0, 2 ) ) { - case 0: // save - pro->save(); - break; - case 1: // don't save - break; - case 2: // cancel - e->ignore(); - return; - default: - break; - } - } - } - - writeConfig(); - hide(); - e->accept(); - - if ( client ) { - TQDir home( TQDir::homeDirPath() ); - home.remove( ".designerpid" ); - } -} - -Workspace *MainWindow::workspace() const -{ - if ( !wspace ) - ( (MainWindow*)this )->setupWorkspace(); - return wspace; -} - -PropertyEditor *MainWindow::propertyeditor() const -{ - if ( !propertyEditor ) - ( (MainWindow*)this )->setupPropertyEditor(); - return propertyEditor; -} - -ActionEditor *MainWindow::actioneditor() const -{ - if ( !actionEditor ) - ( (MainWindow*)this )->setupActionEditor(); - return actionEditor; -} - -bool MainWindow::openEditor( TQWidget *w, FormWindow *f ) -{ - if ( f && !f->project()->isCpp() && !WidgetFactory::isPassiveInteractor( TQT_TQOBJECT(w) ) ) { - TQString defSignal = WidgetFactory::defaultSignal( TQT_TQOBJECT(w) ); - if ( defSignal.isEmpty() ) { - editSource(); - } else { - TQString s = TQString( w->name() ) + "_" + defSignal; - LanguageInterface *iface = MetaDataBase::languageInterface( f->project()->language() ); - if ( iface ) { - TQStrList sigs = iface->signalNames( TQT_TQOBJECT(w) ); - TQString fullSignal; - for ( int i = 0; i < (int)sigs.count(); ++i ) { - TQString sig = sigs.at( i ); - if ( sig.left( sig.find( '(' ) ) == defSignal ) { - fullSignal = sig; - break; - } - } - - if ( !fullSignal.isEmpty() ) { - TQString signl = fullSignal; - fullSignal = fullSignal.mid( fullSignal.find( '(' ) + 1 ); - fullSignal.remove( (int)fullSignal.length() - 1, 1 ); - fullSignal = iface->createArguments( fullSignal.simplifyWhiteSpace() ); - s += "(" + fullSignal + ")"; - if ( !MetaDataBase::hasFunction( TQT_TQOBJECT(f), s.latin1() ) ) - MetaDataBase::addFunction( TQT_TQOBJECT(f), s.latin1(), "", "public", "slot", - f->project()->language(), "void" ); - s = s.left( s.find( '(' ) ).latin1(); - if ( !MetaDataBase::hasConnection( TQT_TQOBJECT(f), TQT_TQOBJECT(w), defSignal.latin1(), TQT_TQOBJECT(f->mainContainer()), s.latin1() ) ) { - MetaDataBase::Connection conn; - conn.sender = TQT_TQOBJECT(w); - conn.receiver = TQT_TQOBJECT(f->mainContainer()); - conn.signal = signl; - conn.slot = s; - AddConnectionCommand *cmd = - new AddConnectionCommand( i18n( "Add Connection" ), f, conn ); - f->commandHistory()->addCommand( cmd ); - cmd->execute(); - f->formFile()->setModified( TRUE ); - } - } - } - editFunction( s, TRUE ); - } - return TRUE; - } - if ( WidgetFactory::hasSpecialEditor( WidgetDatabase:: - idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ), TQT_TQOBJECT(w) ) ) { - statusMessage( i18n( "Edit %1..." ).arg( w->className() ) ); - WidgetFactory::editWidget( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ), - this, w, formWindow() ); - statusBar()->clear(); - return TRUE; - } - - const TQMetaProperty* text = w->metaObject()->property( w->metaObject()->findProperty( "text", TRUE ), TRUE ); - const TQMetaProperty* title = w->metaObject()->property( w->metaObject()->findProperty( "title", TRUE ), TRUE ); - if ( text && text->designable(w) ) { - bool ok = FALSE; - bool oldDoWrap = FALSE; - if ( ::tqqt_cast<TQLabel*>(w) ) { - int align = w->property( "alignment" ).toInt(); - if ( align & WordBreak ) - oldDoWrap = TRUE; - } - bool doWrap = oldDoWrap; - - TQString text; - if ( ::tqqt_cast<TQTextEdit*>(w) || ::tqqt_cast<TQLabel*>(w) || ::tqqt_cast<TQButton*>(w) ) { - text = MultiLineEditor::getText( this, w->property( "text" ).toString(), - !::tqqt_cast<TQButton*>(w), &doWrap ); - ok = !text.isNull(); - } else { - text = TQInputDialog::getText( i18n("Text"), i18n( "New text" ), - TQLineEdit::Normal, w->property("text").toString(), &ok, this ); - } - if ( ok ) { - if ( oldDoWrap != doWrap ) { - TQString pn( i18n( "Set 'wordwrap' of '%1'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "wordwrap", TQVariant( oldDoWrap, 0 ), - TQVariant( doWrap, 0 ), TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "wordwrap", TRUE ); - } - - TQString pn( i18n( "Set the 'text' of '%1'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "text", w->property( "text" ), - text, TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "text", TRUE ); - } - return TRUE; - } - if ( title && title->designable(w) ) { - bool ok = FALSE; - TQString text; - text = TQInputDialog::getText( i18n("Title"), i18n( "New title" ), TQLineEdit::Normal, w->property("title").toString(), &ok, this ); - if ( ok ) { - TQString pn( i18n( "Set the 'title' of '%2'" ).arg( w->name() ) ); - SetPropertyCommand *cmd = new SetPropertyCommand( pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, - "title", w->property( "title" ), - text, TQString(), TQString() ); - cmd->execute(); - formWindow()->commandHistory()->addCommand( cmd ); - MetaDataBase::setPropertyChanged( TQT_TQOBJECT(w), "title", TRUE ); - } - return TRUE; - } - - if ( !WidgetFactory::isPassiveInteractor( TQT_TQOBJECT(w) ) ) - editSource(); - - return TRUE; -} - -void MainWindow::rebuildCustomWidgetGUI() -{ - customWidgetToolBar->clear(); - customWidgetMenu->clear(); - customWidgetToolBar2->clear(); - int count = 0; - - TQPtrListIterator<TQAction> it( toolActions ); - TQAction *action; - while ( ( action = it.current() ) ) { - ++it; - if ( ( (WidgetAction*)action )->group() == "Custom Widgets" ) - delete action; - } - - TQPtrList<MetaDataBase::CustomWidget> *lst = MetaDataBase::customWidgets(); - - actionToolsCustomWidget->addTo( customWidgetMenu ); - customWidgetMenu->insertSeparator(); - - for ( MetaDataBase::CustomWidget *w = lst->first(); w; w = lst->next() ) { - WidgetAction* a = new WidgetAction( "Custom Widgets", actionGroupTools, TQString::number( w->id ).latin1() ); - a->setToggleAction( TRUE ); - a->setText( w->className ); - a->setIconSet( *w->pixmap ); - a->setStatusTip( i18n( "Insert a %1 (custom widget)" ).arg( w->className ) ); - a->setWhatsThis( i18n("<b>%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 them into TQt Designer, " - "and provide a pixmap which will be used to represent the widget on the form.</p>").arg( w->className ) ); - - a->addTo( customWidgetToolBar ); - a->addTo( customWidgetToolBar2 ); - a->addTo( customWidgetMenu ); - count++; - } - TQWidget *wid; - customWidgetToolBar2->setStretchableWidget( ( wid = new TQWidget( customWidgetToolBar2 ) ) ); - wid->setBackgroundMode( customWidgetToolBar2->backgroundMode() ); - - if ( count == 0 ) - customWidgetToolBar->hide(); - else if ( customWidgetToolBar->isVisible() ) - customWidgetToolBar->show(); -} - -void MainWindow::rebuildCommonWidgetsToolBoxPage() -{ - toolBox->setUpdatesEnabled( FALSE ); - commonWidgetsToolBar->setUpdatesEnabled( FALSE ); - commonWidgetsToolBar->clear(); - for ( TQAction *a = commonWidgetsPage.first(); a; a = commonWidgetsPage.next() ) - a->addTo( commonWidgetsToolBar ); - TQWidget *w; - commonWidgetsToolBar->setStretchableWidget( ( w = new TQWidget( commonWidgetsToolBar ) ) ); - w->setBackgroundMode( commonWidgetsToolBar->backgroundMode() ); - toolBox->setUpdatesEnabled( TRUE ); - commonWidgetsToolBar->setUpdatesEnabled( TRUE ); -} - -bool MainWindow::isCustomWidgetUsed( MetaDataBase::CustomWidget *wid ) -{ - TQWidgetList windows = qWorkspace()->windowList(); - for ( TQWidget *w = windows.first(); w; w = windows.next() ) { - if ( ::tqqt_cast<FormWindow*>(w) ) { - if ( ( (FormWindow*)w )->isCustomWidgetUsed( wid ) ) - return TRUE; - } - } - return FALSE; -} - -void MainWindow::setGrid( const TQPoint &p ) -{ - if ( p == grd ) - return; - grd = p; - TQWidgetList windows = qWorkspace()->windowList(); - for ( TQWidget *w = windows.first(); w; w = windows.next() ) { - if ( !::tqqt_cast<FormWindow*>(w) ) - continue; - ( (FormWindow*)w )->mainContainer()->update(); - } -} - -void MainWindow::setShowGrid( bool b ) -{ - if ( b == sGrid ) - return; - sGrid = b; - TQWidgetList windows = qWorkspace()->windowList(); - for ( TQWidget *w = windows.first(); w; w = windows.next() ) { - if ( !::tqqt_cast<FormWindow*>(w) ) - continue; - ( (FormWindow*)w )->mainContainer()->update(); - } -} - -void MainWindow::setSnapGrid( bool b ) -{ - if ( b == snGrid ) - return; - snGrid = b; -} - -TQString MainWindow::documentationPath() const -{ - return TQString( tqInstallPathDocs() ) + "/html/"; -} - -void MainWindow::windowsMenuActivated( int id ) -{ - TQWidget* w = qworkspace->windowList().at( id ); - if ( w ) - w->setFocus(); -} - -void MainWindow::projectSelected( TQAction *a ) -{ - a->setOn( TRUE ); - if ( currentProject ) - currentProject->setActive( FALSE ); - Project *p = *projects.find( a ); - p->setActive( TRUE ); - if ( currentProject == p ) - return; - currentProject = p; - if ( wspace ) - wspace->setCurrentProject( currentProject ); -} - -void MainWindow::openProject( const TQString &fn ) -{ - for ( TQMap<TQAction*, Project*>::ConstIterator it = projects.begin(); it != projects.end(); ++it ) { - if ( (*it)->fileName() == fn ) { - projectSelected( it.key() ); - return; - } - } - TQApplication::setOverrideCursor( waitCursor ); - Project *pro = new Project( fn, "", projectSettingsPluginManager ); - pro->setModified( FALSE ); - TQAction *a = new TQAction( pro->projectName(), pro->projectName(), 0, actionGroupProjects, 0, TRUE ); - projects.insert( a, pro ); - projectSelected( a ); - TQApplication::restoreOverrideCursor(); -} - -void MainWindow::checkTempFiles() -{ - TQString s = TQDir::homeDirPath() + "/.designer"; - TQString baseName = s+ "/saved-form-"; - if ( !TQFile::exists( baseName + "1.ui" ) ) - return; - DesignerApplication::closeSplash(); - TQDir d( s ); - d.setNameFilter( "*.ui" ); - TQStringList lst = d.entryList(); - TQApplication::restoreOverrideCursor(); - bool load = TQMessageBox::information( this, i18n( "Restoring Last Session" ), - i18n( "TQt Designer found some temporary saved files, which were\n" - "written when TQt Designer crashed last time. Do you want to\n" - "load these files?" ), i18n( "&Yes" ), i18n( "&No" ) ) == 0; - TQApplication::setOverrideCursor( waitCursor ); - for ( TQStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it ) { - if ( load ) - openFormWindow( s + "/" + *it, FALSE ); - d.remove( *it ); - } -} - -void MainWindow::showDialogHelp() -{ - TQWidget *w = (TQWidget*)sender(); - w = w->topLevelWidget(); - - TQString link = documentationPath() + "/designer-manual-13.html#"; - - if ( ::tqqt_cast<NewFormBase*>(w) || ::tqqt_cast<StartDialogBase*>(w) ) // own doc for startdialog? - link += "dialog-file-new"; - else if ( ::tqqt_cast<CreateTemplate*>(w) ) - link += "dialog-file-create-template"; - else if ( ::tqqt_cast<EditFunctionsBase*>(w) ) - link += "dialog-edit-functions"; -// else if ( ::tqqt_cast<ConnectionViewerBase*>(w) ) - else if ( w->inherits("ConnectionViewerBase") ) - link += "dialog-view-connections"; - else if ( ::tqqt_cast<FormSettingsBase*>(w) ) - link += "dialog-edit-form-settings"; - else if ( ::tqqt_cast<Preferences*>(w) ) - link += "dialog-edit-preferences"; - else if ( ::tqqt_cast<PixmapCollectionEditor*>(w) ) - link += "dialog-image-collection"; -// else if ( ::tqqt_cast<DatabaseConnectionBase*>(w) ) - else if ( w->inherits( "DatabaseConnectionBase" ) ) - link += "dialog-edit-database-connections"; - else if ( ::tqqt_cast<ProjectSettingsBase*>(w) ) - link += "dialog-project-settings"; - else if ( ::tqqt_cast<FindDialog*>(w) ) - link += "dialog-find-text"; - else if ( ::tqqt_cast<ReplaceDialog*>(w) ) - link += "dialog-replace-text"; - else if ( ::tqqt_cast<GotoLineDialog*>(w) ) - link += "dialog-go-to-line"; -// else if ( ::tqqt_cast<ConnectionEditorBase*>(w) ) - else if ( w->inherits("ConnectionEditorBase") ) - link += "dialog-edit-connections"; - else if ( ::tqqt_cast<CustomWidgetEditorBase*>(w) ) - link += "dialog-edit-custom-widgets"; - else if ( ::tqqt_cast<PaletteEditorBase*>(w) ) - link += "dialog-edit-palette"; - else if ( ::tqqt_cast<ListBoxEditorBase*>(w) ) - link += "dialog-edit-listbox"; - else if ( ::tqqt_cast<ListViewEditorBase*>(w) ) - link += "dialog-edit-listview"; - else if ( ::tqqt_cast<IconViewEditorBase*>(w) ) - link += "dialog-edit-iconview"; - else if ( ::tqqt_cast<TableEditorBase*>(w) ) - link += "dialog-edit-table"; - else if ( ::tqqt_cast<MultiLineEditor*>(w) ) - link += "dialog-text"; - - else { - TQMessageBox::information( this, i18n( "Help" ), - i18n( "There is no help available for this dialog at the moment." ) ); - return; - } - - assistant->showPage( link ); -} - -void MainWindow::setupActionManager() -{ - actionPluginManager = new TQPluginManager<ActionInterface>( IID_Action, TQApplication::libraryPaths(), pluginDirectory() ); - - TQStringList lst = actionPluginManager->featureList(); - for ( TQStringList::ConstIterator ait = lst.begin(); ait != lst.end(); ++ait ) { - ActionInterface *iface = 0; - actionPluginManager->queryInterface( *ait, &iface ); - if ( !iface ) - continue; - - iface->connectTo( desInterface ); - TQAction *a = iface->create( *ait, TQT_TQOBJECT(this) ); - if ( !a ) - continue; - - TQString grp = iface->group( *ait ); - if ( grp.isEmpty() ) - grp = "3rd party actions"; - TQPopupMenu *menu = 0; - TQToolBar *tb = 0; - - if ( !( menu = (TQPopupMenu*)child( grp.latin1(), TQPOPUPMENU_OBJECT_NAME_STRING ) ) ) { - menu = new TQPopupMenu( this, grp.latin1() ); - menuBar()->insertItem( i18n( grp ), menu ); - } - if ( !( tb = (TQToolBar*)child( grp.latin1(), TQTOOLBAR_OBJECT_NAME_STRING ) ) ) { - tb = new TQToolBar( this, grp.latin1() ); - tb->setCloseMode( TQDockWindow::Undocked ); - addToolBar( tb, grp ); - } - - if ( iface->location( *ait, ActionInterface::Menu ) ) - a->addTo( menu ); - if ( iface->location( *ait, ActionInterface::Toolbar ) ) - a->addTo( tb ); - - iface->release(); - } -} - -void MainWindow::editFunction( const TQString &func, bool rereadSource ) -{ - if ( !formWindow() ) - return; - - if ( formWindow()->formFile()->codeFileState() != FormFile::Ok ) - if ( !formWindow()->formFile()->setupUihFile(FALSE) ) - return; - - TQString lang = currentProject->language(); - if ( !MetaDataBase::hasEditor( lang ) ) { - TQMessageBox::information( this, i18n( "Edit Source" ), - i18n( "There is no plugin for editing %1 code installed.\n" - "Note: Plugins are not available in static TQt configurations." ).arg( lang ) ); - return; - } - - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { - if ( e->language() == lang && e->formWindow() == formWindow() ) { - e->show(); - e->setFunction( func ); - return; - } - } - - createSourceEditor( TQT_TQOBJECT(formWindow()), formWindow()->project(), lang, func, rereadSource ); -} - -void MainWindow::setupRecentlyFilesMenu() -{ - recentlyFilesMenu->clear(); - int id = 0; - for ( TQStringList::ConstIterator it = recentlyFiles.begin(); it != recentlyFiles.end(); ++it ) { - recentlyFilesMenu->insertItem( *it, id ); - id++; - } -} - -void MainWindow::setupRecentlyProjectsMenu() -{ - recentlyProjectsMenu->clear(); - int id = 0; - for ( TQStringList::ConstIterator it = recentlyProjects.begin(); it != recentlyProjects.end(); ++it ) { - recentlyProjectsMenu->insertItem( *it, id ); - id++; - } -} - -TQPtrList<DesignerProject> MainWindow::projectList() const -{ - TQPtrList<DesignerProject> list; - TQMapConstIterator<TQAction*, Project*> it = projects.begin(); - - while( it != projects.end() ) { - Project *p = it.data(); - ++it; - list.append( p->iFace() ); - } - - return list; -} - -TQStringList MainWindow::projectNames() const -{ - TQStringList res; - for ( TQMap<TQAction*, Project* >::ConstIterator it = projects.begin(); it != projects.end(); ++it ) - res << (*it)->projectName(); - return res; -} - -TQStringList MainWindow::projectFileNames() const -{ - TQStringList res; - for ( TQMap<TQAction*, Project* >::ConstIterator it = projects.begin(); it != projects.end(); ++it ) - res << (*it)->makeRelative( (*it)->fileName() ); - return res; -} - -Project *MainWindow::findProject( const TQString &projectName ) const -{ - for ( TQMap<TQAction*, Project* >::ConstIterator it = projects.begin(); it != projects.end(); ++it ) { - if ( (*it)->projectName() == projectName ) - return *it; - } - return 0; -} - -void MainWindow::setCurrentProject( Project *pro ) -{ - for ( TQMap<TQAction*, Project* >::ConstIterator it = projects.begin(); it != projects.end(); ++it ) { - if ( *it == pro ) { - projectSelected( it.key() ); - return; - } - } -} - -void MainWindow::setCurrentProjectByFilename( const TQString& proFilename ) -{ - for ( TQMap<TQAction*, Project* >::ConstIterator it = projects.begin(); it != projects.end(); ++it ) { - if ( (*it)->makeRelative( (*it)->fileName() ) == proFilename ) { - projectSelected( it.key() ); - return; - } - } -} - - -void MainWindow::recentlyFilesMenuActivated( int id ) -{ - if ( id != -1 ) { - if ( !TQFile::exists( *recentlyFiles.at( id ) ) ) { - TQMessageBox::warning( this, i18n( "Open File" ), - i18n( "Could not open '%1'. File does not exist." ). - arg( *recentlyFiles.at( id ) ) ); - recentlyFiles.remove( recentlyFiles.at( id ) ); - return; - } - fileOpen( "", "", *recentlyFiles.at( id ) ); - TQString fn( *recentlyFiles.at( id ) ); - addRecentlyOpened( fn, recentlyFiles ); - } -} - -void MainWindow::recentlyProjectsMenuActivated( int id ) -{ - if ( id != -1 ) { - if ( !TQFile::exists( *recentlyProjects.at( id ) ) ) { - TQMessageBox::warning( this, i18n( "Open Project" ), - i18n( "Could not open '%1'. File does not exist." ). - arg( *recentlyProjects.at( id ) ) ); - recentlyProjects.remove( recentlyProjects.at( id ) ); - return; - } - openProject( *recentlyProjects.at( id ) ); - TQString fn( *recentlyProjects.at( id ) ); - addRecentlyOpened( fn, recentlyProjects ); - } -} - -void MainWindow::addRecentlyOpened( const TQString &fn, TQStringList &lst ) -{ - TQFileInfo fi( fn ); - fi.convertToAbs(); - TQString f = fi.filePath(); - if ( lst.find( f ) != lst.end() ) - lst.remove( f ); - if ( lst.count() >= 10 ) - lst.pop_back(); - lst.prepend( f ); -} - -TemplateWizardInterface * MainWindow::templateWizardInterface( const TQString& className ) -{ - TemplateWizardInterface* iface = 0; - templateWizardPluginManager->queryInterface( className, & iface ); - return iface; -} - -void MainWindow::setupPluginManagers() -{ - editorPluginManager = new TQPluginManager<EditorInterface>( IID_Editor, TQApplication::libraryPaths(), "/kdevdesigner" ); - MetaDataBase::setEditor( editorPluginManager->featureList() ); - - templateWizardPluginManager = - new TQPluginManager<TemplateWizardInterface>( IID_TemplateWizard, TQApplication::libraryPaths(), pluginDirectory() ); - - MetaDataBase::setupInterfaceManagers( "/designer" ); - preferencePluginManager = - new TQPluginManager<PreferenceInterface>( IID_Preference, TQApplication::libraryPaths(), pluginDirectory() ); - projectSettingsPluginManager = - new TQPluginManager<ProjectSettingsInterface>( IID_ProjectSettings, TQApplication::libraryPaths(), pluginDirectory() ); - sourceTemplatePluginManager = - new TQPluginManager<SourceTemplateInterface>( IID_SourceTemplate, TQApplication::libraryPaths(), pluginDirectory() ); - - if ( preferencePluginManager ) { - TQStringList lst = preferencePluginManager->featureList(); - for ( TQStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it ) { - PreferenceInterface *i = 0; - preferencePluginManager->queryInterface( *it, &i ); - if ( !i ) - continue; - i->connectTo( designerInterface() ); - PreferenceInterface::Preference *pf = i->preference(); - if ( pf ) - addPreferencesTab( pf->tab, pf->title, pf->receiver, pf->init_slot, pf->accept_slot ); - i->deletePreferenceObject( pf ); - - i->release(); - } - } - if ( projectSettingsPluginManager ) { - TQStringList lst = projectSettingsPluginManager->featureList(); - for ( TQStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it ) { - ProjectSettingsInterface *i = 0; - projectSettingsPluginManager->queryInterface( *it, &i ); - if ( !i ) - continue; - i->connectTo( designerInterface() ); - - ProjectSettingsInterface::ProjectSettings *pf = i->projectSetting(); - if ( pf ) - addProjectTab( pf->tab, pf->title, pf->receiver, pf->init_slot, pf->accept_slot ); - i->deleteProjectSettingsObject( pf ); - i->release(); - } - } -} - -void MainWindow::addPreferencesTab( TQWidget *tab, const TQString &title, TQObject *receiver, const char *init_slot, const char *accept_slot ) -{ - Tab t; - t.w = tab; - t.title = title; - t.receiver = receiver; - t.init_slot = init_slot; - t.accept_slot = accept_slot; - preferenceTabs << t; -} - -void MainWindow::addProjectTab( TQWidget *tab, const TQString &title, TQObject *receiver, const char *init_slot, const char *accept_slot ) -{ - Tab t; - t.w = tab; - t.title = title; - t.receiver = receiver; - t.init_slot = init_slot; - t.accept_slot = accept_slot; - projectTabs << t; -} - -void MainWindow::setModified( bool b, TQWidget *window ) -{ - TQWidget *w = window; - while ( w ) { - if ( ::tqqt_cast<FormWindow*>(w) ) { - ( (FormWindow*)w )->modificationChanged( b ); - return; - } else if ( ::tqqt_cast<SourceEditor*>(w) ) { - FormWindow *fw = ( (SourceEditor*)w )->formWindow(); - if ( fw && !fw->isFake() ) { - //fw->commandHistory()->setModified( b ); - //fw->modificationChanged( b ); - fw->formFile()->setModified( b, FormFile::WFormCode ); - wspace->update( fw->formFile() ); - } else { - wspace->update(); - } - return; - } - w = w->parentWidget( TRUE ); - } -} - -void MainWindow::editorClosed( SourceEditor *e ) -{ - sourceEditors.take( sourceEditors.findRef( e ) ); -} - -void MainWindow::functionsChanged() -{ - updateFunctionsTimer->start( 0, TRUE ); -} - -void MainWindow::doFunctionsChanged() -{ - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) - e->refresh( FALSE ); - hierarchyView->formDefinitionView()->refresh(); -} - -void MainWindow::updateFunctionList() -{ - if ( !qWorkspace()->activeWindow() || !::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) - return; - SourceEditor *se = (SourceEditor*)qWorkspace()->activeWindow(); - se->save(); - hierarchyView->formDefinitionView()->refresh(); - if ( !currentProject->isCpp() && se->formWindow() ) { - LanguageInterface *iface = MetaDataBase::languageInterface( currentProject->language() ); - if ( !iface ) - return; - TQValueList<LanguageInterface::Connection> conns; - iface->connections( se->text(), &conns ); - MetaDataBase::setupConnections( TQT_TQOBJECT(se->formWindow()), conns ); - propertyEditor->eventList()->setup(); - } -} - -void MainWindow::updateWorkspace() -{ - wspace->setCurrentProject( currentProject ); -} - -void MainWindow::showDebugStep( TQObject *o, int line ) -{ - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) - e->clearStep(); - if ( !o || line == -1 ) - return; - showSourceLine( o, line, Step ); -} - -void MainWindow::showStackFrame( TQObject *o, int line ) -{ - if ( !o || line == -1 ) - return; - showSourceLine( o, line, StackFrame ); -} - -void MainWindow::showErrorMessage( TQObject *o, int errorLine, const TQString &errorMessage ) -{ - if ( o ) { - errorLine--; // ###### - TQValueList<uint> l; - l << ( errorLine + 1 ); - TQStringList l2; - l2 << errorMessage; - TQObjectList ol; - ol.append( o ); - TQStringList ll; - ll << currentProject->locationOfObject( o ); - oWindow->setErrorMessages( l2, l, TRUE, ll, ol ); - showSourceLine( o, errorLine, Error ); - } -} - -void MainWindow::finishedRun() -{ - inDebugMode = FALSE; - previewing = FALSE; - debuggingForms.clear(); - enableAll( TRUE ); - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { - if ( e->project() == currentProject ) - e->editorInterface()->setMode( EditorInterface::Editing ); - e->clearStackFrame(); - } - outputWindow()->clearErrorMessages(); -} - -void MainWindow::enableAll( bool enable ) -{ - menuBar()->setEnabled( enable ); - TQObjectList *l = queryList( TQDOCKWINDOW_OBJECT_NAME_STRING ); - for ( TQObject *o = l->first(); o; o = l->next() ) { - if ( TQT_BASE_OBJECT(o) == wspace->parentWidget() || - TQT_BASE_OBJECT(o) == oWindow->parentWidget() || - TQT_BASE_OBJECT(o) == hierarchyView->parentWidget() ) - continue; - ( (TQWidget*)o )->setEnabled( enable ); - } - delete l; -} - -void MainWindow::showSourceLine( TQObject *o, int line, LineMode lm ) -{ - TQWidgetList windows = qworkspace->windowList(); - for ( TQWidget *w = windows.first(); w; w = windows.next() ) { - FormWindow *fw = 0; - SourceEditor *se = 0; - SourceFile *sf = 0; - if ( ::tqqt_cast<FormWindow*>(w) ) { - fw = (FormWindow*)w; - } else if ( ::tqqt_cast<SourceEditor*>(w) ) { - se = (SourceEditor*)w; - if ( !se->object() ) - continue; - if ( se->formWindow() ) - fw = se->formWindow(); - else - sf = se->sourceFile(); - } - - if ( fw ) { - if ( fw->project() != currentProject ) - continue; - if ( qstrcmp( fw->name(), o->name() ) == 0 || - fw->isFake() && currentProject->objectForFakeForm( fw ) == o ) { - if ( se ) { - switch ( lm ) { - case Error: - se->editorInterface()->setError( line ); - break; - case Step: - se->editorInterface()->setStep( line ); - break; - case StackFrame: - se->editorInterface()->setStackFrame( line ); - break; - } - return; - } else { - fw->showNormal(); - fw->setFocus(); - lastActiveFormWindow = fw; - tqApp->processEvents(); - se = editSource(); - if ( se ) { - switch ( lm ) { - case Error: - se->editorInterface()->setError( line ); - break; - case Step: - se->editorInterface()->setStep( line ); - break; - case StackFrame: - se->editorInterface()->setStackFrame( line ); - break; - } - return; - } - } - } - } else if ( se ) { - if ( o != sf ) - continue; - switch ( lm ) { - case Error: - se->editorInterface()->setError( line ); - break; - case Step: - se->editorInterface()->setStep( line ); - break; - case StackFrame: - se->editorInterface()->setStackFrame( line ); - break; - } - return; - } - } - - if ( ::tqqt_cast<SourceFile*>(o) ) { - for ( TQPtrListIterator<SourceFile> sources = currentProject->sourceFiles(); - sources.current(); ++sources ) { - SourceFile* f = sources.current(); - if ( f == o ) { - SourceEditor *se = editSource( f ); - if ( se ) { - switch ( lm ) { - case Error: - se->editorInterface()->setError( line ); - break; - case Step: - se->editorInterface()->setStep( line ); - break; - case StackFrame: - se->editorInterface()->setStackFrame( line ); - break; - } - } - return; - } - } - } - - FormFile *ff = currentProject->fakeFormFileFor( o ); - FormWindow *fw = 0; - if ( ff ) - fw = ff->formWindow(); - - if ( !fw && !qwf_forms ) { - tqWarning( "MainWindow::showSourceLine: qwf_forms is NULL!" ); - return; - } - - mblockNewForms = TRUE; - if ( !fw ) - openFormWindow( currentProject->makeAbsolute( *qwf_forms->find( (TQWidget*)o ) ) ); - else - fw->formFile()->showEditor( FALSE ); - tqApp->processEvents(); // give all views the chance to get the formwindow - SourceEditor *se = editSource(); - if ( se ) { - switch ( lm ) { - case Error: - se->editorInterface()->setError( line ); - break; - case Step: - se->editorInterface()->setStep( line ); - break; - case StackFrame: - se->editorInterface()->setStackFrame( line ); - break; - } - } - mblockNewForms = FALSE; -} - - -TQObject *MainWindow::findRealObject( TQObject *o ) -{ - TQWidgetList windows = qWorkspace()->windowList(); - for ( TQWidget *w = windows.first(); w; w = windows.next() ) { - if ( ::tqqt_cast<FormWindow*>(w) && TQString( w->name() ) == TQString( o->name() ) ) - return TQT_TQOBJECT(w); - else if ( ::tqqt_cast<SourceEditor*>(w) && ( (SourceEditor*)w )->formWindow() && - TQString( ( (SourceEditor*)w )->formWindow()->name() ) == TQString( o->name() ) ) - return TQT_TQOBJECT(w); - else if ( ::tqqt_cast<SourceFile*>(w) && ( (SourceEditor*)w )->sourceFile() && - ( (SourceEditor*)w )->sourceFile() == o ) - return o; - } - return 0; -} - -void MainWindow::formNameChanged( FormWindow *fw ) -{ - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { - if ( TQT_BASE_OBJECT(e->object()) == TQT_BASE_OBJECT(fw) ) - e->refresh( TRUE ); - if ( e->project() == fw->project() ) - e->resetContext(); - } -} - -void MainWindow::breakPointsChanged() -{ - if ( !inDebugMode ) - return; - if ( !qWorkspace()->activeWindow() || !::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) - return; - SourceEditor *e = (SourceEditor*)qWorkspace()->activeWindow(); - if ( !e->object() || !e->project() ) - return; - if ( e->project() != currentProject ) - return; - - if ( !interpreterPluginManager ) { - interpreterPluginManager = - new TQPluginManager<InterpreterInterface>( IID_Interpreter, - TQApplication::libraryPaths(), - "/qsa" ); - } - - InterpreterInterface *iiface = 0; - if ( interpreterPluginManager ) { - TQString lang = currentProject->language(); - iiface = 0; - interpreterPluginManager->queryInterface( lang, &iiface ); - if ( !iiface ) - return; - } - - e->saveBreakPoints(); - - for ( TQObject *o = debuggingForms.first(); o; o = debuggingForms.next() ) { - if ( qstrcmp( o->name(), e->object()->name() ) == 0 ) { - iiface->setBreakPoints( o, MetaDataBase::breakPoints( e->object() ) ); - break; - } - } - - for ( e = sourceEditors.first(); e; e = sourceEditors.next() ) { - if ( e->project() == currentProject && e->sourceFile() ) { - TQValueList<uint> bps = MetaDataBase::breakPoints( e->sourceFile() ); - iiface->setBreakPoints( e->object(), bps ); - } - } - - iiface->release(); -} - -int MainWindow::currentLayoutDefaultSpacing() const -{ - if ( ( (MainWindow*)this )->formWindow() ) - return ( (MainWindow*)this )->formWindow()->layoutDefaultSpacing(); - return BOXLAYOUT_DEFAULT_SPACING; -} - -int MainWindow::currentLayoutDefaultMargin() const -{ - if ( ( (MainWindow*)this )->formWindow() ) - return ( (MainWindow*)this )->formWindow()->layoutDefaultMargin(); - return BOXLAYOUT_DEFAULT_MARGIN; -} - -void MainWindow::saveAllBreakPoints() -{ - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { - e->save(); - e->saveBreakPoints(); - } -} - -void MainWindow::resetBreakPoints() -{ - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) - e->resetBreakPoints(); -} - -SourceFile *MainWindow::sourceFile() -{ - for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { - if ( qworkspace->activeWindow() == e ) { - if ( e->sourceFile() ) - return e->sourceFile(); - } - } - return 0; -} - -bool MainWindow::openProjectSettings( Project *pro ) -{ - ProjectSettings dia( pro, this, 0, TRUE ); - SenderObject *senderObject = new SenderObject( designerInterface() ); - TQValueList<Tab>::ConstIterator it; - for ( it = projectTabs.begin(); it != projectTabs.end(); ++it ) { - Tab t = *it; - if ( t.title != pro->language() ) - continue; - dia.tabWidget->addTab( t.w, t.title ); - if ( t.receiver ) { - connect( dia.buttonOk, TQT_SIGNAL( clicked() ), senderObject, TQT_SLOT( emitAcceptSignal() ) ); - connect( senderObject, TQT_SIGNAL( acceptSignal( TQUnknownInterface * ) ), t.receiver, t.accept_slot ); - connect( senderObject, TQT_SIGNAL( initSignal( TQUnknownInterface * ) ), t.receiver, t.init_slot ); - senderObject->emitInitSignal(); - disconnect( senderObject, TQT_SIGNAL( initSignal( TQUnknownInterface * ) ), t.receiver, t.init_slot ); - } - } - - if ( singleProject ) - dia.tabWidget->setTabEnabled( dia.tabSettings, FALSE ); - - int res = dia.exec(); - - delete senderObject; - - for ( it = projectTabs.begin(); it != projectTabs.end(); ++it ) { - Tab t = *it; - dia.tabWidget->removePage( t.w ); - t.w->reparent( 0, TQPoint(0,0), FALSE ); - } - - return res == TQDialog::Accepted; -} - -void MainWindow::popupProjectMenu( const TQPoint &pos ) -{ - projectMenu->exec( pos ); -} - -TQStringList MainWindow::sourceTemplates() const -{ - return sourceTemplatePluginManager->featureList(); -} - -SourceTemplateInterface* MainWindow::sourceTemplateInterface( const TQString& templ ) -{ - SourceTemplateInterface *iface = 0; - sourceTemplatePluginManager->queryInterface( templ, &iface); - return iface; -} - -TQString MainWindow::whatsThisFrom( const TQString &key ) -{ - if ( menuHelpFile.isEmpty() ) { - TQString fn( documentationPath() ); - fn += "/designer-manual-11.html"; - TQFile f( fn ); - if ( f.open( IO_ReadOnly ) ) { - TQTextStream ts( &f ); - menuHelpFile = ts.read(); - } - } - - int i = menuHelpFile.find( key ); - if ( i == -1 ) - return TQString(); - int start = i; - int end = i; - start = menuHelpFile.findRev( "<li>", i ) + 4; - end = menuHelpFile.find( '\n', i ) - 1; - return menuHelpFile.mid( start, end - start + 1 ); -} - -void MainWindow::setSingleProject( Project *pro ) -{ - if ( eProject ) { - Project *pro = eProject; - pro->save(); - TQWidgetList windows = qWorkspace()->windowList(); - qWorkspace()->blockSignals( TRUE ); - TQWidgetListIt wit( windows ); - while ( wit.current() ) { - TQWidget *w = wit.current(); - ++wit; - if ( ::tqqt_cast<FormWindow*>(w) ) { - if ( ( (FormWindow*)w )->project() == pro ) { - if ( ( (FormWindow*)w )->formFile()->editor() ) - windows.removeRef( ( (FormWindow*)w )->formFile()->editor() ); - ( (FormWindow*)w )->formFile()->close(); - } - } else if ( ::tqqt_cast<SourceEditor*>(w) ) { - ( (SourceEditor*)w )->close(); - } - } - hierarchyView->clear(); - windows = qWorkspace()->windowList(); - qWorkspace()->blockSignals( FALSE ); - currentProject = 0; - updateUndoRedo( FALSE, FALSE, TQString(), TQString() ); - } - - singleProject = TRUE; - projects.clear(); - TQAction *a = new TQAction( i18n( pro->name() ), i18n( pro->name() ), 0, - actionGroupProjects, 0, TRUE ); - eProject = pro; - projects.insert( a, eProject ); - a->setOn( TRUE ); - actionGroupProjects->removeFrom( projectMenu ); - actionGroupProjects->removeFrom( projectToolBar ); - currentProject = eProject; - currentProject->designerCreated(); -} - -void MainWindow::shuttingDown() -{ - outputWindow()->shuttingDown(); -} - -void MainWindow::showGUIStuff( bool b ) -{ - if ( (bool)guiStuffVisible == b ) - return; - guiStuffVisible = b; - if ( !b ) { - setAppropriate( (TQDockWindow*)toolBox->parentWidget(), FALSE ); - toolBox->parentWidget()->hide(); - for ( TQToolBar *tb = widgetToolBars.first(); tb; tb = widgetToolBars.next() ) { - tb->hide(); - setAppropriate( tb, FALSE ); - } - propertyEditor->setPropertyEditorEnabled( FALSE ); - setAppropriate( layoutToolBar, FALSE ); - layoutToolBar->hide(); - setAppropriate( toolsToolBar, FALSE ); - toolsToolBar->hide(); - menubar->removeItem( toolsMenuId ); - menubar->removeItem( toolsMenuId + 1 ); - menubar->removeItem( toolsMenuId + 2 ); - disconnect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditAccels, TQT_SLOT( setEnabled(bool) ) ); - disconnect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditFunctions, TQT_SLOT( setEnabled(bool) ) ); - disconnect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditConnections, TQT_SLOT( setEnabled(bool) ) ); - disconnect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditSource, TQT_SLOT( setEnabled(bool) ) ); - disconnect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditFormSettings, TQT_SLOT( setEnabled(bool) ) ); - actionEditFormSettings->setEnabled( FALSE ); - actionEditSource->setEnabled( FALSE ); - actionEditConnections->setEnabled( FALSE ); - actionEditFunctions->setEnabled( FALSE ); - actionEditAccels->setEnabled( FALSE ); - ( (TQDockWindow*)propertyEditor->parentWidget() )-> - setCaption( i18n( "Signal Handlers" ) ); - actionGroupNew->removeFrom( fileMenu ); - actionGroupNew->removeFrom( projectToolBar ); - actionFileSave->removeFrom( fileMenu ); - actionFileSave->removeFrom( projectToolBar ); - actionFileExit->removeFrom( fileMenu ); - actionNewFile->addTo( fileMenu ); - actionNewFile->addTo( projectToolBar ); - actionFileSave->addTo( fileMenu ); - actionFileSave->addTo( projectToolBar ); - actionFileExit->addTo( fileMenu ); - } else { - setAppropriate( (TQDockWindow*)toolBox->parentWidget(), TRUE ); - toolBox->parentWidget()->show(); - for ( TQToolBar *tb = widgetToolBars.first(); tb; tb = widgetToolBars.next() ) { - setAppropriate( tb, TRUE ); - tb->hide(); - } - propertyEditor->setPropertyEditorEnabled( TRUE ); - setAppropriate( layoutToolBar, TRUE ); - layoutToolBar->show(); - setAppropriate( toolsToolBar, TRUE ); - toolsToolBar->show(); - menubar->insertItem( i18n( "&Tools" ), toolsMenu, toolsMenuId, toolsMenuIndex ); - menubar->insertItem( i18n( "&Layout" ), layoutMenu, toolsMenuId + 1, toolsMenuIndex + 1 ); - menubar->insertItem( i18n( "&Preview" ), previewMenu, toolsMenuId + 2, toolsMenuIndex + 2 ); - connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditAccels, TQT_SLOT( setEnabled(bool) ) ); - connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditFunctions, TQT_SLOT( setEnabled(bool) ) ); - connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditConnections, TQT_SLOT( setEnabled(bool) ) ); - connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditSource, TQT_SLOT( setEnabled(bool) ) ); - connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditFormSettings, TQT_SLOT( setEnabled(bool) ) ); - actionEditFormSettings->setEnabled( TRUE ); - actionEditSource->setEnabled( TRUE ); - actionEditConnections->setEnabled( TRUE ); - actionEditFunctions->setEnabled( TRUE ); - actionEditAccels->setEnabled( TRUE ); - ( (TQDockWindow*)propertyEditor->parentWidget() )-> - setCaption( i18n( "Property Editor/Signal Handlers" ) ); - actionFileSave->removeFrom( fileMenu ); - actionFileSave->removeFrom( projectToolBar ); - actionFileExit->removeFrom( fileMenu ); - actionGroupNew->addTo( fileMenu ); - actionGroupNew->addTo( projectToolBar ); - actionFileSave->addTo( fileMenu ); - actionFileSave->addTo( projectToolBar ); - actionFileExit->addTo( fileMenu ); - } -} - -void MainWindow::setEditorsReadOnly( bool b ) -{ - editorsReadOnly = b; -} - -void MainWindow::setPluginDirectory( const TQString &pd ) -{ - pluginDir = pd; - if ( !qwf_plugin_dir ) - qwf_plugin_dir = new TQString( pd ); - else - *qwf_plugin_dir = pd; -} - -void MainWindow::toggleSignalHandlers( bool show ) -{ - if ( sSignalHandlers == show ) - return; - sSignalHandlers = show; - propertyEditor->setSignalHandlersEnabled( show ); -} - -void MainWindow::statusMessage( const TQString &msg ) -{ - m_part->statusMessage(msg); -} |