diff options
Diffstat (limited to 'tqtinterface/qt4/tools/linguist/linguist/phrasebookbox.cpp')
-rw-r--r-- | tqtinterface/qt4/tools/linguist/linguist/phrasebookbox.cpp | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/tqtinterface/qt4/tools/linguist/linguist/phrasebookbox.cpp b/tqtinterface/qt4/tools/linguist/linguist/phrasebookbox.cpp new file mode 100644 index 0000000..2c0c640 --- /dev/null +++ b/tqtinterface/qt4/tools/linguist/linguist/phrasebookbox.cpp @@ -0,0 +1,244 @@ +/********************************************************************** +** Copyright (C) 2000-2008 Trolltech ASA. All rights reserved. +** +** This file is part of TQt Linguist. +** +** 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 TQt 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 TQt Commercial 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 WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +/* TRANSLATOR PhraseBookBox + + Go to Phrase > Edit Phrase Book... The dialog that pops up is a + PhraseBookBox. +*/ + +#include "phrasebookbox.h" +#include "phraselv.h" + +#include <tqapplication.h> +#include <tqlabel.h> +#include <tqlayout.h> +#include <tqlineedit.h> +#include <tqmessagebox.h> +#include <tqpushbutton.h> +#include <tqwhatsthis.h> + +PhraseBookBox::PhraseBookBox( const TQString& filename, + const PhraseBook& phraseBook, TQWidget *tqparent, + const char *name, bool modal ) + : TQDialog( tqparent, name, modal ), fn( filename ), pb( phraseBook ) +{ + TQGridLayout *gl = new TQGridLayout( this, 4, 3, 11, 11, + "phrase book outer tqlayout" ); + TQVBoxLayout *bl = new TQVBoxLayout( 6, "phrase book button tqlayout" ); + + sourceLed = new TQLineEdit( this, "source line edit" ); + TQLabel *source = new TQLabel( sourceLed, tr("S&ource phrase:"), this, + "source label" ); + targetLed = new TQLineEdit( this, "target line edit" ); + TQLabel *target = new TQLabel( targetLed, tr("&Translation:"), this, + "target label" ); + definitionLed = new TQLineEdit( this, "definition line edit" ); + TQLabel *definition = new TQLabel( definitionLed, tr("&Definition:"), this, + "target label" ); + lv = new PhraseLV( this, "phrase book list view" ); + + newBut = new TQPushButton( tr("&New Phrase"), this ); + newBut->setDefault( TRUE ); + + removeBut = new TQPushButton( tr("&Remove Phrase"), this ); + removeBut->setEnabled( FALSE ); + TQPushButton *saveBut = new TQPushButton( tr("&Save"), this ); + TQPushButton *closeBut = new TQPushButton( tr("Close"), this ); + + gl->addWidget( source, 0, 0 ); + gl->addWidget( sourceLed, 0, 1 ); + gl->addWidget( target, 1, 0 ); + gl->addWidget( targetLed, 1, 1 ); + gl->addWidget( definition, 2, 0 ); + gl->addWidget( definitionLed, 2, 1 ); + gl->addMultiCellWidget( lv, 3, 3, 0, 1 ); + gl->addMultiCell( bl, 0, 3, 2, 2 ); + + bl->addWidget( newBut ); + bl->addWidget( removeBut ); + bl->addWidget( saveBut ); + bl->addWidget( closeBut ); + bl->addStretch( 1 ); + + connect( sourceLed, TQT_SIGNAL(textChanged(const TQString&)), + this, TQT_SLOT(sourceChanged(const TQString&)) ); + connect( targetLed, TQT_SIGNAL(textChanged(const TQString&)), + this, TQT_SLOT(targetChanged(const TQString&)) ); + connect( definitionLed, TQT_SIGNAL(textChanged(const TQString&)), + this, TQT_SLOT(definitionChanged(const TQString&)) ); + connect( lv, TQT_SIGNAL(selectionChanged(TQListViewItem *)), + this, TQT_SLOT(selectionChanged(TQListViewItem *)) ); + connect( newBut, TQT_SIGNAL(clicked()), this, TQT_SLOT(newPhrase()) ); + connect( removeBut, TQT_SIGNAL(clicked()), this, TQT_SLOT(removePhrase()) ); + connect( saveBut, TQT_SIGNAL(clicked()), this, TQT_SLOT(save()) ); + connect( closeBut, TQT_SIGNAL(clicked()), this, TQT_SLOT(accept()) ); + + PhraseBook::ConstIterator it; + for ( it = phraseBook.begin(); it != phraseBook.end(); ++it ) + (void) new PhraseLVI( lv, (*it) ); + enableDisable(); + + TQWhatsThis::add( this, tr("This window allows you to add, modify, or delete" + " phrases in a phrase book.") ); + TQWhatsThis::add( sourceLed, tr("This is the phrase in the source" + " language.") ); + TQWhatsThis::add( targetLed, tr("This is the phrase in the target language" + " corresponding to the source phrase.") ); + TQWhatsThis::add( definitionLed, tr("This is a definition for the source" + " phrase.") ); + TQWhatsThis::add( newBut, tr("Click here to add the phrase to the phrase" + " book.") ); + TQWhatsThis::add( removeBut, tr("Click here to remove the phrase from the" + " phrase book.") ); + TQWhatsThis::add( saveBut, tr("Click here to save the changes made.") ); + TQWhatsThis::add( closeBut, tr("Click here to close this window.") ); +} + +void PhraseBookBox::keyPressEvent( TQKeyEvent *ev ) +{ + if ( ev->key() == Qt::Key_Down || ev->key() == Qt::Key_Up || + ev->key() == TQt::Key_Next || ev->key() == TQt::Key_Prior ) + TQApplication::sendEvent( lv, + new TQKeyEvent(ev->type(), ev->key(), ev->ascii(), ev->state(), + ev->text(), ev->isAutoRepeat(), ev->count()) ); + else + TQDialog::keyPressEvent( ev ); +} + +void PhraseBookBox::newPhrase() +{ + Phrase ph; + ph.setSource( NewPhrase ); + TQListViewItem *item = new PhraseLVI( lv, ph ); + selectItem( item ); +} + +void PhraseBookBox::removePhrase() +{ + TQListViewItem *item = lv->currentItem(); + TQListViewItem *next = item->itemBelow() != 0 ? item->itemBelow() + : item->itemAbove(); + delete item; + if ( next != 0 ) + selectItem( next ); + enableDisable(); +} + +void PhraseBookBox::save() +{ + pb.clear(); + TQListViewItem *item = lv->firstChild(); + while ( item != 0 ) { + if ( !item->text(PhraseLVI::SourceTextShown).isEmpty() && + item->text(PhraseLVI::SourceTextShown) != NewPhrase ) + pb.append( Phrase(((PhraseLVI *) item)->phrase()) ); + item = item->nextSibling(); + } + if ( !pb.save( fn ) ) + TQMessageBox::warning( this, tr("TQt Linguist"), + tr("Cannot save phrase book '%1'.").arg(fn) ); +} + +void PhraseBookBox::sourceChanged( const TQString& source ) +{ + if ( lv->currentItem() != 0 ) { + lv->currentItem()->setText( PhraseLVI::SourceTextShown, + source.stripWhiteSpace() ); + lv->currentItem()->setText( PhraseLVI::SourceTextOriginal, source ); + lv->sort(); + lv->ensureItemVisible( lv->currentItem() ); + } +} + +void PhraseBookBox::targetChanged( const TQString& target ) +{ + if ( lv->currentItem() != 0 ) { + lv->currentItem()->setText( PhraseLVI::TargetTextShown, + target.stripWhiteSpace() ); + lv->currentItem()->setText( PhraseLVI::TargetTextOriginal, target ); + lv->sort(); + lv->ensureItemVisible( lv->currentItem() ); + } +} + +void PhraseBookBox::definitionChanged( const TQString& definition ) +{ + if ( lv->currentItem() != 0 ) { + lv->currentItem()->setText( PhraseLVI::DefinitionText, definition ); + lv->sort(); + lv->ensureItemVisible( lv->currentItem() ); + } +} + +void PhraseBookBox::selectionChanged( TQListViewItem * /* item */ ) +{ + enableDisable(); +} + +void PhraseBookBox::selectItem( TQListViewItem *item ) +{ + lv->setSelected( item, TRUE ); + lv->ensureItemVisible( item ); +} + +void PhraseBookBox::enableDisable() +{ + TQListViewItem *item = lv->currentItem(); + + sourceLed->blockSignals( TRUE ); + targetLed->blockSignals( TRUE ); + definitionLed->blockSignals( TRUE ); + + if ( item == 0 ) { + sourceLed->setText( TQString() ); + targetLed->setText( TQString() ); + definitionLed->setText( TQString() ); + } else { + sourceLed->setText( item->text(0) ); + targetLed->setText( item->text(1) ); + definitionLed->setText( item->text(2) ); + } + sourceLed->setEnabled( item != 0 ); + targetLed->setEnabled( item != 0 ); + definitionLed->setEnabled( item != 0 ); + removeBut->setEnabled( item != 0 ); + + sourceLed->blockSignals( FALSE ); + targetLed->blockSignals( FALSE ); + definitionLed->blockSignals( FALSE ); + + TQLineEdit *led = ( sourceLed->text() == NewPhrase ? sourceLed : targetLed ); + led->setFocus(); + led->selectAll(); +} |