insilmaril@205: #include "xsltproc.h" insilmaril@205: insilmaril@205: #include insilmaril@205: #include insilmaril@205: insilmaril@205: #include "process.h" insilmaril@205: insilmaril@205: insilmaril@205: XSLTProc::XSLTProc () insilmaril@205: { insilmaril@205: xsltprocessor="xsltproc"; insilmaril@205: showOutput=false; insilmaril@205: dia=new ShowTextDialog; insilmaril@205: } insilmaril@205: insilmaril@205: XSLTProc::~XSLTProc () insilmaril@205: { insilmaril@205: delete (dia); insilmaril@205: } insilmaril@205: insilmaril@205: void XSLTProc::addStringParam (const QString & k, const QString &v) insilmaril@205: { insilmaril@205: stringParamKey.append (k); insilmaril@205: stringParamVal.append (v); insilmaril@205: } insilmaril@205: insilmaril@205: void XSLTProc::setOutputFile (const QString &s) insilmaril@205: { insilmaril@205: outputFile=s; insilmaril@205: } insilmaril@205: insilmaril@205: void XSLTProc::setXSLFile(const QString &s) insilmaril@205: { insilmaril@205: xslFile=s; insilmaril@205: } insilmaril@205: insilmaril@205: void XSLTProc::setInputFile (const QString &s) insilmaril@205: { insilmaril@205: inputFile=s; insilmaril@205: } insilmaril@205: insilmaril@205: void XSLTProc::addOutput (const QString &s) insilmaril@205: { insilmaril@205: dia->append (s); insilmaril@205: } insilmaril@205: insilmaril@205: void XSLTProc::process() insilmaril@205: { insilmaril@205: ShowTextDialog dia; insilmaril@205: Process *xsltProc=new Process (); insilmaril@205: xsltProc->clearArguments(); insilmaril@205: xsltProc->addArgument (xsltprocessor); insilmaril@205: insilmaril@205: QStringList::Iterator itk; insilmaril@205: QStringList::Iterator itv=stringParamVal.begin(); insilmaril@205: insilmaril@205: for ( itk = stringParamKey.begin(); itk != stringParamKey.end(); ++itk ) insilmaril@205: { insilmaril@205: xsltProc->addArgument ("--stringparam"); insilmaril@205: xsltProc->addArgument (*itk); insilmaril@205: xsltProc->addArgument (*itv); insilmaril@205: ++itv; insilmaril@205: } insilmaril@205: insilmaril@205: xsltProc->addArgument ("--output"); insilmaril@205: xsltProc->addArgument (outputFile); insilmaril@205: xsltProc->addArgument (xslFile); insilmaril@205: xsltProc->addArgument (inputFile); insilmaril@205: dia.append ("vym is executing: \n" + xsltProc->arguments().join(" ") ); insilmaril@217: //FIXME testing insilmaril@217: cout <arguments().join(" ")) <start() ) insilmaril@205: { insilmaril@205: QMessageBox::critical( 0, QObject::tr( "Critical Error" ), insilmaril@205: QObject::tr("Could not start %1").arg(xsltprocessor) ); insilmaril@205: } else insilmaril@205: { insilmaril@205: xsltProc->waitFinished(); insilmaril@205: if (!xsltProc->normalExit() ) insilmaril@205: QMessageBox::critical( 0, QObject::tr( "Critical Error" ), insilmaril@205: QObject::tr("%1 didn't exit normally").arg(xsltprocessor) + insilmaril@205: xsltProc->getErrout() ); insilmaril@205: else insilmaril@205: if (xsltProc->exitStatus()>0) showOutput=true; insilmaril@205: insilmaril@205: } insilmaril@205: dia.append ("\n"); insilmaril@205: dia.append (xsltProc->getErrout()); insilmaril@205: dia.append (xsltProc->getStdout()); insilmaril@205: insilmaril@205: if (showOutput) dia.exec(); insilmaril@205: } insilmaril@205: