27 #include <QMessageBox> 29 QgsRunProcess::QgsRunProcess(
const QString& action,
bool capture )
30 : mProcess( nullptr ), mOutput( nullptr )
42 connect( mProcess, SIGNAL( error( QProcess::ProcessError ) ),
this, SLOT( processError( QProcess::ProcessError ) ) );
43 connect( mProcess, SIGNAL( readyReadStandardOutput() ),
this, SLOT( stdoutAvailable() ) );
44 connect( mProcess, SIGNAL( readyReadStandardError() ),
this, SLOT( stderrAvailable() ) );
48 connect( mProcess, SIGNAL( finished(
int, QProcess::ExitStatus ) ),
this, SLOT( processExit(
int, QProcess::ExitStatus ) ) );
53 mOutput->setTitle( action );
55 mOutput->showMessage(
false );
61 connect( mOutputObj, SIGNAL( destroyed() ),
this, SLOT( dialogGone() ) );
65 mProcess->start( action );
69 if ( ! mProcess->startDetached( action ) )
72 tr(
"Unable to run command\n%1" ).arg( action ),
73 QMessageBox::Ok, Qt::NoButton );
81 QgsRunProcess::~QgsRunProcess()
86 void QgsRunProcess::die()
94 QByteArray bytes( mProcess->readAllStandardOutput() );
96 QString line( codec->toUnicode( bytes ) );
99 mOutput->appendMessage( line );
104 QByteArray bytes( mProcess->readAllStandardOutput() );
106 QString line( codec->toUnicode( bytes ) );
109 mOutput->appendMessage(
"<font color=red>" + line +
"</font>" );
123 mOutput->appendMessage(
"<b>" +
tr(
"Done" ) +
"</b>" );
143 disconnect( mProcess, SIGNAL( error( QProcess::ProcessError ) ),
this, SLOT( processError( QProcess::ProcessError ) ) );
144 disconnect( mProcess, SIGNAL( readyReadStandardOutput() ),
this, SLOT( stdoutAvailable() ) );
145 disconnect( mProcess, SIGNAL( readyReadStandardError() ),
this, SLOT( stderrAvailable() ) );
146 disconnect( mProcess, SIGNAL( finished(
int, QProcess::ExitStatus ) ),
this, SLOT( processExit(
int, QProcess::ExitStatus ) ) );
153 if ( err == QProcess::FailedToStart )
static QgsMessageOutput * createMessageOutput()
function that returns new class derived from QgsMessageOutput (don't forget to delete it then if show...
QTextCodec * codecForLocale()
virtual void setMessage(const QString &message, MessageType msgType)=0
set message, it won't be displayed until
void processError(QProcess::ProcessError)
StandardButton critical(QWidget *parent, const QString &title, const QString &text, QFlags< QMessageBox::StandardButton > buttons, StandardButton defaultButton)
void processExit(int, QProcess::ExitStatus)
Interface for showing messages from QGIS in GUI independent way.