<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">PATH = ""
prefP = configparser.ConfigParser
class plasmacPreferences(prefP):
	types = {
	bool: prefP.getboolean,
	float: prefP.getfloat,
	int: prefP.getint,
	str: prefP.get,
	repr: lambda self,section,option: eval(prefP.get(self,section,option)),
	}

	def __init__(self):
		prefP.__init__(self, strict=False, interpolation=None)
		self.fn = os.path.join(PATH, '{}.prefs'.format(vars.machine.get()))
		self.read(self.fn)

	def getPrefs(prefs, section, option, default=False, type=bool):
		m = prefs.types.get(type)
		if prefs.has_section(section.upper()):
			if prefs.has_option(section, option):
				return m(prefs, section.upper(), option)
			else:
				prefs.set(section.upper(), option, str(default))
				prefs.write(open(prefs.fn, "w"))
				return default
		else:
			print("no getPrefs section", section.upper())
			prefs.add_section(section.upper())
			prefs.set(section.upper(), option, str(default))
			prefs.write(open(prefs.fn, "w"))

	def putPrefs(prefs, section, option, value, type=bool):
		if prefs.has_section(section.upper()):
			prefs.set(section.upper(), option, str(type(value)))
			prefs.write(open(prefs.fn, "w"))
		else:
			prefs.add_section(section.upper())
			prefs.set(section.upper(), option, str(type(value)))
			prefs.write(open(prefs.fn, "w"))

	def removePrefsSect(prefs, section):
		prefs.remove_section(section.upper())
		prefs.write(open(prefs.fn, "w"))

PREFS = plasmacPreferences()

# write a setting to prefs SECTION, SETTING, VALUE, TYPE
PREFS.putPrefs('GUI', 'foreground color', 'red', str)

# get a setting from prefs SECTION, SETTING, DEFAULT, TYPE
fgColor = PREFS.getPrefs('GUI', 'foreground color', '#FFEE00', str)
</pre></body></html>