summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/tools/linguist/linguist/phrasebookbox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/tools/linguist/linguist/phrasebookbox.cpp')
-rw-r--r--tqtinterface/qt4/tools/linguist/linguist/phrasebookbox.cpp244
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();
+}