def get_config_attribute(self, name, attribute): """ Look for the attribute in the config. Start with the named module and then walk up through any containing group and then try the general section of the config. """ # A user can set a param to None in the config to prevent a param # being used. This is important when modules do something like # # color = self.py3.COLOR_MUTED or self.py3.COLOR_BAD config = self.config["py3_config"] param = config[name].get(attribute, self.none_setting) if hasattr(param, "none_setting") and name in config[".module_groups"]: for module in config[".module_groups"][name]: if attribute in config.get(module, {}): param = config[module].get(attribute) break if hasattr(param, "none_setting"): # check py3status config section param = config["py3status"].get(attribute, self.none_setting) if hasattr(param, "none_setting"): # check py3status general section param = config["general"].get(attribute, self.none_setting) if param and (attribute == "color" or attribute.startswith("color_")): # check color value param = expand_color(param.lower(), self.none_setting) return param
def _get_config_setting(self, name, default=None): try: return self._config_setting[name] except KeyError: fn = self._py3_wrapper.get_config_attribute param = fn(self._module_full_name, name) # colors are special we want to make sure that we treat a color # that was explicitly set to None as a True value. Ones that are # not set should be treated as None if name.startswith("color_"): _name = name[6:].lower() # use color "hidden" to hide blocks if _name == "hidden": param = "hidden" # TODO: removing this statement does not fail "test_color_10()" but would fail # easily in the bar. the test is there to raise awareness about this. # TODO: "test_color_11()" shows how the tests can be incorrect as it does not print # everything correctly (i.e. orange vs ORaNgE) due to non composite/formatter code. elif hasattr(param, "none_setting"): # see if named color and use if it is param = expand_color(_name) elif param is None: param = self._none_color # if a non-color parameter and was not set then set to default elif hasattr(param, "none_setting"): param = default self._config_setting[name] = param return self._config_setting[name]
def _get_color(self, color): if color: if color[0] == "#": return expand_color(color) return self._get_config_setting("color_" + color)