Files
BloomPatched/src/Services/PathService.hpp

97 lines
2.7 KiB
C++
Raw Normal View History

#pragma once
#include <string>
2022-01-02 20:25:25 +00:00
#include <filesystem>
namespace Services
{
class PathService
{
public:
/**
* Returns the path to the directory in which the Bloom binary resides.
*
* @return
*/
static std::string applicationDirPath();
/**
* Returns the path to the Resources directory, located in the application directory.
*
* @return
*/
2022-01-02 20:25:25 +00:00
static std::string resourcesDirPath() {
return PathService::applicationDirPath() + "/../resources/";
}
2022-01-02 20:25:25 +00:00
/**
* Returns the path to the current project's directory (the working directory, from which Bloom was run)
*
* @return
*/
static std::string projectDirPath() {
return std::filesystem::current_path().string();
}
/**
* Returns the path to the current project's configuration file (bloom.yaml).
2022-01-02 20:25:25 +00:00
*
* @return
*/
static std::string projectConfigPath() {
return PathService::projectDirPath() + "/bloom.yaml";
2022-01-02 20:25:25 +00:00
}
/**
* Returns the path to the current project's settings directory.
*
* @return
*/
static std::string projectSettingsDirPath() {
return PathService::projectDirPath() + "/.bloom";
}
/**
* Returns the path to the current project's settings file.
*
* @return
*/
static std::string projectSettingsPath() {
return PathService::projectSettingsDirPath() + "/settings.json";
}
/**
* Returns the path to Bloom's compiled resources.
*
* If the debug configuration is enabled, this function will return the absolute path to Bloom's source code,
* meaning we won't use compiled resources for debug builds. This is useful for debugging and tweaking QT UI
* files such as QT stylesheets and UI templates.
*
* @return
*/
static std::string compiledResourcesPath() {
#ifdef BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE
2022-04-03 17:00:40 +01:00
return {BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE};
#else
2022-04-03 17:00:40 +01:00
return {":/compiled"};
#endif
}
/**
* Returns the domain name for the Bloom website.
*
* The domain name can be overridden via the BLOOM_HOME_DOMAIN_NAME_OVERRIDE compile definition.
* See CMakeLists.txt
*
* @return
*/
static std::string homeDomainName() {
#ifdef BLOOM_HOME_DOMAIN_NAME_OVERRIDE
2022-04-03 17:00:40 +01:00
return {BLOOM_HOME_DOMAIN_NAME_OVERRIDE};
#else
2022-04-03 17:00:40 +01:00
return {"https://bloom.oscillate.io"};
#endif
}
};
}