diff options
| author | Darrell Anderson <humanreadable@yahoo.com> | 2014-03-02 20:05:33 +0100 | 
|---|---|---|
| committer | Slávek Banko <slavek.banko@axis.cz> | 2014-03-02 20:05:33 +0100 | 
| commit | 722ce1efbac31c61b1d4b13f7e075c9f311e3e73 (patch) | |
| tree | db1b6b28566e5fe9accb4a688f7257673cecb080 /tdevdesigner/designer/mainwindowactions.cpp | |
| parent | afb74575caf7dd8ccb6c235b1c8d788e320c19da (diff) | |
| download | tdevelop-722ce1efbac31c61b1d4b13f7e075c9f311e3e73.tar.gz tdevelop-722ce1efbac31c61b1d4b13f7e075c9f311e3e73.zip | |
Finish renaming tdevelop components
Diffstat (limited to 'tdevdesigner/designer/mainwindowactions.cpp')
| -rw-r--r-- | tdevdesigner/designer/mainwindowactions.cpp | 2067 | 
1 files changed, 2067 insertions, 0 deletions
| diff --git a/tdevdesigner/designer/mainwindowactions.cpp b/tdevdesigner/designer/mainwindowactions.cpp new file mode 100644 index 00000000..b9d0b1b6 --- /dev/null +++ b/tdevdesigner/designer/mainwindowactions.cpp @@ -0,0 +1,2067 @@ +/********************************************************************** +** Copyright (C) 2000-2001 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 "mainwindow.h" + +#include <kiconloader.h> +#include <tdefiledialog.h> +#include <tdelocale.h> +#include <klineedit.h> + +#include <stdlib.h> +#include <tqaction.h> +#include <tqwhatsthis.h> +#include <tqpopupmenu.h> +#include <tqmenubar.h> +#include <tqtooltip.h> +#include <tqapplication.h> +#include <tqsignalmapper.h> +#include <tqstylefactory.h> +#include <tqworkspace.h> +#include <tqmessagebox.h> +#include <tqstatusbar.h> +#include <tqlistbox.h> +#include <tqclipboard.h> +#include <tqcombobox.h> +#include <tqspinbox.h> +#include <tqinputdialog.h> +#include <tqdatetimeedit.h> +#include <tqtextedit.h> + +#include "defs.h" +#include "project.h" +#include "widgetdatabase.h" +#include "widgetfactory.h" +#include "preferences.h" +#include "formwindow.h" +#include "newformimpl.h" +#include "resource.h" +#include "projectsettingsimpl.h" +#include "workspace.h" +#include "createtemplate.h" +#include "hierarchyview.h" +#include "editfunctionsimpl.h" +#include "finddialog.h" +#include "replacedialog.h" +#include "gotolinedialog.h" +#include "formsettingsimpl.h" +#include "pixmapcollectioneditor.h" +#include "styledbutton.h" +#include "customwidgeteditorimpl.h" +#ifndef TQT_NO_SQL +#include "dbconnectionsimpl.h" +#include "dbconnectionimpl.h" +#endif +#include "widgetaction.h" +#include <tqtoolbox.h> +#include "startdialogimpl.h" +#include "designerappiface.h" +#include "connectiondialog.h" +#include "configtoolboxdialog.h" +#include "designeraction.h" + +#include "tdevdesigner_part.h" + +static const char * whatsthis_image[] = { +    "16 16 3 1", +    "	c None", +    "o	c #000000", +    "a	c #000080", +    "o        aaaaa  ", +    "oo      aaa aaa ", +    "ooo    aaa   aaa", +    "oooo   aa     aa", +    "ooooo  aa     aa", +    "oooooo  a    aaa", +    "ooooooo     aaa ", +    "oooooooo   aaa  ", +    "ooooooooo aaa   ", +    "ooooo     aaa   ", +    "oo ooo          ", +    "o  ooo    aaa   ", +    "    ooo   aaa   ", +    "    ooo         ", +    "     ooo        ", +    "     ooo        "}; + +const TQString toolbarHelp = "<p>Toolbars contain a number of buttons to " +"provide quick access to often used functions.%1" +"<br>Click on the toolbar handle to hide the toolbar, " +"or drag and place the toolbar to a different location.</p>"; + +static TQIconSet createIconSet( const TQString &name ) +{ +    TQIconSet ic( BarIcon( "" + name, TDevDesignerPartFactory::instance() ) ); +    TQString prefix = "designer_"; +    int right = name.length() - prefix.length(); +    ic.setPixmap( BarIcon( prefix + "d_" + name.right( right ), TDevDesignerPartFactory::instance() ), +		  TQIconSet::Small, TQIconSet::Disabled ); +    return ic; +} + +void MainWindow::setupEditActions() +{ +    actionEditUndo = new DesignerAction( i18n("Undo"), createIconSet( "designer_undo.png" ),i18n("&Undo: Not Available"), CTRL + Key_Z, TQT_TQOBJECT(this), 0 ); +    actionEditUndo->setStatusTip( i18n( "Undoes the last action" ) ); +    actionEditUndo->setWhatsThis( whatsThisFrom( "Edit|Undo" ) ); +    connect( actionEditUndo, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editUndo() ) ); +    actionEditUndo->setEnabled( FALSE ); + +    actionEditRedo = new DesignerAction( i18n( "Redo" ), createIconSet("designer_redo.png"), i18n( "&Redo: Not Available" ), CTRL + Key_Y, TQT_TQOBJECT(this), 0 ); +    actionEditRedo->setStatusTip( i18n( "Redoes the last undone operation") ); +    actionEditRedo->setWhatsThis( whatsThisFrom( "Edit|Redo" ) ); +    connect( actionEditRedo, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editRedo() ) ); +    actionEditRedo->setEnabled( FALSE ); + +    actionEditCut = new DesignerAction( i18n( "Cut" ), createIconSet("designer_editcut.png"), i18n( "Cu&t" ), CTRL + Key_X, TQT_TQOBJECT(this), 0 ); +    actionEditCut->setStatusTip( i18n( "Cuts the selected widgets and puts them on the clipboard" ) ); +    actionEditCut->setWhatsThis(  whatsThisFrom( "Edit|Cut" ) ); +    connect( actionEditCut, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editCut() ) ); +    actionEditCut->setEnabled( FALSE ); + +    actionEditCopy = new DesignerAction( i18n( "Copy" ), createIconSet("designer_editcopy.png"), i18n( "&Copy" ), CTRL + Key_C, TQT_TQOBJECT(this), 0 ); +    actionEditCopy->setStatusTip( i18n( "Copies the selected widgets to the clipboard" ) ); +    actionEditCopy->setWhatsThis(  whatsThisFrom( "Edit|Copy" ) ); +    connect( actionEditCopy, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editCopy() ) ); +    actionEditCopy->setEnabled( FALSE ); + +    actionEditPaste = new DesignerAction( i18n( "Paste" ), createIconSet("designer_editpaste.png"), i18n( "&Paste" ), CTRL + Key_V, TQT_TQOBJECT(this), 0 ); +    actionEditPaste->setStatusTip( i18n( "Pastes the clipboard's contents" ) ); +    actionEditPaste->setWhatsThis( whatsThisFrom( "Edit|Paste" ) ); +    connect( actionEditPaste, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editPaste() ) ); +    actionEditPaste->setEnabled( FALSE ); + +    actionEditDelete = new DesignerAction( i18n( "Delete" ), TQPixmap(), i18n( "&Delete" ), Key_Delete, TQT_TQOBJECT(this), 0 ); +    actionEditDelete->setStatusTip( i18n( "Deletes the selected widgets" ) ); +    actionEditDelete->setWhatsThis( whatsThisFrom( "Edit|Delete" ) ); +    connect( actionEditDelete, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editDelete() ) ); +    actionEditDelete->setEnabled( FALSE ); +#ifdef TQ_WS_MAC +    TQAction *macDelete = new DesignerAction( i18n( "Delete" ), TQPixmap(), i18n( "&Delete" ), Key_Backspace, TQT_TQOBJECT(this), 0 ); +    connect( macDelete, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editDelete() ) ); +#endif + +    actionEditSelectAll = new DesignerAction( i18n( "Select All" ), TQPixmap(), i18n( "Select &All" ), CTRL + Key_A, TQT_TQOBJECT(this), 0 ); +    actionEditSelectAll->setStatusTip( i18n( "Selects all widgets" ) ); +    actionEditSelectAll->setWhatsThis( whatsThisFrom( "Edit|Select All" ) ); +    connect( actionEditSelectAll, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editSelectAll() ) ); +    actionEditSelectAll->setEnabled( TRUE ); + +    actionEditRaise = new DesignerAction( i18n( "Bring to Front" ), createIconSet("designer_editraise.png"), i18n( "Bring to &Front" ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditRaise->setStatusTip( i18n( "Raises the selected widgets" ) ); +    actionEditRaise->setWhatsThis( i18n( "Raises the selected widgets" ) ); +    connect( actionEditRaise, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editRaise() ) ); +    actionEditRaise->setEnabled( FALSE ); + +    actionEditLower = new DesignerAction( i18n( "Send to Back" ), createIconSet("designer_editlower.png"), i18n( "Send to &Back" ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditLower->setStatusTip( i18n( "Lowers the selected widgets" ) ); +    actionEditLower->setWhatsThis( i18n( "Lowers the selected widgets" ) ); +    connect( actionEditLower, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editLower() ) ); +    actionEditLower->setEnabled( FALSE ); + +    actionEditAccels = new DesignerAction( i18n( "Check Accelerators" ), TQPixmap(), +				    i18n( "Chec&k Accelerators" ), ALT + Key_R, TQT_TQOBJECT(this), 0 ); +    actionEditAccels->setStatusTip( i18n("Checks if the accelerators used in the form are unique") ); +    actionEditAccels->setWhatsThis( whatsThisFrom( "Edit|Check Accelerator" ) ); +    connect( actionEditAccels, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editAccels() ) ); +    connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditAccels, TQT_SLOT( setEnabled(bool) ) ); + +    actionEditFunctions = new DesignerAction( i18n( "Slots" ), createIconSet("designer_editslots.png"), +				   i18n( "S&lots..." ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditFunctions->setStatusTip( i18n("Opens a dialog for editing slots") ); +    actionEditFunctions->setWhatsThis( whatsThisFrom( "Edit|Slots" ) ); +    connect( actionEditFunctions, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editFunctions() ) ); +    connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditFunctions, TQT_SLOT( setEnabled(bool) ) ); + +    actionEditConnections = new DesignerAction( i18n( "Connections" ), createIconSet("designer_connecttool.png"), +					 i18n( "Co&nnections..." ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditConnections->setStatusTip( i18n("Opens a dialog for editing connections") ); +    actionEditConnections->setWhatsThis( whatsThisFrom( "Edit|Connections" ) ); +    connect( actionEditConnections, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editConnections() ) ); +    connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditConnections, TQT_SLOT( setEnabled(bool) ) ); + +    actionEditSource = new DesignerAction( i18n( "Source" ), TQIconSet(), +					 i18n( "&Source..." ), CTRL + Key_E, TQT_TQOBJECT(this), 0 ); +    actionEditSource->setStatusTip( i18n("Opens an editor to edit the form's source code") ); +    actionEditSource->setWhatsThis( whatsThisFrom( "Edit|Source" ) ); +    connect( actionEditSource, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editSource() ) ); +    connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditSource, TQT_SLOT( setEnabled(bool) ) ); + +    actionEditFormSettings = new DesignerAction( i18n( "Form Settings" ), TQPixmap(), +					  i18n( "&Form Settings..." ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditFormSettings->setStatusTip( i18n("Opens a dialog to change the form's settings") ); +    actionEditFormSettings->setWhatsThis( whatsThisFrom( "Edit|Form Settings" ) ); +    connect( actionEditFormSettings, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editFormSettings() ) ); +    connect( this, TQT_SIGNAL( hasActiveForm(bool) ), actionEditFormSettings, TQT_SLOT( setEnabled(bool) ) ); + +    actionEditPreferences = new DesignerAction( i18n( "Preferences" ), TQPixmap(), +					 i18n( "Preferences..." ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditPreferences->setStatusTip( i18n("Opens a dialog to change preferences") ); +    actionEditPreferences->setWhatsThis( whatsThisFrom( "Edit|Preferences" ) ); +    connect( actionEditPreferences, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editPreferences() ) ); + +/*    TQToolBar *tb = new TQToolBar( this, "Edit" ); +    tb->setCloseMode( TQDockWindow::Undocked ); +    TQWhatsThis::add( tb, i18n( "<b>The Edit toolbar</b>%1").arg(i18n(toolbarHelp).arg("")) ); +    addToolBar( tb, i18n( "Edit" ) ); +    actionEditUndo->addTo( tb ); +    actionEditRedo->addTo( tb ); +    tb->addSeparator(); +    actionEditCut->addTo( tb ); +    actionEditCopy->addTo( tb ); +    actionEditPaste->addTo( tb );*/ +#if 0 +    tb->addSeparator(); +    actionEditLower->addTo( tb ); +    actionEditRaise->addTo( tb ); +#endif + +    TQPopupMenu *menu = new TQPopupMenu( this, "Edit" ); +    connect( menu, TQT_SIGNAL( aboutToShow() ), TQT_TQOBJECT(this), TQT_SLOT( updateEditorUndoRedo() ) ); +    menubar->insertItem( i18n( "&Edit" ), menu ); +    actionEditUndo->addTo( menu ); +    actionEditRedo->addTo( menu ); +    menu->insertSeparator(); +    actionEditCut->addTo( menu ); +    actionEditCopy->addTo( menu ); +    actionEditPaste->addTo( menu ); +    actionEditDelete->addTo( menu ); +    actionEditSelectAll->addTo( menu ); +    actionEditAccels->addTo( menu ); +#if 0 +    menu->insertSeparator(); +    actionEditLower->addTo( menu ); +    actionEditRaise->addTo( menu ); +#endif +    menu->insertSeparator(); +    if ( !singleProjectMode() ) { +	actionEditFunctions->addTo( menu ); +	actionEditConnections->addTo( menu ); +    } +    actionEditFormSettings->addTo( menu ); +    menu->insertSeparator(); +    actionEditPreferences->addTo( menu ); +} + +void MainWindow::setupSearchActions() +{ +    actionSearchFind = new DesignerAction( i18n( "Find" ), createIconSet( "designer_searchfind.png" ), +				    i18n( "&Find..." ), CTRL + Key_F, TQT_TQOBJECT(this), 0 ); +    connect( actionSearchFind, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( searchFind() ) ); +    actionSearchFind->setEnabled( FALSE ); +    actionSearchFind->setWhatsThis( whatsThisFrom( "Search|Find" ) ); + +    actionSearchIncremetal = new DesignerAction( i18n( "Find Incremental" ), TQIconSet(), +					  i18n( "Find &Incremental" ), ALT + Key_I, TQT_TQOBJECT(this), 0 ); +    connect( actionSearchIncremetal, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( searchIncremetalFindMenu() ) ); +    actionSearchIncremetal->setEnabled( FALSE ); +    actionSearchIncremetal->setWhatsThis( whatsThisFrom( "Search|Find Incremental" ) ); + +    actionSearchReplace = new DesignerAction( i18n( "Replace" ), TQIconSet(), +				    i18n( "&Replace..." ), CTRL + Key_R, TQT_TQOBJECT(this), 0 ); +    connect( actionSearchReplace, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( searchReplace() ) ); +    actionSearchReplace->setEnabled( FALSE ); +    actionSearchReplace->setWhatsThis( whatsThisFrom( "Search|Replace" ) ); + +    actionSearchGotoLine = new DesignerAction( i18n( "Goto Line" ), TQIconSet(), +				    i18n( "&Goto Line..." ), ALT + Key_G, TQT_TQOBJECT(this), 0 ); +    connect( actionSearchGotoLine, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( searchGotoLine() ) ); +    actionSearchGotoLine->setEnabled( FALSE ); +    actionSearchGotoLine->setWhatsThis( whatsThisFrom( "Search|Goto line" ) ); + +/*    TQToolBar *tb = new TQToolBar( this, "Search" ); +    tb->setCloseMode( TQDockWindow::Undocked ); +    addToolBar( tb, i18n( "Search" ) ); + +    actionSearchFind->addTo( tb );*/ +    incrementalSearch = new TQLineEdit( 0 ); +    incrementalSearch->hide(); +    TQToolTip::add( incrementalSearch, i18n( "Incremental search (Alt+I)" ) ); +    connect( incrementalSearch, TQT_SIGNAL( textChanged( const TQString & ) ), +	     this, TQT_SLOT( searchIncremetalFind() ) ); +    connect( incrementalSearch, TQT_SIGNAL( returnPressed() ), +	     this, TQT_SLOT( searchIncremetalFindNext() ) ); +    incrementalSearch->setEnabled( FALSE ); + +    TQPopupMenu *menu = new TQPopupMenu( this, "Search" ); +    menubar->insertItem( i18n( "&Search" ), menu ); +    actionSearchFind->addTo( menu ); +    actionSearchIncremetal->addTo( menu ); +    actionSearchReplace->addTo( menu ); +    menu->insertSeparator(); +    actionSearchGotoLine->addTo( menu ); +} + +void MainWindow::setupLayoutActions() +{ +    if ( !actionGroupTools ) { +	actionGroupTools = new TQActionGroup( this ); +	actionGroupTools->setExclusive( TRUE ); +	connect( actionGroupTools, TQT_SIGNAL( selected(TQAction*) ), TQT_TQOBJECT(this), TQT_SLOT( toolSelected(TQAction*) ) ); +    } + +    actionEditAdjustSize = new DesignerAction( i18n( "Adjust Size" ), createIconSet("designer_adjustsize.png"), +					i18n( "Adjust &Size" ), CTRL + Key_J, TQT_TQOBJECT(this), 0 ); +    actionEditAdjustSize->setStatusTip(i18n("Adjusts the size of the selected widget") ); +    actionEditAdjustSize->setWhatsThis( whatsThisFrom( "Layout|Adjust Size" ) ); +    connect( actionEditAdjustSize, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editAdjustSize() ) ); +    actionEditAdjustSize->setEnabled( FALSE ); + +    actionEditHLayout = new DesignerAction( i18n( "Lay OutQt::Horizontally" ), createIconSet("designer_edithlayout.png"), +				     i18n( "Lay Out &Horizontally" ), CTRL + Key_H, TQT_TQOBJECT(this), 0 ); +    actionEditHLayout->setStatusTip(i18n("Lays out the selected widgets horizontally") ); +    actionEditHLayout->setWhatsThis( whatsThisFrom( "Layout|Lay OutQt::Horizontally" ) ); +    connect( actionEditHLayout, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editLayoutHorizontal() ) ); +    actionEditHLayout->setEnabled( FALSE ); + +    actionEditVLayout = new DesignerAction( i18n( "Lay OutQt::Vertically" ), createIconSet("designer_editvlayout.png"), +				     i18n( "Lay Out &Vertically" ), CTRL + Key_L, TQT_TQOBJECT(this), 0 ); +    actionEditVLayout->setStatusTip(i18n("Lays out the selected widgets vertically") ); +    actionEditVLayout->setWhatsThis(  whatsThisFrom( "Layout|Lay OutQt::Vertically" ) ); +    connect( actionEditVLayout, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editLayoutVertical() ) ); +    actionEditVLayout->setEnabled( FALSE ); + +    actionEditGridLayout = new DesignerAction( i18n( "Lay Out in a Grid" ), createIconSet("designer_editgrid.png"), +					i18n( "Lay Out in a &Grid" ), CTRL + Key_G, TQT_TQOBJECT(this), 0 ); +    actionEditGridLayout->setStatusTip(i18n("Lays out the selected widgets in a grid") ); +    actionEditGridLayout->setWhatsThis( whatsThisFrom( "Layout|Lay Out in a Grid" ) ); +    connect( actionEditGridLayout, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editLayoutGrid() ) ); +    actionEditGridLayout->setEnabled( FALSE ); + +    actionEditSplitHorizontal = new DesignerAction( i18n( "Lay OutQt::Horizontally (in Splitter)" ), createIconSet("designer_editvlayoutsplit.png"), +					     i18n( "Lay OutQt::Horizontally (in S&plitter)" ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditSplitHorizontal->setStatusTip(i18n("Lays out the selected widgets horizontally in a splitter") ); +    actionEditSplitHorizontal->setWhatsThis( whatsThisFrom( "Layout|Lay OutQt::Horizontally (in Splitter)" ) ); +    connect( actionEditSplitHorizontal, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editLayoutHorizontalSplit() ) ); +    actionEditSplitHorizontal->setEnabled( FALSE ); + +    actionEditSplitVertical = new DesignerAction( i18n( "Lay OutQt::Vertically (in Splitter)" ), createIconSet("designer_edithlayoutsplit.png"), +					     i18n( "Lay OutQt::Vertically (in Sp&litter)" ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditSplitVertical->setStatusTip(i18n("Lays out the selected widgets vertically in a splitter") ); +    actionEditSplitVertical->setWhatsThis( whatsThisFrom( "Layout|Lay OutQt::Vertically (in Splitter)" ) ); +    connect( actionEditSplitVertical, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editLayoutVerticalSplit() ) ); +    actionEditSplitVertical->setEnabled( FALSE ); + +    actionEditBreakLayout = new DesignerAction( i18n( "Break Layout" ), createIconSet("designer_editbreaklayout.png"), +					 i18n( "&Break Layout" ), CTRL + Key_B, TQT_TQOBJECT(this), 0 ); +    actionEditBreakLayout->setStatusTip(i18n("Breaks the selected layout") ); +    actionEditBreakLayout->setWhatsThis( whatsThisFrom( "Layout|Break Layout" ) ); +    connect( actionEditBreakLayout, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editBreakLayout() ) ); +    actionEditBreakLayout->setEnabled( FALSE ); + +    int id = WidgetDatabase::idFromClassName( "Spacer" ); +    actionInsertSpacer = new WidgetAction( i18n( "Layout" ), actionGroupTools, TQString::number( id ).latin1() ); +    actionInsertSpacer->setToggleAction( TRUE ); +    actionInsertSpacer->setText( WidgetDatabase::className( id ) ); +    actionInsertSpacer->setMenuText( i18n( "Add %1").arg( WidgetDatabase::className( id ) ) ); +    actionInsertSpacer->setIconSet( WidgetDatabase::iconSet( id ) ); +    actionInsertSpacer->setToolTip( WidgetDatabase::toolTip( id ) ); +    actionInsertSpacer->setStatusTip( i18n( "Insert a %1").arg(WidgetDatabase::toolTip( id )) ); +    actionInsertSpacer->setWhatsThis( i18n("<b>A %1</b><p>%2</p>" +			     "<p>Click to insert a single %3," +			     "or double click to keep the tool selected.") +	.arg(WidgetDatabase::toolTip( id )) +	.arg(WidgetDatabase::whatsThis( id )) +	.arg(WidgetDatabase::toolTip( id ) )); + +    actionInsertSpacer->addTo( commonWidgetsToolBar ); +    commonWidgetsPage.append( actionInsertSpacer ); +    TQWidget *w; +    commonWidgetsToolBar->setStretchableWidget( ( w = new TQWidget( commonWidgetsToolBar ) ) ); +    w->setBackgroundMode( commonWidgetsToolBar->backgroundMode() ); +    TQWhatsThis::add( layoutToolBar, i18n( "<b>The Layout toolbar</b>%1" ).arg(i18n(toolbarHelp).arg("")) ); +    actionEditAdjustSize->addTo( layoutToolBar ); +    layoutToolBar->addSeparator(); +    actionEditHLayout->addTo( layoutToolBar ); +    actionEditVLayout->addTo( layoutToolBar ); +    actionEditGridLayout->addTo( layoutToolBar ); +    actionEditSplitHorizontal->addTo( layoutToolBar ); +    actionEditSplitVertical->addTo( layoutToolBar ); +    actionEditBreakLayout->addTo( layoutToolBar ); +    layoutToolBar->addSeparator(); +    actionInsertSpacer->addTo( layoutToolBar ); + +    TQPopupMenu *menu = new TQPopupMenu( this, "Layout" ); +    layoutMenu = menu; +    menubar->insertItem( i18n( "&Layout" ), menu, toolsMenuId + 1 ); +    actionEditAdjustSize->addTo( menu ); +    menu->insertSeparator(); +    actionEditHLayout->addTo( menu ); +    actionEditVLayout->addTo( menu ); +    actionEditGridLayout->addTo( menu ); +    actionEditSplitHorizontal->addTo( menu ); +    actionEditSplitVertical->addTo( menu ); +    actionEditBreakLayout->addTo( menu ); +    menu->insertSeparator(); +    actionInsertSpacer->addTo( menu ); +} + +void MainWindow::setupToolActions() +{ +    if ( !actionGroupTools ) { +	actionGroupTools = new TQActionGroup( this ); +	actionGroupTools->setExclusive( TRUE ); +	connect( actionGroupTools, TQT_SIGNAL( selected(TQAction*) ), +		 this, TQT_SLOT( toolSelected(TQAction*) ) ); +    } + +    actionPointerTool = new DesignerAction( i18n("Pointer"), createIconSet("designer_pointer.png"), +				     i18n("&Pointer"),  Key_F2, +				     actionGroupTools, +				     TQString::number(POINTER_TOOL).latin1(), TRUE ); +    actionPointerTool->setStatusTip( i18n("Selects the pointer tool") ); +    actionPointerTool->setWhatsThis( whatsThisFrom( "Tools|Pointer" ) ); + +    actionConnectTool = new DesignerAction( i18n("Connect Signal/Slots"), +				     createIconSet("designer_connecttool.png"), +				     i18n("&Connect Signal/Slots"), +				     singleProjectMode() ? 0 : Key_F3, +				     actionGroupTools, +				     TQString::number(CONNECT_TOOL).latin1(), TRUE ); +    actionConnectTool->setStatusTip( i18n("Selects the connection tool") ); +    actionConnectTool->setWhatsThis( whatsThisFrom( "Tools|Connect Signals and Slots" ) ); + +    actionOrderTool = new DesignerAction( i18n("Tab Order"), createIconSet("designer_ordertool.png"), +				   i18n("Tab &Order"),  Key_F4, +				   actionGroupTools, +				   TQString::number(ORDER_TOOL).latin1(), TRUE ); +    actionOrderTool->setStatusTip( i18n("Selects the tab order tool") ); +    actionOrderTool->setWhatsThis( whatsThisFrom( "Tools|Tab Order" ) ); + +    actionBuddyTool = new DesignerAction( i18n( "Set Buddy" ), createIconSet( "designer_setbuddy.png" ), +				   i18n( "Set &Buddy" ), Key_F12, +				   actionGroupTools, TQString::number( BUDDY_TOOL ).latin1(), +				   TRUE ); +    actionBuddyTool->setStatusTip( i18n( "Sets a buddy to a label" ) ); +    actionBuddyTool->setWhatsThis( whatsThisFrom( "Tools|Set Buddy" ) ); + +    TQToolBar *tb = new TQToolBar( this, "Tools" ); +    tb->setCloseMode( TQDockWindow::Undocked ); +    toolsToolBar = tb; +    TQWhatsThis::add( tb, i18n( "<b>The Tools toolbar</b>%1" ).arg(i18n(toolbarHelp).arg("")) ); + +    addToolBar( tb, i18n( "Tools" ), TQMainWindow::DockTop, FALSE ); +    actionPointerTool->addTo( tb ); +    if ( !singleProjectMode() ) +	actionConnectTool->addTo( tb ); +    actionOrderTool->addTo( tb ); +    actionBuddyTool->addTo( tb ); + +    TQPopupMenu *mmenu = new TQPopupMenu( this, "Tools" ); +    toolsMenu = mmenu; +    toolsMenuId = 100; +    menubar->insertItem( i18n( "&Tools" ), mmenu, toolsMenuId ); +    toolsMenuIndex = menubar->indexOf( toolsMenuId ); +    actionPointerTool->addTo( mmenu ); +    if ( !singleProjectMode() ) +	actionConnectTool->addTo( mmenu ); +    actionOrderTool->addTo( mmenu ); +    actionBuddyTool->addTo( mmenu ); +    mmenu->insertSeparator(); + +    customWidgetToolBar = 0; +    customWidgetMenu = 0; + +    actionToolsCustomWidget = new DesignerAction( i18n("Custom Widgets"), +					   createIconSet( "designer_customwidget.png" ), +					   i18n("Edit &Custom Widgets..."), 0, TQT_TQOBJECT(this), 0 ); +    actionToolsCustomWidget->setStatusTip( i18n("Opens a dialog to add and change " +					      "custom widgets") ); +    actionToolsCustomWidget->setWhatsThis( whatsThisFrom( "Tools|Custom|Edit Custom" +							  "Widgets" ) ); +    connect( actionToolsCustomWidget, TQT_SIGNAL( activated() ), +	     this, TQT_SLOT( toolsCustomWidget() ) ); + +    for ( int j = 0; j < WidgetDatabase::numWidgetGroups(); ++j ) { +	TQString grp = WidgetDatabase::widgetGroup( j ); +	if ( !WidgetDatabase::isGroupVisible( grp ) || +	     WidgetDatabase::isGroupEmpty( grp ) ) +	    continue; +	TQToolBar *tb = new TQToolBar( this, grp.latin1() ); +	tb->setCloseMode( TQDockWindow::Undocked ); +	widgetToolBars.append( tb ); +	bool plural = grp[(int)grp.length()-1] == 's'; +	if ( plural ) { +	    TQWhatsThis::add( tb, i18n( "<b>The %1</b>%2" ).arg(grp).arg(i18n(toolbarHelp). +				arg( i18n(" Click on a button to insert a single widget, " +				"or double click to insert multiple %1.") ).arg(grp)) ); +	} else { +	    TQWhatsThis::add( tb, i18n( "<b>The %1 Widgets</b>%2" ).arg(grp).arg(i18n(toolbarHelp). +				arg( i18n(" Click on a button to insert a single %1 widget, " +				"or double click to insert multiple widgets.") ).arg(grp)) ); +	} +	addToolBar( tb, grp ); +	tb->hide(); +	TQPopupMenu *menu = new TQPopupMenu( this, grp.latin1() ); +	mmenu->insertItem( grp, menu ); + +	TQToolBar *tb2 = new TQToolBar( grp, 0, toolBox, FALSE, grp.latin1() ); +	tb2->setFrameStyle( TQFrame::NoFrame ); +	tb2->setOrientation( Qt::Vertical ); +	tb2->setBackgroundMode( PaletteBase ); +	toolBox->addItem( tb2, grp ); + +	if ( grp == "Custom" ) { +	    if ( !customWidgetMenu ) +		actionToolsCustomWidget->addTo( menu ); +	    else +		menu->insertSeparator(); +	    customWidgetMenu = menu; +	    customWidgetToolBar = tb; +	} + +	for ( int i = 0; i < WidgetDatabase::count(); ++i ) { +	    if ( WidgetDatabase::group( i ) != grp ) +		continue; // only widgets, i.e. not forms and temp stuff +	    WidgetAction* a = +		new WidgetAction( grp, actionGroupTools, TQString::number( i ).latin1() ); +	    a->setToggleAction( TRUE ); +	    TQString atext = WidgetDatabase::className( i ); +	    if ( atext[0] == 'Q' ) +		atext = atext.mid(1); +	    while ( atext.length() && atext[0] >= 'a' && atext[0] <= 'z' ) +		atext = atext.mid(1); +	    if ( atext.isEmpty() ) +		atext = WidgetDatabase::className( i ); +	    a->setText( atext ); +	    TQString ttip = WidgetDatabase::toolTip( i ); +	    a->setIconSet( WidgetDatabase::iconSet( i ) ); +	    a->setToolTip( ttip ); +	    if ( !WidgetDatabase::isWhatsThisLoaded() ) +		WidgetDatabase::loadWhatsThis( documentationPath() ); +	    a->setStatusTip( i18n( "Insert a %1").arg(WidgetDatabase::className( i )) ); + +	    TQString whats = i18n("<b>A %1</b>").arg( WidgetDatabase::className( i ) ); +	    if ( !WidgetDatabase::whatsThis( i ).isEmpty() ) +	    whats += TQString("<p>%1</p>").arg(WidgetDatabase::whatsThis( i )); +	    a->setWhatsThis( whats+ i18n("<p>Double click on this tool to keep it selected.</p>") ); + +	    if ( grp != "KDE" ) +		a->addTo( tb ); +	    a->addTo( menu ); +	    a->addTo( tb2 ); +	    if ( WidgetDatabase::isCommon( i ) ) { +		a->addTo( commonWidgetsToolBar ); +		commonWidgetsPage.append( a ); +	    } +	} +	TQWidget *w; +	tb2->setStretchableWidget( ( w = new TQWidget( tb2 ) ) ); +	w->setBackgroundMode( tb2->backgroundMode() ); +    } + +    if ( !customWidgetToolBar ) { +	TQToolBar *tb = new TQToolBar( this, "Custom Widgets" ); +	tb->setCloseMode( TQDockWindow::Undocked ); +	TQWhatsThis::add( tb, i18n( "<b>The Custom Widgets toolbar</b>%1" +				 "<p>Click <b>Edit Custom Widgets...</b>" +				 "in the <b>Tools|Custom</b> menu to " +				 "add and change custom widgets</p>" ). +			 arg(i18n(toolbarHelp). +			     arg( i18n(" Click on the buttons to insert a single widget, " +				     "or double click to insert multiple widgets.") )) ); +	addToolBar( tb, i18n( "Custom" ) ); +	tb->hide(); +	widgetToolBars.append( tb ); +	customWidgetToolBar = tb; +	TQPopupMenu *menu = new TQPopupMenu( this, "Custom Widgets" ); +	mmenu->insertItem( "Custom", menu ); +	customWidgetMenu = menu; +	customWidgetToolBar->hide(); +	actionToolsCustomWidget->addTo( customWidgetMenu ); +	customWidgetMenu->insertSeparator(); +	TQToolBar *tb2 = new TQToolBar( "Custom Widgets", 0, +				      toolBox, FALSE, "Custom Widgets" ); +	tb2->setBackgroundMode(PaletteBase); +	tb2->setOrientation( Qt::Vertical ); +	tb2->setFrameStyle( TQFrame::NoFrame ); +	toolBox->addItem( tb2, "Custom Widgets" ); +	customWidgetToolBar2 = tb2; +    } + +    TQAction *a = new DesignerAction( i18n( "Configure Toolbox" ), i18n( "Configure Toolbox..." ), 0, TQT_TQOBJECT(this) ); +    a->setStatusTip( i18n( "Opens a dialog to configure the common " +					       "widgets page of the toolbox") ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( toolsConfigure() ) ); +    mmenu->insertSeparator(); +    a->addTo( mmenu ); +    resetTool(); +} + +void MainWindow::setupFileActions() +{ +    TQToolBar* tb  = new TQToolBar( this, "File" ); +    tb->setCloseMode( TQDockWindow::Undocked ); +    projectToolBar = tb; + +    TQWhatsThis::add( tb, i18n( "<b>The File toolbar</b>%1" ).arg(i18n(toolbarHelp).arg("")) ); +    addToolBar( tb, i18n( "File" ) ); +    fileMenu = new TQPopupMenu( this, "File" ); +    menubar->insertItem( i18n( "&File" ), fileMenu ); + +    DesignerAction *a = 0; + +    if ( !singleProject ) { +	DesignerAction *a = new DesignerAction( TQT_TQOBJECT(this), 0 ); +	a->setText( i18n( "New" ) ); +	a->setToolTip( i18n( "New dialog or file" ) ); +	a->setMenuText( i18n( "&New..." ) ); +	a->setIconSet( createIconSet("designer_filenew.png") ); +	a->setAccel( CTRL + Key_N ); +	a->setStatusTip( i18n( "Creates a new project, form or source file." ) ); +	a->setWhatsThis( whatsThisFrom( "File|New" ) ); +	connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileNew() ) ); +	a->addTo( tb ); +	a->addTo( fileMenu ); +	actionNewFile = a; +    } else { +	actionGroupNew = new TQActionGroup( this, 0, FALSE ); +	TQActionGroup* a = actionGroupNew; +	( (TQActionGroup*)a )->setUsesDropDown( TRUE ); +	a->setText( i18n( "New" ) ); +	a->setMenuText( i18n( "&New..." ) ); +	a->setIconSet( createIconSet("designer_form.png") ); +	a->setStatusTip( i18n( "Creates a new dialog or file" ) ); +	a->setWhatsThis( whatsThisFrom( "File|New" ) ); + +	TQAction *newForm = new DesignerAction( a, 0 ); +	newForm->setText( i18n( "New Dialog" ) ); +	newForm->setMenuText( i18n( "&Dialog..." ) ); +	newForm->setIconSet( createIconSet("designer_form.png") ); +	newForm->setAccel( CTRL + Key_N ); +	newForm->setStatusTip( i18n( "Creates a new dialog." ) ); +	connect( newForm, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileNewDialog() ) ); + +	DesignerAction *newFile = new DesignerAction( TQT_TQOBJECT(a), 0 ); +	newFile->setText( i18n( "New File" ) ); +	newFile->setMenuText( i18n( "&File..." ) ); +	newFile->setIconSet( createIconSet("designer_filenew.png") ); +	newFile->setAccel( ALT + Key_N ); +	newFile->setStatusTip( i18n( "Creates a new file." ) ); +	connect( newFile, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileNewFile() ) ); +	actionNewFile = newFile; + +	a->addTo( tb ); +	a->addTo( fileMenu ); + +	fileMenu->insertSeparator(); +    } + +    a = new DesignerAction( TQT_TQOBJECT(this), 0 ); +    a->setText( i18n( "Open" ) ); +    a->setMenuText( i18n( "&Open..." ) ); +    a->setIconSet( createIconSet("designer_fileopen.png") ); +    a->setAccel( CTRL + Key_O ); +    a->setStatusTip( i18n( "Opens an existing project, form or source file ") ); +    a->setWhatsThis( whatsThisFrom( "File|Open" ) ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileOpen() ) ); +    if ( !singleProject ) { +	a->addTo( tb ); +	a->addTo( fileMenu ); +	fileMenu->insertSeparator(); +    } + + +    a = new DesignerAction( TQT_TQOBJECT(this), 0 ); +    actionFileClose = a; +    a->setText( i18n( "Close" ) ); +    a->setMenuText( i18n( "&Close" ) ); +    a->setStatusTip( i18n( "Closes the current project or document" ) ); +    a->setWhatsThis(whatsThisFrom( "File|Close" ) ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileClose() ) ); +    connect( this, TQT_SIGNAL( hasActiveWindowOrProject(bool) ), a, TQT_SLOT( setEnabled(bool) ) ); +    if ( !singleProject ) { +	a->addTo( fileMenu ); +	fileMenu->insertSeparator(); +    } + +    a = new DesignerAction( TQT_TQOBJECT(this), 0 ); +    actionFileSave = a; +    a->setText( i18n( "Save" ) ); +    a->setMenuText( i18n( "&Save" ) ); +    a->setIconSet( createIconSet("designer_filesave.png") ); +    a->setAccel( CTRL + Key_S ); +    a->setStatusTip( i18n( "Saves the current project or document" ) ); +    a->setWhatsThis(whatsThisFrom( "File|Save" ) ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileSave() ) ); +    connect( this, TQT_SIGNAL( hasActiveWindowOrProject(bool) ), a, TQT_SLOT( setEnabled(bool) ) ); +    a->addTo( tb ); +    a->addTo( fileMenu ); + +    a = new DesignerAction( TQT_TQOBJECT(this), 0 ); +    actionFileSaveAs = a; +    a->setText( i18n( "Save As" ) ); +    a->setMenuText( i18n( "Save &As..." ) ); +    a->setStatusTip( i18n( "Saves the current form with a new filename" ) ); +    a->setWhatsThis( whatsThisFrom( "File|Save As" ) ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileSaveAs() ) ); +    connect( this, TQT_SIGNAL( hasActiveWindow(bool) ), a, TQT_SLOT( setEnabled(bool) ) ); +    if ( !singleProject ) +	a->addTo( fileMenu ); + +    a = new DesignerAction( TQT_TQOBJECT(this), 0 ); +    actionFileSaveAll = a; +    a->setText( i18n( "Save All" ) ); +    a->setMenuText( i18n( "Sa&ve All" ) ); +    a->setStatusTip( i18n( "Saves all open documents" ) ); +    a->setWhatsThis( whatsThisFrom( "File|Save All" ) ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileSaveAll() ) ); +    connect( this, TQT_SIGNAL( hasActiveWindowOrProject(bool) ), a, TQT_SLOT( setEnabled(bool) ) ); +    if ( !singleProject ) { +	a->addTo( fileMenu ); +	fileMenu->insertSeparator(); +    } + +    a = new DesignerAction( TQT_TQOBJECT(this), 0 ); +    a->setText( i18n( "Create Template" ) ); +    a->setMenuText( i18n( "Create &Template..." ) ); +    a->setStatusTip( i18n( "Creates a new template" ) ); +    a->setWhatsThis( whatsThisFrom( "File|Create Template" ) ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileCreateTemplate() ) ); +    if ( !singleProject ) +	a->addTo( fileMenu ); + +    if ( !singleProject ) +	fileMenu->insertSeparator(); + +    recentlyFilesMenu = new TQPopupMenu( this ); +    recentlyProjectsMenu = new TQPopupMenu( this ); + +    if ( !singleProject ) { +	fileMenu->insertItem( i18n( "Recently Opened Files " ), recentlyFilesMenu ); +	fileMenu->insertItem( i18n( "Recently Opened Projects" ), recentlyProjectsMenu ); +    } + +    connect( recentlyFilesMenu, TQT_SIGNAL( aboutToShow() ), +	     this, TQT_SLOT( setupRecentlyFilesMenu() ) ); +    connect( recentlyProjectsMenu, TQT_SIGNAL( aboutToShow() ), +	     this, TQT_SLOT( setupRecentlyProjectsMenu() ) ); +    connect( recentlyFilesMenu, TQT_SIGNAL( activated( int ) ), +	     this, TQT_SLOT( recentlyFilesMenuActivated( int ) ) ); +    connect( recentlyProjectsMenu, TQT_SIGNAL( activated( int ) ), +	     this, TQT_SLOT( recentlyProjectsMenuActivated( int ) ) ); + +    if ( !singleProject ) +	fileMenu->insertSeparator(); + +    a = new DesignerAction( TQT_TQOBJECT(this), 0 ); +    actionFileExit = a; +    if  ( !singleProjectMode() ) { +	a->setText( i18n( "Exit" ) ); +	a->setMenuText( i18n( "E&xit" ) ); +	a->setStatusTip( i18n( "Quits the application and prompts to save any changed forms, source files or project settings" ) ); +	a->setWhatsThis( whatsThisFrom( "File|Exit" ) ); +    } else { +	a->setText( i18n( "Close" ) ); +	a->setMenuText( i18n( "&Close" ) ); +    } +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( fileQuit() ) ); +    a->addTo( fileMenu ); +} + +void MainWindow::setupProjectActions() +{ +    projectMenu = new TQPopupMenu( this, "Project" ); +    menubar->insertItem( i18n( "Pr&oject" ), projectMenu ); + +    TQActionGroup *ag = new TQActionGroup( this, 0 ); +    ag->setText( i18n( "Active Project" ) ); +    ag->setMenuText( i18n( "Active Project" ) ); +    ag->setExclusive( TRUE ); +    ag->setUsesDropDown( TRUE ); +    connect( ag, TQT_SIGNAL( selected( TQAction * ) ), TQT_TQOBJECT(this), TQT_SLOT( projectSelected( TQAction * ) ) ); +    connect( ag, TQT_SIGNAL( selected( TQAction * ) ), TQT_TQOBJECT(this), TQT_SIGNAL( projectChanged() ) ); +    DesignerAction *a = new DesignerAction( i18n( "<No Project>" ), i18n( "<No Project>" ), 0, ag, 0, TRUE ); +    eProject = new Project( "", i18n( "<No Project>" ), projectSettingsPluginManager, TRUE ); +    projects.insert( a, eProject ); +    a->setOn( TRUE ); +    ag->addTo( projectMenu ); +    ag->addTo( projectToolBar ); +    actionGroupProjects = ag; + +    if ( !singleProject ) +	projectMenu->insertSeparator(); + +    a = new DesignerAction( i18n( "Add File" ), TQPixmap(), i18n( "&Add File..." ), 0, TQT_TQOBJECT(this), 0 ); +    actionProjectAddFile = a; +    a->setStatusTip( i18n("Adds a file to the current project") ); +    a->setWhatsThis( whatsThisFrom( "Project|Add File" ) ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( projectInsertFile() ) ); +    a->setEnabled( FALSE ); +    connect( this, TQT_SIGNAL( hasNonDummyProject(bool) ), a, TQT_SLOT( setEnabled(bool) ) ); +    if ( !singleProject ) +	a->addTo( projectMenu ); + +    actionEditPixmapCollection = new DesignerAction( i18n( "Image Collection..." ), TQPixmap(), +					  i18n( "&Image Collection..." ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditPixmapCollection->setStatusTip( i18n("Opens a dialog for editing the current project's image collection") ); +    actionEditPixmapCollection->setWhatsThis( whatsThisFrom( "Project|Image Collection" ) ); +    connect( actionEditPixmapCollection, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editPixmapCollection() ) ); +    actionEditPixmapCollection->setEnabled( FALSE ); +    connect( this, TQT_SIGNAL( hasNonDummyProject(bool) ), actionEditPixmapCollection, TQT_SLOT( setEnabled(bool) ) ); +    actionEditPixmapCollection->addTo( projectMenu ); + +#ifndef TQT_NO_SQL +    actionEditDatabaseConnections = new DesignerAction( i18n( "Database Connections..." ), TQPixmap(), +						 i18n( "&Database Connections..." ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditDatabaseConnections->setStatusTip( i18n("Opens a dialog for editing the current project's database connections") ); +    actionEditDatabaseConnections->setWhatsThis( whatsThisFrom( "Project|Database Connections" ) ); +    connect( actionEditDatabaseConnections, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editDatabaseConnections() ) ); +    //actionEditDatabaseConnections->setEnabled( FALSE ); +    //connect( this, TQT_SIGNAL( hasNonDummyProject(bool) ), actionEditDatabaseConnections, TQT_SLOT( setEnabled(bool) ) ); +    if ( !singleProject ) +	actionEditDatabaseConnections->addTo( projectMenu ); +#endif + +    actionEditProjectSettings = new DesignerAction( i18n( "Project Settings..." ), TQPixmap(), +					  i18n( "&Project Settings..." ), 0, TQT_TQOBJECT(this), 0 ); +    actionEditProjectSettings->setStatusTip( i18n("Opens a dialog to change the project's settings") ); +    actionEditProjectSettings->setWhatsThis( whatsThisFrom( "Project|Project Settings" ) ); +    connect( actionEditProjectSettings, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( editProjectSettings() ) ); +    actionEditProjectSettings->setEnabled( FALSE ); +    connect( this, TQT_SIGNAL( hasNonDummyProject(bool) ), actionEditProjectSettings, TQT_SLOT( setEnabled(bool) ) ); +    actionEditProjectSettings->addTo( projectMenu ); + +} + +void MainWindow::setupPreviewActions() +{ +    DesignerAction* a = 0; +    TQPopupMenu *menu = new TQPopupMenu( this, "Preview" ); +    layoutMenu = menu; +    menubar->insertItem( i18n( "&Preview" ), menu, toolsMenuId + 2 ); + +    a = new DesignerAction( i18n( "Preview Form" ), TQPixmap(), i18n( "Preview &Form" ), 0, TQT_TQOBJECT(this), 0 ); +    actionPreview = a; +    a->setAccel( CTRL + Key_T ); +    a->setStatusTip( i18n("Opens a preview") ); +    a->setWhatsThis( whatsThisFrom( "Preview|Preview Form" ) ); +    connect( a, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( previewForm() ) ); +    connect( this, TQT_SIGNAL( hasActiveForm(bool) ), a, TQT_SLOT( setEnabled(bool) ) ); +    a->addTo( menu ); + +    menu->insertSeparator(); + +    TQSignalMapper *mapper = new TQSignalMapper( TQT_TQOBJECT(this) ); +    connect( mapper, TQT_SIGNAL(mapped(const TQString&)), TQT_TQOBJECT(this), TQT_SLOT(previewForm(const TQString&)) ); +    TQStringList styles = TQStyleFactory::keys(); +    for ( TQStringList::Iterator it = styles.begin(); it != styles.end(); ++it ) { +	TQString info; +	if ( *it == "Motif" ) +	    info = i18n( "The preview will use the Motif look and feel which is used as the default style on most UNIX systems." ); +	else if ( *it == "Windows" ) +	    info = i18n( "The preview will use the Windows look and feel." ); +	else if ( *it == "Platinum" ) +	    info = i18n( "The preview will use the Platinum look and feel which is similar to the Macintosh GUI style." ); +	else if ( *it == "CDE" ) +	    info = i18n( "The preview will use the CDE look and feel which is similar to some versions of the Common Desktop Environment." ); +	else if ( *it == "SGI" ) +	    info = i18n( "The preview will use the Motif look and feel which is used as the default style on SGI systems." ); +	else if ( *it == "MotifPlus" ) +	    info = i18n( "The preview will use the advanced Motif look and feel used by the GIMP toolkit (GTK) on Linux." ); + +	a = new DesignerAction( i18n( "Preview Form in %1 Style" ).arg( *it ), TQPixmap(), +					 i18n( "... in %1 Style" ).arg( *it ), 0, TQT_TQOBJECT(this), 0 ); +	a->setStatusTip( i18n("Opens a preview in %1 style").arg( *it ) ); +	a->setWhatsThis( i18n("<b>Open a preview in %1 style.</b>" +			"<p>Use the preview to test the design and " +			"signal-slot connections of the current form. %2</p>").arg( *it ).arg( info ) ); +	mapper->setMapping( a, *it ); +	connect( a, TQT_SIGNAL(activated()), mapper, TQT_SLOT(map()) ); +	connect( this, TQT_SIGNAL( hasActiveForm(bool) ), a, TQT_SLOT( setEnabled(bool) ) ); +	a->addTo( menu ); +    } +} + +void MainWindow::setupWindowActions() +{ +/*    static bool windowActionsSetup = FALSE; +    if ( !windowActionsSetup ) { +	windowActionsSetup = TRUE; +*/ +	actionWindowTile = new DesignerAction( i18n( "Tile" ), i18n( "&Tile" ), 0, TQT_TQOBJECT(this) ); +	actionWindowTile->setStatusTip( i18n("Tiles the windows so that they are all visible") ); +	actionWindowTile->setWhatsThis( whatsThisFrom( "Window|Tile" ) ); +	connect( actionWindowTile, TQT_SIGNAL( activated() ), qworkspace, TQT_SLOT( tile() ) ); +	actionWindowCascade = new DesignerAction( i18n( "Cascade" ), i18n( "&Cascade" ), 0, TQT_TQOBJECT(this) ); +	actionWindowCascade->setStatusTip( i18n("Cascades the windows so that all their title bars are visible") ); +	actionWindowCascade->setWhatsThis( whatsThisFrom( "Window|Cascade" ) ); +	connect( actionWindowCascade, TQT_SIGNAL( activated() ), qworkspace, TQT_SLOT( cascade() ) ); + +	actionWindowClose = new DesignerAction( i18n( "Close" ), i18n( "Cl&ose" ), CTRL + Key_F4, TQT_TQOBJECT(this) ); +	actionWindowClose->setStatusTip( i18n( "Closes the active window") ); +	actionWindowClose->setWhatsThis( whatsThisFrom( "Window|Close" ) ); +	connect( actionWindowClose, TQT_SIGNAL( activated() ), qworkspace, TQT_SLOT( closeActiveWindow() ) ); + +	actionWindowCloseAll = new DesignerAction( i18n( "Close All" ), i18n( "Close Al&l" ), 0, TQT_TQOBJECT(this) ); +	actionWindowCloseAll->setStatusTip( i18n( "Closes all form windows") ); +	actionWindowCloseAll->setWhatsThis( whatsThisFrom( "Window|Close All" ) ); +	connect( actionWindowCloseAll, TQT_SIGNAL( activated() ), qworkspace, TQT_SLOT( closeAllWindows() ) ); + +	actionWindowNext = new DesignerAction( i18n( "Next" ), i18n( "Ne&xt" ), CTRL + Key_F6, TQT_TQOBJECT(this) ); +	actionWindowNext->setStatusTip( i18n( "Activates the next window" ) ); +	actionWindowNext->setWhatsThis( whatsThisFrom( "Window|Next" ) ); +	connect( actionWindowNext, TQT_SIGNAL( activated() ), qworkspace, TQT_SLOT( activateNextWindow() ) ); + +	actionWindowPrevious = new DesignerAction( i18n( "Previous" ), i18n( "Pre&vious" ), CTRL + SHIFT + Key_F6, TQT_TQOBJECT(this) ); +	actionWindowPrevious->setStatusTip( i18n( "Activates the previous window" ) ); +	actionWindowPrevious->setWhatsThis( whatsThisFrom( "Window|Previous" ) ); +	connect( actionWindowPrevious, TQT_SIGNAL( activated() ), qworkspace, TQT_SLOT( activatePreviousWindow() ) ); +  //  } + +    if ( !windowMenu ) { +	windowMenu = new TQPopupMenu( this, "Window" ); +	menubar->insertItem( i18n( "&Window" ), windowMenu ); +	connect( windowMenu, TQT_SIGNAL( aboutToShow() ), +		 this, TQT_SLOT( setupWindowActions() ) ); +    } else { +	windowMenu->clear(); +    } + +    actionWindowClose->addTo( windowMenu ); +    actionWindowCloseAll->addTo( windowMenu ); +    windowMenu->insertSeparator(); +    actionWindowNext->addTo( windowMenu ); +    actionWindowPrevious->addTo( windowMenu ); +    windowMenu->insertSeparator(); +    actionWindowTile->addTo( windowMenu ); +    actionWindowCascade->addTo( windowMenu ); +    windowMenu->insertSeparator(); +    windowMenu->insertItem( i18n( "Vie&ws" ), createDockWindowMenu( NoToolBars ) ); +    windowMenu->insertItem( i18n( "Tool&bars" ), createDockWindowMenu( OnlyToolBars ) ); +    TQWidgetList windows = qworkspace->windowList(); +    if ( windows.count() && formWindow() ) +	windowMenu->insertSeparator(); +    int j = 0; +    for ( int i = 0; i < int( windows.count() ); ++i ) { +	TQWidget *w = windows.at( i ); +	if ( !::tqqt_cast<FormWindow*>(w) && !::tqqt_cast<SourceEditor*>(w) ) +	    continue; +	if ( ::tqqt_cast<FormWindow*>(w) && ( ( (FormWindow*)w )->isFake() ) ) +	    continue; +	j++; +	TQString itemText; +	if ( j < 10 ) +	    itemText = TQString("&%1 ").arg( j ); +	if ( ::tqqt_cast<FormWindow*>(w) ) +	    itemText += w->name(); +	else +	    itemText += w->caption(); + +	int id = windowMenu->insertItem( itemText, TQT_TQOBJECT(this), TQT_SLOT( windowsMenuActivated( int ) ) ); +	windowMenu->setItemParameter( id, i ); +	windowMenu->setItemChecked( id, qworkspace->activeWindow() == windows.at( i ) ); +    } +} + +void MainWindow::setupHelpActions() +{ +    actionHelpContents = new DesignerAction( i18n( "Contents" ), i18n( "&Contents" ), Key_F1, TQT_TQOBJECT(this), 0 ); +    actionHelpContents->setStatusTip( i18n("Opens the online help") ); +    actionHelpContents->setWhatsThis( whatsThisFrom( "Help|Contents" ) ); +    connect( actionHelpContents, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( helpContents() ) ); + +    actionHelpManual = new DesignerAction( i18n( "Manual" ), i18n( "&Manual" ), CTRL + Key_M, TQT_TQOBJECT(this), 0 ); +    actionHelpManual->setStatusTip( i18n("Opens the TQt Designer manual") ); +    actionHelpManual->setWhatsThis( whatsThisFrom( "Help|Manual" ) ); +    connect( actionHelpManual, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( helpManual() ) ); + +    actionHelpAbout = new DesignerAction( i18n("About"), TQPixmap(), i18n("&About"), 0, TQT_TQOBJECT(this), 0 ); +    actionHelpAbout->setStatusTip( i18n("Displays information about TQt Designer") ); +    actionHelpAbout->setWhatsThis( whatsThisFrom( "Help|About" ) ); +    connect( actionHelpAbout, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( helpAbout() ) ); + +    actionHelpAboutTQt = new DesignerAction( i18n("About TQt"), TQPixmap(), i18n("About &TQt"), 0, TQT_TQOBJECT(this), 0 ); +    actionHelpAboutTQt->setStatusTip( i18n("Displays information about the TQt Toolkit") ); +    actionHelpAboutTQt->setWhatsThis( whatsThisFrom( "Help|About TQt" ) ); +    connect( actionHelpAboutTQt, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( helpAboutTQt() ) ); + +#if 0 //defined(TQT_NON_COMMERCIAL) +    // ### not used anymore -- should be deleted? +    actionHelpRegister = new DesignerAction( i18n("Register TQt"), TQPixmap(), i18n("&Register TQt..."), 0, TQT_TQOBJECT(this), 0 ); +    actionHelpRegister->setStatusTip( i18n("Opens a web browser at the evaluation form on www.trolltech.com") ); +    actionHelpRegister->setWhatsThis( i18n("Register with Trolltech") ); +    connect( actionHelpRegister, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( helpRegister() ) ); +#endif + +    actionHelpWhatsThis = new DesignerAction( i18n("What's This?"), TQIconSet( whatsthis_image, whatsthis_image ), +				       i18n("What's This?"), SHIFT + Key_F1, TQT_TQOBJECT(this), 0 ); +    actionHelpWhatsThis->setStatusTip( i18n("\"What's This?\" context sensitive help") ); +    actionHelpWhatsThis->setWhatsThis( whatsThisFrom( "Help|What's This?" ) ); +    connect( actionHelpWhatsThis, TQT_SIGNAL( activated() ), TQT_TQOBJECT(this), TQT_SLOT( whatsThis() ) ); + +/*    TQToolBar *tb = new TQToolBar( this, "Help" ); +    tb->setCloseMode( TQDockWindow::Undocked ); +    TQWhatsThis::add( tb, i18n( "<b>The Help toolbar</b>%1" ).arg(i18n(toolbarHelp).arg("") )); +    addToolBar( tb, i18n( "Help" ) ); +    actionHelpWhatsThis->addTo( tb );*/ + +    TQPopupMenu *menu = new TQPopupMenu( this, "Help" ); +    menubar->insertSeparator(); +    menubar->insertItem( i18n( "&Help" ), menu ); +    actionHelpContents->addTo( menu ); +    actionHelpManual->addTo( menu ); +    menu->insertSeparator(); +    actionHelpAbout->addTo( menu ); +    actionHelpAboutTQt->addTo( menu ); +#if 0 //defined(TQT_NON_COMMERCIAL) +    // ### not used anymore -- should be deleted? +    actionHelpRegister->addTo( menu ); +#endif + +    menu->insertSeparator(); +    actionHelpWhatsThis->addTo( menu ); +} + +void MainWindow::fileNew() +{ +    statusMessage( i18n( "Create a new project, form or source file...") ); +    NewForm dlg( this, projectNames(), currentProject->projectName(), templatePath() ); +    dlg.exec(); +    statusBar()->clear(); +} + +void MainWindow::fileNewDialog() +{ +    static int forms = 0; +    TQString n = "Dialog" + TQString::number( ++forms ); +    while ( currentProject->findFormFile( n + ".ui" ) ) +	n = "Dialog" + TQString::number( ++forms ); +    FormWindow *fw = 0; +    FormFile *ff = new FormFile( n + ".ui", FALSE, currentProject ); +    fw = new FormWindow( ff, MainWindow::self, MainWindow::self->qWorkspace(), n ); +    ff->setModified( TRUE ); +    currentProject->setModified( TRUE ); +    workspace()->update(); +    fw->setProject( currentProject ); +    MetaDataBase::addEntry( TQT_TQOBJECT(fw) ); +    TQWidget *w = WidgetFactory::create( WidgetDatabase::idFromClassName( TQDIALOG_OBJECT_NAME_STRING ), fw, n.latin1() ); +    fw->setMainContainer( w ); +    fw->setCaption( n ); +    fw->resize( 600, 480 ); +    insertFormWindow( fw ); +    fw->killAccels( TQT_TQOBJECT(fw) ); +    fw->project()->setModified( TRUE ); +    fw->setFocus(); +    fw->setSavePixmapInProject( TRUE ); +    fw->setSavePixmapInline( FALSE ); +} + +void MainWindow::fileNewFile() +{ +    TQString name = TQInputDialog::getText( i18n( "Name of File" ), i18n( "Enter the name of the new source file:" ) ); +    if ( name.isEmpty() ) +	return; +    if ( name.right( 3 ) != ".qs" ) +	name += ".qs"; +    SourceFile *f = new SourceFile( name, FALSE, currentProject ); +    MainWindow::self->editSource( f ); +    f->setModified( TRUE ); +    currentProject->setModified( TRUE ); +    workspace()->update(); +} + +void MainWindow::fileQuit() +{ +    close(); +    if ( !singleProjectMode() ) +	tqApp->closeAllWindows(); +} + +void MainWindow::fileClose() +{ +    if ( !currentProject->isDummy() ) { +	fileCloseProject(); +    } else { +	TQWidget *w = qworkspace->activeWindow(); +	if ( w ) { +	    if ( ::tqqt_cast<FormWindow*>(w) ) +		( (FormWindow*)w )->formFile()->close(); +	    else if ( ::tqqt_cast<SourceEditor*>(w) ) +		( (SourceEditor*)w )->close(); +	} +    } +} + + +void MainWindow::fileCloseProject() +{ +    if ( currentProject->isDummy() ) +	return; +    Project *pro = currentProject; +    TQAction* a = 0; +    TQAction* lastValid = 0; +    for ( TQMap<TQAction*, Project* >::Iterator it = projects.begin(); it != projects.end(); ++it ) { +	if ( it.data() == pro ) { +	    a = it.key(); +	    if ( lastValid ) +		break; +	} +	lastValid = it.key(); +    } +    if ( a ) { +	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 +		return; +	    default: +		break; +	    } +	} + +	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() ); +		    if ( !( (FormWindow*)w )->formFile()->close() ) +			return; +		} +	    } else if ( ::tqqt_cast<SourceEditor*>(w) ) { +		if ( !( (SourceEditor*)w )->close() ) +		    return; +	    } +	} +	hierarchyView->clear(); +	windows = qWorkspace()->windowList(); +	qWorkspace()->blockSignals( FALSE ); +	actionGroupProjects->removeChild( a ); +	projects.remove( a ); +	delete a; +	currentProject = 0; +	if ( lastValid ) { +	    projectSelected( lastValid ); +	    statusMessage( i18n( "Selected project '%1'" ).arg( currentProject->projectName() ) ); +	} +	if ( !windows.isEmpty() ) { +	    for ( TQWidget *w = windows.first(); w; w = windows.next() ) { +		if ( !::tqqt_cast<FormWindow*>(w) ) +		    continue; +		w->setFocus(); +		activeWindowChanged( w ); +		break; +	    } +	} else { +	    emit hasActiveWindow( FALSE ); +	    emit hasActiveForm( FALSE ); +	    updateUndoRedo( FALSE, FALSE, TQString(), TQString() ); +	} +    } +} + +void MainWindow::fileOpen() // as called by the menu +{ +    fileOpen( "", "", "", FALSE ); +} + +void MainWindow::projectInsertFile() +{ +    fileOpen( "", "" ); +} + +void MainWindow::fileOpen( const TQString &filter, const TQString &extension, const TQString &fn, bool inProject  ) +{ +    statusMessage( i18n( "Open a file...") ); + +    TQPluginManager<ImportFilterInterface> manager( IID_ImportFilter, TQApplication::libraryPaths(), pluginDirectory() ); + +    Project* project = inProject ? currentProject : eProject; + +    TQStringList additionalSources; + +    { +	TQStringList filterlist; +	if ( filter.isEmpty() ) { +	    if ( !inProject ) +		filterlist << i18n( "*.ui *.pro|Designer Files" ); +	    filterlist << i18n( "*.ui|TQt User-Interface Files" ); +	    if ( !inProject ) +		filterlist << i18n( "*.pro|TQMAKE Project Files" ); +	    TQStringList list = manager.featureList(); +	    for ( TQStringList::Iterator it = list.begin(); it != list.end(); ++it ) +		filterlist << *it; +	    LanguageInterface *iface = MetaDataBase::languageInterface( project->language() ); +	    if ( iface ) { +		filterlist +=  iface->fileFilterList(); +		additionalSources += iface->fileExtensionList(); +	    } +	    filterlist << i18n( "*|All Files" ); +	} else { +	    filterlist << filter; +	} + +	TQString filters = filterlist.join( "\n" ); + +	TQStringList filenames; +	if ( fn.isEmpty() ) { +	    if ( !inProject ) { +		TQString f = KFileDialog::getOpenFileName( TQString(), filters, this, /*0,*/ +							  i18n("Open" )/*, &lastOpenFilter */); +		filenames << f; +	    } else { +		filenames = KFileDialog::getOpenFileNames( TQString(), filters, this, /*0,*/ +							   i18n("Add")/*, &lastOpenFilter */); +	    } +	} else { +	    filenames << fn; +	} + +	for ( TQStringList::Iterator fit = filenames.begin(); fit != filenames.end(); ++fit ) { +	    TQString filename = *fit; +	    if ( !filename.isEmpty() ) { +		TQFileInfo fi( filename ); + +		if ( fi.extension( FALSE ) == "pro" && ( extension.isEmpty() || extension.find( ";pro" ) != -1 ) ) { +		    addRecentlyOpened( filename, recentlyProjects ); +		    openProject( filename ); +		} else if ( fi.extension( FALSE ) == "ui" && ( extension.isEmpty() || extension.find( ";ui" ) != -1 ) ) { +		    if ( !inProject ) +			setCurrentProject( eProject ); +		    openFormWindow( filename ); +		    addRecentlyOpened( filename, recentlyFiles ); +		} else if ( !extension.isEmpty() && extension.find( ";" + fi.extension( FALSE ) ) != -1 || +			    additionalSources.find( fi.extension( FALSE ) ) != additionalSources.end() ) { +		    SourceFile *sf = project->findSourceFile( project->makeRelative( filename ) ); +		    if ( !sf ) +			sf = new SourceFile( project->makeRelative( filename ), FALSE, project ); +		    editSource( sf ); +		} else if ( extension.isEmpty() ) { +		    TQString filter; +		    for ( TQStringList::Iterator it2 = filterlist.begin(); it2 != filterlist.end(); ++it2 ) { +			if ( (*it2).contains( "." + fi.extension( FALSE ), FALSE ) ) { +			    filter = *it2; +			    break; +			} +		    } + +		    ImportFilterInterface* iface = 0; +		    manager.queryInterface( filter, &iface ); +		    if ( !iface ) { +			statusMessage( i18n( "No import filter is available to import '%1'"). +					      arg( filename )/*, 3000*/ ); +			return; +		    } +		    statusMessage( i18n( "Importing '%1' using import filter ...").arg( filename ) ); +		    TQStringList list = iface->import( filter, filename ); +		    iface->release(); +		    if ( list.isEmpty() ) { +			statusMessage( i18n( "Nothing to load in '%1'").arg( filename )/*, 3000*/ ); +			return; +		    } +		    if ( !inProject ) +			setCurrentProject( eProject ); +		    addRecentlyOpened( filename, recentlyFiles ); +		    for ( TQStringList::Iterator it = list.begin(); it != list.end(); ++it ) { +			openFormWindow( *it, FALSE ); +			TQFile::remove( *it ); +		    } +		    statusBar()->clear(); +		} +	    } +	} +    } +} + +FormWindow *MainWindow::openFormWindow( const TQString &filename, bool validFileName, FormFile *ff ) +{ +    if ( filename.isEmpty() ) +	return 0; + +    bool makeNew = FALSE; + +    if ( !TQFile::exists( filename ) ) { +	makeNew = TRUE; +    } else { +	TQFile f( filename ); +	f.open( IO_ReadOnly ); +	TQTextStream ts( &f ); +	makeNew = ts.read().length() < 2; +    } +    if ( makeNew ) { +	fileNew(); +	if ( formWindow() ) +	    formWindow()->setFileName( filename ); +	return formWindow(); +    } + +    statusMessage( i18n( "Reading file '%1'...").arg( filename ) ); +    FormFile *ff2 = currentProject->findFormFile( currentProject->makeRelative(filename) ); +    if ( ff2 && ff2->formWindow() ) { +	ff2->formWindow()->setFocus(); +	return ff2->formWindow(); +    } + +    if ( ff2 ) +	ff = ff2; +    TQApplication::setOverrideCursor( WaitCursor ); +    Resource resource( this ); +    if ( !ff ) +	ff = new FormFile( currentProject->makeRelative( filename ), FALSE, currentProject ); +    bool b = resource.load( ff ) && (FormWindow*)resource.widget(); +    if ( !validFileName && resource.widget() ) +	( (FormWindow*)resource.widget() )->setFileName( TQString() ); +    TQApplication::restoreOverrideCursor(); +    if ( b ) { +	rebuildCustomWidgetGUI(); +	statusMessage( i18n( "Loaded file '%1'").arg( filename )/*, 3000 */); +    } else { +	statusMessage( i18n( "Failed to load file '%1'").arg( filename )/*, 5000 */); +	TQMessageBox::information( this, i18n("Load File"), i18n("Could not load file '%1'.").arg( filename ) ); +	delete ff; +    } +    return (FormWindow*)resource.widget(); +} + +bool MainWindow::fileSave() +{ + +    if ( !currentProject->isDummy() ) +	return fileSaveProject(); +    return fileSaveForm(); +} + +bool MainWindow::fileSaveForm() +{ +    for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { +	if ( TQT_BASE_OBJECT(e->object()) == formWindow() || e == qWorkspace()->activeWindow() ) { +	    e->save(); +	} +    } + +    FormWindow *fw = 0; + +    TQWidget *w = qWorkspace()->activeWindow(); +    if ( w ) { +	if ( ::tqqt_cast<SourceEditor*>(w) ) { +	    SourceEditor *se = (SourceEditor*)w; +	    if ( se->formWindow() ) +		fw = se->formWindow(); +	    else if ( se->sourceFile() ) { +		se->sourceFile()->save(); +		return TRUE; +	    } +	} +    } + +    if ( !fw ) +	fw = formWindow(); +    if ( !fw || !fw->formFile()->save() ) +	return FALSE; +    TQApplication::restoreOverrideCursor(); +    return TRUE; +} + +bool MainWindow::fileSaveProject() +{ +    currentProject->save(); +    statusMessage( i18n( "Project '%1' saved.").arg( currentProject->projectName() )/*, 3000 */); +    return TRUE; +} + +bool MainWindow::fileSaveAs() +{ +    statusMessage( i18n( "Enter a filename..." ) ); + +    TQWidget *w = qworkspace->activeWindow(); +    if ( !w ) +	return TRUE; +    if ( ::tqqt_cast<FormWindow*>(w) ) +	return ( (FormWindow*)w )->formFile()->saveAs(); +    else if ( ::tqqt_cast<SourceEditor*>(w) ) +	return ( (SourceEditor*)w )->saveAs(); +    return FALSE; +} + +void MainWindow::fileSaveAll() +{ +    for ( TQMap<TQAction*, Project* >::Iterator it = projects.begin(); it != projects.end(); ++it ) +	(*it)->save(); +} + +void MainWindow::fileCreateTemplate() +{ +    CreateTemplate dia( this, 0, TRUE ); + +    int i = 0; +    for ( i = 0; i < WidgetDatabase::count(); ++i ) { +	if ( WidgetDatabase::isForm( i ) && WidgetDatabase::group( i ) != "Temp") { +	    dia.listClass->insertItem( WidgetDatabase::className( i ) ); +	} +    } +    for ( i = 0; i < WidgetDatabase::count(); ++i ) { +	if ( WidgetDatabase::isContainer( i ) && !WidgetDatabase::isForm(i) && +	     WidgetDatabase::className( i ) != TQTABWIDGET_OBJECT_NAME_STRING && WidgetDatabase::group( i ) != "Temp" ) { +	    dia.listClass->insertItem( WidgetDatabase::className( i ) ); +	} +    } + +    TQPtrList<MetaDataBase::CustomWidget> *lst = MetaDataBase::customWidgets(); +    for ( MetaDataBase::CustomWidget *w = lst->first(); w; w = lst->next() ) { +	if ( w->isContainer ) +	    dia.listClass->insertItem( w->className ); +    } + +    dia.editName->setText( i18n( "NewTemplate" ) ); +    connect( dia.buttonCreate, TQT_SIGNAL( clicked() ), +	     this, TQT_SLOT( createNewTemplate() ) ); +    dia.exec(); +} + +void MainWindow::createNewTemplate() +{ +    CreateTemplate *dia = (CreateTemplate*)TQT_TQOBJECT(const_cast<TQT_BASE_OBJECT_NAME*>(sender()))->parent(); +    TQString fn = dia->editName->text(); +    TQString cn = dia->listClass->currentText(); +    if ( fn.isEmpty() || cn.isEmpty() ) { +	TQMessageBox::information( this, i18n( "Create Template" ), i18n( "Could not create the template." ) ); +	return; +    } + +    TQStringList templRoots; +    const char *qtdir = getenv( "QTDIR" ); +    if(qtdir) +	templRoots << qtdir; +    templRoots << tqInstallPathData(); +    if(qtdir) //try the tools/designer directory last! +	templRoots << (TQString(qtdir) + "/tools/designer"); +    TQFile f; +    for ( TQStringList::Iterator it = templRoots.begin(); it != templRoots.end(); ++it ) { +	if ( TQFile::exists( (*it) + "/templates/" )) { +	    TQString tmpfn = (*it) + "/templates/" + fn + ".ui"; +	    f.setName(tmpfn); +	    if(f.open(IO_WriteOnly)) +		break; +	} +    } +    if ( !f.isOpen() ) { +	TQMessageBox::information( this, i18n( "Create Template" ), i18n( "Could not create the template." ) ); +	return; +    } +    TQTextStream ts( &f ); + +    ts << "<!DOCTYPE UI><UI>" << endl; +    ts << "<widget>" << endl; +    ts << "<class>" << cn << "</class>" << endl; +    ts << "<property stdset=\"1\">" << endl; +    ts << "    <name>name</name>" << endl; +    ts << "    <cstring>" << cn << "Form</cstring>" << endl; +    ts << "</property>" << endl; +    ts << "<property stdset=\"1\">" << endl; +    ts << "    <name>geometry</name>" << endl; +    ts << "    <rect>" << endl; +    ts << "        <width>300</width>" << endl; +    ts << "        <height>400</height>" << endl; +    ts << "    </rect>" << endl; +    ts << "</property>" << endl; +    ts << "</widget>" << endl; +    ts << "</UI>" << endl; + +    dia->editName->setText( i18n( "NewTemplate" ) ); + +    f.close(); +} + +void MainWindow::editUndo() +{ +    if ( qWorkspace()->activeWindow() && +	 ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) { +	( (SourceEditor*)qWorkspace()->activeWindow() )->editUndo(); +	return; +    } +    if ( formWindow() ) +	formWindow()->undo(); +} + +void MainWindow::editRedo() +{ +    if ( qWorkspace()->activeWindow() && +	 ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) { +	( (SourceEditor*)qWorkspace()->activeWindow() )->editRedo(); +	return; +    } +    if ( formWindow() ) +	formWindow()->redo(); +} + +void MainWindow::editCut() +{ +    if ( qWorkspace()->activeWindow() && +	 ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) { +	( (SourceEditor*)qWorkspace()->activeWindow() )->editCut(); +	return; +    } +    editCopy(); +    editDelete(); +} + +void MainWindow::editCopy() +{ +    if ( qWorkspace()->activeWindow() && +	 ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) { +	( (SourceEditor*)qWorkspace()->activeWindow() )->editCopy(); +	return; +    } +    if ( formWindow() ) +	tqApp->clipboard()->setText( formWindow()->copy() ); +} + +void MainWindow::editPaste() +{ +    if ( qWorkspace()->activeWindow() && +	 ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) { +	( (SourceEditor*)qWorkspace()->activeWindow() )->editPaste(); +	return; +    } +    if ( !formWindow() ) +	return; + +    TQWidget *w = formWindow()->mainContainer(); +    TQWidgetList l( formWindow()->selectedWidgets() ); +    if ( l.count() == 1 ) { +	w = l.first(); +	if ( WidgetFactory::layoutType( w ) != WidgetFactory::NoLayout || +	     ( !WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( TQT_TQOBJECT(w) ) ) ) && +	       w != formWindow()->mainContainer() ) ) +	    w = formWindow()->mainContainer(); +    } + +    if ( w && WidgetFactory::layoutType( w ) == WidgetFactory::NoLayout ) { +	formWindow()->paste( tqApp->clipboard()->text(), WidgetFactory::containerOfWidget( w ) ); +	hierarchyView->widgetInserted( 0 ); +	formWindow()->commandHistory()->setModified( TRUE ); +    } else { +	TQMessageBox::information( this, i18n( "Paste Error" ), +				  i18n( "Cannot paste widgets. Designer could not find a container\n" +				      "to paste into which does not contain a layout. Break the layout\n" +				      "of the container you want to paste into and select this container\n" +				      "and then paste again." ) ); +    } +} + +void MainWindow::editDelete() +{ +    if ( formWindow() ) +	formWindow()->deleteWidgets(); +} + +void MainWindow::editSelectAll() +{ +    if ( qWorkspace()->activeWindow() && +	 ::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) { +	( (SourceEditor*)qWorkspace()->activeWindow() )->editSelectAll(); +	return; +    } +    if ( formWindow() ) +	formWindow()->selectAll(); +} + + +void MainWindow::editLower() +{ +    if ( formWindow() ) +	formWindow()->lowerWidgets(); +} + +void MainWindow::editRaise() +{ +    if ( formWindow() ) +	formWindow()->raiseWidgets(); +} + +void MainWindow::editAdjustSize() +{ +    if ( formWindow() ) +	formWindow()->editAdjustSize(); +} + +void MainWindow::editLayoutHorizontal() +{ +    if ( layoutChilds ) +	editLayoutContainerHorizontal(); +    else if ( layoutSelected && formWindow() ) +	formWindow()->layoutHorizontal(); +} + +void MainWindow::editLayoutVertical() +{ +    if ( layoutChilds ) +	editLayoutContainerVertical(); +    else if ( layoutSelected && formWindow() ) +	formWindow()->layoutVertical(); +} + +void MainWindow::editLayoutHorizontalSplit() +{ +    if ( layoutChilds ) +	; // no way to do that +    else if ( layoutSelected && formWindow() ) +	formWindow()->layoutHorizontalSplit(); +} + +void MainWindow::editLayoutVerticalSplit() +{ +    if ( layoutChilds ) +	; // no way to do that +    else if ( layoutSelected && formWindow() ) +	formWindow()->layoutVerticalSplit(); +} + +void MainWindow::editLayoutGrid() +{ +    if ( layoutChilds ) +	editLayoutContainerGrid(); +    else if ( layoutSelected && formWindow() ) +	formWindow()->layoutGrid(); +} + +void MainWindow::editLayoutContainerVertical() +{ +    if ( !formWindow() ) +	return; +    TQWidget *w = formWindow()->mainContainer(); +    TQWidgetList l( formWindow()->selectedWidgets() ); +    if ( l.count() == 1 ) +	w = l.first(); +    if ( w ) +	formWindow()->layoutVerticalContainer( w  ); +} + +void MainWindow::editLayoutContainerHorizontal() +{ +    if ( !formWindow() ) +	return; +    TQWidget *w = formWindow()->mainContainer(); +    TQWidgetList l( formWindow()->selectedWidgets() ); +    if ( l.count() == 1 ) +	w = l.first(); +    if ( w ) +	formWindow()->layoutHorizontalContainer( w ); +} + +void MainWindow::editLayoutContainerGrid() +{ +    if ( !formWindow() ) +	return; +    TQWidget *w = formWindow()->mainContainer(); +    TQWidgetList l( formWindow()->selectedWidgets() ); +    if ( l.count() == 1 ) +	w = l.first(); +    if ( w ) +	formWindow()->layoutGridContainer( w  ); +} + +void MainWindow::editBreakLayout() +{ +    if ( !formWindow() || !breakLayout ) +	return; +    TQWidget *w = formWindow()->mainContainer(); +    if ( formWindow()->currentWidget() ) +	w = formWindow()->currentWidget(); +    if ( WidgetFactory::layoutType( w ) != WidgetFactory::NoLayout || +	 w->parentWidget() && WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout ) { +	formWindow()->breakLayout( w ); +	return; +    } else { +	TQWidgetList widgets = formWindow()->selectedWidgets(); +	for ( w = widgets.first(); w; w = widgets.next() ) { +	    if ( WidgetFactory::layoutType( w ) != WidgetFactory::NoLayout || +		 w->parentWidget() && WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout ) +		break; +	} +	if ( w ) { +	    formWindow()->breakLayout( w ); +	    return; +	} +    } + +    w = formWindow()->mainContainer(); +    if ( WidgetFactory::layoutType( w ) != WidgetFactory::NoLayout || +	 w->parentWidget() && WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout ) +	formWindow()->breakLayout( w ); +} + +void MainWindow::editAccels() +{ +    if ( !formWindow() ) +	return; +    formWindow()->checkAccels(); +} + +void MainWindow::editFunctions() +{ +    if ( !formWindow() ) +	return; + +    statusMessage( i18n( "Edit the current form's slots..." ) ); +    EditFunctions dlg( this, formWindow(), TRUE ); +    dlg.exec(); +    statusBar()->clear(); +} + +void MainWindow::editConnections() +{ +    if ( !formWindow() ) +	return; + +    statusMessage( i18n( "Edit the current form's connections..." ) ); +    ConnectionDialog dlg( this ); +    dlg.exec(); + +    statusBar()->clear(); +} + +SourceEditor *MainWindow::editSource() +{ +    if ( !formWindow() ) +	return 0; +    return formWindow()->formFile()->showEditor(); +} + +SourceEditor *MainWindow::openSourceEditor() +{ +    if ( !formWindow() ) +	return 0; + +    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 0; +    } + +    SourceEditor *editor = 0; +    for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) { +	if ( e->language() == lang && e->formWindow() == formWindow() ) { +	    editor = e; +	    break; +	} +    } + +    if ( !editor ) +editor = createSourceEditor( TQT_TQOBJECT(formWindow()), formWindow()->project(), lang ); +    return editor; +} + +SourceEditor *MainWindow::editSource( SourceFile *f ) +{ +    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 0; +    } + +    SourceEditor *editor = 0; +    if ( f ) +	editor = f->editor(); +    if ( !editor ) +	editor = createSourceEditor( f, currentProject, lang ); +    editor->setActiveWindow(); +    editor->setFocus(); +    return editor; +} + +SourceEditor *MainWindow::createSourceEditor( TQObject *object, Project *project, +					      const TQString &lang, const TQString &func, +					      bool rereadSource ) +{ +    SourceEditor *editor = 0; +    EditorInterface *eIface = 0; +    editorPluginManager->queryInterface( lang, &eIface ); +    if ( !eIface ) +	return 0; +    LanguageInterface *lIface = MetaDataBase::languageInterface( lang ); +    if ( !lIface ) +	return 0; +    TQApplication::setOverrideCursor( WaitCursor ); +    editor = new SourceEditor( qWorkspace(), eIface, lIface ); +    eIface->release(); +    lIface->release(); + +    editor->setLanguage( lang ); +    sourceEditors.append( editor ); +    TQApplication::restoreOverrideCursor(); + +    if ( editor->object() != object ) +	editor->setObject( object, project ); +    else if ( rereadSource ) +	editor->refresh( FALSE ); + +    editor->show(); +    editor->setFocus(); +    if ( !func.isEmpty() ) +	editor->setFunction( func ); +    emit editorChanged(); + +    return editor; +} + +void MainWindow::editFormSettings() +{ +    if ( !formWindow() ) +	return; + +    statusMessage( i18n( "Edit the current form's settings..." ) ); +    FormSettings dlg( this, formWindow() ); +    dlg.exec(); +    statusBar()->clear(); +} + +void MainWindow::editProjectSettings() +{ +    openProjectSettings( currentProject ); +    wspace->setCurrentProject( currentProject ); +} + +void MainWindow::editPixmapCollection() +{ +    PixmapCollectionEditor dia( this, 0, TRUE ); +    dia.setProject( currentProject ); +    dia.exec(); +} + +void MainWindow::editDatabaseConnections() +{ +#ifndef TQT_NO_SQL +    DatabaseConnectionsEditor dia( currentProject, this, 0, TRUE ); +    dia.exec(); +#endif +} + +void MainWindow::editPreferences() +{ +    statusMessage( i18n( "Edit preferences..." ) ); +    Preferences *dia = new Preferences( this, 0, TRUE ); +    prefDia = dia; +    connect( dia->helpButton, TQT_SIGNAL( clicked() ), MainWindow::self, TQT_SLOT( showDialogHelp() ) ); +    dia->buttonColor->setEditor( StyledButton::ColorEditor ); +    dia->buttonPixmap->setEditor( StyledButton::PixmapEditor ); +    dia->groupBoxGrid->setChecked( sGrid ); +    dia->checkBoxSnapGrid->setChecked( snGrid ); +    dia->spinGridX->setValue( grid().x() ); +    dia->spinGridY->setValue( grid().y() ); +    dia->checkBoxWorkspace->setChecked( restoreConfig ); +    dia->checkBoxTextLabels->setChecked( usesTextLabel() ); +    dia->buttonColor->setColor( qworkspace->backgroundColor() ); +    TQString pluginPaths = TQApplication::libraryPaths().join("\n"); +    dia->textEditPluginPaths->setText(pluginPaths); +    if ( qworkspace->backgroundPixmap() ) +	dia->buttonPixmap->setPixmap( *qworkspace->backgroundPixmap() ); +    if ( backPix ) +	dia->radioPixmap->setChecked( TRUE ); +    else +	dia->radioColor->setChecked( TRUE ); +    dia->checkBoxSplash->setChecked( splashScreen ); +    dia->checkAutoEdit->setChecked( !databaseAutoEdit ); +    dia->checkBoxStartDialog->setChecked( shStartDialog ); +    dia->checkBoxAutoSave->setChecked( autoSaveEnabled ); +    int h = autoSaveInterval / 3600; +    int m = ( autoSaveInterval - h * 3600 ) / 60; +    int s = autoSaveInterval - ( h * 3600 + m * 60 ); +    TQTime t( h, m, s ); +    dia->timeEditAutoSave->setTime( t ); + +    SenderObject *senderObject = new SenderObject( designerInterface() ); +    TQValueList<Tab>::Iterator it; +    for ( it = preferenceTabs.begin(); it != preferenceTabs.end(); ++it ) { +	Tab t = *it; +	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 ( dia->exec() == TQDialog::Accepted ) { +	setSnapGrid( dia->checkBoxSnapGrid->isChecked() ); +	setShowGrid( dia->groupBoxGrid->isChecked() ); +	setGrid( TQPoint( dia->spinGridX->value(), +			 dia->spinGridY->value() ) ); +	restoreConfig = dia->checkBoxWorkspace->isChecked(); +	setUsesTextLabel( dia->checkBoxTextLabels->isChecked() ); +	if (dia->textEditPluginPaths->isModified()) { +	    pluginPaths = dia->textEditPluginPaths->text(); +	    TQApplication::setLibraryPaths(TQStringList::split("\n", pluginPaths)); +	    savePluginPaths = TRUE; +	} + +	if ( dia->radioPixmap->isChecked() && dia->buttonPixmap->pixmap() ) { +	    qworkspace->setBackgroundPixmap( *dia->buttonPixmap->pixmap() ); +	    backPix = TRUE; +	} else { +	    qworkspace->setBackgroundColor( dia->buttonColor->color() ); +	    backPix = FALSE; +	} +	splashScreen = dia->checkBoxSplash->isChecked(); +	databaseAutoEdit = !dia->checkAutoEdit->isChecked(); +	shStartDialog = dia->checkBoxStartDialog->isChecked(); +	autoSaveEnabled = dia->checkBoxAutoSave->isChecked(); +	TQTime time = dia->timeEditAutoSave->time(); +	autoSaveInterval = time.hour() * 3600 + time.minute() * 60 + time.second(); +	if ( autoSaveEnabled ) +	    autoSaveTimer->start( autoSaveInterval * 1000 ); +	else +	    autoSaveTimer->stop(); +    } +    delete senderObject; +    for ( it = preferenceTabs.begin(); it != preferenceTabs.end(); ++it ) { +	Tab t = *it; +	dia->tabWidget->removePage( t.w ); +	t.w->reparent( 0, TQPoint(0,0), FALSE ); +    } + +    for ( SourceEditor *e = sourceEditors.first(); e; e = sourceEditors.next() ) +	e->configChanged(); + +    delete dia; +    prefDia = 0; +    statusBar()->clear(); +} + +void MainWindow::searchFind() +{ +    if ( !qWorkspace()->activeWindow() || +	 !::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) +	 return; + +    if ( !findDialog ) +	findDialog = new FindDialog( this, 0, FALSE ); +    findDialog->show(); +    findDialog->raise(); +    findDialog->setEditor( ( (SourceEditor*)qWorkspace()->activeWindow() )->editorInterface(), +			   ( (SourceEditor*)qWorkspace()->activeWindow() )->object() ); +    findDialog->comboFind->setFocus(); +    findDialog->comboFind->lineEdit()->selectAll(); +} + +void MainWindow::searchIncremetalFindMenu() +{ +    incrementalSearch->selectAll(); +    incrementalSearch->setFocus(); +} + +void MainWindow::searchIncremetalFind() +{ +    if ( !qWorkspace()->activeWindow() || +	 !::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) +	 return; + +    ( (SourceEditor*)qWorkspace()->activeWindow() )->editorInterface()->find( incrementalSearch->text(), +									     FALSE, FALSE, TRUE, FALSE ); +} + +void MainWindow::searchIncremetalFindNext() +{ +    if ( !qWorkspace()->activeWindow() || +	 !::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) +	 return; + +    ( (SourceEditor*)qWorkspace()->activeWindow() )->editorInterface()->find( incrementalSearch->text(), +									     FALSE, FALSE, TRUE, TRUE ); +} + +void MainWindow::searchReplace() +{ +    if ( !qWorkspace()->activeWindow() || +	 !::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) +	 return; + +    if ( !replaceDialog ) +	replaceDialog = new ReplaceDialog( this, 0, FALSE ); +    replaceDialog->show(); +    replaceDialog->raise(); +    replaceDialog->setEditor( ( (SourceEditor*)qWorkspace()->activeWindow() )->editorInterface(), +			   ( (SourceEditor*)qWorkspace()->activeWindow() )->object() ); +    replaceDialog->comboFind->setFocus(); +    replaceDialog->comboFind->lineEdit()->selectAll(); +} + +void MainWindow::searchGotoLine() +{ +    if ( !qWorkspace()->activeWindow() || +	 !::tqqt_cast<SourceEditor*>(qWorkspace()->activeWindow()) ) +	 return; + +    if ( !gotoLineDialog ) +	gotoLineDialog = new GotoLineDialog( this, 0, FALSE ); +    gotoLineDialog->show(); +    gotoLineDialog->raise(); +    gotoLineDialog->setEditor( ( (SourceEditor*)qWorkspace()->activeWindow() )->editorInterface() ); +    gotoLineDialog->spinLine->setFocus(); +    gotoLineDialog->spinLine->setMinValue( 1 ); +    gotoLineDialog->spinLine->setMaxValue( ( (SourceEditor*)qWorkspace()->activeWindow() )->numLines() ); +    gotoLineDialog->spinLine->selectAll(); +} + +void MainWindow::toolsCustomWidget() +{ +    statusMessage( i18n( "Edit custom widgets..." ) ); +    CustomWidgetEditor edit( this, this ); +    edit.exec(); +    rebuildCustomWidgetGUI(); +    statusBar()->clear(); +} + +void MainWindow::toolsConfigure() +{ +    ConfigToolboxDialog dlg( this ); +    if ( dlg.exec() != TQDialog::Accepted ) +	return; +    rebuildCommonWidgetsToolBoxPage(); +} + +void MainWindow::showStartDialog() +{ +    if ( singleProjectMode() ) +	return; +    for ( int i = 1; i < tqApp->argc(); ++i ) { +	TQString arg = tqApp->argv()[i]; +	if ( arg[0] != '-' ) +	    return; +    } +    StartDialog *sd = new StartDialog( this, templatePath() ); +    sd->setRecentlyFiles( recentlyFiles ); +    sd->setRecentlyProjects( recentlyProjects ); +    sd->exec(); +    shStartDialog = sd->showDialogInFuture(); +} | 
