QString KSimpleProcess::execInternal( const QString &args, bool addStdError) { m_proc->setArguments( splitArgList( args )); connect(m_proc, SIGNAL(processExited()), this, SLOT(slotProcessExited())); connect(m_proc, SIGNAL(readyReadStdout()), this, SLOT(slotReceivedStdout())); if( addStdError ) connect(m_proc, SIGNAL(readyReadStderr()), this, SLOT(slotReceivedStderr())); if ( !m_proc->start() ) return i18n("Could not run command '%1'.").arg( args.latin1() ); enter_loop(); return m_currBuffer; }
void K3b::IsoImager::start() { jobStarted(); cleanup(); d->mkisofsBin = initMkisofs(); if( !d->mkisofsBin ) { jobFinished( false ); return; } initVariables(); delete m_process; m_process = new K3b::Process( this ); m_process->setFlags( K3bQProcess::RawStdout ); *m_process << d->mkisofsBin; // prepare the filenames as written to the image m_doc->prepareFilenames(); if( !prepareMkisofsFiles() || !addMkisofsParameters() ) { cleanup(); jobFinished( false ); return; } connect( m_process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(slotProcessExited(int,QProcess::ExitStatus)) ); connect( m_process, SIGNAL(stderrLine(QString)), this, SLOT(slotReceivedStderr(QString)) ); qDebug() << "***** mkisofs parameters:\n"; QString s = m_process->joinedArgs(); qDebug() << s << endl << flush; emit debuggingOutput("mkisofs command:", s); if( !m_process->start( KProcess::SeparateChannels ) ) { // something went wrong when starting the program // it "should" be the executable qDebug() << "(K3b::IsoImager) could not start mkisofs"; emit infoMessage( i18n("Could not start %1.", QLatin1String("mkisofs")), K3b::Job::MessageError ); jobFinished( false ); cleanup(); } }
ReportGenerator::ReportGenerator() :mArchDoc( 0 ) { connect( this, SIGNAL( templateGenerated( const QString& )), this, SLOT( slotConvertTemplate( const QString& ))); mProcess.setOutputChannelMode( KProcess::SeparateChannels ); connect( &mProcess, SIGNAL( finished( int ) ),this, SLOT( trml2pdfFinished( int ) ) ); connect( &mProcess, SIGNAL( readyReadStandardOutput()), this, SLOT( slotReceivedStdout() ) ); connect( &mProcess, SIGNAL( readyReadStandardError()), this, SLOT( slotReceivedStderr() ) ); connect( &mProcess, SIGNAL( error ( QProcess::ProcessError )), this, SLOT( slotError( QProcess::ProcessError))); mAddressProvider = new AddressProvider( this ); connect( mAddressProvider, SIGNAL( addresseeFound( const QString&, const KABC::Addressee& )), this, SLOT( slotAddresseeFound( const QString&, const KABC::Addressee& ) ) ); connect( mAddressProvider, SIGNAL( finished(int) ), this, SLOT( slotAddresseeSearchFinished(int)) ); }
bool EvaScriptManager::qt_invoke( int _id, QUObject* _o ) { switch ( _id - staticMetaObject()->slotOffset() ) { case 0: slotCurrentChanged((QListViewItem*)static_QUType_ptr.get(_o+1)); break; case 1: static_QUType_bool.set(_o,slotInstallScript()); break; case 2: static_QUType_bool.set(_o,slotInstallScript((const QString&)static_QUType_QString.get(_o+1))); break; case 3: slotUninstallScript(); break; case 4: static_QUType_bool.set(_o,slotRunScript()); break; case 5: static_QUType_bool.set(_o,slotRunScript((bool)static_QUType_bool.get(_o+1))); break; case 6: slotStopScript(); break; case 7: slotConfigureScript(); break; case 8: slotAboutScript(); break; case 9: slotShowContextMenu((QListViewItem*)static_QUType_ptr.get(_o+1),(const QPoint&)*((const QPoint*)static_QUType_ptr.get(_o+2))); break; case 10: slotReceivedStdout((KProcess*)static_QUType_ptr.get(_o+1),(char*)static_QUType_charstar.get(_o+2),(int)static_QUType_int.get(_o+3)); break; case 11: slotReceivedStderr((KProcess*)static_QUType_ptr.get(_o+1),(char*)static_QUType_charstar.get(_o+2),(int)static_QUType_int.get(_o+3)); break; case 12: scriptFinished((KProcess*)static_QUType_ptr.get(_o+1)); break; default: return KDialogBase::qt_invoke( _id, _o ); } return TRUE; }
bool CvsJob::execute() { // setup job environment to use the ssh-agent (if it is running) SshAgent ssh; if( !ssh.pid().isEmpty() ) { // qCDebug(log_cervisia) << "PID = " << ssh.pid(); // qCDebug(log_cervisia) << "SOCK = " << ssh.authSock(); d->childproc->setEnv("SSH_AGENT_PID", ssh.pid()); d->childproc->setEnv("SSH_AUTH_SOCK", ssh.authSock()); } d->childproc->setEnv("SSH_ASKPASS", "cvsaskpass"); if( !d->rsh.isEmpty() ) d->childproc->setEnv("CVS_RSH", d->rsh); if( !d->server.isEmpty() ) d->childproc->setEnv("CVS_SERVER", d->server); if( !d->directory.isEmpty() ) d->childproc->setWorkingDirectory(d->directory); connect(d->childproc, SIGNAL(finished(int,QProcess::ExitStatus)), SLOT(slotProcessFinished())); connect(d->childproc, SIGNAL(readyReadStandardOutput()), SLOT(slotReceivedStdout())); connect(d->childproc, SIGNAL(readyReadStandardError()), SLOT(slotReceivedStderr())); qCDebug(log_cervisia) << "Execute cvs command:" << cvsCommand(); d->isRunning = true; d->childproc->setOutputChannelMode(KProcess::SeparateChannels); d->childproc->setShellCommand(cvsCommand()); d->childproc->start(); return d->childproc->waitForStarted(); }
void ReportGenerator::runTrml2Pdf( const QString& rmlFile, const QString& docID, const QString& archId ) { mErrors.clear(); // findTrml2Pdf returns a list of command line parts for the converter, such as // /usr/bin/pyhton /usr/local/share/erml2pdf.py QStringList rmlbin = findTrml2Pdf(); if ( ! rmlbin.size() ) { mErrors = i18n("The utility to create PDF from the rml file could not be found, " "but is required to create documents.\n"); mErrors += i18n("Please make sure the package is installed accordingly."); trml2pdfFinished(1, QProcess::NormalExit); } QApplication::setOverrideCursor( QCursor( Qt::BusyCursor ) ); if ( mHavePdfMerge && mMergeIdent != "0" && ( mWatermarkFile.isEmpty() || !QFile::exists( mWatermarkFile ) ) ) { QMessageBox msgBox; msgBox.setText(i18n("The Watermark file to merge with the document could not be found. " "Merge is going to be disabled.")); msgBox.setWindowTitle(i18n("Watermark Error")); msgBox.setStandardButtons(QMessageBox::Ok); msgBox.exec(); mMergeIdent = "0"; } const QString outputDir = ArchiveMan::self()->pdfBaseDir(); const QString filename = ArchiveMan::self()->archiveFileName( docID, archId, "pdf" ); mFile.setFileName( QString( "%1/%2").arg( outputDir).arg( filename ) ); // qDebug () << "Writing output to " << mFile.fileName(); // check if we have etrml2pdf bool haveErml = false; QStringList args; if( rmlbin.size() > 1 ) { QString ermlbin = rmlbin[1]; if( ermlbin.endsWith( "erml2pdf.py") ) { haveErml = true; } args.append(rmlbin.at(1)); } const QString prg = rmlbin.at(0); if( !haveErml ) { if ( mHavePdfMerge ) { args << mMergeIdent; } args << rmlFile; if ( mHavePdfMerge && mMergeIdent != "0" ) { args << mWatermarkFile; } } else { // qDebug () << "Erml2pdf available!"; if ( mHavePdfMerge && mMergeIdent != "0" ) { args << "-m" << mMergeIdent; args << "-w" << mWatermarkFile; } args << rmlFile; } mOutputSize = 0; if ( mFile.open( QIODevice::WriteOnly ) ) { qDebug() << "Converting " << rmlFile << "using" << prg << args.join(QChar(' ')); mProcess = new QProcess(this); connect(mProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(slotReceivedStdout())); connect(mProcess, SIGNAL(readyReadStandardError()), this, SLOT(slotReceivedStderr())); connect(mProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(trml2pdfFinished(int,QProcess::ExitStatus))); mProcess->setProgram( prg ); mProcess->setArguments(args); mTargetStream.setDevice( &mFile ); mProcess->start( ); } else {
void K3b::IsoImager::startSizeCalculation() { d->mkisofsBin = initMkisofs(); if( !d->mkisofsBin ) { jobFinished( false ); return; } initVariables(); delete m_process; m_process = new K3b::Process( this ); m_process->setSplitStdout(true); emit debuggingOutput( QLatin1String( "Used versions" ), QString::fromLatin1( "mkisofs: %1").arg(d->mkisofsBin->version()) ); *m_process << d->mkisofsBin; if( !prepareMkisofsFiles() || !addMkisofsParameters(true) ) { cleanup(); jobFinished( false ); return; } // add empty dummy dir since one path-spec is needed // ??? Seems it is not needed after all. At least mkisofs 1.14 and above don't need it. ??? // *m_process << dummyDir(); qDebug() << "***** mkisofs calculate size parameters:"; QString s = m_process->joinedArgs(); qDebug() << s << endl << flush; emit debuggingOutput("mkisofs calculate size command:", s); // since output changed during mkisofs version changes we grab both // stdout and stderr // mkisofs version >= 1.15 (don't know about 1.14!) // the extends on stdout (as lonely number) // and error and warning messages on stderr // mkisofs >= 1.13 // everything is written to stderr // last line is: "Total extents scheduled to be written = XXXXX" connect( m_process, SIGNAL(stdoutLine(QString)), this, SLOT(slotCollectMkisofsPrintSizeStdout(QString)) ); connect( m_process, SIGNAL(stderrLine(QString)), this, SLOT(slotCollectMkisofsPrintSizeStderr(QString)) ); connect( m_process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(slotMkisofsPrintSizeFinished()) ); // we also want error messages connect( m_process, SIGNAL(stderrLine(QString)), this, SLOT(slotReceivedStderr(QString)) ); m_collectedMkisofsPrintSizeStdout = QString(); m_collectedMkisofsPrintSizeStderr = QString(); m_mkisofsPrintSizeResult = 0; if( !m_process->start( KProcess::SeparateChannels ) ) { emit infoMessage( i18n("Could not start %1.",QString("mkisofs")), K3b::Job::MessageError ); cleanup(); jobFinished( false ); return; } }