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