📄 trwindow.cpp
字号:
" suggestions are used.") ); revertSortingAct->setWhatsThis( tr("Sort the items back in the same order" " as in the message file.") ); doGuessesAct->setWhatsThis( tr("Set whether or not to display translation guesses.") ); manualAct->setWhatsThis( tr("Display the manual for %1.") .arg(tr("Qt Linguist")) ); aboutAct->setWhatsThis( tr("Display information about %1.") .arg(tr("Qt Linguist")) ); aboutQtAct->setWhatsThis( tr("Display information about the Qt toolkit by" " Trolltech.") ); whatsThisAct->setWhatsThis( tr("Enter What's This? mode.") ); beginFromSourceAct->setWhatsThis( tr("Copies the source text into" " the translation field.") ); nextAct->setWhatsThis( tr("Moves to the next item.") ); prevAct->setWhatsThis( tr("Moves to the previous item.") ); nextUnfinishedAct->setWhatsThis( tr("Moves to the next unfinished item.") ); prevUnfinishedAct->setWhatsThis( tr("Moves to the previous unfinished item.") ); doneAndNextAct->setWhatsThis( tr("Marks this item as done and moves to the" " next unfinished item.") ); doneAndNextAlt->setWhatsThis( doneAndNextAct->whatsThis() );}void TrWindow::setupToolBars(){ QToolBar *filet = new QToolBar( tr("File"), this ); QToolBar *editt = new QToolBar( tr("Edit"), this ); QToolBar *translationst = new QToolBar( tr("Translation"), this ); QToolBar *validationt = new QToolBar( tr("Validation"), this ); QToolBar *helpt = new QToolBar( tr("Help"), this ); openAct->addToToolbar( filet, tr("Open") ); saveAct->addToToolbar( filet, tr("Save") ); printAct->addToToolbar( filet, tr("Print") ); filet->addSeparator(); openPhraseBookAct->addToToolbar( filet, tr("Open Phrase Book") ); undoAct->addToToolbar( editt, tr("Undo") ); redoAct->addToToolbar( editt, tr("Redo") ); editt->addSeparator(); cutAct->addToToolbar( editt, tr("Cut") ); copyAct->addToToolbar( editt, tr("Copy") ); pasteAct->addToToolbar( editt, tr("Paste") ); editt->addSeparator(); findAct->addToToolbar( editt, tr("Find") );#ifdef notyet replaceAct->addToToolbar( editt, tr("Replace") );#endif // beginFromSourceAct->addToToolbar( translationst, // tr("Begin from Source"), "searchfind" ); prevAct->addToToolbar( translationst, tr("Prev") ); nextAct->addToToolbar( translationst, tr("Next") ); prevUnfinishedAct->addToToolbar( translationst, tr("Prev Unfinished") ); nextUnfinishedAct->addToToolbar( translationst, tr("Next Unfinished") ); doneAndNextAct->addToToolbar( translationst, tr("Done and Next") ); acceleratorsAct->addToToolbar( validationt, tr("Accelerators") ); endingPunctuationAct->addToToolbar( validationt, tr("Punctuation") ); phraseMatchesAct->addToToolbar( validationt, tr("Phrases") ); whatsThisAct->addToToolbar( helpt, tr("What's This?") );}void TrWindow::setCurrentContextItem( QListViewItem *item ){ lv->ensureItemVisible( item ); lv->setSelected( item, TRUE );}void TrWindow::setCurrentMessageItem( QListViewItem *item ){ slv->ensureItemVisible( item ); slv->setSelected( item, TRUE );}QString TrWindow::friendlyPhraseBookName( int k ){ return QFileInfo( phraseBookNames[k] ).fileName();}bool TrWindow::openPhraseBook( const QString& name ){ PhraseBook *pb = new PhraseBook; if ( !pb->load(name) ) { QMessageBox::warning( this, tr("Qt Linguist"), tr("Cannot read from phrase book '%1'.") .arg(name) ); return FALSE; } int index = (int) phraseBooks.count(); phraseBooks.append( pb ); phraseBookNames.append( name ); int id = closePhraseBookp->insertItem( friendlyPhraseBookName(index) ); closePhraseBookp->setWhatsThis( id, tr("Close this phrase book.") ); id = editPhraseBookp->insertItem( friendlyPhraseBookName(index) ); editPhraseBookp->setWhatsThis( id, tr("Allow you to add, modify, or delete" " phrases of this phrase book.") ); id = printPhraseBookp->insertItem( friendlyPhraseBookName(index) ); printPhraseBookp->setWhatsThis( id, tr("Print the entries of the phrase" " book.") ); updatePhraseDict(); return TRUE;}bool TrWindow::savePhraseBook( QString& name, const PhraseBook& pb ){ if ( !name.contains( ".qph" ) && !name.contains(".") ) name += ".qph"; if ( !pb.save(name) ) { QMessageBox::warning( this, tr("Qt Linguist"), tr("Cannot create phrase book '%1'.") .arg(name) ); return FALSE; } return TRUE;}void TrWindow::updateProgress(){ if ( numNonobsolete == 0 ) progress->setText( QString(" " " ") ); else progress->setText( QString(" %1/%2 ").arg(numFinished) .arg(numNonobsolete) ); prevUnfinishedAct->setEnabled( numFinished != numNonobsolete ); nextUnfinishedAct->setEnabled( numFinished != numNonobsolete ); prevAct->setEnabled( lv->firstChild() != 0 ); nextAct->setEnabled( lv->firstChild() != 0 );}void TrWindow::updatePhraseDict(){ QPtrListIterator<PhraseBook> pb = phraseBooks; PhraseBook::Iterator p; PhraseBook *ent; phraseDict.clear(); while ( pb.current() != 0 ) { for ( p = (*pb)->begin(); p != (*pb)->end(); ++p ) { QString f = friendlyString( (*p).source() ); if ( f.length() > 0 ) { f = QStringList::split( QChar(' '), f ).first(); ent = phraseDict.find( f ); if ( ent == 0 ) { ent = new PhraseBook; phraseDict.insert( f, ent ); } ent->append( *p ); } } ++pb; } revalidate();}PhraseBook TrWindow::getPhrases( const QString& source ){ PhraseBook phrases; QString f = friendlyString( source ); QStringList lookupWords = QStringList::split( QChar(' '), f ); QStringList::Iterator w; PhraseBook::Iterator p; for ( w = lookupWords.begin(); w != lookupWords.end(); ++w ) { PhraseBook *ent = phraseDict.find( *w ); if ( ent != 0 ) { for ( p = ent->begin(); p != ent->end(); ++p ) { if ( f.find(friendlyString((*p).source())) >= 0 ) phrases.append( *p ); } } } return phrases;}bool TrWindow::danger( const QString& source, const QString& translation, bool verbose ){ if ( acceleratorsAct->isOn() ) { int sk = QAccel::shortcutKey( source ); int tk = QAccel::shortcutKey( translation ); if ( sk == 0 && tk != 0 ) { if ( verbose ) statusBar()->message( tr("Accelerator possibly superfluous in" " translation."), ErrorMS ); return TRUE; } else if ( sk != 0 && tk == 0 ) { if ( verbose ) statusBar()->message( tr("Accelerator possibly missing in" " translation."), ErrorMS ); return TRUE; } } if ( endingPunctuationAct->isOn() ) { if ( ending(source) != ending(translation) ) { if ( verbose ) statusBar()->message( tr("Translation does not end with the" " same punctuation as the source" " text."), ErrorMS ); return TRUE; } } if ( phraseMatchesAct->isOn() ) { QString fsource = friendlyString( source ); QString ftranslation = friendlyString( translation ); QStringList lookupWords = QStringList::split( QChar(' '), fsource ); QStringList::Iterator w; PhraseBook::Iterator p; for ( w = lookupWords.begin(); w != lookupWords.end(); ++w ) { PhraseBook *ent = phraseDict.find( *w ); if ( ent != 0 ) { for ( p = ent->begin(); p != ent->end(); ++p ) { if ( fsource.find(friendlyString((*p).source())) < 0 || ftranslation.find(friendlyString((*p).target())) >= 0 ) break; } if ( p == ent->end() ) { if ( verbose ) statusBar()->message( tr("A phrase book suggestion for" " '%1' was ignored.") .arg(*w), ErrorMS ); return TRUE; } } } } if ( verbose ) statusBar()->clear(); return FALSE;}void TrWindow::readConfig(){ QString keybase("/Qt Linguist/3.1/"); QSettings config; config.insertSearchPath( QSettings::Windows, "/Trolltech" ); QRect r( pos(), size() ); recentFiles = config.readListEntry( keybase + "RecentlyOpenedFiles", ',' ); if ( !config.readBoolEntry( keybase + "Geometry/MainwindowMaximized", FALSE ) ) { r.setX( config.readNumEntry( keybase + "Geometry/MainwindowX", r.x() ) ); r.setY( config.readNumEntry( keybase + "Geometry/MainwindowY", r.y() ) ); r.setWidth( config.readNumEntry( keybase + "Geometry/MainwindowWidth", r.width() ) ); r.setHeight( config.readNumEntry( keybase + "Geometry/MainwindowHeight", r.height() ) ); QRect desk = QApplication::desktop()->geometry(); QRect inter = desk.intersect( r ); resize( r.size() ); if ( inter.width() * inter.height() > ( r.width() * r.height() / 20 ) ) { move( r.topLeft() ); } } QDockWindow * dw; dw = (QDockWindow *) lv->parent(); int place; place = config.readNumEntry( keybase + "Geometry/ContextwindowInDock" ); r.setX( config.readNumEntry( keybase + "Geometry/ContextwindowX" ) ); r.setY( config.readNumEntry( keybase + "Geometry/ContextwindowY" ) ); r.setWidth( config.readNumEntry( keybase + "Geometry/ContextwindowWidth" ) ); r.setHeight( config.readNumEntry( keybase + "Geometry/ContextwindowHeight" ) ); if ( place == QDockWindow::OutsideDock ) { dw->undock(); dw->show(); } dw->setGeometry( r ); dw = (QDockWindow *) slv->parent(); place = config.readNumEntry( keybase + "Geometry/SourcewindowInDock" ); r.setX( config.readNumEntry( keybase + "Geometry/SourcewindowX" ) ); r.setY( config.readNumEntry( keybase + "Geometry/SourcewindowY" ) ); r.setWidth( config.readNumEntry( keybase + "Geometry/SourcewindowWidth" ) ); r.setHeight( config.readNumEntry( keybase + "Geometry/SourcewindowHeight" ) ); if ( place == QDockWindow::OutsideDock ) { dw->undock(); dw->show(); } dw->setGeometry( r ); dw = (QDockWindow *) plv->parent()->parent(); place = config.readNumEntry( keybase + "Geometry/PhrasewindowInDock" ); r.setX( config.readNumEntry( keybase + "Geometry/PhrasewindowX" ) ); r.setY( config.readNumEntry( keybase + "Geometry/PhrasewindowY" ) ); r.setWidth( config.readNumEntry( keybase + "Geometry/PhrasewindowWidth" ) ); r.setHeight( config.readNumEntry( keybase + "Geometry/PhrasewindowHeight" ) ); if ( place == QDockWindow::OutsideDock ) { dw->undock(); dw->show(); } dw->setGeometry( r ); QApplication::sendPostedEvents();}void TrWindow::writeConfig(){ QString keybase("/Qt Linguist/3.1/"); QSettings config; config.insertSearchPath( QSettings::Windows, "/Trolltech" ); config.writeEntry( keybase + "RecentlyOpenedFiles", recentFiles, ',' ); config.writeEntry( keybase + "Geometry/MainwindowMaximized", isMaximized() ); config.writeEntry( keybase + "Geometry/MainwindowX", x() ); config.writeEntry( keybase + "Geometry/MainwindowY", y() ); config.writeEntry( keybase + "Geometry/MainwindowWidth", width() ); config.writeEntry( keybase + "Geometry/MainwindowHeight", height() ); QDockWindow * dw =(QDockWindow *) lv->parent(); config.writeEntry( keybase + "Geometry/ContextwindowInDock", dw->place() ); config.writeEntry( keybase + "Geometry/ContextwindowX", dw->x() ); config.writeEntry( keybase + "Geometry/ContextwindowY", dw->y() ); config.writeEntry( keybase + "Geometry/ContextwindowWidth", dw->width() ); config.writeEntry( keybase + "Geometry/ContextwindowHeight", dw->height() ); dw =(QDockWindow *) slv->parent(); config.writeEntry( keybase + "Geometry/SourcewindowInDock", dw->place() ); config.writeEntry( keybase + "Geometry/SourcewindowX", dw->geometry().x() ); config.writeEntry( keybase + "Geometry/SourcewindowY", dw->geometry().y() ); config.writeEntry( keybase + "Geometry/SourcewindowWidth", dw->width() ); config.writeEntry( keybase + "Geometry/SourcewindowHeight", dw->height() ); dw =(QDockWindow *) plv->parent()->parent(); config.writeEntry( keybase + "Geometry/PhrasewindowInDock", dw->place() ); config.writeEntry( keybase + "Geometry/PhrasewindowX", dw->geometry().x() ); config.writeEntry( keybase + "Geometry/PhrasewindowY", dw->geometry().y() ); config.writeEntry( keybase + "Geometry/PhrasewindowWidth", dw->width() ); config.writeEntry( keybase + "Geometry/PhrasewindowHeight", dw->height() );}void TrWindow::setupRecentFilesMenu(){ recentFilesMenu->clear(); int id = 0; QStringList::Iterator it = recentFiles.begin(); for ( ; it != recentFiles.end(); ++it ) { recentFilesMenu->insertItem( *it, id ); id++; }}void TrWindow::recentFileActivated( int id ){ if ( id != -1 ) { if ( maybeSave() ) openFile( *recentFiles.at( id ) ); }}void TrWindow::addRecentlyOpenedFile( const QString &fn, QStringList &lst ){ if ( lst.find( fn ) != lst.end() ) return; if ( lst.count() >= 10 ) lst.remove( lst.begin() ); lst << fn;}void TrWindow::toggleGuessing(){ me->toggleGuessing();}void TrWindow::focusSourceList(){ slv->setFocus();}void TrWindow::focusPhraseList(){ plv->setFocus();}void TrWindow::updateClosePhraseBook(){ if ( dirtyItem != -1 ) { closePhraseBookp->removeItem( closePhraseBookp->idAt(dirtyItem) ); dirtyItem = -1; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -