diff options
-rwxr-xr-x | mesongui.py | 2 | ||||
-rw-r--r-- | optinterpreter.py | 19 |
2 files changed, 15 insertions, 6 deletions
diff --git a/mesongui.py b/mesongui.py index 2f9cac7..f0cdf1a 100755 --- a/mesongui.py +++ b/mesongui.py @@ -301,7 +301,7 @@ class OptionForm: newval = True else: raise RuntimeError('Unknown widget type') - self.coredata.user_options[key].value = newval + self.coredata.user_options[key].set_value(newval) def build_type_changed(self, newtype): self.coredata.buildtype = newtype diff --git a/optinterpreter.py b/optinterpreter.py index 0b87e04..154b5fe 100644 --- a/optinterpreter.py +++ b/optinterpreter.py @@ -28,16 +28,22 @@ class UserOption: class UserStringOption(UserOption): def __init__(self, kwargs): super().__init__(kwargs) - self.value = kwargs.get('value', '') - if not isinstance(self.value, str): + self.set_value(kwargs.get('value', '')) + + def set_value(self, newvalue): + if not isinstance(newvalue, str): raise OptionException('Value of string option is not a string.') + self.value = newvalue class UserBooleanOption(UserOption): def __init__(self, kwargs): super().__init__(kwargs) - self.value = kwargs.get('value', 'true') - if not isinstance(self.value, bool): + self.set_value(kwargs.get('value', 'true')) + + def set_value(self, newvalue): + if not isinstance(newvalue, bool): raise OptionException('Value of boolean option is not boolean.') + self.value = newvalue class UserComboOption(UserOption): def __init__(self, kwargs): @@ -51,8 +57,11 @@ class UserComboOption(UserOption): if not isinstance(i, str): raise OptionException('Combo choice elements must be strings.') self.value = kwargs.get('value', self.choices[0]) - if self.value not in self.choices: + + def set_value(self, newvalue): + if newvalue not in self.choices: raise OptionException('Combo value must be one of the choices.') + self.value = newvalue option_types = {'string' : UserStringOption, 'boolean' : UserBooleanOption, |