def __init__(self, filename):
     """Raises IOError for invalid file types.
     
     This MUST be the case in order to avoid the @memoize cache getting
     filled up with invalid Photograph instances.
     """
     Coordinates.__init__(self)
     self.thumb = fetch_thumbnail(filename)
     self.filename = filename
     
     self.connect('notify::geoname', self.update_liststore_summary)
     self.connect('notify::positioned', Widgets.button_sensitivity)