xsltproc.cpp
author insilmaril
Tue, 09 Mar 2010 13:09:05 +0000
changeset 833 bfacef6f29c1
parent 825 1ad892c1a709
permissions -rw-r--r--
Bugfix: Previous checkin caused toggleScroll to fail
insilmaril@205
     1
#include "xsltproc.h"
insilmaril@205
     2
insilmaril@205
     3
#include <iostream>
insilmaril@825
     4
using namespace std;
insilmaril@825
     5
insilmaril@205
     6
#include <qmessagebox.h>
insilmaril@205
     7
insilmaril@205
     8
#include "process.h"
insilmaril@205
     9
insilmaril@205
    10
insilmaril@518
    11
extern bool debug;
insilmaril@518
    12
insilmaril@205
    13
XSLTProc::XSLTProc ()
insilmaril@205
    14
{
insilmaril@205
    15
	xsltprocessor="xsltproc";
insilmaril@205
    16
	showOutput=false;
insilmaril@205
    17
	dia=new ShowTextDialog;
insilmaril@205
    18
}
insilmaril@205
    19
insilmaril@205
    20
XSLTProc::~XSLTProc ()
insilmaril@205
    21
{
insilmaril@205
    22
	delete (dia);
insilmaril@205
    23
}
insilmaril@205
    24
insilmaril@205
    25
void XSLTProc::addStringParam (const QString & k, const QString &v)
insilmaril@205
    26
{
insilmaril@205
    27
	stringParamKey.append (k);
insilmaril@205
    28
	stringParamVal.append (v);
insilmaril@205
    29
}
insilmaril@205
    30
insilmaril@205
    31
void XSLTProc::setOutputFile    (const QString &s)
insilmaril@205
    32
{
insilmaril@205
    33
	outputFile=s;
insilmaril@205
    34
}
insilmaril@205
    35
insilmaril@205
    36
void XSLTProc::setXSLFile(const QString &s)
insilmaril@205
    37
{
insilmaril@205
    38
	xslFile=s;
insilmaril@205
    39
}
insilmaril@205
    40
insilmaril@205
    41
void XSLTProc::setInputFile     (const QString &s)
insilmaril@205
    42
{
insilmaril@205
    43
	inputFile=s;
insilmaril@205
    44
}
insilmaril@205
    45
insilmaril@205
    46
void XSLTProc::addOutput (const QString &s)
insilmaril@205
    47
{
insilmaril@205
    48
	dia->append (s);
insilmaril@205
    49
}
insilmaril@205
    50
insilmaril@205
    51
void XSLTProc::process()
insilmaril@205
    52
{
insilmaril@205
    53
	ShowTextDialog dia;
insilmaril@408
    54
	QStringList args;
insilmaril@205
    55
	Process *xsltProc=new Process ();
insilmaril@205
    56
insilmaril@205
    57
	QStringList::Iterator itk;
insilmaril@205
    58
	QStringList::Iterator itv=stringParamVal.begin();
insilmaril@205
    59
insilmaril@205
    60
	for ( itk = stringParamKey.begin(); itk != stringParamKey.end(); ++itk ) 
insilmaril@205
    61
	{
insilmaril@408
    62
		args << "--stringparam";
insilmaril@408
    63
		args << *itk;
insilmaril@408
    64
		args << *itv;
insilmaril@205
    65
		++itv;
insilmaril@205
    66
    }
insilmaril@205
    67
	
insilmaril@408
    68
	args << "--output";
insilmaril@408
    69
	args << outputFile;
insilmaril@408
    70
	args << xslFile;
insilmaril@408
    71
	args << inputFile;
insilmaril@430
    72
	QString com=xsltprocessor+" "+args.join(" "); 
insilmaril@660
    73
	if (debug) cout <<"xsltproc executing:\n"<<qPrintable(com)<<endl;
insilmaril@430
    74
	dia.append ("vym is executing: \n" + com );	
insilmaril@408
    75
	xsltProc->start(xsltprocessor,args);
insilmaril@408
    76
	if (!xsltProc->waitForStarted() )
insilmaril@205
    77
	{
insilmaril@205
    78
		QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
insilmaril@205
    79
					   QObject::tr("Could not start %1").arg(xsltprocessor) );
insilmaril@205
    80
	} else
insilmaril@205
    81
	{
insilmaril@430
    82
		if (!xsltProc->waitForFinished())
insilmaril@677
    83
		{
insilmaril@205
    84
			QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
insilmaril@205
    85
			   QObject::tr("%1 didn't exit normally").arg(xsltprocessor) +
insilmaril@205
    86
			   xsltProc->getErrout() );
insilmaril@205
    87
			if (xsltProc->exitStatus()>0) showOutput=true;
insilmaril@677
    88
		}	   
insilmaril@205
    89
			
insilmaril@205
    90
	}	
insilmaril@205
    91
	dia.append ("\n");
insilmaril@205
    92
	dia.append (xsltProc->getErrout());
insilmaril@205
    93
	dia.append (xsltProc->getStdout());
insilmaril@205
    94
	
insilmaril@205
    95
	if (showOutput) dia.exec();
insilmaril@205
    96
}
insilmaril@205
    97