ScreenRecorder: Add additional search paths

Adds a function FileUtils::usefullExtraSearchPaths() that returns
OS specific paths that often are not in PATH by default, but contain
useful apps we want to find.

Change-Id: Ideb7c45b241c69c9f2db8f75726bb63249000a5f
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-10-31 15:40:45 +01:00
parent b39476dd47
commit 145a0c7538
3 changed files with 24 additions and 4 deletions

View File

@@ -6,6 +6,7 @@
#include "algorithm.h"
#include "devicefileaccess.h"
#include "environment.h"
#include "qtcassert.h"
#include "utilstr.h"
@@ -843,4 +844,18 @@ qint64 FileUtils::bytesAvailableFromDFOutput(const QByteArray &dfOutput)
return -1;
}
FilePaths FileUtils::usefulExtraSearchPaths()
{
if (HostOsInfo::isMacHost()) {
return {"/opt/homebrew/bin"};
} else if (HostOsInfo::isWindowsHost()) {
const QString programData =
qtcEnvironmentVariable("ProgramData",
qtcEnvironmentVariable("ALLUSERSPROFILE", "C:/ProgramData"));
return {FilePath::fromUserInput(programData) / "chocolatey/bin"};
}
return {};
}
} // namespace Utils

View File

@@ -85,6 +85,9 @@ public:
static FilePathInfo filePathInfoFromTriple(const QString &infos, int modeBase);
//! Returns known paths like /opt/homebrew on macOS that might not be in PATH
static FilePaths usefulExtraSearchPaths();
#ifdef QT_WIDGETS_LIB
static void setDialogParentGetter(const std::function<QWidget *()> &getter);

View File

@@ -54,16 +54,18 @@ ScreenRecorderSettings::ScreenRecorderSettings()
ffmpegTool.setSettingsKey("FFmpegTool");
ffmpegTool.setExpectedKind(PathChooser::ExistingCommand);
ffmpegTool.setCommandVersionArguments(versionArgs);
const FilePath ffmpegDefault =
Environment::systemEnvironment().searchInPath(Constants::FFMPEG_COMMAND);
const FilePath ffmpegDefault
= Environment::systemEnvironment().searchInPath(Constants::FFMPEG_COMMAND,
FileUtils::usefulExtraSearchPaths());
ffmpegTool.setDefaultValue(ffmpegDefault.toUserOutput());
ffmpegTool.setLabelText(Tr::tr("ffmpeg tool:"));
ffprobeTool.setSettingsKey("FFprobeTool");
ffprobeTool.setExpectedKind(PathChooser::ExistingCommand);
ffprobeTool.setCommandVersionArguments(versionArgs);
const FilePath ffprobeDefault =
Environment::systemEnvironment().searchInPath(Constants::FFPROBE_COMMAND);
const FilePath ffprobeDefault
= Environment::systemEnvironment().searchInPath(Constants::FFPROBE_COMMAND,
FileUtils::usefulExtraSearchPaths());
ffprobeTool.setDefaultValue(ffprobeDefault.toUserOutput());
ffprobeTool.setLabelText(Tr::tr("ffprobe tool:"));