def save_options(): # Build a ConfigParser for writing the various preferences out. prefs = SafeConfigParser() prefs.add_section("Preferences") prefs.set("Preferences", "fullscreen", str(bool(gg.fullscreen))) prefs.set("Preferences", "nosound", str(bool(mixer.nosound))) prefs.set("Preferences", "grab", str(bool(pygame.event.get_grab()))) prefs.set("Preferences", "daynight", str(bool(g.daynight))) prefs.set("Preferences", "xres", str(int(gg.screen_size[0]))) prefs.set("Preferences", "yres", str(int(gg.screen_size[1]))) prefs.set("Preferences", "soundbuf", str(mixer.get_soundbuf())) prefs.set("Preferences", "lang", str(i18n.language)) prefs.set("Preferences", "theme", str(theme.current.id)) for name in mixer.itervolumes(): prefs.set("Preferences", name + "_volume", str(mixer.get_volume(name))) prefs.add_section("Warning") for warn_id, warn in warning.warnings.items(): prefs.set("Warning", warn_id, str(bool(warn.active))) prefs.add_section("Textsizes") for text_size_id, text_size in gg.configured_text_sizes.items(): prefs.set("Textsizes", text_size_id, str(text_size)) # Actually write the preferences out. save_loc = dirs.get_writable_file_in_dirs("prefs.dat", "pref") with open(save_loc, 'w') as savefile: prefs.write(savefile)
def show(self): self.initial_options = dict(fullscreen=gg.fullscreen, grab=pygame.event.get_grab(), daynight=g.daynight, resolution=gg.screen_size, language=i18n.language, sound=not mixer.nosound, gui_volume=mixer.get_volume("gui"), music_volume=mixer.get_volume("music"), soundbuf=mixer.get_soundbuf(), warnings={ warn.id: warn.active for warn in warning.warnings.values() }) self.set_options(self.initial_options) retval = super(OptionsScreen, self).show() if retval: self.apply_options() save_options() else: # Cancel, revert all options to initial state self.set_options(self.initial_options) return retval