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@518: extern bool debug; insilmaril@518: 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@408: QStringList args; insilmaril@205: Process *xsltProc=new Process (); 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@408: args << "--stringparam"; insilmaril@408: args << *itk; insilmaril@408: args << *itv; insilmaril@205: ++itv; insilmaril@205: } insilmaril@205: insilmaril@408: args << "--output"; insilmaril@408: args << outputFile; insilmaril@408: args << xslFile; insilmaril@408: args << inputFile; insilmaril@430: QString com=xsltprocessor+" "+args.join(" "); insilmaril@518: if (debug) cout <<"xsltproc executing:\n"<start(xsltprocessor,args); insilmaril@408: if (!xsltProc->waitForStarted() ) 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@430: if (!xsltProc->waitForFinished()) 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: