/********************************************************************** ** ** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved. ** ** This file is part of Qt Designer. ** ** This file may be used under the terms of the GNU General ** Public License versions 2.0 or 3.0 as published by the Free ** Software Foundation and appearing in the files LICENSE.GPL2 ** and LICENSE.GPL3 included in the packaging of this file. ** Alternatively you may (at your option) use any later version ** of the GNU General Public License if such license has been ** publicly approved by Trolltech ASA (or its successors, if any) ** and the KDE Free Qt Foundation. ** ** Please review the following information to ensure GNU General ** Public Licensing requirements will be met: ** http://trolltech.com/products/qt/licenses/licensing/opensource/. ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http://trolltech.com/products/qt/licenses/licensing/licensingoverview ** or contact the sales department at sales@trolltech.com. ** ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Commercial License Agreement provided with ** the Software. ** ** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted ** herein. ** **********************************************************************/ void MainWindowWizardBase::init() { dIface = 0; dfw = 0; widget = 0; setHelpEnabled( menuToolbarPage, FALSE ); setHelpEnabled( toolbarsPage, FALSE ); setHelpEnabled( finishPage, FALSE ); setFinishEnabled( finishPage, TRUE ); } void MainWindowWizardBase::destroy() { if ( dIface ) dIface->release(); } void MainWindowWizardBase::currentSettingChanged() { bool appr = checkFileToolbar->isChecked() || checkEditToolbar->isChecked() || checkHelpToolbar->isChecked(); setAppropriate( toolbarsPage, appr ); } void MainWindowWizardBase::setupToolbarPage() { if ( checkFileToolbar->isChecked() ) comboToolbar->insertItem( tr( "File" ) ); if ( checkEditToolbar->isChecked() ) comboToolbar->insertItem( tr( "Edit" ) ); if ( checkHelpToolbar->isChecked() ) comboToolbar->insertItem( tr( "Help" ) ); } void MainWindowWizardBase::toolbarActionDown() { if ( listToolbar->currentItem() < 0 || listToolbar->currentItem() >= (int)listToolbar->count() - 1 ) return; int next = listToolbar->currentItem() + 1; QString tmp = listToolbar->text( next ); listToolbar->changeItem( listToolbar->text( next - 1 ), next ); listToolbar->changeItem( tmp, next - 1 ); listToolbar->setCurrentItem( next ); } void MainWindowWizardBase::toolbarActionUp() { if ( listToolbar->currentItem() < 1 || listToolbar->currentItem() > (int)listToolbar->count() - 1 ) return; int prev = listToolbar->currentItem() - 1; QString tmp = listToolbar->text( prev ); listToolbar->changeItem( listToolbar->text( prev + 1 ), prev ); listToolbar->changeItem( tmp, prev + 1 ); listToolbar->setCurrentItem( prev ); } void MainWindowWizardBase::toolbarAddAction() { if ( listToolbarActions->text( listToolbarActions->currentItem() ).isEmpty() ) return; listToolbar->insertItem( listToolbarActions->text( listToolbarActions->currentItem() ) ); listToolbar->setCurrentItem( listToolbar->count() - 1 ); listToolbarActions->setCurrentItem( listToolbarActions->currentItem() + 1 ); } void MainWindowWizardBase::toolbarRemoveAction() { listToolbar->removeItem( listToolbar->currentItem() ); } static void devNull( QtMsgType, const char * ) { } void MainWindowWizardBase::accept() { if ( !dfw || !dIface || !widget ) { QWizard::accept(); return; } setFinishEnabled( finishPage, FALSE ); QPixmap pix; QDict actions; QPtrList usedActions; QtMsgHandler oldMsgHandler = qInstallMsgHandler( devNull ); getPixmap( "filenew", pix ); QAction *fileNewAction = dfw->createAction( tr( "New" ), pix, tr( "&New" ), CTRL + Key_N, 0, "fileNewAction" ); actions.insert( tr( "New" ), fileNewAction ); getPixmap( "fileopen", pix ); QAction *fileOpenAction = dfw->createAction( tr( "Open" ), pix, tr( "&Open..." ), CTRL + Key_O, 0, "fileOpenAction" ); actions.insert( tr( "Open" ), fileOpenAction ); getPixmap( "filesave", pix ); QAction *fileSaveAction = dfw->createAction( tr( "Save" ), pix, tr( "&Save" ), CTRL + Key_S, 0, "fileSaveAction" ); actions.insert( tr( "Save" ), fileSaveAction ); QAction *fileSaveAsAction = dfw->createAction( tr( "Save As" ), QIconSet(), tr( "Save &As..." ), 0, 0, "fileSaveAsAction" ); actions.insert( tr( "Save As" ), fileSaveAsAction ); getPixmap( "print", pix ); QAction *filePrintAction = dfw->createAction( tr( "Print" ), pix, tr( "&Print..." ), CTRL + Key_P, 0, "filePrintAction" ); actions.insert( tr( "Print" ), filePrintAction ); QAction *fileExitAction = dfw->createAction( tr( "Exit" ), QIconSet(), tr( "E&xit" ), 0, 0, "fileExitAction" ); actions.insert( tr( "Exit" ), fileExitAction ); getPixmap( "undo", pix ); QAction *editUndoAction = dfw->createAction( tr( "Undo" ), pix, tr( "&Undo" ), CTRL + Key_Z, 0, "editUndoAction" ); actions.insert( tr( "Undo" ), editUndoAction ); getPixmap( "redo", pix ); QAction *editRedoAction = dfw->createAction( tr( "Redo" ), pix, tr( "&Redo" ), CTRL + Key_Y, 0, "editRedoAction" ); actions.insert( tr( "Redo" ), editRedoAction ); getPixmap( "editcut", pix ); QAction *editCutAction = dfw->createAction( tr( "Cut" ), pix, tr( "Cu&t" ), CTRL + Key_X, 0, "editCutAction" ); actions.insert( tr( "Cut" ), editCutAction ); getPixmap( "editcopy", pix ); QAction *editCopyAction = dfw->createAction( tr( "Copy" ), pix, tr( "&Copy" ), CTRL + Key_C, 0, "editCopyAction" ); actions.insert( tr( "Copy" ), editCopyAction ); getPixmap( "editpaste", pix ); QAction *editPasteAction = dfw->createAction( tr( "Paste" ), pix, tr( "&Paste" ), CTRL + Key_V, 0, "editPasteAction" ); actions.insert( tr( "Paste" ), editPasteAction ); getPixmap( "searchfind", pix ); QAction *editFindAction = dfw->createAction( tr( "Find" ), pix, tr( "&Find..." ), CTRL + Key_F, 0, "editFindAction" ); actions.insert( tr( "Find" ), editFindAction ); QAction *helpAboutAction = dfw->createAction( tr( "About" ), QIconSet(), tr( "&About" ), 0, 0, "helpAboutAction" ); actions.insert( tr( "About" ), helpAboutAction ); QAction *helpContentsAction = dfw->createAction( tr( "Contents" ), QIconSet(), tr( "&Contents..." ), 0, 0, "helpContentsAction" ); actions.insert( tr( "Contents" ), helpContentsAction ); QAction *helpIndexAction = dfw->createAction( tr( "Index" ), QIconSet(), tr( "&Index..." ), 0, 0, "helpIndexAction" ); actions.insert( tr( "Index" ), helpIndexAction ); if ( checkFileMenu->isChecked() ) { dfw->addMenu( "&File", "fileMenu" ); dfw->addMenuAction( "fileMenu", fileNewAction ); dfw->addMenuAction( "fileMenu", fileOpenAction ); dfw->addMenuAction( "fileMenu", fileSaveAction ); dfw->addMenuAction( "fileMenu", fileSaveAsAction ); dfw->addMenuSeparator( "fileMenu" ); dfw->addMenuAction( "fileMenu", filePrintAction ); dfw->addMenuSeparator( "fileMenu" ); dfw->addMenuAction( "fileMenu", fileExitAction ); dfw->addAction( fileNewAction ); dfw->addAction( fileOpenAction ); dfw->addAction( fileSaveAction ); dfw->addAction( fileSaveAsAction ); dfw->addAction( filePrintAction ); dfw->addAction( fileExitAction ); usedActions.append( fileNewAction ); usedActions.append( fileOpenAction ); usedActions.append( fileSaveAction ); usedActions.append( fileSaveAsAction ); usedActions.append( filePrintAction ); usedActions.append( fileExitAction ); } if ( checkEditMenu->isChecked() ) { dfw->addMenu( "&Edit", "editMenu" ); dfw->addMenuAction( "editMenu", editUndoAction ); dfw->addMenuAction( "editMenu", editRedoAction ); dfw->addMenuSeparator( "editMenu" ); dfw->addMenuAction( "editMenu", editCutAction ); dfw->addMenuAction( "editMenu", editCopyAction ); dfw->addMenuAction( "editMenu", editPasteAction ); dfw->addMenuSeparator( "editMenu" ); dfw->addMenuAction( "editMenu", editFindAction ); dfw->addAction( editUndoAction ); dfw->addAction( editRedoAction ); dfw->addAction( editCutAction ); dfw->addAction( editCopyAction ); dfw->addAction( editPasteAction ); dfw->addAction( editFindAction ); usedActions.append( editUndoAction ); usedActions.append( editRedoAction ); usedActions.append( editCutAction ); usedActions.append( editCopyAction ); usedActions.append( editPasteAction ); usedActions.append( editFindAction ); } if ( checkHelpMenu->isChecked() ) { dfw->addMenu( "&Help", "helpMenu" ); dfw->addMenuAction( "helpMenu", helpContentsAction ); dfw->addMenuAction( "helpMenu", helpIndexAction ); dfw->addMenuSeparator( "helpMenu" ); dfw->addMenuAction( "helpMenu", helpAboutAction ); dfw->addAction( helpContentsAction ); dfw->addAction( helpIndexAction ); dfw->addAction( helpAboutAction ); usedActions.append( helpIndexAction ); usedActions.append( helpContentsAction ); usedActions.append( helpAboutAction ); } if ( listToolbar->count() > 0 && appropriate( toolbarsPage ) ) { dfw->addToolBar( "Tools", "toolBar" ); for ( int i = 0; i < (int)listToolbar->count(); ++i ) { if ( listToolbar->text( i ) == tr( "" ) ) { dfw->addToolBarSeparator( "toolBar" ); continue; } QAction *a = actions.find( listToolbar->text( i ) ); if ( !a ) continue; dfw->addToolBarAction( "toolBar", a ); dfw->addAction( a ); if ( usedActions.findRef( a ) == -1 ) usedActions.append( a ); } } for ( QAction *ac = usedActions.first(); ac; ac = usedActions.next() ) { if ( QString( ac->name() ).find( "file" ) != -1 && checkCreateConnectionsFile->isChecked() || QString( ac->name() ).find( "edit" ) != -1 && checkCreateConnectionsEdit->isChecked() || QString( ac->name() ).find( "help" ) != -1 && checkCreateConnectionsHelp->isChecked() ) { QString slot = ac->name(); slot.remove( slot.length() - 6, 6 ); slot += "()"; dfw->addFunction( slot.latin1(), "virtual", "public", "slot", dIface->currentProject()->language(), "void" ); dfw->addConnection( ac, "activated()", widget, slot ); } } qInstallMsgHandler( oldMsgHandler ); QWizard::accept(); } void MainWindowWizardBase::currentToolbarChanged( const QString & s ) { if ( s == tr( "File" ) ) { listToolbarActions->clear(); listToolbarActions->insertItem( tr( "New" ) ); listToolbarActions->insertItem( tr( "Open" ) ); listToolbarActions->insertItem( tr( "Save" ) ); listToolbarActions->insertItem( tr( "Save As" ) ); listToolbarActions->insertItem( tr( "Print" ) ); listToolbarActions->insertItem( tr( "Exit" ) ); } else if ( s == tr( "Edit" ) ) { listToolbarActions->clear(); listToolbarActions->insertItem( tr( "Undo" ) ); listToolbarActions->insertItem( tr( "Redo" ) ); listToolbarActions->insertItem( tr( "Cut" ) ); listToolbarActions->insertItem( tr( "Copy" ) ); listToolbarActions->insertItem( tr( "Paste" ) ); listToolbarActions->insertItem( tr( "Find" ) ); } else if ( s == tr( "Help" ) ) { listToolbarActions->clear(); listToolbarActions->insertItem( tr( "Contents" ) ); listToolbarActions->insertItem( tr( "Index" ) ); listToolbarActions->insertItem( tr( "About" ) ); } listToolbarActions->insertItem( "" ); listToolbarActions->setCurrentItem( 0 ); } void MainWindowWizardBase::getPixmap( const QString & n, QPixmap & pix ) { QString name = n + ".png"; pix = QPixmap::fromMimeSource( name ); DesignerProject *pro = dIface->currentProject(); if ( !pro || pro->projectName() == "" ) return; pro->pixmapCollection()->addPixmap( pix, n, FALSE ); } void MainWindowWizardBase::pageSelected( const QString & ) { if ( currentPage() == toolbarsPage ) { comboToolbar->clear(); setupToolbarPage(); listToolbarActions->clear(); currentToolbarChanged( comboToolbar->text( comboToolbar->currentItem() ) ); } } void MainWindowWizardBase::setAppInterface( QUnknownInterface * iface, DesignerFormWindow * fw, QWidget * w ) { DesignerInterface *d = 0; iface->queryInterface( IID_Designer, (QUnknownInterface**)&d ); dIface = d; dfw = fw; widget = w; }