def save_config(conf_dict): from os.path import join cparser = ConfigParser() cparser.add_section(CONF_SECTION) for key in sorted(conf_dict): cparser.set(CONF_SECTION, key, str(conf_dict[key])) try: save_path = get_save_config_path() if not save_path: return outf = open(join(save_path, CONF_FILE_NAME), "w") cparser.write(outf) outf.close() except Exception: settings_log.exception("Failed to save config")
def load_config(): # Only ever do this once if _config_[0] is not None: return _config_[0] from os.path import join, isdir cparser = ConfigParser() conf_dict = {} try: cparser.read([ join(cdir, XDG_CONF_RESOURCE, CONF_FILE_NAME) for cdir in XDG_CONFIG_DIRS if isdir(cdir)]) if cparser.has_section(CONF_SECTION): conf_dict.update(dict(cparser.items(CONF_SECTION))) except Exception: settings_log.exception("Failed to load config") conf_dict.setdefault("shell", "internal") conf_dict.setdefault("theme", "classic") conf_dict.setdefault("line_numbers", "False") conf_dict.setdefault("seen_welcome", "a") conf_dict.setdefault("sidebar_width", 0.5) conf_dict.setdefault("variables_weight", 1) conf_dict.setdefault("stack_weight", 1) conf_dict.setdefault("breakpoints_weight", 1) conf_dict.setdefault("current_stack_frame", "top") conf_dict.setdefault("stringifier", "default") conf_dict.setdefault("custom_theme", "") conf_dict.setdefault("custom_stringifier", "") conf_dict.setdefault("custom_shell", "") conf_dict.setdefault("wrap_variables", "True") conf_dict.setdefault("default_variables_access_level", "public") conf_dict.setdefault("display", "auto") conf_dict.setdefault("prompt_on_quit", "True") conf_dict.setdefault("hide_cmdline_win", "False") def normalize_bool_inplace(name): try: if conf_dict[name].lower() in ["0", "false", "off"]: conf_dict[name] = False else: conf_dict[name] = True except Exception: settings_log.exception("Failed to process config") normalize_bool_inplace("line_numbers") normalize_bool_inplace("wrap_variables") normalize_bool_inplace("prompt_on_quit") normalize_bool_inplace("hide_cmdline_win") _config_[0] = conf_dict return conf_dict