diff options
Diffstat (limited to 'tdevdesigner/designer/listboxeditorimpl.cpp')
| -rw-r--r-- | tdevdesigner/designer/listboxeditorimpl.cpp | 245 | 
1 files changed, 245 insertions, 0 deletions
| diff --git a/tdevdesigner/designer/listboxeditorimpl.cpp b/tdevdesigner/designer/listboxeditorimpl.cpp new file mode 100644 index 00000000..01dfa64e --- /dev/null +++ b/tdevdesigner/designer/listboxeditorimpl.cpp @@ -0,0 +1,245 @@ +/********************************************************************** +** 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 "listboxeditorimpl.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "pixmapchooser.h" +#include "command.h" +#include "listboxdnd.h" +#include "listboxrename.h" + +#include <klineedit.h> +#include <tqlabel.h> +#include <tqlistbox.h> +#include <tqpushbutton.h> +#include <tqcheckbox.h> + +#include <tdelocale.h> + +ListBoxEditor::ListBoxEditor( TQWidget *parent, TQWidget *editWidget, FormWindow *fw ) +    : ListBoxEditorBase( parent, 0, TRUE ), formwindow( fw ) +{ +    connect( helpButton, TQT_SIGNAL( clicked() ), MainWindow::self, TQT_SLOT( showDialogHelp() ) ); +    listbox = (TQListBox*)editWidget; + +    itemText->setText( "" ); +    itemText->setEnabled( FALSE ); +    itemPixmap->setText( "" ); +    itemChoosePixmap->setEnabled( FALSE ); +    itemDeletePixmap->setEnabled( FALSE ); + +    TQListBoxItem *i = 0; +    for ( i = listbox->firstItem(); i; i = i->next() ) { +	if ( i->pixmap() ) +	    (void)new TQListBoxPixmap( preview, *i->pixmap(), i->text() ); +	else +	    (void)new TQListBoxText( preview, i->text() ); +    } + +    if ( preview->firstItem() ) +	preview->setCurrentItem( preview->firstItem() ); + +    ListBoxDnd *editorDnd = new ListBoxDnd( preview ); +    editorDnd->setDragMode( ListBoxDnd::Internal | ListBoxDnd::Move ); +    TQObject::connect( editorDnd, TQT_SIGNAL( dropped( TQListBoxItem * ) ), +		      editorDnd, TQT_SLOT( confirmDrop( TQListBoxItem * ) ) ); + +    ListBoxRename *editorRename = new ListBoxRename( preview ); + +    TQObjectList *l = parent->queryList( TQLINEEDIT_OBJECT_NAME_STRING, "itemText" ); +    TQObjectListIt it( *l ); +    TQObject *obj; +    while ( (obj = it.current()) != 0 ) { +        ++it; +	TQObject::connect( editorRename, +			  TQT_SIGNAL( itemTextChanged( const TQString & ) ), +			  obj, +			  TQT_SLOT( setText( const TQString & ) ) ); +    } +    delete l; + +} + +void ListBoxEditor::insertNewItem() +{ +    TQListBoxItem *i = new TQListBoxText( preview, i18n("New Item") ); +    preview->setCurrentItem( i ); +    preview->setSelected( i, TRUE ); +    itemText->setFocus(); +    itemText->selectAll(); +} + +void ListBoxEditor::deleteCurrentItem() +{ +    delete preview->item( preview->currentItem() ); +    if ( preview->currentItem() != -1 ) +	preview->setSelected( preview->currentItem(), TRUE ); +} + +void ListBoxEditor::currentItemChanged( TQListBoxItem *i ) +{ +    itemText->blockSignals( TRUE ); +    itemText->setText( "" ); +    itemPixmap->setText( "" ); +    itemText->blockSignals( FALSE ); + +    if ( !i ) { +	itemText->setEnabled( FALSE ); +	itemChoosePixmap->setEnabled( FALSE ); +	itemDeletePixmap->setEnabled( FALSE ); +	return; +    } + +    itemText->blockSignals( TRUE ); +    itemText->setEnabled( TRUE ); +    itemChoosePixmap->setEnabled( TRUE ); +    itemDeletePixmap->setEnabled( i->pixmap() && !i->pixmap()->isNull() ); + +    itemText->setText( i->text() ); +    if ( i->pixmap() ) +	itemPixmap->setPixmap( *i->pixmap() ); +    itemText->blockSignals( FALSE ); +} + +void ListBoxEditor::currentTextChanged( const TQString &txt ) +{ +    if ( preview->currentItem() == -1 ) +	return; + +    preview->blockSignals( TRUE ); +    if ( preview->item( preview->currentItem() )->pixmap() ) +	preview->changeItem( *preview->item( preview->currentItem() )->pixmap(), txt, preview->currentItem() ); +    else +	preview->changeItem( txt, preview->currentItem() ); +    preview->blockSignals( FALSE ); +} + +void ListBoxEditor::okClicked() +{ +    applyClicked(); +    accept(); +} + +void ListBoxEditor::cancelClicked() +{ +    reject(); +} + +void ListBoxEditor::applyClicked() +{ +    TQListBoxItem *i = 0; +    TQValueList<PopulateListBoxCommand::Item> items; +    for ( i = preview->firstItem(); i; i = i->next() ) { +	PopulateListBoxCommand::Item item; +	if ( i->pixmap() ) +	    item.pix = *i->pixmap(); +	item.text = i->text(); +	items.append( item ); +    } + +    PopulateListBoxCommand *cmd = new PopulateListBoxCommand( i18n( "Edit the Items of '%1'" ).arg( listbox->name() ), +							      formwindow, listbox, items ); +    cmd->execute(); +    formwindow->commandHistory()->addCommand( cmd ); +} + +void ListBoxEditor::choosePixmap() +{ +    if ( preview->currentItem() == -1 ) +	return; + +    TQPixmap pix; +    if ( preview->item( preview->currentItem() )->pixmap() ) +    	pix = qChoosePixmap( this, formwindow, *preview->item( preview->currentItem() )->pixmap() ); +    else +    	pix = qChoosePixmap( this, formwindow, TQPixmap() ); + +    if ( pix.isNull() ) +	return; + +    TQString txt = preview->item( preview->currentItem() )->text(); +    preview->changeItem( pix, txt, preview->currentItem() ); +    itemDeletePixmap->setEnabled( TRUE ); +} + +void ListBoxEditor::moveItemUp() +{ +    if ( preview->currentItem() < 1 ) +	return; + +    TQListBoxItem *i = preview->item( preview->currentItem() ); +    bool hasPix = (i->pixmap() != 0); +    TQPixmap pix; +    if ( hasPix ) +	pix = *i->pixmap(); +    TQString txt = i->text(); + +    TQListBoxItem *p = i->prev(); +    if ( p->pixmap() ) +	preview->changeItem( *p->pixmap(), p->text(), preview->currentItem() ); +    else +	preview->changeItem( p->text(), preview->currentItem() ); + +    if ( hasPix ) +	preview->changeItem( pix, txt, preview->currentItem() - 1 ); +    else +	preview->changeItem( txt, preview->currentItem() - 1 ); +} + +void ListBoxEditor::moveItemDown() +{ +    if ( preview->currentItem() == -1 || preview->currentItem() > (int)preview->count() - 2 ) +	return; + +    TQListBoxItem *i = preview->item( preview->currentItem() ); +    bool hasPix = (i->pixmap() != 0); +    TQPixmap pix; +    if ( hasPix ) +	pix = *i->pixmap(); +    TQString txt = i->text(); + +    TQListBoxItem *n = i->next(); +    if ( n->pixmap() ) +	preview->changeItem( *n->pixmap(), n->text(), preview->currentItem() ); +    else +	preview->changeItem( n->text(), preview->currentItem() ); + +    if ( hasPix ) +	preview->changeItem( pix, txt, preview->currentItem() + 1 ); +    else +	preview->changeItem( txt, preview->currentItem() + 1 ); +} + +void ListBoxEditor::deletePixmap() +{ +    if ( preview->currentItem() == -1 ) +	return; + +    TQListBoxItem *i = preview->item( preview->currentItem() ); +    preview->changeItem( i->text(), preview->currentItem() ); +    itemDeletePixmap->setEnabled( FALSE ); +} | 
