Prompt user until valid input is received.

        RejectWarning is raised if a KeyboardInterrupt is caught.

def input(self, filter_fn, prompt):
        """Prompt user until valid input is received.

        RejectWarning is raised if a KeyboardInterrupt is caught.
        """
        while True:
            try:
                return filter_fn(raw_input(prompt))
            except InvalidInputError as e:
                if e.message:
                    self.show('ERROR: ' + e.message)
            except KeyboardInterrupt:
                raise RejectWarning