8#include <QCoreApplication>
10#include <QRegularExpression>
12#include <QStandardPaths>
21using namespace swift::config;
25 QString binDirectoryImpl()
27 QString appDirectoryString(qApp->applicationDirPath());
28 if (appDirectoryString.endsWith(
"Contents/MacOS"))
30 appDirectoryString +=
"/../../..";
32 QDir appDirectory(appDirectoryString);
33 return appDirectory.absolutePath();
38 static const QString binDir(binDirectoryImpl());
56 if (!CBuildConfig::isLocalDeveloperDebugBuild())
58 static const QString e;
63 static const QString bd = [] {
69 if (!dir.cd(
"xswiftbus"))
73 return dir.absolutePath();
80 Q_ASSERT_X(!executable.
isEmpty(), Q_FUNC_INFO,
"Missing executable file path");
83 if (CBuildConfig::isRunningOnMacOSPlatform())
86 const QDir dir(s + QLatin1String(
".app/Contents/MacOS"));
89 s += QLatin1String(
".app/Contents/MacOS/") + executable;
92 else if (CBuildConfig::isRunningOnWindowsNtPlatform())
94 s += QLatin1String(
".exe");
99 QString normalizedApplicationDirectoryImpl()
102 Q_ASSERT(appDir.
size() > 0);
104 if (appDir.
at(0) ==
'/')
111 const QString &CSwiftDirectories::normalizedApplicationDirectory()
113 static const QString appDir(normalizedApplicationDirectoryImpl());
133 if (!swiftAppData.isReadable())
147 if (withoutCurrent && info.filePath().contains(normalizedApplicationDirectory(),
Qt::CaseInsensitive))
156 static const QString p =
167 QString getSwiftShareDirImpl()
170 const bool success = dir.cd(
"../share");
173 Q_ASSERT_X(dir.exists(), Q_FUNC_INFO,
"missing dir");
174 return dir.absolutePath();
176 Q_ASSERT_X(
false, Q_FUNC_INFO,
"missing dir");
182 static const QString s(getSwiftShareDirImpl());
206 static const QString n(
"bootstrap.json");
210 QString getBootstrapResourceFileImpl()
219 [[maybe_unused]]
const bool exists = file.exists();
220 Q_ASSERT_X(exists, Q_FUNC_INFO,
"missing bootstrap file");
221 return QFileInfo(file).absoluteFilePath();
226 static const QString s(getBootstrapResourceFileImpl());
230 QString getSwiftStaticDbFilesDirImpl()
238 Q_ASSERT_X(dir.exists(), Q_FUNC_INFO,
"missing dir");
239 return dir.absolutePath();
244 static const QString s(getSwiftStaticDbFilesDirImpl());
248 QString getSoundFilesDirImpl()
256 Q_ASSERT_X(dir.exists(), Q_FUNC_INFO,
"missing dir");
257 return dir.absolutePath();
262 static const QString s(getSoundFilesDirImpl());
266 QString getStylesheetsDirImpl()
274 Q_ASSERT_X(dir.exists(), Q_FUNC_INFO,
"missing dir");
275 return dir.absolutePath();
280 static const QString s(getStylesheetsDirImpl());
284 QString getHtmlDirImpl()
288 Q_ASSERT_X(dir.exists(), Q_FUNC_INFO,
"missing dir");
289 return dir.absolutePath();
294 static const QString s(getHtmlDirImpl());
298 QString getLegalDirImpl()
302 Q_ASSERT_X(dir.exists(), Q_FUNC_INFO,
"missing dir");
303 return dir.absolutePath();
308 static const QString s(getLegalDirImpl());
318 QString testFilesDirImpl()
326 Q_ASSERT_X(dir.exists(), Q_FUNC_INFO,
"missing dir");
327 return dir.absolutePath();
332 static QString s(testFilesDirImpl());
342 QString getDocumentationDirectoryImpl()
345 QString d = pathes.first();
350 return dir.absolutePath();
352 return pathes.first();
357 static const QString d(getDocumentationDirectoryImpl());
385 failed.
append(d.absolutePath());
391 failed.
append(d.absolutePath());
397 failed.
append(d.absolutePath());
427 const QFileInfo fi(fp);
430 return fi.absoluteFilePath();
434 const QFileInfo fi(fp);
435 return (fi.exists()) ? fi.absoluteFilePath() : QString();
static QString decodeNormalizedDirectory(const QString &directory)
Virtually the inverse operation of CDirectoryUtils::normalizedApplicationDirectory.
static QString appendFilePathsAndFixUnc(const QString &path1, const QString &path2)
Append file paths.
static QString appendFilePaths(const QString &path1, const QString &path2)
Append file paths.
static const QString & legalDirectory()
Where Legal files are located.
static const QString & stylesheetsDirectory()
Where qss files are located.
static const QString & staticDbFilesDirectory()
Where static DB files are located.
static const QString & normalizedApplicationDataDirectory()
swift application data directory for one specific installation (a version)
static const QString & crashpadDatabaseDirectory()
Directory for crashpad database files.
static const QString & aboutFilePath()
The about document file location.
static const QString & binDirectory()
Returns the bin directory. On Windows/Linux this is the same directory as QCoreApplication::applicati...
static const QString & crashpadMetricsDirectory()
Directory for crashpad metrics files.
static const QString & crashpadDirectory()
Directory for crashpad files.
static const QString & soundFilesDirectory()
Where sound files are located.
static const QFileInfoList & applicationDataDirectories()
swift application data sub directories
static const QString & getXSwiftBusBuildDirectory()
The build directory.
static const QString & htmlDirectory()
Where HTML files are located.
static const QString & bootstrapResourceFilePath()
Bootstrap resource file path.
static const QString & shareMatchingScriptDirectory()
Matching script examples directories.
static const QString & audioPluginDirectory()
Audio plugins directory for Qt audio.
static const QString & documentationDirectory()
Directory where data can be stored.
static const QString & shareTestDirectory()
The test data directory.
static const QString & shareTerrainProbeDirectory()
FSX/P3D terrain probe.
static QStringList applicationDataDirectoryList(bool withoutCurrent=false, bool decodedDirName=false)
swift application data sub directories
static const QString & shareDirectory()
Where resource files (static DB files, ...) etc are located.
static const QString & logDirectory()
Directory for log files.
static QString soundFilePathOrDefaultPath(const QString &directory, const QString &fileName)
File path (with file name) of file name and.
static QString executableFilePath(const QString &executable)
The executable file path.
static const QString & bootstrapFileName()
Bootstrap file name.
static const QString & testFilesDirectory()
Where test files are located.
static int applicationDataDirectoriesCount()
number of data directories (including this version)
static const QString & htmlTemplateFilePath()
HTML template.
static const QString & applicationDataDirectory()
swift application data directory, contains 0..n swift installation directories
static QFileInfoList currentApplicationDataDirectories()
swift application data sub directories
static const QString & pluginsDirectory()
Plugins directory.
static QStringList verifyRuntimeDirectoriesAndFiles()
Check if the (most important) runtime directories are available.
Free functions in swift::misc.
QString cleanPath(const QString &path)
bool exists() const const
void append(QList< T > &&value)
QStringList standardLocations(QStandardPaths::StandardLocation type)
QString writableLocation(QStandardPaths::StandardLocation type)
const QChar at(qsizetype position) const const
bool isEmpty() const const
QString & remove(QChar ch, Qt::CaseSensitivity cs)
qsizetype size() const const
QByteArray toPercentEncoding(const QString &input, const QByteArray &exclude, const QByteArray &include)