From 2407f4258fba0c603e2e11cfd840cf413412b728 Mon Sep 17 00:00:00 2001 From: Christian Kandeler <christian.kandeler@nokia.com> Date: Thu, 31 Mar 2011 18:22:22 +0200 Subject: [PATCH] ProjectExplorer: Adapt output window clients to fixed newline handling. Reviewed-by: dt --- .../projectexplorer/abstractprocessstep.cpp | 8 +-- src/plugins/projectexplorer/buildmanager.cpp | 50 +++++++++---------- src/plugins/projectexplorer/buildmanager.h | 4 +- src/plugins/projectexplorer/buildstep.h | 6 ++- .../qt-maemo/maemopackagecreationstep.cpp | 9 ++-- .../qt-s60/s60createpackagestep.cpp | 4 +- 6 files changed, 45 insertions(+), 36 deletions(-) diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index ddc37f12dec..8fcf218f79e 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -175,7 +175,7 @@ void AbstractProcessStep::run(QFutureInterface<bool> &fi) void AbstractProcessStep::processStarted() { - emit addOutput(tr("Starting: \"%1\" %2\n") + emit addOutput(tr("Starting: \"%1\" %2") .arg(QDir::toNativeSeparators(m_param.effectiveCommand()), m_param.prettyArguments()), BuildStep::MessageOutput); @@ -222,7 +222,7 @@ void AbstractProcessStep::stdOutput(const QString &line) { if (m_outputParserChain) m_outputParserChain->stdOutput(line); - emit addOutput(line, BuildStep::NormalOutput); + emit addOutput(line, BuildStep::NormalOutput, BuildStep::DontAppendNewline); } void AbstractProcessStep::processReadyReadStdError() @@ -238,7 +238,7 @@ void AbstractProcessStep::stdError(const QString &line) { if (m_outputParserChain) m_outputParserChain->stdError(line); - emit addOutput(line, BuildStep::ErrorOutput); + emit addOutput(line, BuildStep::ErrorOutput, BuildStep::DontAppendNewline); } void AbstractProcessStep::checkForCancel() @@ -301,7 +301,7 @@ void AbstractProcessStep::taskAdded(const ProjectExplorer::Task &task) void AbstractProcessStep::outputAdded(const QString &string, ProjectExplorer::BuildStep::OutputFormat format) { - emit addOutput(string, format); + emit addOutput(string, format, BuildStep::DontAppendNewline); } void AbstractProcessStep::slotProcessFinished(int, QProcess::ExitStatus) diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index e737957ac6e..d934305628b 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -136,6 +136,7 @@ BuildManager::BuildManager(ProjectExplorerPlugin *parent) pm->addObject(d->m_taskWindow); qRegisterMetaType<ProjectExplorer::BuildStep::OutputFormat>(); + qRegisterMetaType<ProjectExplorer::BuildStep::OutputNewlineSetting>(); connect(d->m_taskWindow, SIGNAL(tasksChanged()), this, SLOT(updateTaskCount())); @@ -198,10 +199,7 @@ void BuildManager::cancel() // (And we want those to be before the cancel message.) QTimer::singleShot(0, this, SLOT(emitCancelMessage())); - disconnect(d->m_currentBuildStep, SIGNAL(addTask(ProjectExplorer::Task)), - this, SLOT(addToTaskWindow(ProjectExplorer::Task))); - disconnect(d->m_currentBuildStep, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat)), - this, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat))); + disconnectOutput(d->m_currentBuildStep); decrementActiveBuildSteps(d->m_currentBuildStep->buildConfiguration()->target()->project()); d->m_progressFutureInterface->setProgressValueAndText(d->m_progress*100, tr("Build canceled")); //TODO NBS fix in qtconcurrent @@ -229,17 +227,14 @@ void BuildManager::finish() void BuildManager::emitCancelMessage() { - emit addToOutputWindow(tr("Canceled build."), BuildStep::ErrorMessageOutput); + addToOutputWindow(tr("Canceled build."), BuildStep::ErrorMessageOutput); } void BuildManager::clearBuildQueue() { foreach (BuildStep *bs, d->m_buildQueue) { decrementActiveBuildSteps(bs->buildConfiguration()->target()->project()); - disconnect(bs, SIGNAL(addTask(ProjectExplorer::Task)), - this, SLOT(addToTaskWindow(ProjectExplorer::Task))); - disconnect(bs, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat)), - this, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat))); + disconnectOutput(bs); } d->m_buildQueue.clear(); @@ -329,9 +324,13 @@ void BuildManager::addToTaskWindow(const ProjectExplorer::Task &task) d->m_taskHub->addTask(task); } -void BuildManager::addToOutputWindow(const QString &string, ProjectExplorer::BuildStep::OutputFormat format) +void BuildManager::addToOutputWindow(const QString &string, BuildStep::OutputFormat format, + BuildStep::OutputNewlineSetting newLineSetting) { - d->m_outputWindow->appendText(string, format); + QString stringToWrite = string; + if (newLineSetting == BuildStep::DoAppendNewline) + stringToWrite += QLatin1Char('\n'); + d->m_outputWindow->appendText(stringToWrite, format); } void BuildManager::nextBuildQueue() @@ -339,11 +338,7 @@ void BuildManager::nextBuildQueue() if (d->m_canceling) return; - disconnect(d->m_currentBuildStep, SIGNAL(addTask(ProjectExplorer::Task)), - this, SLOT(addToTaskWindow(ProjectExplorer::Task))); - disconnect(d->m_currentBuildStep, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat)), - this, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat))); - + disconnectOutput(d->m_currentBuildStep); ++d->m_progress; d->m_progressFutureInterface->setProgressValueAndText(d->m_progress*100, msgProgress(d->m_progress, d->m_maxProgress)); decrementActiveBuildSteps(d->m_currentBuildStep->buildConfiguration()->target()->project()); @@ -420,8 +415,8 @@ bool BuildManager::buildQueueAppend(QList<BuildStep *> steps) BuildStep *bs = steps.at(i); connect(bs, SIGNAL(addTask(ProjectExplorer::Task)), this, SLOT(addToTaskWindow(ProjectExplorer::Task))); - connect(bs, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat)), - this, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat))); + connect(bs, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat, ProjectExplorer::BuildStep::OutputNewlineSetting)), + this, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat, ProjectExplorer::BuildStep::OutputNewlineSetting))); init = bs->init(); if (!init) break; @@ -437,13 +432,8 @@ bool BuildManager::buildQueueAppend(QList<BuildStep *> steps) addToOutputWindow(tr("When executing build step '%1'").arg(bs->displayName()), BuildStep::ErrorOutput); // disconnect the buildsteps again - for (int j = 0; j <= i; ++j) { - BuildStep *bs = steps.at(j); - disconnect(bs, SIGNAL(addTask(ProjectExplorer::Task)), - this, SLOT(addToTaskWindow(ProjectExplorer::Task))); - disconnect(bs, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat)), - this, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat))); - } + for (int j = 0; j <= i; ++j) + disconnectOutput(steps.at(j)); return false; } @@ -535,4 +525,14 @@ void BuildManager::decrementActiveBuildSteps(Project *pro) } } +void BuildManager::disconnectOutput(BuildStep *bs) +{ + disconnect(bs, SIGNAL(addTask(ProjectExplorer::Task)), + this, SLOT(addToTaskWindow(ProjectExplorer::Task))); + disconnect(bs, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat, + ProjectExplorer::BuildStep::OutputNewlineSetting)), + this, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat, + ProjectExplorer::BuildStep::OutputNewlineSetting))); +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/buildmanager.h b/src/plugins/projectexplorer/buildmanager.h index fe1862d6a03..f272bc56af8 100644 --- a/src/plugins/projectexplorer/buildmanager.h +++ b/src/plugins/projectexplorer/buildmanager.h @@ -85,7 +85,8 @@ signals: private slots: void addToTaskWindow(const ProjectExplorer::Task &task); - void addToOutputWindow(const QString &string, ProjectExplorer::BuildStep::OutputFormat); + void addToOutputWindow(const QString &string, ProjectExplorer::BuildStep::OutputFormat, + ProjectExplorer::BuildStep::OutputNewlineSetting = BuildStep::DoAppendNewline); void nextBuildQueue(); void progressChanged(); @@ -102,6 +103,7 @@ private: bool buildQueueAppend(QList<BuildStep *> steps); void incrementActiveBuildSteps(Project *pro); void decrementActiveBuildSteps(Project *pro); + void disconnectOutput(BuildStep *bs); QScopedPointer<BuildManagerPrivate> d; }; diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index 15f3a92235c..29e98b7eaf2 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -106,14 +106,17 @@ public: Target *target() const; enum OutputFormat { NormalOutput, ErrorOutput, MessageOutput, ErrorMessageOutput }; + enum OutputNewlineSetting { DoAppendNewline, DontAppendNewline }; signals: // Add a task. void addTask(const ProjectExplorer::Task &task); + // The string is added to the generated output, usually in the output // window. // It should be in plain text, with the format in the parameter - void addOutput(const QString &string, ProjectExplorer::BuildStep::OutputFormat format); + void addOutput(const QString &string, ProjectExplorer::BuildStep::OutputFormat format, + ProjectExplorer::BuildStep::OutputNewlineSetting newlineSetting = DoAppendNewline); }; class PROJECTEXPLORER_EXPORT IBuildStepFactory : @@ -175,5 +178,6 @@ signals: } // namespace ProjectExplorer Q_DECLARE_METATYPE(ProjectExplorer::BuildStep::OutputFormat) +Q_DECLARE_METATYPE(ProjectExplorer::BuildStep::OutputNewlineSetting) #endif // BUILDSTEP_H diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp index 53aa0da54e2..ec73839f734 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp @@ -142,11 +142,14 @@ void AbstractMaemoPackageCreationStep::handleBuildOutput() if (!buildProc) return; const QByteArray &stdOut = buildProc->readAllStandardOutput(); - if (!stdOut.isEmpty()) - emit addOutput(QString::fromLocal8Bit(stdOut), BuildStep::NormalOutput); + if (!stdOut.isEmpty()) { + emit addOutput(QString::fromLocal8Bit(stdOut), BuildStep::NormalOutput, + BuildStep::DontAppendNewline); + } const QByteArray &errorOut = buildProc->readAllStandardError(); if (!errorOut.isEmpty()) { - emit addOutput(QString::fromLocal8Bit(errorOut), BuildStep::ErrorOutput); + emit addOutput(QString::fromLocal8Bit(errorOut), BuildStep::ErrorOutput, + BuildStep::DontAppendNewline); } } diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp index d2ac2e15e21..bc83c73e0d4 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp @@ -583,7 +583,7 @@ void S60CreatePackageStep::stdOutput(const QString &line) { if (m_outputParserChain) m_outputParserChain->stdOutput(line); - emit addOutput(line, BuildStep::NormalOutput); + emit addOutput(line, BuildStep::NormalOutput, BuildStep::DontAppendNewline); } void S60CreatePackageStep::processReadyReadStdError() @@ -599,7 +599,7 @@ void S60CreatePackageStep::stdError(const QString &line) { if (m_outputParserChain) m_outputParserChain->stdError(line); - emit addOutput(line, BuildStep::ErrorOutput); + emit addOutput(line, BuildStep::ErrorOutput, BuildStep::DontAppendNewline); } void S60CreatePackageStep::checkForCancel() -- GitLab