Workaround for circular imports
parent
e8278431d2
commit
e62b634f72
|
@ -38,7 +38,7 @@ class Client {
|
||||||
const std::string getValidPath(const std::vector<std::string> &paths) const;
|
const std::string getValidPath(const std::vector<std::string> &paths) const;
|
||||||
void handleOutput(struct waybar_output &output);
|
void handleOutput(struct waybar_output &output);
|
||||||
bool isValidOutput(const Json::Value &config, struct waybar_output &output);
|
bool isValidOutput(const Json::Value &config, struct waybar_output &output);
|
||||||
auto setupConfig(const std::string &config_file) -> void;
|
auto setupConfig(const std::string &config_file, int depth) -> void;
|
||||||
auto mergeConfig(Json::Value &a_config_, Json::Value &b_config_) -> void;
|
auto mergeConfig(Json::Value &a_config_, Json::Value &b_config_) -> void;
|
||||||
auto setupCss(const std::string &css_file) -> void;
|
auto setupCss(const std::string &css_file) -> void;
|
||||||
struct waybar_output & getOutput(void *);
|
struct waybar_output & getOutput(void *);
|
||||||
|
|
|
@ -234,7 +234,10 @@ std::tuple<const std::string, const std::string> waybar::Client::getConfigs(
|
||||||
return {config_file, css_file};
|
return {config_file, css_file};
|
||||||
}
|
}
|
||||||
|
|
||||||
auto waybar::Client::setupConfig(const std::string &config_file) -> void {
|
auto waybar::Client::setupConfig(const std::string &config_file, int depth) -> void {
|
||||||
|
if (depth > 100) {
|
||||||
|
throw std::runtime_error("Aborting due to likely recursive include in config files");
|
||||||
|
}
|
||||||
std::ifstream file(config_file);
|
std::ifstream file(config_file);
|
||||||
if (!file.is_open()) {
|
if (!file.is_open()) {
|
||||||
throw std::runtime_error("Can't open config file");
|
throw std::runtime_error("Can't open config file");
|
||||||
|
@ -245,7 +248,7 @@ auto waybar::Client::setupConfig(const std::string &config_file) -> void {
|
||||||
if (tmp_config_["include"].isArray()) {
|
if (tmp_config_["include"].isArray()) {
|
||||||
for (const auto &include : tmp_config_["include"]) {
|
for (const auto &include : tmp_config_["include"]) {
|
||||||
spdlog::info("Including resource file: {}", include.asString());
|
spdlog::info("Including resource file: {}", include.asString());
|
||||||
setupConfig(getValidPath({include.asString()}));
|
setupConfig(getValidPath({include.asString()}), ++depth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mergeConfig(config_, tmp_config_);
|
mergeConfig(config_, tmp_config_);
|
||||||
|
@ -337,7 +340,7 @@ int waybar::Client::main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
wl_display = gdk_wayland_display_get_wl_display(gdk_display->gobj());
|
wl_display = gdk_wayland_display_get_wl_display(gdk_display->gobj());
|
||||||
auto [config_file, css_file] = getConfigs(config, style);
|
auto [config_file, css_file] = getConfigs(config, style);
|
||||||
setupConfig(config_file);
|
setupConfig(config_file, 0);
|
||||||
setupCss(css_file);
|
setupCss(css_file);
|
||||||
bindInterfaces();
|
bindInterfaces();
|
||||||
gtk_app->hold();
|
gtk_app->hold();
|
||||||
|
|
Loading…
Reference in New Issue