summaryrefslogtreecommitdiff
path: root/Pb_Api/Param/MultiSelect.py
diff options
context:
space:
mode:
authorPepper <pepper@scannerjammer.com>2015-03-05 04:35:02 -0500
committerPepper <pepper@scannerjammer.com>2015-03-05 04:35:02 -0500
commite7d397472c7f6f6ba7b911ae8afff9bcb6a56b92 (patch)
treeed4e7c9f107f9227eccfec9ccb6f21d1b851845f /Pb_Api/Param/MultiSelect.py
parent6b00d986288c735e0dba400a3ac02e4809279de2 (diff)
working better now
Diffstat (limited to 'Pb_Api/Param/MultiSelect.py')
-rw-r--r--Pb_Api/Param/MultiSelect.py41
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"]