docs: def set(self, section, option, value = None, title = None, validate = None, help = None, control = None, args = None, kwargs = None, include = None):
    """
    set(self, section, option, value = None, title = None, validate = lambda value: None, help = '', control = None, args = [], kwargs = {}, include = True)
    Store the value to the configuration with all it's associated data.
    
    * title is the friendly name for the value (will be used for textual labels etc).
    * validate is a lambda which will be called by ConfigFrame.onOk when checking all the values. Should return None if the value is ok, or an error message as a string.
    * help is the help message which will be tacked onto the control in the GUI.
    * control is the control which will be used in the GUI.
    * args is the arguments that will be passed to the control in addition to the ones needed by ConfFrame.
    * kwargs is the keyword arguments which will be passed to the control when it's created by self.get_gui.
    * include tells the GUI whether or not to include this value in the resulting configuration screens.
    
    Also alerts of a change, using self.updateFunc.
    
    """
    if self.has_option(section, option):
     oldValue = self.get(section, option) # Store for comparison.
     v = self.config[section][option] # Don't alter anything but the value.
    else:
     oldValue = value # It's new, don't alert.
     v = {} # The entry for self.config[section][value].
    if title != None:
     v['title'] = title
    else:
     v['title'] = v.get('title', option.title()) # Set default capitalised title
    if help != None:
     v['help'] = help
    else:
     v['help'] = v.get('help', '')
    if validate != None:
     v['validate'] = validate
    else:
     v['validate'] = v.get('validate', lambda value: None)
    if control != None:
     v['control'] = control
    else:
     ctrl = None
     for x, y in self.control_types.items():
      if issubclass(type(value), x):
       ctrl = y
       break
     else:
      raise TypeError('No control provided, and none found for type of value: %s.' % repr(value))
     v['control'] = v.get('control', ctrl)
    if args != None:
     v['args'] = args
    else:
     v['args'] = v.get('args', [])
    if kwargs != None:
     v['kwargs'] = kwargs
    else:
     v['kwargs'] = v.get('kwargs', {})
    if include != None:
     v['include'] = include
    else:
     v['include'] = v.get('include', True)
    v['value'] = value
    # Add everything to self.config:
    self.config[section][option] = v
    if value != oldValue: # Then call self.updateFunc
     self.updateFunc(self, section, option, value)