diff --git a/contrib/onelab/python/onelab.py b/contrib/onelab/python/onelab.py
index c7d7e07ce730da37da9958d687516629b7281d12..0a203b9be0905e52a0fd603b99deab390ed0bbb3 100755
--- a/contrib/onelab/python/onelab.py
+++ b/contrib/onelab/python/onelab.py
@@ -242,22 +242,28 @@ class client :
     if not self.socket :
       return
     self._send(self._GMSH_PARAMETER_CLEAR, str(name))
-    
-  def addNumberChoice(self, name, value):
+
+  def _setNumberChoices(self, name, val):
     if not self.socket :
       return
     p = _parameter('number', name=name)
     self._send(self._GMSH_PARAMETER_QUERY, p.tochar())
     (t, msg) = self._receive() 
     if t == self._GMSH_PARAMETER :
-      p.fromchar(msg).value = value
-      if self.loop :
-        p.choices.append(value)
-      else :
+      if len(val) : # add new choices
+        p.fromchar(msg).value = val[0]
+        p.choices.extend(val)
+      else : # reset choices list
         p.choices = ()
     elif t == self._GMSH_PARAMETER_NOT_FOUND :
       print ('Unknown parameter %s' %(param.name))
     self._send(self._GMSH_PARAMETER, p.tochar())
+    
+  def resetNumberChoices(self, name):
+    self._setNumberChoices(name,[])
+
+  def addNumberChoice(self, name, value):
+    self._setNumberChoices(name,[value])
 
   def getNumber(self, name, warn_if_not_found=True):
     param = _parameter('number', name=name)