⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phrasebookbox.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
字号:
/************************************************************************ Copyright (C) 2000-2002 Trolltech AS.  All rights reserved.**** This file is part of Qt Linguist.**** 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.**** 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.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************//*  TRANSLATOR PhraseBookBox  Go to Phrase > Edit Phrase Book...  The dialog that pops up is a  PhraseBookBox.*/#include "phrasebookbox.h"#include "phraselv.h"#include <qapplication.h>#include <qlabel.h>#include <qlayout.h>#include <qlineedit.h>#include <qmessagebox.h>#include <qpushbutton.h>#include <qwhatsthis.h>PhraseBookBox::PhraseBookBox( const QString& filename,			      const PhraseBook& phraseBook, QWidget *parent,			      const char *name, bool modal )    : QDialog( parent, name, modal ), fn( filename ), pb( phraseBook ){    QGridLayout *gl = new QGridLayout( this, 4, 3, 11, 11,				       "phrase book outer layout" );    QVBoxLayout *bl = new QVBoxLayout( 6, "phrase book button layout" );    sourceLed = new QLineEdit( this, "source line edit" );    QLabel *source = new QLabel( sourceLed, tr("S&ource phrase:"), this,				 "source label" );    targetLed = new QLineEdit( this, "target line edit" );    QLabel *target = new QLabel( targetLed, tr("&Translation:"), this,				 "target label" );    definitionLed = new QLineEdit( this, "definition line edit" );    QLabel *definition = new QLabel( definitionLed, tr("&Definition:"), this,				     "target label" );    lv = new PhraseLV( this, "phrase book list view" );    newBut = new QPushButton( tr("&New Phrase"), this );    newBut->setDefault( TRUE );    removeBut = new QPushButton( tr("&Remove Phrase"), this );    removeBut->setEnabled( FALSE );    QPushButton *saveBut = new QPushButton( tr("&Save"), this );    QPushButton *closeBut = new QPushButton( 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, SIGNAL(textChanged(const QString&)),	     this, SLOT(sourceChanged(const QString&)) );    connect( targetLed, SIGNAL(textChanged(const QString&)),	     this, SLOT(targetChanged(const QString&)) );    connect( definitionLed, SIGNAL(textChanged(const QString&)),	     this, SLOT(definitionChanged(const QString&)) );    connect( lv, SIGNAL(selectionChanged(QListViewItem *)),	     this, SLOT(selectionChanged(QListViewItem *)) );    connect( newBut, SIGNAL(clicked()), this, SLOT(newPhrase()) );    connect( removeBut, SIGNAL(clicked()), this, SLOT(removePhrase()) );    connect( saveBut, SIGNAL(clicked()), this, SLOT(save()) );    connect( closeBut, SIGNAL(clicked()), this, SLOT(accept()) );    PhraseBook::ConstIterator it;    for ( it = phraseBook.begin(); it != phraseBook.end(); ++it )	(void) new PhraseLVI( lv, (*it) );    enableDisable();    QWhatsThis::add( this, tr("This window allows you to add, modify, or delete"			      " phrases in a phrase book.") );    QWhatsThis::add( sourceLed, tr("This is the phrase in the source"				   " language.") );    QWhatsThis::add( targetLed, tr("This is the phrase in the target language"				   " corresponding to the source phrase.") );    QWhatsThis::add( definitionLed, tr("This is a definition for the source"				       " phrase.") );    QWhatsThis::add( newBut, tr("Click here to add the phrase to the phrase"				" book.") );    QWhatsThis::add( removeBut, tr("Click here to remove the phrase from the"				   " phrase book.") );    QWhatsThis::add( saveBut, tr("Click here to save the changes made.") );    QWhatsThis::add( closeBut, tr("Click here to close this window.") );}void PhraseBookBox::keyPressEvent( QKeyEvent *ev ){    if ( ev->key() == Key_Down || ev->key() == Key_Up ||	 ev->key() == Key_Next || ev->key() == Key_Prior )	QApplication::sendEvent( lv,		new QKeyEvent(ev->type(), ev->key(), ev->ascii(), ev->state(),			      ev->text(), ev->isAutoRepeat(), ev->count()) );    else	QDialog::keyPressEvent( ev );}void PhraseBookBox::newPhrase(){    Phrase ph;    ph.setSource( NewPhrase );    QListViewItem *item = new PhraseLVI( lv, ph );    selectItem( item );}void PhraseBookBox::removePhrase(){    QListViewItem *item = lv->currentItem();    QListViewItem *next = item->itemBelow() != 0 ? item->itemBelow()			  : item->itemAbove();    delete item;    if ( next != 0 )	selectItem( next );    enableDisable();}void PhraseBookBox::save(){    pb.clear();    QListViewItem *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 ) )	QMessageBox::warning( this, tr("Qt Linguist"),			      tr("Cannot save phrase book '%1'.").arg(fn) );}void PhraseBookBox::sourceChanged( const QString& 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 QString& 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 QString& definition ){    if ( lv->currentItem() != 0 ) {	lv->currentItem()->setText( PhraseLVI::DefinitionText, definition );	lv->sort();	lv->ensureItemVisible( lv->currentItem() );    }}void PhraseBookBox::selectionChanged( QListViewItem * /* item */ ){    enableDisable();}void PhraseBookBox::selectItem( QListViewItem *item ){    lv->setSelected( item, TRUE );    lv->ensureItemVisible( item );}void PhraseBookBox::enableDisable(){    QListViewItem *item = lv->currentItem();    sourceLed->blockSignals( TRUE );    targetLed->blockSignals( TRUE );    definitionLed->blockSignals( TRUE );    if ( item == 0 ) {	sourceLed->setText( QString::null );	targetLed->setText( QString::null );	definitionLed->setText( QString::null );    } 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 );    QLineEdit *led = ( sourceLed->text() == NewPhrase ? sourceLed : targetLed );    led->setFocus();    led->selectAll();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -