Skip to content

Commit 145a4cd

Browse files
committed
Add APP_DIR/python to PATH on Windows to simplify deployment
1 parent e5cb330 commit 145a4cd

File tree

2 files changed

+30
-14
lines changed

2 files changed

+30
-14
lines changed

src/modules/value-editor/formattersmanager.cpp

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,40 +7,39 @@
77
#include <QDirIterator>
88
#include <QJsonDocument>
99
#include <QJsonObject>
10-
#include <QProcess>
1110

1211
ValueEditor::FormattersManager::FormattersManager() {}
1312

1413
QPair<QByteArray, QByteArray>
1514
ValueEditor::FormattersManager::readOutputFromExternalProcess(
1615
const QStringList &cmd, const QByteArray &processInput, const QString &wd) {
17-
QProcess formatterProcess;
18-
formatterProcess.setWorkingDirectory(wd);
19-
formatterProcess.start(cmd[0], cmd.mid(1));
16+
auto formatterProcess = createProcess();
17+
formatterProcess->setWorkingDirectory(wd);
18+
formatterProcess->start(cmd[0], cmd.mid(1));
2019

2120
if (processInput.size()) {
22-
formatterProcess.write(processInput.constData(), processInput.size());
23-
formatterProcess.waitForBytesWritten();
24-
formatterProcess.closeWriteChannel();
21+
formatterProcess->write(processInput.constData(), processInput.size());
22+
formatterProcess->waitForBytesWritten();
23+
formatterProcess->closeWriteChannel();
2524
}
2625

27-
if (!formatterProcess.waitForStarted(3000)) {
26+
if (!formatterProcess->waitForStarted(3000)) {
2827
emit error(QString("Cannot start process %1: %2")
2928
.arg(cmd.join(" "))
30-
.arg(formatterProcess.errorString()));
29+
.arg(formatterProcess->errorString()));
3130
return {QByteArray(), QByteArray()};
3231
}
3332

34-
if (!formatterProcess.waitForFinished(3000)) {
35-
formatterProcess.kill();
33+
if (!formatterProcess->waitForFinished(3000)) {
34+
formatterProcess->kill();
3635
emit error(QString("Process %1 was killed by timeout: %2")
3736
.arg(cmd.join(" "))
38-
.arg(formatterProcess.errorString()));
37+
.arg(formatterProcess->errorString()));
3938
return {QByteArray(), QByteArray()};
4039
}
4140

42-
return {formatterProcess.readAllStandardOutput(),
43-
formatterProcess.readAllStandardError()};
41+
return {formatterProcess->readAllStandardOutput(),
42+
formatterProcess->readAllStandardError()};
4443
}
4544

4645
QJsonObject ValueEditor::FormattersManager::readJsonFromExternalProcess(
@@ -285,3 +284,17 @@ void ValueEditor::FormattersManager::fillMapping() {
285284
index++;
286285
}
287286
}
287+
288+
QSharedPointer<QProcess> ValueEditor::FormattersManager::createProcess() {
289+
auto process = QSharedPointer<QProcess>(new QProcess());
290+
291+
#ifdef Q_OS_WIN32
292+
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
293+
env.insert("PATH", QString("%1/python;%2")
294+
.arg(QCoreApplication::applicationDirPath())
295+
.arg(env.value("PATH", "")));
296+
process->setProcessEnvironment(env);
297+
#endif
298+
299+
return process;
300+
}

src/modules/value-editor/formattersmanager.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#pragma once
22
#include <QAbstractListModel>
33
#include <QJSValue>
4+
#include <QProcess>
45

56
namespace ValueEditor {
67

@@ -45,6 +46,8 @@ class FormattersManager : public QAbstractListModel {
4546
private:
4647
void fillMapping();
4748

49+
QSharedPointer<QProcess> createProcess();
50+
4851
QPair<QByteArray, QByteArray> readOutputFromExternalProcess(
4952
const QStringList& cmd, const QByteArray& processInput,
5053
const QString& wd);

0 commit comments

Comments
 (0)