code: def set_value(self, name, value, ignore_error=False, block_user_signals=False):
          
          # first clean up the name
          name = self._clean_up_name(name)
  
          # If we're supposed to, block the user signals for this parameter
          if block_user_signals: self.block_user_signals(name, ignore_error)        
  
          # now get the parameter object
          x = self._find_parameter(name.split('/'), quiet=ignore_error)
  
          # quit if it pooped.
          if x == None: return None
          
          # for lists, make sure the value exists!!
          if x.type() in ['list']:
              
              # Make sure it exists before trying to set it
              if str(value) in list(x.forward.keys()): x.setValue(str(value))
              
              # Otherwise default to the first key
              else: x.setValue(list(x.forward.keys())[0])
          
          # Bail to a hopeful set method for other types
          else: x.setValue(eval(x.opts['type'])(value))
  
          # If we're supposed to unblock the user signals for this parameter
          if block_user_signals: self.unblock_user_signals(name, ignore_error)
  
          return self
docs: Sets the variable of the supplied name to the supplied value.
  
          Setting block_user_signals=True will temporarily block the widget from
          sending any signals when setting the value.