diff options
| author | Thomas Hartmann <Thomas.Hartmann@theqtcompany.com> | 2015-07-09 10:25:54 +0200 |
|---|---|---|
| committer | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2015-07-14 14:05:06 +0000 |
| commit | 045d1496b5947551465189a7c0f56931bf17b718 (patch) | |
| tree | 4f11d8f214509f310737e09182299bfc910e2a44 | |
| parent | 6eec39c30869e7068abd51a8827671e55fab8bc7 (diff) | |
| download | qt-creator-045d1496b5947551465189a7c0f56931bf17b718.tar.gz | |
QmlDesigner: create error output file for puppet builds
Change-Id: I140820702d11e5bc20e6063bdee13411a5f2eeaa
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
3 files changed, 21 insertions, 4 deletions
diff --git a/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.cpp b/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.cpp index dfe36cea5c..30002333e5 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.cpp @@ -67,6 +67,12 @@ bool PuppetBuildProgressDialog::useFallbackPuppet() const return m_useFallbackPuppet; } +void PuppetBuildProgressDialog::setErrorOutputFile(const QString &filePath) +{ + ui->openErrorOutputFileLabel->setText(QString::fromLatin1("<a href='file:///%1'>%2</a>").arg( + filePath, ui->openErrorOutputFileLabel->text())); +} + void PuppetBuildProgressDialog::setUseFallbackPuppet() { m_useFallbackPuppet = true; diff --git a/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.h b/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.h index ab2622c7fb..53432f70ab 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.h +++ b/src/plugins/qmldesigner/designercore/instances/puppetbuildprogressdialog.h @@ -51,6 +51,7 @@ public: void setProgress(int progress); void newBuildOutput(const QByteArray &standardOutput); bool useFallbackPuppet() const; + void setErrorOutputFile(const QString &filePath); private slots: void setUseFallbackPuppet(); diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index b397d1a264..55b91b0bc1 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -391,21 +391,31 @@ bool PuppetCreator::startBuildProcess(const QString &buildDirectoryPath, if (command.isEmpty()) return false; + const QString errorOutputFilePath(buildDirectoryPath + QLatin1String("/build_error_output.txt")); + if (QFile::exists(errorOutputFilePath)) + QFile(errorOutputFilePath).remove(); + progressDialog->setErrorOutputFile(errorOutputFilePath); + QProcess process; + process.setStandardErrorFile(errorOutputFilePath); process.setProcessChannelMode(QProcess::SeparateChannels); process.setProcessEnvironment(processEnvironment()); process.setWorkingDirectory(buildDirectoryPath); process.start(command, processArguments); process.waitForStarted(); - while (process.waitForReadyRead(-1)) { + while (process.waitForReadyRead(100) || process.state() == QProcess::Running) { if (progressDialog->useFallbackPuppet()) return false; + QApplication::processEvents(QEventLoop::ExcludeSocketNotifiers); + QByteArray newOutput = process.readAllStandardOutput(); - if (progressDialog) - progressDialog->newBuildOutput(newOutput); + if (!newOutput.isEmpty()) { + if (progressDialog) + progressDialog->newBuildOutput(newOutput); - m_compileLog.append(newOutput); + m_compileLog.append(QString::fromLatin1(newOutput)); + } } process.waitForFinished(); |
