33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
class PathSpecificSettings:
|
|
# read-only shim for typed `xbmcaddon.Addon().getSetting*` methods
|
|
def __init__(self, settings_dict, log_fn):
|
|
self.data = settings_dict
|
|
self.log = log_fn
|
|
|
|
def getSettingBool(self, id):
|
|
return self._inner_get_setting(id, bool, False)
|
|
|
|
def getSettingInt(self, id):
|
|
return self._inner_get_setting(id, int, 0)
|
|
|
|
def getSettingNumber(self, id):
|
|
return self._inner_get_setting(id, float, 0.0)
|
|
|
|
def getSettingString(self, id):
|
|
return self._inner_get_setting(id, str, '')
|
|
|
|
def _inner_get_setting(self, setting_id, setting_type, default):
|
|
value = self.data.get(setting_id)
|
|
if isinstance(value, setting_type):
|
|
return value
|
|
self._log_bad_value(value, setting_id)
|
|
return default
|
|
|
|
def _log_bad_value(self, value, setting_id):
|
|
if value is None:
|
|
self.log(
|
|
f"requested setting ({setting_id}) was not found.")
|
|
else:
|
|
self.log(
|
|
f'failed to load value "{value}" for setting {setting_id}')
|