def METHOD_NAME(self, viewer, button, data_x, data_y):
    """This gets called when the data position relative to the cursor
    changes.
    """
    # Get the value under the data coordinates
    try:
        # We report the value across the pixel, even though the coords
        # change halfway across the pixel
        value = viewer.get_data(int(data_x + viewer.data_off),
                                int(data_y + viewer.data_off))
    except Exception:
        value = None
    fits_x, fits_y = data_x + 1, data_y + 1
    # Calculate WCS RA
    try:
        # NOTE: image function operates on DATA space coords
        image = viewer.get_image()
        if image is None:
            # No image loaded
            return
        ra_txt, dec_txt = image.pixtoradec(fits_x, fits_y,
                                           format='str', coords='fits')
    except Exception as e:
        self.logger.warning("Bad coordinate conversion: %s" % (
            str(e)))
        ra_txt = 'BAD WCS'
        dec_txt = 'BAD WCS'
    text = "RA: %s  DEC: %s  X: %.2f  Y: %.2f  Value: %s" % (
        ra_txt, dec_txt, fits_x, fits_y, value)
    self.readout.set_text(text)