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/wizardeditorimpl.cpp | |
| parent | afb74575caf7dd8ccb6c235b1c8d788e320c19da (diff) | |
| download | tdevelop-722ce1efbac31c61b1d4b13f7e075c9f311e3e73.tar.gz tdevelop-722ce1efbac31c61b1d4b13f7e075c9f311e3e73.zip | |
Finish renaming tdevelop components
Diffstat (limited to 'tdevdesigner/designer/wizardeditorimpl.cpp')
| -rw-r--r-- | tdevdesigner/designer/wizardeditorimpl.cpp | 253 | 
1 files changed, 253 insertions, 0 deletions
| diff --git a/tdevdesigner/designer/wizardeditorimpl.cpp b/tdevdesigner/designer/wizardeditorimpl.cpp new file mode 100644 index 00000000..c4c4f83d --- /dev/null +++ b/tdevdesigner/designer/wizardeditorimpl.cpp @@ -0,0 +1,253 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS.  All rights reserved. +** +** This file is part of TQt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition +** licenses may use this file in accordance with the TQt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +**   information about TQt Commercial License Agreements. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "wizardeditorimpl.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "command.h" +#include "listboxdnd.h" +#include "listboxrename.h" + +#include <tqwizard.h> +#include <tqlistbox.h> +#include <tqpushbutton.h> +#include <tqinputdialog.h> + +#include <tdelocale.h> + +WizardEditor::WizardEditor( TQWidget *parent, TQWizard *w, FormWindow *fw ) +    : WizardEditorBase( parent, 0 ), formwindow( fw ), wizard( w ), draggedItem( 0 ) +{ +    connect( buttonHelp, TQT_SIGNAL( clicked() ), MainWindow::self, TQT_SLOT( showDialogHelp() ) ); +    fillListBox(); + +    // Add drag and drop +    ListBoxDnd *listBoxDnd = new ListBoxDnd( listBox ); +    listBoxDnd->setDragMode( ListBoxDnd::Internal | ListBoxDnd::Move ); +    TQObject::connect( listBoxDnd, TQT_SIGNAL( dropped( TQListBoxItem * ) ), +		      listBoxDnd, TQT_SLOT( confirmDrop( TQListBoxItem * ) ) ); + +    TQObject::connect( listBoxDnd, TQT_SIGNAL( dragged( TQListBoxItem * ) ), +		      this, TQT_SLOT( itemDragged( TQListBoxItem * ) ) ); +    TQObject::connect( listBoxDnd, TQT_SIGNAL( dropped( TQListBoxItem * ) ), +		      this, TQT_SLOT( itemDropped( TQListBoxItem * ) ) ); + +    // Add in-place rename +    new ListBoxRename( listBox ); +} + +WizardEditor::~WizardEditor() +{ +    commands.setAutoDelete( TRUE ); +} + +void WizardEditor::okClicked() +{ +    applyClicked(); +    accept(); +} + +void WizardEditor::cancelClicked() +{ +    reject(); +} + +void WizardEditor::applyClicked() +{ +    if ( commands.isEmpty() ) return; + +    // schedule macro command +    MacroCommand* cmd = new MacroCommand( i18n( "Edit Wizard Pages" ), formwindow, commands ); +    formwindow->commandHistory()->addCommand( cmd ); +    cmd->execute(); + +    // clear command list +    commands.clear(); + +    // fix wizard buttons +    for ( int i = 0; i < wizard->pageCount(); i++ ) { + +	TQWidget * page = wizard->page( i ); +	if ( i == 0 ) { // first page + +	    wizard->setBackEnabled( page, FALSE ); +	    wizard->setNextEnabled( page, TRUE ); +	} +	else if ( i == wizard->pageCount() - 1 ) { // last page + +	    wizard->setBackEnabled( page, TRUE ); +	    wizard->setNextEnabled( page, FALSE ); +	} +	else { + +	    wizard->setBackEnabled( page, TRUE ); +	    wizard->setNextEnabled( page, TRUE ); +	} +	wizard->setFinishEnabled( page, FALSE ); +    } + +    // update listbox +    int index = listBox->currentItem(); +    fillListBox(); +    listBox->setCurrentItem( index ); + +    // show current page +    wizard->showPage( wizard->page( 0 ) ); +} + +void WizardEditor::helpClicked() +{ + +} + +void WizardEditor::addClicked() +{ +    int index = listBox->currentItem() + 1; +    // update listbox +    listBox->insertItem( i18n( "Page" ), index ); + +    // schedule add command +    AddWizardPageCommand *cmd = new AddWizardPageCommand( i18n( "Add Page to %1" ).arg( wizard->name() ), +							  formwindow, wizard, "Page", index, FALSE); +    commands.append( cmd ); + +    // update buttons +    updateButtons(); +} + +void WizardEditor::removeClicked() +{ +    if ( listBox->count() < 2 ) return; + +    int index = listBox->currentItem(); + +    // update listbox +    listBox->removeItem( index ); + +    // schedule remove command +    DeleteWizardPageCommand *cmd = new DeleteWizardPageCommand( i18n( "Delete Page %1 of %2" ) +								.arg( listBox->text( index ) ).arg( wizard->name() ), +								formwindow, wizard, index, FALSE ); +    commands.append( cmd ); + +    // update buttons +    updateButtons(); +} + +void WizardEditor::upClicked() +{ +    int index1 = listBox->currentItem(); +    int index2 = index1 - 1; + +    // swap listbox items +    TQString item1 = listBox->text( index1 ); +    listBox->removeItem( index1 ); +    listBox->insertItem( item1, index2 ); +    listBox->setCurrentItem( index2 ); + +    // schedule swap command +    SwapWizardPagesCommand *cmd = new SwapWizardPagesCommand( i18n( "Swap Pages %1 and %2 of %3" ).arg( index1 ).arg( index2 ) +							     .arg( wizard->name() ), formwindow, wizard, index1, index2); +    commands.append( cmd ); + +    // update buttons +    updateButtons(); +} + +void WizardEditor::downClicked() +{ +    int index1 = listBox->currentItem(); +    int index2 = index1 + 1; + +    // swap listbox items +    TQString item1 = listBox->text( index1 ); +    listBox->removeItem( index1 ); +    listBox->insertItem( item1, index2 ); +    listBox->setCurrentItem( index2 ); + +    // schedule swap command +    SwapWizardPagesCommand *cmd = new SwapWizardPagesCommand( i18n( "Swap Pages %1 and %2 of %3" ).arg( index1 ).arg( index2 ).arg( wizard->name() ), formwindow, wizard, index2, index1); +    commands.append( cmd ); + +    // update buttons +    updateButtons(); +} + +void WizardEditor::fillListBox() +{ +    listBox->clear(); + +    if ( !wizard ) return; +    for ( int i = 0; i < wizard->pageCount(); i++ ) +	listBox->insertItem( wizard->title( wizard->page( i ) ) ); + +    updateButtons(); +} + +void WizardEditor::itemHighlighted( int ) +{ +    updateButtons(); +} + +void WizardEditor::itemSelected( int index ) +{ +    if ( index < 0 ) return; +    // Called when TQt::Key_Enter was pressed. +    // ListBoxRename has renamed the list item, so we only need to rename the page to the same name. +    TQString pn( i18n( "Rename page %1 of %2" ).arg( wizard->title( wizard->page( index ) ) ).arg( wizard->name() ) ); +	RenameWizardPageCommand *cmd = new RenameWizardPageCommand( pn, formwindow, wizard, index, listBox->text( index ) ); +	commands.append( cmd ); +} + +void WizardEditor::updateButtons() +{ +    int index = listBox->currentItem(); + +    buttonUp->setEnabled( index > 0 ); +    buttonDown->setEnabled( index < (int)listBox->count() - 1 ); +    buttonRemove->setEnabled( index >= 0 ); + +    if ( listBox->count() < 2 ) +	buttonRemove->setEnabled( FALSE ); +} + +void WizardEditor::itemDragged( TQListBoxItem * i ) +{ +    // Store item index +    draggedItem = listBox->index( i ); +} + +void WizardEditor::itemDropped( TQListBoxItem * i ) +{ +    if ( draggedItem < 0 ) return; +    // The reorder the pages acording to the listBox list of items +    // Assumes that only one item has been moved. +    int droppedItem = listBox->index( i ); + +    //tqDebug( "Moving page %d -> %d", draggedItem, droppedItem ); +    MoveWizardPageCommand *cmd = new MoveWizardPageCommand( i18n( "Move Page %1 to %2 in %3" ).arg( draggedItem ).arg( droppedItem ).arg( wizard->name() ), formwindow, wizard, draggedItem, droppedItem ); +    commands.append( cmd ); +} | 
