Guidelines: - Options must not be a bijection any more, but can be only an injection (multiple keys may correspond to the same value). - Options can be given as a dict, an OrderedDict, a list (only for properties - automatically converted into identity ordereddict), or a callable object that takes 1 argument (instance=None) and returns a list or a dict. - Options can be changed at any time, and a change of options should trigger a change of the options in the gui. - Options should be provided in the right order (no sorting is performed in order to not mess up the predefined order. Use pyrpl_utils.sorted_dict() to sort you options if you have no other preferrence.
Default value: - self.default can be set to a custom default value (at module initialization), without having to comply with the options. - the self.default getter will be obliged to return a valid element of the options list. that is, it will first try to locate the overwritten default value in the options. if that fails, it will try to return the first option. if that fails, too, it will return None