diff options
| author | Pepper <pepper@scannerjammer.com> | 2015-03-05 04:35:02 -0500 |
|---|---|---|
| committer | Pepper <pepper@scannerjammer.com> | 2015-03-05 04:35:02 -0500 |
| commit | e7d397472c7f6f6ba7b911ae8afff9bcb6a56b92 (patch) | |
| tree | ed4e7c9f107f9227eccfec9ccb6f21d1b851845f /Pb_Api/Param/MultiSelect.py | |
| parent | 6b00d986288c735e0dba400a3ac02e4809279de2 (diff) | |
working better now
Diffstat (limited to 'Pb_Api/Param/MultiSelect.py')
| -rw-r--r-- | Pb_Api/Param/MultiSelect.py | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/Pb_Api/Param/MultiSelect.py b/Pb_Api/Param/MultiSelect.py index 4ddf11e..2c8c32c 100644 --- a/Pb_Api/Param/MultiSelect.py +++ b/Pb_Api/Param/MultiSelect.py @@ -1,17 +1,40 @@ +import random from Pb_Api.Param import Pb_Api_Param class Pb_Api_Param_MultiSelect(Pb_Api_Param): def __init__(self, *args, **kwargs): - super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) self._options = kwargs['options'] + super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) def options(self): return self._options - def value(self, *args): - if len(args) > 1: - valid = False - for i in self.options(): - if args[0] == i['value']: valid = True - if not valid : raise ValueError - super(Pb_Api_Param_MultiSelect, self).value(args[0]) + + @property + def value(self): + return super(Pb_Api_Param_MultiSelect, self).get_value() + @value.setter + def value(self, value): + valid = False + for i in self.options(): + if value == i['value']: valid = True + if value is None: valid = True + if not valid : raise ValueError + super(Pb_Api_Param_MultiSelect, self).set_value(value) def randomize(self): - pass + weights_total = sum(map(lambda x: x["weight"], self.options())) + choice = random.randint(0, weights_total) + position = 0 + for elem in self.options(): + position += elem["weight"] + if position >= choice: + self.value = elem["value"] + break + def heaviest(self, param): + heaviest_idx = 0 + heaviest_weight = 0 + idx = 0 + for elem in self.options(): + if elem["weight"] > heaviest_weight: + heaviest_weight = elem["weight"] + heaviest_idx = idx; + idx += 1 + self.value = self.options()[heaviest_idx]["value"] |
