You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
6.1 KiB
161 lines
6.1 KiB
/***************************************************************************
|
|
tab_pgnview.cpp - description
|
|
-------------------
|
|
begin : Sat Jan 25 2003
|
|
copyright : (C) 2003 by Troy Corbin Jr.
|
|
email : tcorbin@users.sf.net
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "tab_pgnview.moc"
|
|
#include "tabmanager.h"
|
|
#include "resource.h"
|
|
#include "pgn.h"
|
|
#include <tqfile.h>
|
|
#include <tqregexp.h>
|
|
#include <tqtextstream.h>
|
|
#include <kstddirs.h>
|
|
#include <tdetempfile.h>
|
|
|
|
tab_pgnView::tab_pgnView(pgn *parent, resource *Rsrc ) : KnightsTextView(0,Rsrc)
|
|
{
|
|
myParent = parent;
|
|
whiteImage = NULL;
|
|
blackImage = NULL;
|
|
|
|
TQString source = locate( "appdata", "pgn_template.kml" );
|
|
TQFile file( source );
|
|
if( file.open( IO_ReadOnly ) )
|
|
{
|
|
TQTextStream stream( &file );
|
|
document = stream.read();
|
|
file.close();
|
|
}
|
|
else
|
|
{
|
|
kdWarning() << "tab_pgnView::tab_pgnView: Can not find PGN Template" << endl;
|
|
}
|
|
}
|
|
|
|
tab_pgnView::~tab_pgnView()
|
|
{
|
|
if( whiteImage )
|
|
delete whiteImage;
|
|
if( blackImage )
|
|
delete blackImage;
|
|
}
|
|
///////////////////////////////////////
|
|
//
|
|
// tab_pgnView::init
|
|
//
|
|
///////////////////////////////////////
|
|
void tab_pgnView::init( void )
|
|
{
|
|
/* Replace macros with data */
|
|
document.replace( TQRegExp( "%site%" ), myParent->TAG_Site );
|
|
document.replace( TQRegExp( "%date%" ), myParent->TAG_Date );
|
|
document.replace( TQRegExp( "%round%" ), myParent->TAG_Round );
|
|
document.replace( TQRegExp( "%result%" ), myParent->TAG_Result );
|
|
document.replace( TQRegExp( "%white%" ), myParent->TAG_White );
|
|
document.replace( TQRegExp( "%whitetitle%" ), myParent->TAG_WhiteTitle );
|
|
document.replace( TQRegExp( "%whiteelo%" ), myParent->TAG_WhiteElo );
|
|
document.replace( TQRegExp( "%whiteuscf%" ), myParent->TAG_WhiteUSCF );
|
|
document.replace( TQRegExp( "%whitena%" ), myParent->TAG_WhiteNA );
|
|
document.replace( TQRegExp( "%whitetype%" ), myParent->TAG_WhiteType );
|
|
document.replace( TQRegExp( "%black%" ), myParent->TAG_Black );
|
|
document.replace( TQRegExp( "%blacktitle%" ), myParent->TAG_BlackTitle );
|
|
document.replace( TQRegExp( "%blackelo%" ), myParent->TAG_BlackElo );
|
|
document.replace( TQRegExp( "%blackuscf%" ), myParent->TAG_BlackUSCF );
|
|
document.replace( TQRegExp( "%blackna%" ), myParent->TAG_BlackNA );
|
|
document.replace( TQRegExp( "%blacktype%" ), myParent->TAG_BlackType );
|
|
document.replace( TQRegExp( "%time%" ), myParent->TAG_Time );
|
|
document.replace( TQRegExp( "%utctime%" ), myParent->TAG_UTCTime );
|
|
document.replace( TQRegExp( "%utcdate%" ), myParent->TAG_UTCDate );
|
|
document.replace( TQRegExp( "%event%" ), myParent->TAG_Event );
|
|
document.replace( TQRegExp( "%eventdate%" ), myParent->TAG_EventDate );
|
|
document.replace( TQRegExp( "%eventsponsor"), myParent->TAG_EventSponsor );
|
|
document.replace( TQRegExp( "%section%" ), myParent->TAG_Section );
|
|
document.replace( TQRegExp( "%stage%" ), myParent->TAG_Stage );
|
|
document.replace( TQRegExp( "%board%" ), myParent->TAG_Board );
|
|
document.replace( TQRegExp( "%opening%" ), myParent->TAG_Opening );
|
|
document.replace( TQRegExp( "%variation%" ), myParent->TAG_Variation );
|
|
document.replace( TQRegExp( "%subvariation%" ), myParent->TAG_SubVariation );
|
|
document.replace( TQRegExp( "%eco%" ), myParent->TAG_ECO );
|
|
document.replace( TQRegExp( "%nic%" ), myParent->TAG_NIC );
|
|
document.replace( TQRegExp( "%timecontrol%" ), myParent->TAG_TimeControl );
|
|
document.replace( TQRegExp( "%termination%" ), myParent->TAG_Termination );
|
|
document.replace( TQRegExp( "%setup%" ), myParent->TAG_SetUp );
|
|
document.replace( TQRegExp( "%fen%" ), myParent->TAG_FEN );
|
|
document.replace( TQRegExp( "%annotator%" ), myParent->TAG_Annotator );
|
|
document.replace( TQRegExp( "%mode%" ), myParent->TAG_Mode );
|
|
document.replace( TQRegExp( "%plycount%" ), myParent->TAG_PlyCount );
|
|
|
|
/* Get the White Player's Image */
|
|
TQPixmap wi = myResource->loadSCIDImage( myParent->TAG_White );
|
|
if( wi.isNull() )
|
|
{
|
|
if( myParent->TAG_WhiteType == "program" )
|
|
wi.load( locate("data", "knights/default-engine-portrait.jpg" ) );
|
|
else
|
|
wi.load( locate("data", "knights/default-portrait.jpg" ) );
|
|
}
|
|
whiteImage = new KTempFile();
|
|
whiteImage->setAutoDelete( TRUE );
|
|
wi.save( whiteImage->name(), "PNG" );
|
|
document.replace( TQRegExp( "%whiteimage%" ), whiteImage->name() );
|
|
|
|
/* Get the Black Player's Image */
|
|
TQPixmap bi = myResource->loadSCIDImage( myParent->TAG_Black );
|
|
if( bi.isNull() )
|
|
{
|
|
if( myParent->TAG_BlackType == "program" )
|
|
bi.load( locate("data", "knights/default-engine-portrait.jpg" ) );
|
|
else
|
|
bi.load( locate("data", "knights/default-portrait.jpg" ) );
|
|
}
|
|
blackImage = new KTempFile();
|
|
blackImage->setAutoDelete( TRUE );
|
|
bi.save( blackImage->name(), "PNG" );
|
|
document.replace( TQRegExp( "%blackimage%" ), blackImage->name() );
|
|
|
|
/* Obtain the move data */
|
|
TQString moves;
|
|
TQStringList *list;
|
|
if( myParent->Move_Data.isEmpty() )
|
|
{
|
|
list = myParent->notation(2);
|
|
}
|
|
else
|
|
{
|
|
list = new TQStringList( myParent->Move_Data );
|
|
}
|
|
|
|
/* Do some formatting and then merge the strings */
|
|
for( TQStringList::Iterator i = list->begin(); i != list->end(); i++ )
|
|
{
|
|
(*i).replace( TQRegExp( "[^\\0040-\\0176]" ), "" );
|
|
(*i).replace( TQRegExp( "\\(" ), "<i>(" );
|
|
(*i).replace( TQRegExp( "\\)" ), ")</i>" );
|
|
(*i).replace( TQRegExp( "\\{" ), "<b>{" );
|
|
(*i).replace( TQRegExp( "\\}" ), "}</b>" );
|
|
}
|
|
moves = list->join( " " );
|
|
delete list;
|
|
|
|
int pos = document.find( "%moves%" );
|
|
if( pos != -1 )
|
|
{
|
|
document.remove( (unsigned int)pos, 7 );
|
|
document.insert( (unsigned int)pos, moves );
|
|
}
|
|
setText( document );
|
|
}
|