aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-10-23 20:05:53 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2013-10-23 20:05:53 +0300
commit73d35dcaea977162c9ef5b193ad8470ae8244a48 (patch)
tree9cb05896cfcbc855802fa31549a808a22fa4aea9
parent7e05457edbaa4dff0dc35594844dcce4b79ec41c (diff)
downloadmeson-73d35dcaea977162c9ef5b193ad8470ae8244a48.zip
meson-73d35dcaea977162c9ef5b193ad8470ae8244a48.tar.gz
meson-73d35dcaea977162c9ef5b193ad8470ae8244a48.tar.bz2
Validate option values on all assignments.
-rwxr-xr-xmesongui.py2
-rw-r--r--optinterpreter.py19
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,