📄 trwindow.cpp
字号:
int index = printPhraseBookp->indexOf( id ); int pageNum = 0; if ( printer.setup(this) ) { printer.setDocName( phraseBookNames[index] ); statusBar()->message( tr("Printing...") ); PrintOut pout( &printer ); PhraseBook *phraseBook = phraseBooks.at( index ); PhraseBook::Iterator p; pout.setRule( PrintOut::ThinRule ); for ( p = phraseBook->begin(); p != phraseBook->end(); ++p ) { pout.setGuide( (*p).source() ); pout.addBox( 29, (*p).source() ); pout.addBox( 4 ); pout.addBox( 29, (*p).target() ); pout.addBox( 4 ); pout.addBox( 34, (*p).definition(), PrintOut::Emphasis ); if ( pout.pageNum() != pageNum ) { pageNum = pout.pageNum(); statusBar()->message( tr("Printing... (page %1)") .arg(pageNum) ); } pout.setRule( PrintOut::NoRule ); pout.flushLine( TRUE ); } pout.flushLine( TRUE ); statusBar()->message( tr("Printing completed"), MessageMS ); } else { statusBar()->message( tr("Printing aborted"), MessageMS ); }}void TrWindow::revertSorting(){ lv->setSorting( 0 ); slv->setSorting( 0 );}void TrWindow::manual(){ QString path = QDir::cleanDirPath( QString( qInstallPath() ) + QDir::separator() + "bin/" );#if defined(Q_OS_MACX) path += QDir::separator() + ".app/Contents/MacOS/";#endif QAssistantClient *ac = new QAssistantClient( path, this ); ac->showPage( QString( qInstallPath() ) + "/doc/html/linguist-manual.html" );}void TrWindow::about(){ AboutDialog about( this, 0, TRUE ); about.versionLabel->setText( tr("Version %1").arg(QT_VERSION_STR) ); about.exec();}void TrWindow::aboutQt(){ QMessageBox::aboutQt( this, tr("Qt Linguist") );}void TrWindow::setupPhrase(){ bool enabled = !phraseBooks.isEmpty(); phrasep->setItemEnabled( closePhraseBookId, enabled ); phrasep->setItemEnabled( editPhraseBookId, enabled ); phrasep->setItemEnabled( printPhraseBookId, enabled );}void TrWindow::closeEvent( QCloseEvent *e ){ if ( maybeSave() ) e->accept(); else e->ignore();}bool TrWindow::maybeSave(){ if ( dirty ) { switch ( QMessageBox::information(this, tr("Qt Linguist"), tr("Do you want to save '%1'?") .arg(filename), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape ) ) { case QMessageBox::Cancel: return FALSE; case QMessageBox::Yes: save(); break; case QMessageBox::No: break; } } return TRUE;}void TrWindow::updateCaption(){ QString cap; bool enable = !filename.isEmpty(); saveAct->setEnabled( enable ); saveAsAct->setEnabled( enable ); releaseAct->setEnabled( enable ); printAct->setEnabled( enable ); acceleratorsAct->setEnabled( enable ); endingPunctuationAct->setEnabled( enable ); phraseMatchesAct->setEnabled( enable ); revertSortingAct->setEnabled( enable ); if ( filename.isEmpty() ) cap = tr( "Qt Linguist by Trolltech" ); else cap = tr( "%1 - %2" ).arg( tr("Qt Linguist by Trolltech") ) .arg( filename ); setCaption( cap ); modified->setEnabled( dirty );}//// New scope selected - build a new list of source text items// for that scope.//void TrWindow::showNewScope( QListViewItem *item ){ static ContextLVI * oldContext = 0; if( item != 0 ) { ContextLVI * c = (ContextLVI *) item; bool upe = slv->isUpdatesEnabled(); slv->setUpdatesEnabled( FALSE ); slv->viewport()->setUpdatesEnabled( FALSE ); if ( oldContext != 0 ) { MessageLVI * tmp; slv->blockSignals( TRUE ); while ( (tmp = (MessageLVI *) slv->firstChild()) != 0 ) oldContext->appendMessageItem( slv, tmp ); slv->blockSignals( FALSE ); } MessageLVI * tmp; while ( c->messageItemsInList() ) { tmp = c->takeMessageItem( c->messageItemsInList() - 1); slv->insertItem( tmp ); tmp->updateTranslationText(); } slv->viewport()->setUpdatesEnabled( upe ); slv->setUpdatesEnabled( upe ); if( upe ) slv->triggerUpdate(); oldContext = (ContextLVI *) item; statusBar()->clear(); }}void TrWindow::showNewCurrent( QListViewItem *item ){ messageIsShown = (item != 0); MessageLVI *m = (MessageLVI *) item; ContextLVI *c = (ContextLVI *) m ? m->contextLVI() : 0; if ( messageIsShown ) { me->showMessage( m->sourceText(), m->comment(), c->fullContext(), m->translation(), m->message().type(), getPhrases(m->sourceText()) ); if ( (m->message().type() != MetaTranslatorMessage::Finished) && m->danger() ) danger( m->sourceText(), m->translation(), TRUE ); else statusBar()->clear(); doneAndNextAct->setEnabled( m->message().type() != MetaTranslatorMessage::Obsolete ); } else { if ( item == 0 ) me->showNothing(); else me->showContext( c->fullContext(), c->finished() ); doneAndNextAct->setEnabled( FALSE ); } doneAndNextAlt->setEnabled( doneAndNextAct->isEnabled() ); selectAllAct->setEnabled( messageIsShown );}void TrWindow::updateTranslation( const QString& translation ){ QListViewItem *item = slv->currentItem(); if ( item != 0 ) { MessageLVI *m = (MessageLVI *) item; if ( translation != m->translation() ) { bool dngr; m->setTranslation( translation ); if ( m->finished() && (dngr = danger( m->sourceText(), m->translation(), TRUE )) ) { numFinished -= 1; m->setDanger( dngr ); m->setFinished( FALSE ); m->contextLVI()->updateStatus(); updateProgress(); } tor.insert( m->message() ); if ( !dirty ) { dirty = TRUE; updateCaption(); } m->updateTranslationText(); } }}void TrWindow::updateFinished( bool finished ){ QListViewItem *item = slv->currentItem(); if ( item != 0 ) { MessageLVI *m = (MessageLVI *) item; if ( finished != m->finished() ) { numFinished += finished ? +1 : -1; updateProgress(); m->setFinished( finished ); bool oldDanger = m->danger(); m->setDanger( /*m->finished() &&*/ danger(m->sourceText(), m->translation(), !oldDanger) ); if ( !oldDanger && m->danger() ) qApp->beep(); tor.insert( m->message() ); if ( !dirty ) { dirty = TRUE; updateCaption(); } } }}void TrWindow::doneAndNext(){ MessageLVI * m = (MessageLVI *) slv->currentItem(); bool dngr = FALSE; if ( !m ) return; dngr = danger( m->sourceText(), m->translation(), TRUE ); if ( !dngr ) { me->finishAndNext(); m->contextLVI()->updateStatus(); } else { if ( m->danger() != dngr ) m->setDanger( dngr ); tor.insert( m->message() ); if ( !dirty ) { dirty = TRUE; updateCaption(); } qApp->beep(); }}void TrWindow::toggleFinished( QListViewItem *item, const QPoint& /* p */, int column ){ if ( item != 0 && column == 0 ) { MessageLVI *m = (MessageLVI *) item; bool dngr = FALSE; if ( m->message().type() == MetaTranslatorMessage::Unfinished ) { dngr = danger( m->sourceText(), m->translation(), TRUE ); } if ( !dngr && m->message().type() != MetaTranslatorMessage::Obsolete) { setCurrentMessageItem( m ); me->setFinished( !m->finished() ); m->contextLVI()->updateStatus(); } else { bool oldDanger = m->danger(); m->setDanger( danger(m->sourceText(), m->translation(), !oldDanger) ); if ( !oldDanger && m->danger() ) qApp->beep(); tor.insert( m->message() ); if ( !dirty ) { dirty = TRUE; updateCaption(); } } }}void TrWindow::nextUnfinished(){ if ( nextUnfinishedAct->isEnabled() ) { // Select a message to translate, grab the first available if // there are no current selection. QListViewItem * cItem = lv->currentItem(); // context item QListViewItem * mItem = slv->currentItem(); // message item // Make sure an item is selected from both the context and the // message list. if( (mItem == 0) && !(mItem = slv->firstChild()) ) { if( (cItem == 0) && !(cItem = lv->firstChild()) ) { statusBar()->message( tr("No phrase to translate."), MessageMS ); qApp->beep(); return; } else { showNewScope( cItem ); while( cItem && !(mItem = slv->firstChild()) ) { // no children in this node - try next one cItem = cItem->nextSibling(); showNewScope( cItem ); } setCurrentContextItem( cItem ); if( mItem ) { setCurrentMessageItem( cItem ); } else { statusBar()->message( tr("No phrase to translate."), MessageMS ); qApp->beep(); return; } } } else { setCurrentMessageItem( mItem ); } MessageLVI * m = (MessageLVI *) mItem; MessageLVI * n; ContextLVI * p = (ContextLVI *) cItem; ContextLVI * q; // Find the next Unfinished sibling within the same context. m = (MessageLVI *) mItem->nextSibling(); n = m; do { if ( n == 0 ) break; if ( n && !n->finished() && n != mItem ) { setCurrentMessageItem( n ); return; } n = (MessageLVI *) n->nextSibling(); } while ( n != m ); // If all siblings are Finished or Obsolete, look in the first // Unfinished context. p = (ContextLVI *) p->nextSibling(); q = p; do { if ( q == 0 ) q = (ContextLVI *) lv->firstChild(); if ( q && !q->finished() ) { showNewScope( q ); setCurrentContextItem( q ); n = (MessageLVI *) slv->firstChild(); while ( n && n->finished() ) n = (MessageLVI *) n->nextSibling(); if ( n && q ) { setCurrentMessageItem( n ); return; } } q = (ContextLVI *) q->nextSibling(); } while ( q != p ); } // If no Unfinished message is left, the user has finished the job. We // congratulate on a job well done with this ringing bell. statusBar()->message( tr("No untranslated phrases left."), MessageMS ); qApp->beep();}static QListViewItem * lastChild( QListView * view ){ if ( view ) { QListViewItem * ret, * tmp; ret = view->firstChild(); while ( ret ) { tmp = ret->nextSibling(); if ( tmp == 0 ) return ret; ret = tmp; } } return 0;}void TrWindow::prevUnfinished(){ if ( prevUnfinishedAct->isEnabled() ) { // Select a message to translate, grab the first available if // there are no current selection. QListViewItem * cItem = lv->currentItem(); // context item QListViewItem * mItem = slv->currentItem(); // message item // Make sure an item is selected from both the context and the
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -