Use QtcProcess directly, so external tools will start on windows too.

This commit is contained in:
con
2010-12-15 16:48:11 +01:00
parent fc32ba5184
commit 74c38389ca
2 changed files with 13 additions and 18 deletions

View File

@@ -42,7 +42,6 @@
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <utils/environment.h>
#include <utils/qtcprocess.h>
#include <QtCore/QXmlStreamReader>
#include <QtCore/QDir>
@@ -300,7 +299,7 @@ bool ExternalToolRunner::resolve()
if (!m_tool)
return false;
m_resolvedExecutable = QString::null;
m_resolvedArguments.clear();
m_resolvedArguments = QString::null;
m_resolvedWorkingDirectory = QString::null;
{ // executable
foreach (const QString &executable, m_tool->executables()) {
@@ -313,15 +312,8 @@ bool ExternalToolRunner::resolve()
return false;
}
{ // arguments
QString resolved = Utils::expandMacros(m_tool->arguments(),
m_resolvedArguments = Utils::expandMacros(m_tool->arguments(),
Core::VariableManager::instance()->macroExpander());
// handle quoting in the command line arguments etc
QString cmd;
Utils::QtcProcess::prepareCommand(m_resolvedExecutable, resolved,
&cmd, &m_resolvedArguments);
if (cmd.isEmpty())
return false;
m_resolvedExecutable = cmd;
}
{ // input
m_resolvedInput = Utils::expandMacros(m_tool->input(),
@@ -353,7 +345,7 @@ void ExternalToolRunner::run()
FileManager::instance()->expectFileChange(m_expectedFileName);
}
}
m_process = new QProcess;
m_process = new Utils::QtcProcess(this);
connect(m_process, SIGNAL(started()), this, SLOT(started()));
connect(m_process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(finished(int,QProcess::ExitStatus)));
connect(m_process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(error(QProcess::ProcessError)));
@@ -361,11 +353,14 @@ void ExternalToolRunner::run()
connect(m_process, SIGNAL(readyReadStandardError()), this, SLOT(readStandardError()));
if (!m_resolvedWorkingDirectory.isEmpty())
m_process->setWorkingDirectory(m_resolvedWorkingDirectory);
m_process->setCommand(m_resolvedExecutable, m_resolvedArguments);
ICore::instance()->messageManager()->printToOutputPane(
tr("Starting external tool '%1'").arg(m_resolvedExecutable), false);
ICore::instance()->messageManager()->printToOutputPane(
tr("with arguments (%1)").arg(m_resolvedArguments.join(QLatin1String(", "))), false);
m_process->start(m_resolvedExecutable, m_resolvedArguments, QIODevice::ReadWrite);
if (!m_resolvedArguments.isEmpty()) {
ICore::instance()->messageManager()->printToOutputPane(
tr("with arguments '%1'").arg(m_resolvedArguments), false);
}
m_process->start();
}
void ExternalToolRunner::started()
@@ -389,7 +384,6 @@ void ExternalToolRunner::finished(int exitCode, QProcess::ExitStatus status)
}
ICore::instance()->messageManager()->printToOutputPane(
tr("'%1' finished").arg(m_resolvedExecutable), false);
m_process->deleteLater();
deleteLater();
}
@@ -400,7 +394,6 @@ void ExternalToolRunner::error(QProcess::ProcessError error)
FileManager::instance()->unexpectFileChange(m_expectedFileName);
}
// TODO inform about errors
m_process->deleteLater();
deleteLater();
}