'If *prop* is *None*, return a list of strings of all settable properies
and their valid values.
If *prop* is not *None*, it is a valid property name and that
property will be returned as a string of property : valid
values.'

def pprint_setters(self, prop=None, leadingspace=2):

    if leadingspace:
        pad = (u'    ' * leadingspace)
    else:
        pad = u''
    if (prop is not None):
        accepts = self.get_valid_values(prop)
        return (u'%s%s:    %s' % (pad, prop, accepts))
    attrs = self._get_setters_and_targets()
    attrs.sort()
    lines = []
    for (prop, path) in attrs:
        accepts = self.get_valid_values(prop)
        name = self.aliased_name(prop)
        lines.append((u'%s%s:    %s' % (pad, name, accepts)))
    return lines
