summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/tools/linguist/linguist/trwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/tools/linguist/linguist/trwindow.cpp')
-rw-r--r--tqtinterface/qt4/tools/linguist/linguist/trwindow.cpp2072
1 files changed, 0 insertions, 2072 deletions
diff --git a/tqtinterface/qt4/tools/linguist/linguist/trwindow.cpp b/tqtinterface/qt4/tools/linguist/linguist/trwindow.cpp
deleted file mode 100644
index a198f64..0000000
--- a/tqtinterface/qt4/tools/linguist/linguist/trwindow.cpp
+++ /dev/null
@@ -1,2072 +0,0 @@
-/**********************************************************************
-** 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 TrWindow
-
- This is the application's main window.
-*/
-
-#include "trwindow.h"
-#include "listviews.h"
-#include "finddialog.h"
-#include "msgedit.h"
-#include "phrasebookbox.h"
-#include "printout.h"
-#include "about.h"
-#include "phraselv.h"
-#include "statistics.h"
-
-#include <tqaccel.h>
-#include <tqaction.h>
-#include <tqapplication.h>
-#include <tqbitmap.h>
-#include <tqdict.h>
-#include <tqdockarea.h>
-#include <tqdockwindow.h>
-#include <tqfile.h>
-#include <tqfiledialog.h>
-#include <tqfileinfo.h>
-#include <tqheader.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqmenubar.h>
-#include <tqmessagebox.h>
-#include <tqpopupmenu.h>
-#include <tqregexp.h>
-#include <tqsettings.h>
-#include <tqstatusbar.h>
-#include <tqtoolbar.h>
-#include <tqwhatsthis.h>
-#include <tqprocess.h>
-#include <tqobject.h>
-#include <tqassistantclient.h>
-
-#include <stdlib.h>
-
-#define pagecurl_mask_width 53
-#define pagecurl_mask_height 51
-static const uchar pagecurl_mask_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x0f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xfe, 0xff,
- 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
- 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
- 0x0f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xfe, 0xff,
- 0xff, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00,
- 0xfc, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x0f,
- 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff,
- 0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf0,
- 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00,
- 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff,
- 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff,
- 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00,
- 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f,
- 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff,
- 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0,
- 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00,
- 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
- 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xfc,
- 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 };
-
-typedef TQValueList<MetaTranslatorMessage> TML;
-
-static const int ErrorMS = 600000; // for error messages
-static const int MessageMS = 2500;
-
-TQPixmap * TrWindow::pxOn = 0;
-TQPixmap * TrWindow::pxOff = 0;
-TQPixmap * TrWindow::pxObsolete = 0;
-TQPixmap * TrWindow::pxDanger = 0;
-
-enum Ending { End_None, End_FullStop, End_Interrobang, End_Colon,
- End_Ellipsis };
-
-static Ending ending( TQString str )
-{
- str = str.simplifyWhiteSpace();
- int ch = 0;
- if ( !str.isEmpty() )
- ch = str.right( 1 )[0].tqunicode();
-
- switch ( ch ) {
- case 0x002e: // full stop
- if ( str.endsWith(TQString("...")) )
- return End_Ellipsis;
- else
- return End_FullStop;
- case 0x0589: // armenian full stop
- case 0x06d4: // arabic full stop
- case 0x3002: // ideographic full stop
- return End_FullStop;
- case 0x0021: // exclamation mark
- case 0x003f: // question mark
- case 0x00a1: // inverted exclamation mark
- case 0x00bf: // inverted question mark
- case 0x01c3: // latin letter retroflex click
- case 0x037e: // greek question mark
- case 0x061f: // arabic question mark
- case 0x203c: // double exclamation mark
- case 0x203d: // interrobang
- case 0x2048: // question exclamation mark
- case 0x2049: // exclamation question mark
- case 0x2762: // heavy exclamation mark ornament
- return End_Interrobang;
- case 0x003a: // colon
- return End_Colon;
- case 0x2026: // horizontal ellipsis
- return End_Ellipsis;
- default:
- return End_None;
- }
-}
-
-class Action : public TQAction
-{
-public:
- Action( TQPopupMenu *pop, const TQString& menuText, TQObject *receiver,
- const char *member, const TQString &imageName = TQString(),
- int accel = 0, bool toggle = FALSE );
- Action( TQPopupMenu *pop, const TQString& menuText, int accel = 0,
- bool toggle = FALSE );
-
- virtual void setWhatsThis( const TQString& whatsThis );
-
- bool addToToolbar( TQToolBar *tb, const TQString& text );
-};
-
-Action::Action( TQPopupMenu *pop, const TQString& menuText, TQObject *receiver,
- const char *member, const TQString &imageName, int accel,
- bool toggle )
- : TQAction( pop->parent(), (const char *) 0, toggle )
-{
- setMenuText( menuText );
- setAccel( accel );
-
- if ( !imageName.isEmpty() ) {
- TQPixmap enabledPix = TQPixmap::fromMimeSource( imageName );
- TQIconSet s( enabledPix );
- if ( imageName != "whatsthis.xpm" ) {
- TQPixmap disabledPix = TQPixmap::fromMimeSource( "d_" + imageName );
- s.setPixmap( disabledPix, TQIconSet::Small, TQIconSet::Disabled );
- }
- setIconSet( s );
- }
- TQAction::addTo( pop );
- connect( this, TQT_SIGNAL(activated()), receiver, member );
-}
-
-Action::Action( TQPopupMenu *pop, const TQString& menuText, int accel,
- bool toggle )
- : TQAction( pop->parent(), (const char *) 0, toggle )
-{
- TQAction::addTo( pop );
- setMenuText( menuText );
- setAccel( accel );
-}
-
-void Action::setWhatsThis( const TQString& whatsThis )
-{
- TQAction::setWhatsThis( whatsThis );
- setStatusTip( whatsThis );
-}
-
-bool Action::addToToolbar( TQToolBar *tb, const TQString& text )
-{
- setText( text );
- return TQAction::addTo( tb );
-}
-
-const TQPixmap TrWindow::pageCurl()
-{
- TQPixmap pixmap;
- pixmap = TQPixmap::fromMimeSource( "pagecurl.png" );
- if ( !pixmap.isNull() ) {
- TQBitmap pageCurlMask( pagecurl_mask_width, pagecurl_mask_height,
- pagecurl_mask_bits, TRUE );
- pixmap.setMask( pageCurlMask );
- }
-
- return pixmap;
-}
-
-TrWindow::TrWindow()
- : TQMainWindow( 0, "translation window", (WFlags)(TQt::WType_TopLevel | TQt::WDestructiveClose) )
-{
-
-#ifndef TQ_WS_MACX
- setIcon( TQPixmap::fromMimeSource( "appicon.png" ) );
-#endif
-
- // Create the application global listview symbols
- pxOn = new TQPixmap( TQPixmap::fromMimeSource( "s_check_on.png" ) );
- pxOff = new TQPixmap( TQPixmap::fromMimeSource( "s_check_off.png" ) );
- pxObsolete = new TQPixmap( TQPixmap::fromMimeSource( "d_s_check_obs.png" ) );
- pxDanger = new TQPixmap( TQPixmap::fromMimeSource( "s_check_danger.png" ) );
-
- // Set up the Scope dock window
- TQDockWindow * dwScope = new TQDockWindow( TQDockWindow::InDock, this,
- "context");
- dwScope->setResizeEnabled( TRUE );
- dwScope->setCloseMode( TQDockWindow::Always );
- addDockWindow( dwScope, tqtr("Context"), TQt::DockLeft );
- dwScope->setCaption( tqtr("Context") );
- dwScope->setFixedExtentWidth( 200 );
- lv = new TQListView( dwScope, "context list view" );
- lv->setShowSortIndicator( TRUE );
- lv->setAllColumnsShowFocus( TRUE );
- lv->header()->setStretchEnabled( TRUE, 1 );
- TQFontMetrics fm( font() );
- lv->addColumn( tqtr("Done"), fm.width( tqtr("Done") ) + 10 );
- lv->addColumn( tqtr("Context") );
- lv->addColumn( tqtr("Items"), 55 );
- lv->setColumnAlignment( 0, TQt::AlignCenter );
- lv->setColumnAlignment( 2, TQt::AlignRight );
- lv->setSorting( 0 );
- lv->setHScrollBarMode( TQScrollView::AlwaysOff );
- dwScope->setWidget( lv );
-
- messageIsShown = FALSE;
- me = new MessageEditor( &tor, this, "message editor" );
- setCentralWidget( me );
- slv = me->sourceTextList();
- plv = me->phraseList();
-
- setupMenuBar();
- setupToolBars();
-
- progress = new TQLabel( statusBar(), "progress" );
- statusBar()->addWidget( progress, 0, TRUE );
- modified = new TQLabel( TQString(" %1 ").arg(tqtr("MOD")), statusBar(),
- "modified?" );
- statusBar()->addWidget( modified, 0, TRUE );
-
- dirtyItem = -1;
- numFinished = 0;
- numNonobsolete = 0;
- numMessages = 0;
- updateProgress();
-
- dirty = FALSE;
- updateCaption();
-
- phraseBooks.setAutoDelete( TRUE );
-
- f = new FindDialog( FALSE, this, "find", FALSE );
- f->setCaption( tqtr("TQt Linguist") );
- h = new FindDialog( TRUE, this, "replace", FALSE );
- h->setCaption( tqtr("TQt Linguist") );
- findMatchCase = FALSE;
- findWhere = 0;
- foundItem = 0;
- foundScope = 0;
- foundWhere = 0;
- foundOffset = 0;
-
- connect( lv, TQT_SIGNAL(selectionChanged(TQListViewItem *)),
- this, TQT_SLOT(showNewScope(TQListViewItem *)) );
-
- connect( slv, TQT_SIGNAL(currentChanged(TQListViewItem *)),
- this, TQT_SLOT(showNewCurrent(TQListViewItem *)) );
-
- connect( slv, TQT_SIGNAL(clicked(TQListViewItem *, const TQPoint&, int)),
- this, TQT_SLOT(showNewCurrent(TQListViewItem *)) );
-
- connect( slv, TQT_SIGNAL(clicked(TQListViewItem *, const TQPoint&, int)),
- this, TQT_SLOT(toggleFinished(TQListViewItem *, const TQPoint&, int)) );
-
- connect( me, TQT_SIGNAL(translationChanged(const TQString&)),
- this, TQT_SLOT(updateTranslation(const TQString&)) );
- connect( me, TQT_SIGNAL(finished(bool)), this, TQT_SLOT(updateFinished(bool)) );
- connect( me, TQT_SIGNAL(prevUnfinished()), this, TQT_SLOT(prevUnfinished()) );
- connect( me, TQT_SIGNAL(nextUnfinished()), this, TQT_SLOT(nextUnfinished()) );
- connect( me, TQT_SIGNAL(focusSourceList()), this, TQT_SLOT(focusSourceList()) );
- connect( me, TQT_SIGNAL(focusPhraseList()), this, TQT_SLOT(focusPhraseList()) );
- connect( f, TQT_SIGNAL(findNext(const TQString&, int, bool)),
- this, TQT_SLOT(findNext(const TQString&, int, bool)) );
-
- TQWhatsThis::add( lv, tqtr("This panel lists the source contexts.") );
-
- TQWhatsThis::add( slv, tqtr("This panel lists the source texts. "
- "Items that violate validation rules "
- "are marked with a warning.") );
- showNewCurrent( 0 );
-
- TQSize as( tqApp->desktop()->size() );
- as -= TQSize( 30, 30 );
- resize( TQSize( 1000, 800 ).boundedTo( as ) );
- readConfig();
- stats = 0;
- srcWords = 0;
- srcChars = 0;
- srcCharsSpc = 0;
-}
-
-TrWindow::~TrWindow()
-{
- writeConfig();
- delete stats;
-}
-
-void TrWindow::openFile( const TQString& name )
-{
- if ( !name.isEmpty() ) {
- statusBar()->message( tqtr("Loading...") );
- tqApp->processEvents();
- tor.clear();
- if ( tor.load(name) ) {
- slv->clear();
- slv->tqrepaint();
- slv->viewport()->tqrepaint();
- slv->setUpdatesEnabled( FALSE );
- slv->viewport()->setUpdatesEnabled( FALSE );
- lv->clear();
- lv->tqrepaint();
- lv->viewport()->tqrepaint();
- lv->setUpdatesEnabled( FALSE );
- lv->viewport()->setUpdatesEnabled( FALSE );
- setEnabled( FALSE );
- numFinished = 0;
- numNonobsolete = 0;
- numMessages = 0;
- foundScope = 0;
-
- TML all = tor.messages();
- TML::Iterator it;
- TQDict<ContextLVI> contexts( 1009 );
-
- srcWords = 0;
- srcChars = 0;
- srcCharsSpc = 0;
- for ( it = all.begin(); it != all.end(); ++it ) {
- tqApp->processEvents();
- ContextLVI *c = contexts.find( TQString((*it).context()) );
- if ( c == 0 ) {
- c = new ContextLVI( lv, tor.toUnicode((*it).context(),
- (*it).utf8()) );
- contexts.insert( TQString((*it).context()), c );
- }
- if ( TQCString((*it).sourceText()) == ContextComment ) {
- c->appendToComment( tor.toUnicode((*it).comment(),
- (*it).utf8()) );
- } else {
- MessageLVI * tmp = new MessageLVI( slv, *it,
- tor.toUnicode((*it).sourceText(),
- (*it).utf8()),
- tor.toUnicode((*it).comment(),
- (*it).utf8()), c );
- tmp->setDanger( danger(tmp->sourceText(),
- tmp->translation()) &&
- tmp->message().type() ==
- MetaTranslatorMessage::Finished );
- c->instantiateMessageItem( slv, tmp );
- if ( (*it).type() != MetaTranslatorMessage::Obsolete ) {
- numNonobsolete++;
- if ( (*it).type() == MetaTranslatorMessage::Finished )
- numFinished++;
- doCharCounting( tmp->sourceText(), srcWords, srcChars, srcCharsSpc );
- } else {
- c->incrementObsoleteCount();
- }
- numMessages++;
- }
- c->updatetqStatus();
- }
- slv->viewport()->setUpdatesEnabled( TRUE );
- slv->setUpdatesEnabled( TRUE );
- lv->viewport()->setUpdatesEnabled( TRUE );
- lv->setUpdatesEnabled( TRUE );
- setEnabled( TRUE );
- slv->tqrepaint();
- slv->viewport()->tqrepaint();
- lv->triggerUpdate();
- updateProgress();
- filename = name;
- dirty = FALSE;
- updateCaption();
- me->showNothing();
- doneAndNextAct->setEnabled( FALSE );
- doneAndNextAlt->setEnabled( FALSE );
- messageIsShown = FALSE;
- statusBar()->message(
- tqtr("%1 source phrase(s) loaded.").arg(numMessages),
- MessageMS );
-
- foundItem = 0;
- foundWhere = 0;
- foundOffset = 0;
- if ( lv->childCount() > 0 ) {
- findAct->setEnabled( TRUE );
- findAgainAct->setEnabled( FALSE );
-#ifdef notyet
- replaceAct->setEnabled( TRUE );
-#endif
- lv->setCurrentItem( lv->firstChild() );
- }
- addRecentlyOpenedFile( name, recentFiles );
- updateStatistics();
- } else {
- statusBar()->clear();
- TQMessageBox::warning( this, tqtr("TQt Linguist"),
- tqtr("Cannot open '%1'.").arg(name) );
- }
- }
-}
-
-void TrWindow::open()
-{
- if ( maybeSave() ) {
- TQString newFilename = TQFileDialog::getOpenFileName( filename,
- tqtr("TQt translation source (*.ts)\n"
- "All files (*)"),
- this, "open" );
- openFile( newFilename );
- }
-}
-
-void TrWindow::save()
-{
- if ( filename.isEmpty() )
- return;
-
- if ( tor.save(filename) ) {
- dirty = FALSE;
- updateCaption();
- statusBar()->message( tqtr("File saved."), MessageMS );
- } else {
- TQMessageBox::warning( this, tqtr("TQt Linguist"), tqtr("Cannot save '%1'.")
- .arg(filename) );
- }
-}
-
-void TrWindow::saveAs()
-{
- TQString newFilename = TQFileDialog::getSaveFileName( filename,
- tqtr( "TQt translation source (*.ts)\n"
- "All files (*)"),
- this, "save_as" );
- if ( !newFilename.isEmpty() ) {
- filename = newFilename;
- save();
- updateCaption();
- }
-}
-
-void TrWindow::release()
-{
- TQString newFilename = filename;
- newFilename.replace( TQRegExp(".ts$"), "" );
- newFilename += TQString( ".qm" );
-
- newFilename = TQFileDialog::getSaveFileName( newFilename,
- tqtr("TQt message files for released applications (*.qm)\n"
- "All files (*)"),
- this, "release",
- tqtr("Release") );
- if ( !newFilename.isEmpty() ) {
- if ( tor.release(newFilename) )
- statusBar()->message( tqtr("File created."), MessageMS );
- else
- TQMessageBox::warning( this, tqtr("TQt Linguist"),
- tqtr("Cannot save '%1'.").arg(newFilename) );
- }
-}
-
-void TrWindow::print()
-{
- int pageNum = 0;
-
- if ( printer.setup(this) ) {
- TQApplication::setOverrideCursor( WaitCursor );
- printer.setDocName( filename );
- statusBar()->message( tqtr("Printing...") );
- PrintOut pout( &printer );
- ContextLVI *c = (ContextLVI *) lv->firstChild();
- while ( c != 0 ) {
- setCurrentContextItem( c );
- pout.vskip();
- pout.setRule( PrintOut::ThickRule );
- pout.setGuide( c->context() );
- pout.addBox( 100, tqtr("Context: %1").arg(c->context()),
- PrintOut::Strong );
- pout.flushLine();
- pout.addBox( 4 );
- pout.addBox( 92, c->comment(), PrintOut::Emphasis );
- pout.flushLine();
- pout.setRule( PrintOut::ThickRule );
-
- MessageLVI *m = (MessageLVI *) slv->firstChild();
- while ( m != 0 ) {
- pout.setRule( PrintOut::ThinRule );
-
- TQString type;
- switch ( m->message().type() ) {
- case MetaTranslatorMessage::Finished:
- type = tqtr( "finished" );
- break;
- case MetaTranslatorMessage::Unfinished:
- type = m->danger() ? tqtr( "unresolved" ) : TQString( "unfinished" );
- break;
- case MetaTranslatorMessage::Obsolete:
- type = tqtr( "obsolete" );
- break;
- default:
- type = TQString( "" );
- }
- pout.addBox( 40, m->sourceText() );
- pout.addBox( 4 );
- pout.addBox( 40, m->translation() );
- pout.addBox( 4 );
- pout.addBox( 12, type, PrintOut::Normal, TQt::AlignRight );
- if ( !m->comment().isEmpty() ) {
- pout.flushLine();
- pout.addBox( 4 );
- pout.addBox( 92, m->comment(), PrintOut::Emphasis );
- }
- pout.flushLine( TRUE );
-
- if ( pout.pageNum() != pageNum ) {
- pageNum = pout.pageNum();
- statusBar()->message( tqtr("Printing... (page %1)")
- .arg(pageNum) );
- }
- m = (MessageLVI *) m->nextSibling();
- }
- c = (ContextLVI *) c->nextSibling();
- }
- pout.flushLine( TRUE );
- TQApplication::restoreOverrideCursor();
- statusBar()->message( tqtr("Printing completed"), MessageMS );
- } else {
- statusBar()->message( tqtr("Printing aborted"), MessageMS );
- }
-}
-
-void TrWindow::find()
-{
- h->hide();
- f->show();
- f->setActiveWindow();
- f->raise();
-}
-
-void TrWindow::findAgain()
-{
- int pass = 0;
- int oldItemNo = itemToIndex( slv, slv->currentItem() );
- TQString delayedMsg;
- TQListViewItem * j = foundScope;
- TQListViewItem * k = indexToItem( slv, foundItem );
- TQListViewItem * oldScope = lv->currentItem();
-
- if ( lv->childCount() == 0 )
- return;
-#if 1
- /*
- As long as we don't implement highlighting of the text in the TQTextView,
- we may have only one match per message.
- */
- foundOffset = (int) 0x7fffffff;
-#else
- foundOffset++;
-#endif
- slv->setUpdatesEnabled( FALSE );
- do {
- // Iterate through every item in all contexts
- if ( j == 0 ) {
- j = lv->firstChild();
- setCurrentContextItem( j );
- if ( foundScope != 0 )
- delayedMsg = tqtr("Search wrapped.");
- }
- if ( k == 0 )
- k = slv->firstChild();
-
- while ( k ) {
- MessageLVI * m = (MessageLVI *) k;
- switch ( foundWhere ) {
- case 0:
- foundWhere = FindDialog::SourceText;
- foundOffset = 0;
- // fall-through
- case FindDialog::SourceText:
- if ( searchItem( m->sourceText(), j, k ) ) {
- f->hide();
- if ( !delayedMsg.isEmpty() )
- statusBar()->message( delayedMsg, MessageMS );
- return;
- }
- foundWhere = FindDialog::Translations;
- foundOffset = 0;
- // fall-through
- case FindDialog::Translations:
- if ( searchItem( m->translation(), j, k ) ) {
- f->hide();
- if ( !delayedMsg.isEmpty() )
- statusBar()->message( delayedMsg, MessageMS );
- return;
- }
- foundWhere = FindDialog::Comments;
- foundOffset = 0;
- // fall-through
- case FindDialog::Comments:
- if ( searchItem( ((ContextLVI *) j)->fullContext(), j, k) ) {
- f->hide();
- if ( !delayedMsg.isEmpty() )
- statusBar()->message( delayedMsg, MessageMS );
- return;
- }
- foundWhere = 0;
- foundOffset = 0;
- }
- k = k->nextSibling();
- }
-
- j = j->nextSibling();
- if ( j ) {
- setCurrentContextItem( j );
- k = slv->firstChild();
- }
- } while ( pass++ != lv->childCount() );
-
- // This is just to keep the current scope and source text item
- // selected after a search failed.
- if ( oldScope ) {
- setCurrentContextItem( oldScope );
- TQListViewItem * tmp = indexToItem( slv, oldItemNo );
- if( tmp )
- setCurrentMessageItem( tmp );
- } else {
- if( lv->firstChild() )
- setCurrentContextItem( lv->firstChild() );
- if( slv->firstChild() )
- setCurrentMessageItem( slv->firstChild() );
- }
-
- slv->setUpdatesEnabled( TRUE );
- slv->triggerUpdate();
- tqApp->beep();
- TQMessageBox::warning( this, tqtr("TQt Linguist"),
- TQString( tqtr("Cannot find the string '%1'.") ).arg(findText) );
- foundItem = 0;
- foundWhere = 0;
- foundOffset = 0;
-}
-
-void TrWindow::replace()
-{
- f->hide();
- h->show();
- h->setActiveWindow();
- h->raise();
-}
-
-int TrWindow::itemToIndex( TQListView * view, TQListViewItem * item )
-{
- int no = 0;
- TQListViewItem * tmp;
-
- if( view && item ){
- if( (tmp = view->firstChild()) != 0 )
- do {
- no++;
- tmp = tmp->nextSibling();
- } while( tmp && (tmp != item) );
- }
- return no;
-}
-
-TQListViewItem * TrWindow::indexToItem( TQListView * view, int index )
-{
- TQListViewItem * item = 0;
-
- if ( view && index > 0 ) {
- item = view->firstChild();
- while( item && index-- > 0 )
- item = item->nextSibling();
- }
- return item;
-}
-
-bool TrWindow::searchItem( const TQString & searchWhat, TQListViewItem * j,
- TQListViewItem * k )
-{
- if ( (findWhere & foundWhere) != 0 ) {
- foundOffset = searchWhat.find( findText, foundOffset, findMatchCase );
- if ( foundOffset >= 0 ) {
- foundItem = itemToIndex( slv, k );
- foundScope = j;
- setCurrentMessageItem( k );
- slv->setUpdatesEnabled( TRUE );
- slv->triggerUpdate();
- return TRUE;
- }
- }
- foundOffset = 0;
- return FALSE;
-}
-
-void TrWindow::newPhraseBook()
-{
- TQString name;
- for (;;) {
- name = TQFileDialog::getSaveFileName( TQString(),
- tqtr("TQt phrase books (*.qph)\n"
- "All files (*)"),
- this, "new_phrasebook",
- tqtr("Create New Phrase Book") );
- if ( !TQFile::exists(name) )
- break;
- TQMessageBox::warning( this, tqtr("TQt Linguist"),
- tqtr("A file called '%1' already exists."
- " Please choose another name.").arg(name) );
- }
- if ( !name.isEmpty() ) {
- PhraseBook pb;
- if ( savePhraseBook(name, pb) ) {
- if ( openPhraseBook(name) )
- statusBar()->message( tqtr("Phrase book created."), MessageMS );
- }
- }
-}
-
-void TrWindow::openPhraseBook()
-{
- TQString phrasebooks( qInstallPathData() );
- TQString name = TQFileDialog::getOpenFileName( phrasebooks + "/phrasebooks",
- tqtr("TQt phrase books (*.qph)\n"
- "All files (*)"),
- this, "open_phrasebook",
- tqtr("Open Phrase Book") );
- if ( !name.isEmpty() && !phraseBookNames.contains(name) ) {
- if ( openPhraseBook(name) ) {
- int n = (int)(phraseBooks.at( phraseBooks.count() - 1 )->count());
- statusBar()->message( tqtr("%1 phrase(s) loaded.").arg(n),
- MessageMS );
- }
- }
-}
-
-void TrWindow::closePhraseBook( int id )
-{
- int index = closePhraseBookp->indexOf( id );
- phraseBooks.remove( index );
- phraseBookNames.remove( phraseBookNames.at(index) );
- updatePhraseDict();
-
- dirtyItem = index; // remove the item next time the menu is opened
- editPhraseBookp->removeItem( editPhraseBookp->idAt(index) );
- printPhraseBookp->removeItem( printPhraseBookp->idAt(index) );
-}
-
-void TrWindow::editPhraseBook( int id )
-{
- int index = editPhraseBookp->indexOf( id );
- PhraseBookBox box( phraseBookNames[index], *phraseBooks.at(index), this,
- "phrase book box", TRUE );
- box.setCaption( tqtr("%1 - %2").arg(tqtr("TQt Linguist"))
- .arg(friendlyPhraseBookName(index)) );
- box.resize( 500, 300 );
- box.exec();
- *phraseBooks.at( index ) = box.phraseBook();
- updatePhraseDict();
-}
-
-void TrWindow::printPhraseBook( int id )
-{
- int index = printPhraseBookp->indexOf( id );
- int pageNum = 0;
-
- if ( printer.setup(this) ) {
- printer.setDocName( phraseBookNames[index] );
- statusBar()->message( tqtr("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( tqtr("Printing... (page %1)")
- .arg(pageNum) );
- }
- pout.setRule( PrintOut::NoRule );
- pout.flushLine( TRUE );
- }
- pout.flushLine( TRUE );
- statusBar()->message( tqtr("Printing completed"), MessageMS );
- } else {
- statusBar()->message( tqtr("Printing aborted"), MessageMS );
- }
-}
-
-void TrWindow::revertSorting()
-{
- lv->setSorting( 0 );
- slv->setSorting( 0 );
-}
-
-void TrWindow::manual()
-{
- TQAssistantClient *ac = new TQAssistantClient( qInstallPathBins(), TQT_TQOBJECT(this) );
- ac->showPage( TQString( qInstallPathDocs() ) + "/html/linguist-manual.html" );
-}
-
-void TrWindow::about()
-{
- AboutDialog about( this, 0, TRUE );
- about.versionLabel->setText( tqtr("Version %1").arg(TQT_VERSION_STR) );
- about.exec();
-}
-
-void TrWindow::aboutTQt()
-{
- TQMessageBox::aboutTQt( this, tqtr("TQt Linguist") );
-}
-
-void TrWindow::setupPhrase()
-{
- bool enabled = !phraseBooks.isEmpty();
- phrasep->setItemEnabled( closePhraseBookId, enabled );
- phrasep->setItemEnabled( editPhraseBookId, enabled );
- phrasep->setItemEnabled( printPhraseBookId, enabled );
-}
-
-void TrWindow::closeEvent( TQCloseEvent *e )
-{
- if ( maybeSave() )
- e->accept();
- else
- e->ignore();
-}
-
-bool TrWindow::maybeSave()
-{
- if ( dirty ) {
- switch ( TQMessageBox::information(this, tqtr("TQt Linguist"),
- tqtr("Do you want to save '%1'?")
- .arg(filename),
- TQMessageBox::Yes | TQMessageBox::Default,
- TQMessageBox::No,
- TQMessageBox::Cancel | TQMessageBox::Escape ) )
- {
- case TQMessageBox::Cancel:
- return FALSE;
- case TQMessageBox::Yes:
- save();
- return !dirty;
- case TQMessageBox::No:
- break;
- }
- }
- return TRUE;
-}
-
-void TrWindow::updateCaption()
-{
- TQString 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 = tqtr( "TQt Linguist by Trolltech" );
- else
- cap = tqtr( "%1 - %2" ).arg( tqtr("TQt 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( TQListViewItem *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();
- }
-
- // Make sure that we update the source text and translation text. Use the first message in the new scope.
- setCurrentMessageItem(slv->firstChild());
- // This must be explicitly called since the signal is not emitted if the context only contains one item
- showNewCurrent(slv->firstChild());
- slv->viewport()->setUpdatesEnabled( upe );
- slv->setUpdatesEnabled( upe );
- if( upe )
- slv->triggerUpdate();
- oldContext = (ContextLVI *) item;
- statusBar()->clear();
- }
-}
-
-void TrWindow::showNewCurrent( TQListViewItem *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 TQString& translation )
-{
- TQListViewItem *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()->updatetqStatus();
- updateProgress();
- }
- tor.insert( m->message() );
- if ( !dirty ) {
- dirty = TRUE;
- updateCaption();
- }
- m->updateTranslationText();
- }
- }
-}
-
-void TrWindow::updateFinished( bool finished )
-{
- TQListViewItem *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() )
- tqApp->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()->updatetqStatus();
- } else {
- if ( m->danger() != dngr )
- m->setDanger( dngr );
- tor.insert( m->message() );
- if ( !dirty ) {
- dirty = TRUE;
- updateCaption();
- }
- tqApp->beep();
- }
- updateStatistics();
-}
-
-void TrWindow::toggleFinished( TQListViewItem *item, const TQPoint& /* 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()->updatetqStatus();
- } else {
- bool oldDanger = m->danger();
- m->setDanger( danger(m->sourceText(), m->translation(),
- !oldDanger) );
- if ( !oldDanger && m->danger() )
- tqApp->beep();
- tor.insert( m->message() );
- if ( !dirty ) {
- dirty = TRUE;
- updateCaption();
- }
- }
- updateStatistics();
- }
-}
-
-void TrWindow::nextUnfinished()
-{
- if ( nextUnfinishedAct->isEnabled() ) {
- // Select a message to translate, grab the first available if
- // there are no current selection.
- TQListViewItem * cItem = lv->currentItem(); // context item
- TQListViewItem * 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( tqtr("No phrase to translate."),
- MessageMS );
- tqApp->beep();
- return;
- } else {
- showNewScope( cItem );
- while( cItem && !(mItem = slv->firstChild()) ) {
- // no tqchildren in this node - try next one
- cItem = cItem->nextSibling();
- showNewScope( cItem );
- }
- setCurrentContextItem( cItem );
- if( mItem ) {
- setCurrentMessageItem( mItem );
- } else {
- statusBar()->message( tqtr("No phrase to translate."),
- MessageMS );
- tqApp->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 );
- showNewCurrent( 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( tqtr("No untranslated phrases left."), MessageMS );
- tqApp->beep();
-}
-
-static TQListViewItem * lastChild( TQListView * view )
-{
- if ( view ) {
- TQListViewItem * 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.
- TQListViewItem * cItem = lv->currentItem(); // context item
- TQListViewItem * 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( tqtr("No phrase to translate."),
- MessageMS );
- tqApp->beep();
- return;
- } else {
- showNewScope( cItem );
- while( cItem && !(mItem = slv->firstChild()) ) {
- // no tqchildren in this node - try next one
- cItem = cItem->nextSibling();
- showNewScope( cItem );
- }
- setCurrentContextItem( cItem );
- if( mItem ) {
- setCurrentMessageItem( cItem );
- } else {
- statusBar()->message( tqtr("No phrase to translate."),
- MessageMS );
- tqApp->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.
- n = m;
- do {
- n = (MessageLVI * ) n->itemAbove();
- if ( n == 0 )
- break;
- if ( n && !n->finished() ) {
- setCurrentMessageItem( n );
- return;
- }
- } while ( !((ContextLVI *) cItem)->finished() && n != 0 );
-
- // If all siblings are Finished or Obsolete, look in the prev
- // Unfinished context.
- q = p;
- do {
- q = (ContextLVI *) q->itemAbove();
- if ( q == 0 )
- q = (ContextLVI *) lastChild( lv );
- if ( q && !q->finished() ) {
- showNewScope( q );
- setCurrentContextItem( q );
- n = (MessageLVI *) lastChild( slv );
- while ( n && n->finished() )
- n = (MessageLVI *) n->itemAbove();
- if ( n && q ) {
- setCurrentMessageItem( n );
- return;
- }
- }
- } while ( q != 0 );
- }
- statusBar()->message( tqtr("No untranslated phrases left."), MessageMS );
- tqApp->beep();
-}
-
-void TrWindow::prev()
-{
- TQListViewItem * cItem = lv->currentItem(); // context item
- TQListViewItem * mItem = slv->currentItem(); // message item
- TQListViewItem * tmp;
-
- if ( !cItem ) {
- cItem = lv->firstChild();
- if ( !cItem ) return;
- setCurrentContextItem( cItem );
- }
-
- if ( !mItem ) {
- mItem = lastChild( slv );
- if ( !mItem ) return;
- setCurrentMessageItem( mItem );
- } else {
- if ( (tmp = mItem->itemAbove()) != 0 ) {
- setCurrentMessageItem( tmp );
- return;
- } else {
- if ( (tmp = cItem->itemAbove()) == 0 ) {
- tmp = lastChild( lv );
- }
- if ( !tmp ) return;
- setCurrentContextItem( tmp );
- setCurrentMessageItem( lastChild( slv ) );
- }
- }
-}
-
-void TrWindow::next()
-{
- TQListViewItem * cItem = lv->currentItem(); // context item
- TQListViewItem * mItem = slv->currentItem(); // message item
- TQListViewItem * tmp;
-
- if ( !cItem ) {
- cItem = lv->firstChild();
- if ( !cItem ) return;
- setCurrentContextItem( cItem );
- }
-
- if ( !mItem ) {
- mItem = slv->firstChild();
- if ( !mItem ) return;
- setCurrentMessageItem( mItem );
- } else {
- if ( (tmp = mItem->nextSibling()) != 0 ) {
- setCurrentMessageItem( tmp );
- return;
- } else {
- if ( (tmp = cItem->nextSibling()) == 0 ) {
- tmp = lv->firstChild();
- }
- if ( !tmp ) return;
- setCurrentContextItem( tmp );
- setCurrentMessageItem( slv->firstChild() );
- }
- }
-}
-
-
-void TrWindow::findNext( const TQString& text, int where, bool matchCase )
-{
- findText = text;
- if ( findText.isEmpty() )
- findText = TQString( "magicwordthatyoushouldavoid" );
- findWhere = where;
- findMatchCase = matchCase;
- findAgainAct->setEnabled( TRUE );
- findAgain();
-}
-
-void TrWindow::revalidate()
-{
- ContextLVI *c = (ContextLVI *) lv->firstChild();
- TQListViewItem * oldScope = lv->currentItem();
- int oldItemNo = itemToIndex( slv, slv->currentItem() );
- slv->setUpdatesEnabled( FALSE );
-
- while ( c != 0 ) {
- showNewScope( c );
- MessageLVI *m = (MessageLVI *) slv->firstChild();
- while ( m != 0 ) {
- m->setDanger( danger(m->sourceText(), m->translation()) &&
- m->message().type() == MetaTranslatorMessage::Finished );
- m = (MessageLVI *) m->nextSibling();
- }
- c = (ContextLVI *) c->nextSibling();
- }
-
- if ( oldScope ){
- showNewScope( oldScope );
- TQListViewItem * tmp = indexToItem( slv, oldItemNo );
- if( tmp )
- setCurrentMessageItem( tmp );
- }
- slv->setUpdatesEnabled( TRUE );
- slv->triggerUpdate();
-}
-
-TQString TrWindow::friendlyString( const TQString& str )
-{
- TQString f = str.lower();
- f.replace( TQRegExp(TQString("[.,:;!?()-]")), TQString(" ") );
- f.replace( "&", TQString("") );
- f = f.simplifyWhiteSpace();
- f = f.lower();
- return f;
-}
-
-void TrWindow::setupMenuBar()
-{
- TQMenuBar * m = menuBar();
- TQPopupMenu * filep = new TQPopupMenu( this );
- TQPopupMenu * editp = new TQPopupMenu( this );
- TQPopupMenu * translationp = new TQPopupMenu( this );
- TQPopupMenu * validationp = new TQPopupMenu( this );
- validationp->setCheckable( TRUE );
- phrasep = new TQPopupMenu( this );
- closePhraseBookp = new TQPopupMenu( this );
- editPhraseBookp = new TQPopupMenu( this );
- printPhraseBookp = new TQPopupMenu( this );
- TQPopupMenu * viewp = new TQPopupMenu( this );
- viewp->setCheckable( TRUE );
- TQPopupMenu * helpp = new TQPopupMenu( this );
-
- m->insertItem( tqtr("&File"), filep );
- m->insertItem( tqtr("&Edit"), editp );
- m->insertItem( tqtr("&Translation"), translationp );
- m->insertItem( tqtr("V&alidation"), validationp );
- m->insertItem( tqtr("&Phrases"), phrasep );
- m->insertItem( tqtr("&View"), viewp );
- m->insertSeparator();
- m->insertItem( tqtr("&Help"), helpp );
-
- connect( closePhraseBookp, TQT_SIGNAL(activated(int)),
- this, TQT_SLOT(closePhraseBook(int)) );
- connect( closePhraseBookp, TQT_SIGNAL(aboutToShow()),
- this, TQT_SLOT(updateClosePhraseBook()) );
- connect( editPhraseBookp, TQT_SIGNAL(activated(int)),
- this, TQT_SLOT(editPhraseBook(int)) );
- connect( printPhraseBookp, TQT_SIGNAL(activated(int)),
- this, TQT_SLOT(printPhraseBook(int)) );
- // File menu
- openAct = new Action( filep, tqtr("&Open..."), TQT_TQOBJECT(this), TQT_SLOT(open()),
- "fileopen.png", TQAccel::stringToKey(tqtr("Ctrl+O")) );
-
- filep->insertSeparator();
-
- saveAct = new Action( filep, tqtr("&Save"), TQT_TQOBJECT(this), TQT_SLOT(save()),
- "filesave.png", TQAccel::stringToKey(tqtr("Ctrl+S")) );
- saveAsAct = new Action( filep, tqtr("Save &As..."), TQT_TQOBJECT(this), TQT_SLOT(saveAs()) );
- releaseAct = new Action( filep, tqtr("&Release..."), TQT_TQOBJECT(this), TQT_SLOT(release()) );
- filep->insertSeparator();
- printAct = new Action( filep, tqtr("&Print..."), TQT_TQOBJECT(this), TQT_SLOT(print()),
- "print.png", TQAccel::stringToKey(tqtr("Ctrl+P")) );
-
- filep->insertSeparator();
-
- recentFilesMenu = new TQPopupMenu( this );
- filep->insertItem( tqtr("Re&cently opened files"), recentFilesMenu );
- connect( recentFilesMenu, TQT_SIGNAL(aboutToShow()), this,
- TQT_SLOT(setupRecentFilesMenu()) );
- connect( recentFilesMenu, TQT_SIGNAL(activated( int )), this,
- TQT_SLOT(recentFileActivated( int )) );
-
- filep->insertSeparator();
-
- exitAct = new Action( filep, tqtr("E&xit"), TQT_TQOBJECT(this), TQT_SLOT(close()),
- TQString(), TQAccel::stringToKey(tqtr("Ctrl+Q")) );
- // Edit menu
- undoAct = new Action( editp, tqtr("&Undo"), TQT_TQOBJECT(me), TQT_SLOT(undo()),
- "undo.png", TQAccel::stringToKey(tqtr("Ctrl+Z")) );
- undoAct->setEnabled( FALSE );
- connect( me, TQT_SIGNAL(undoAvailable(bool)), undoAct, TQT_SLOT(setEnabled(bool)) );
- redoAct = new Action( editp, tqtr("&Redo"), TQT_TQOBJECT(me), TQT_SLOT(redo()),
- "redo.png", TQAccel::stringToKey(tqtr("Ctrl+Y")) );
- redoAct->setEnabled( FALSE );
- connect( me, TQT_SIGNAL(redoAvailable(bool)), redoAct, TQT_SLOT(setEnabled(bool)) );
- editp->insertSeparator();
- cutAct = new Action( editp, tqtr("Cu&t"), TQT_TQOBJECT(me), TQT_SLOT(cut()),
- "editcut.png", TQAccel::stringToKey(tqtr("Ctrl+X")) );
- cutAct->setEnabled( FALSE );
- connect( me, TQT_SIGNAL(cutAvailable(bool)), cutAct, TQT_SLOT(setEnabled(bool)) );
- copyAct = new Action( editp, tqtr("&Copy"), TQT_TQOBJECT(me), TQT_SLOT(copy()),
- "editcopy.png", TQAccel::stringToKey(tqtr("Ctrl+C")) );
- copyAct->setEnabled( FALSE );
- connect( me, TQT_SIGNAL(copyAvailable(bool)), copyAct, TQT_SLOT(setEnabled(bool)) );
- pasteAct = new Action( editp, tqtr("&Paste"), TQT_TQOBJECT(me), TQT_SLOT(paste()),
- "editpaste.png", TQAccel::stringToKey(tqtr("Ctrl+V")) );
- pasteAct->setEnabled( FALSE );
- connect( me, TQT_SIGNAL(pasteAvailable(bool)),
- pasteAct, TQT_SLOT(setEnabled(bool)) );
- selectAllAct = new Action( editp, tqtr("Select &All"), TQT_TQOBJECT(me), TQT_SLOT(selectAll()),
- TQString(), TQAccel::stringToKey(tqtr("Ctrl+A")) );
- selectAllAct->setEnabled( FALSE );
- editp->insertSeparator();
- findAct = new Action( editp, tqtr("&Find..."), TQT_TQOBJECT(this), TQT_SLOT(find()),
- "searchfind.png", TQAccel::stringToKey(tqtr("Ctrl+F")) );
- findAct->setEnabled( FALSE );
- findAgainAct = new Action( editp, tqtr("Find &Next"),
- TQT_TQOBJECT(this), TQT_SLOT(findAgain()), TQString(), Qt::Key_F3 );
- findAgainAct->setEnabled( FALSE );
-#ifdef notyet
- replaceAct = new Action( editp, tqtr("&Replace..."), TQT_TQOBJECT(this), TQT_SLOT(replace()),
- TQAccel::stringToKey(tqtr("Ctrl+H")) );
- replaceAct->setEnabled( FALSE );
-#endif
-
- // Translation menu
- // when updating the accelerators, remember the status bar
- prevUnfinishedAct = new Action( translationp, tqtr("&Prev Unfinished"),
- TQT_TQOBJECT(this), TQT_SLOT(prevUnfinished()),
- "prevunfinished.png", TQAccel::stringToKey(tqtr("Ctrl+K")) );
- nextUnfinishedAct = new Action( translationp, tqtr("&Next Unfinished"),
- TQT_TQOBJECT(this), TQT_SLOT(nextUnfinished()),
- "nextunfinished.png", TQAccel::stringToKey(tqtr("Ctrl+L")) );
-
- prevAct = new Action( translationp, tqtr("P&rev"),
- TQT_TQOBJECT(this), TQT_SLOT(prev()), "prev.png",
- TQAccel::stringToKey(tqtr("Ctrl+Shift+K")) );
- nextAct = new Action( translationp, tqtr("Ne&xt"),
- TQT_TQOBJECT(this), TQT_SLOT(next()), "next.png",
- TQAccel::stringToKey(tqtr("Ctrl+Shift+L")) );
- doneAndNextAct = new Action( translationp, tqtr("Done and &Next"),
- TQT_TQOBJECT(this), TQT_SLOT(doneAndNext()), "doneandnext.png",
- TQAccel::stringToKey(tqtr("Ctrl+Enter")) );
- doneAndNextAlt = new TQAction( this );
- doneAndNextAlt->setAccel( TQAccel::stringToKey(tqtr("Ctrl+Return")) );
- connect( doneAndNextAlt, TQT_SIGNAL(activated()), this, TQT_SLOT(doneAndNext()) );
- beginFromSourceAct = new Action( translationp, tqtr("&Begin from Source"),
- TQT_TQOBJECT(me), TQT_SLOT(beginFromSource()),
- TQString(), TQAccel::stringToKey(tqtr("Ctrl+B")) );
- connect( me, TQT_SIGNAL(updateActions(bool)), beginFromSourceAct,
- TQT_SLOT(setEnabled(bool)) );
-
- // Phrasebook menu
- newPhraseBookAct = new Action( phrasep, tqtr("&New Phrase Book..."),
- TQT_TQOBJECT(this), TQT_SLOT(newPhraseBook()),
- TQString(), TQAccel::stringToKey(tqtr("Ctrl+N")) );
- openPhraseBookAct = new Action( phrasep, tqtr("&Open Phrase Book..."),
- TQT_TQOBJECT(this), TQT_SLOT(openPhraseBook()),
- "book.png", TQAccel::stringToKey(tqtr("Ctrl+H")) );
- closePhraseBookId = phrasep->insertItem( tqtr("&Close Phrase Book"),
- closePhraseBookp );
- phrasep->insertSeparator();
- editPhraseBookId = phrasep->insertItem( tqtr("&Edit Phrase Book..."),
- editPhraseBookp );
- printPhraseBookId = phrasep->insertItem( tqtr("&Print Phrase Book..."),
- printPhraseBookp );
- connect( phrasep, TQT_SIGNAL(aboutToShow()), this, TQT_SLOT(setupPhrase()) );
-
- // Validation menu
- acceleratorsAct = new Action( validationp, tqtr("&Accelerators"),
- TQT_TQOBJECT(this), TQT_SLOT(revalidate()), "accelerator.png", 0, TRUE );
- acceleratorsAct->setOn( TRUE );
- endingPunctuationAct = new Action( validationp, tqtr("&Ending Punctuation"),
- TQT_TQOBJECT(this), TQT_SLOT(revalidate()), "punctuation.png", 0, TRUE );
- endingPunctuationAct->setOn( TRUE );
- phraseMatchesAct = new Action( validationp, tqtr("&Phrase Matches"),
- TQT_TQOBJECT(this), TQT_SLOT(revalidate()), "phrase.png", 0, TRUE );
- phraseMatchesAct->setOn( TRUE );
-
- // View menu
- revertSortingAct = new Action( viewp, tqtr("&Revert Sorting"),
- TQT_TQOBJECT(this), TQT_SLOT(revertSorting()) );
- doGuessesAct = new Action( viewp, tqtr("&Display guesses"),
- TQT_TQOBJECT(this), TQT_SLOT(toggleGuessing()) );
- doGuessesAct->setToggleAction( TRUE );
- doGuessesAct->setOn( TRUE );
- toggleStats = new Action( viewp, tqtr("&Statistics"), TQT_TQOBJECT(this), TQT_SLOT(toggleStatistics()) );
- toggleStats->setToggleAction( TRUE );
- viewp->insertSeparator();
- viewp->insertItem( tqtr("Vie&ws"), createDockWindowMenu( NoToolBars ) );
- viewp->insertItem( tqtr("&Toolbars"), createDockWindowMenu( OnlyToolBars ) );
-
- // Help
- manualAct = new Action( helpp, tqtr("&Manual"), TQT_TQOBJECT(this), TQT_SLOT(manual()), 0,
- Qt::Key_F1 );
- helpp->insertSeparator();
- aboutAct = new Action( helpp, tqtr("&About"), TQT_TQOBJECT(this), TQT_SLOT(about()) );
- aboutTQtAct = new Action( helpp, tqtr("About &TQt"), TQT_TQOBJECT(this), TQT_SLOT(aboutTQt()) );
- helpp->insertSeparator();
- whatsThisAct = new Action( helpp, tqtr("&What's This?"),
- TQT_TQOBJECT(this), TQT_SLOT(whatsThis()), "whatsthis.xpm", Qt::SHIFT + Qt::Key_F1 );
-
- openAct->setWhatsThis( tqtr("Open a TQt translation source file (TS file) for"
- " editing.") );
- saveAct->setWhatsThis( tqtr("Save changes made to this TQt translation "
- "source file.") );
- saveAsAct->setWhatsThis( tqtr("Save changes made to this TQt translation"
- "source file into a new file.") );
- releaseAct->setWhatsThis( tqtr("Create a TQt message file suitable for"
- " released applications"
- " from the current message file.") );
- printAct->setWhatsThis( tqtr("Print a list of all the phrases in the current"
- " TQt translation source file.") );
- exitAct->setWhatsThis( tqtr("Close this window and exit.") );
-
- undoAct->setWhatsThis( tqtr("Undo the last editing operation performed on the"
- " translation.") );
- redoAct->setWhatsThis( tqtr("Redo an undone editing operation performed on"
- " the translation.") );
- cutAct->setWhatsThis( tqtr("Copy the selected translation text to the"
- " clipboard and deletes it.") );
- copyAct->setWhatsThis( tqtr("Copy the selected translation text to the"
- " clipboard.") );
- pasteAct->setWhatsThis( tqtr("Paste the clipboard text into the"
- " translation.") );
- selectAllAct->setWhatsThis( tqtr("Select the whole translation text.") );
- findAct->setWhatsThis( tqtr("Search for some text in the translation "
- "source file.") );
- findAgainAct->setWhatsThis( tqtr("Continue the search where it was left.") );
-#ifdef notyet
- replaceAct->setWhatsThis( tqtr("Search for some text in the translation"
- " source file and replace it by another"
- " text.") );
-#endif
-
- newPhraseBookAct->setWhatsThis( tqtr("Create a new phrase book.") );
- openPhraseBookAct->setWhatsThis( tqtr("Open a phrase book to assist"
- " translation.") );
- acceleratorsAct->setWhatsThis( tqtr("Toggle validity checks of"
- " accelerators.") );
- endingPunctuationAct->setWhatsThis( tqtr("Toggle validity checks"
- " of ending punctuation.") );
- phraseMatchesAct->setWhatsThis( tqtr("Toggle checking that phrase"
- " suggestions are used.") );
-
- revertSortingAct->setWhatsThis( tqtr("Sort the items back in the same order"
- " as in the message file.") );
-
- doGuessesAct->setWhatsThis( tqtr("Set whether or not to display translation guesses.") );
- manualAct->setWhatsThis( tqtr("Display the manual for %1.")
- .arg(tqtr("TQt Linguist")) );
- aboutAct->setWhatsThis( tqtr("Display information about %1.")
- .arg(tqtr("TQt Linguist")) );
- aboutTQtAct->setWhatsThis( tqtr("Display information about the TQt toolkit by"
- " Trolltech.") );
- whatsThisAct->setWhatsThis( tqtr("Enter What's This? mode.") );
-
- beginFromSourceAct->setWhatsThis( tqtr("Copies the source text into"
- " the translation field.") );
- nextAct->setWhatsThis( tqtr("Moves to the next item.") );
- prevAct->setWhatsThis( tqtr("Moves to the previous item.") );
- nextUnfinishedAct->setWhatsThis( tqtr("Moves to the next unfinished item.") );
- prevUnfinishedAct->setWhatsThis( tqtr("Moves to the previous unfinished item.") );
- doneAndNextAct->setWhatsThis( tqtr("Marks this item as done and moves to the"
- " next unfinished item.") );
- doneAndNextAlt->setWhatsThis( doneAndNextAct->whatsThis() );
-}
-
-void TrWindow::setupToolBars()
-{
- TQToolBar *filet = new TQToolBar( tqtr("File"), this );
- TQToolBar *editt = new TQToolBar( tqtr("Edit"), this );
- TQToolBar *translationst = new TQToolBar( tqtr("Translation"), this );
- TQToolBar *validationt = new TQToolBar( tqtr("Validation"), this );
- TQToolBar *helpt = new TQToolBar( tqtr("Help"), this );
-
- openAct->addToToolbar( filet, tqtr("Open") );
- saveAct->addToToolbar( filet, tqtr("Save") );
- printAct->addToToolbar( filet, tqtr("Print") );
- filet->addSeparator();
- openPhraseBookAct->addToToolbar( filet, tqtr("Open Phrase Book") );
-
- undoAct->addToToolbar( editt, tqtr("Undo") );
- redoAct->addToToolbar( editt, tqtr("Redo") );
- editt->addSeparator();
- cutAct->addToToolbar( editt, tqtr("Cut") );
- copyAct->addToToolbar( editt, tqtr("Copy") );
- pasteAct->addToToolbar( editt, tqtr("Paste") );
- editt->addSeparator();
- findAct->addToToolbar( editt, tqtr("Find") );
-#ifdef notyet
- replaceAct->addToToolbar( editt, tqtr("Replace") );
-#endif
-
- // beginFromSourceAct->addToToolbar( translationst,
- // tqtr("Begin from Source"), "searchfind" );
- prevAct->addToToolbar( translationst, tqtr("Prev") );
- nextAct->addToToolbar( translationst, tqtr("Next") );
- prevUnfinishedAct->addToToolbar( translationst, tqtr("Prev Unfinished") );
- nextUnfinishedAct->addToToolbar( translationst, tqtr("Next Unfinished") );
- doneAndNextAct->addToToolbar( translationst, tqtr("Done and Next") );
-
- acceleratorsAct->addToToolbar( validationt, tqtr("Accelerators") );
- endingPunctuationAct->addToToolbar( validationt, tqtr("Punctuation") );
- phraseMatchesAct->addToToolbar( validationt, tqtr("Phrases") );
-
- whatsThisAct->addToToolbar( helpt, tqtr("What's This?") );
-}
-
-void TrWindow::setCurrentContextItem( TQListViewItem *item )
-{
- lv->ensureItemVisible( item );
- lv->setSelected( item, TRUE );
-}
-
-void TrWindow::setCurrentMessageItem( TQListViewItem *item )
-{
- slv->ensureItemVisible( item );
- slv->setSelected( item, TRUE );
-}
-
-TQString TrWindow::friendlyPhraseBookName( int k )
-{
- return TQFileInfo( phraseBookNames[k] ).fileName();
-}
-
-bool TrWindow::openPhraseBook( const TQString& name )
-{
- PhraseBook *pb = new PhraseBook;
- if ( !pb->load(name) ) {
- TQMessageBox::warning( this, tqtr("TQt Linguist"),
- tqtr("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->TQMenuData::setWhatsThis( id, tqtr("Close this phrase book.") );
- id = editPhraseBookp->insertItem( friendlyPhraseBookName(index) );
- editPhraseBookp->TQMenuData::setWhatsThis( id, tqtr("Allow you to add, modify, or delete"
- " phrases of this phrase book.") );
- id = printPhraseBookp->insertItem( friendlyPhraseBookName(index) );
- printPhraseBookp->TQMenuData::setWhatsThis( id, tqtr("Print the entries of the phrase"
- " book.") );
- updatePhraseDict();
- return TRUE;
-}
-
-bool TrWindow::savePhraseBook( TQString& name, const PhraseBook& pb )
-{
- if ( !name.contains( ".qph" ) && !name.contains(".") )
- name += ".qph";
-
- if ( !pb.save(name) ) {
- TQMessageBox::warning( this, tqtr("TQt Linguist"),
- tqtr("Cannot create phrase book '%1'.")
- .arg(name) );
- return FALSE;
- }
- return TRUE;
-}
-
-void TrWindow::updateProgress()
-{
- if ( numNonobsolete == 0 )
- progress->setText( TQString(" " " ") );
- else
- progress->setText( TQString(" %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()
-{
- TQPtrListIterator<PhraseBook> pb = phraseBooks;
- PhraseBook::Iterator p;
- PhraseBook *ent;
- phraseDict.clear();
- while ( pb.current() != 0 ) {
- for ( p = (*pb)->begin(); p != (*pb)->end(); ++p ) {
- TQString f = friendlyString( (*p).source() );
- if ( f.length() > 0 ) {
- f = TQStringList::split( TQChar(' '), 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 TQString& source )
-{
- PhraseBook phrases;
- TQString f = friendlyString( source );
- TQStringList lookupWords = TQStringList::split( TQChar(' '), f );
- TQStringList::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 TQString& source, const TQString& translation,
- bool verbose )
-{
- if ( acceleratorsAct->isOn() ) {
- int sk = TQAccel::shortcutKey( source );
- int tk = TQAccel::shortcutKey( translation );
- if ( sk == 0 && tk != 0 ) {
- if ( verbose )
- statusBar()->message( tqtr("Accelerator possibly superfluous in"
- " translation."), ErrorMS );
- return TRUE;
- } else if ( sk != 0 && tk == 0 ) {
- if ( verbose )
- statusBar()->message( tqtr("Accelerator possibly missing in"
- " translation."), ErrorMS );
- return TRUE;
- }
- }
- if ( endingPunctuationAct->isOn() ) {
- if ( ending(source) != ending(translation) ) {
- if ( verbose )
- statusBar()->message( tqtr("Translation does not end with the"
- " same punctuation as the source"
- " text."), ErrorMS );
- return TRUE;
- }
- }
- if ( phraseMatchesAct->isOn() ) {
- TQString fsource = friendlyString( source );
- TQString ftranslation = friendlyString( translation );
- TQStringList lookupWords = TQStringList::split( TQChar(' '), fsource );
- TQStringList::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( tqtr("A phrase book suggestion for"
- " '%1' was ignored.")
- .arg(*w), ErrorMS );
- return TRUE;
- }
- }
- }
- }
- if ( verbose )
- statusBar()->clear();
-
- return FALSE;
-}
-
-void TrWindow::readConfig()
-{
- TQString keybase( "/TQt Linguist/" +
- TQString::number( (TQT_VERSION >> 16) & 0xff ) +
- "." + TQString::number( (TQT_VERSION >> 8) & 0xff ) + "/" );
- TQSettings config;
-
- config.insertSearchPath( TQSettings::Windows, "/Trolltech" );
-
- TQRect 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() ) );
-
- TQRect desk = TQApplication::desktop()->tqgeometry();
- TQRect inter = desk.intersect( r );
- resize( r.size() );
- if ( inter.width() * inter.height() > ( r.width() * r.height() / 20 ) ) {
- move( r.topLeft() );
- }
- }
-
- TQDockWindow * dw;
- dw = (TQDockWindow *) lv->parent();
- int place;
- place = config.readNumEntry( keybase + "Geometry/ContextwindowInTQt::Dock" );
- 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 == TQDockWindow::OutsideDock ) {
- dw->undock();
- dw->show();
- }
- dw->setGeometry( r );
-
- dw = (TQDockWindow *) slv->parent();
- place = config.readNumEntry( keybase + "Geometry/SourcewindowInTQt::Dock" );
- 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 == TQDockWindow::OutsideDock ) {
- dw->undock();
- dw->show();
- }
- dw->setGeometry( r );
-
- dw = (TQDockWindow *) plv->parent()->parent();
- place = config.readNumEntry( keybase + "Geometry/PhrasewindowInTQt::Dock" );
- 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 == TQDockWindow::OutsideDock ) {
- dw->undock();
- dw->show();
- }
- dw->setGeometry( r );
- TQApplication::sendPostedEvents();
-}
-
-void TrWindow::writeConfig()
-{
- TQString keybase( "/TQt Linguist/" +
- TQString::number( (TQT_VERSION >> 16) & 0xff ) +
- "." + TQString::number( (TQT_VERSION >> 8) & 0xff ) + "/" );
- TQSettings config;
-
- config.insertSearchPath( TQSettings::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() );
-
- TQDockWindow * dw =(TQDockWindow *) lv->parent();
- config.writeEntry( keybase + "Geometry/ContextwindowInTQt::Dock", 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 =(TQDockWindow *) slv->parent();
- config.writeEntry( keybase + "Geometry/SourcewindowInTQt::Dock",
- dw->place() );
- config.writeEntry( keybase + "Geometry/SourcewindowX", dw->tqgeometry().x() );
- config.writeEntry( keybase + "Geometry/SourcewindowY", dw->tqgeometry().y() );
- config.writeEntry( keybase + "Geometry/SourcewindowWidth", dw->width() );
- config.writeEntry( keybase + "Geometry/SourcewindowHeight", dw->height() );
-
- dw =(TQDockWindow *) plv->parent()->parent();
- config.writeEntry( keybase + "Geometry/PhrasewindowInTQt::Dock",
- dw->place() );
- config.writeEntry( keybase + "Geometry/PhrasewindowX", dw->tqgeometry().x() );
- config.writeEntry( keybase + "Geometry/PhrasewindowY", dw->tqgeometry().y() );
- config.writeEntry( keybase + "Geometry/PhrasewindowWidth", dw->width() );
- config.writeEntry( keybase + "Geometry/PhrasewindowHeight", dw->height() );
-}
-
-void TrWindow::setupRecentFilesMenu()
-{
- recentFilesMenu->clear();
- int id = 0;
- TQStringList::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 TQString &fn, TQStringList &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;
- }
-}
-
-void TrWindow::toggleStatistics()
-{
- if ( toggleStats->isOn() ) {
- if ( !stats ) {
- stats = new Statistics( this, "linguist_stats" );
- connect( this, TQT_SIGNAL(statsChanged(int,int,int,int,int,int)), stats,
- TQT_SLOT(updateStats(int,int,int,int,int,int)) );
- connect( stats, TQT_SIGNAL(closed()), toggleStats, TQT_SLOT(toggle()) );
- }
- updateStatistics();
- stats->show();
- } else if ( stats ) {
- stats->close();
- }
-}
-
-void TrWindow::updateStatistics()
-{
- TQListViewItem * ci = lv->firstChild();
- int trW = 0;
- int trC = 0;
- int trCS = 0;
- while ( ci ) {
- countStats( ci, ((ContextLVI *)ci)->firstMessageItem(), trW, trC, trCS );
- ci = ci->nextSibling();
- }
- // ..and the items in the source list
- countStats( 0, slv->firstChild(), trW, trC, trCS );
- emit statsChanged( srcWords, srcChars, srcCharsSpc, trW, trC, trCS );
-}
-
-
-void TrWindow::countStats( TQListViewItem* ci, TQListViewItem* mi, int& trW, int& trC, int& trCS )
-{
- MessageLVI * m;
- while ( mi ) {
- m = (MessageLVI *) mi;
- if ( m->finished() && !(m->message().type() == MetaTranslatorMessage::Obsolete) )
- doCharCounting( m->translation(), trW, trC, trCS );
- if ( ci )
- mi = ((ContextLVI *)ci)->nextMessageItem();
- else
- mi = mi->nextSibling();
- }
-}
-
-void TrWindow::doCharCounting( const TQString& text, int& trW, int& trC, int& trCS )
-{
- trCS += text.length();
- bool inWord = FALSE;
- for ( int i = 0; i < (int) text.length(); i++ ) {
- if ( text[i].isLetterOrNumber() || text[i] == TQChar('_') ) {
- if ( !inWord ) {
- trW++;
- inWord = TRUE;
- }
- } else {
- inWord = FALSE;
- }
- if ( !text[i].isSpace() )
- trC++;
- }
-}