def StartViewer (entry, key, stringuri, parent=None, document=None): if not is_interactive (): return from Pyblio.GnomeUI import Compat, Utils uri = Fields.URL (stringuri) scheme, location, path, parameters, query, fragment = uri.url fileuri = uri.get_url () if uri.invalid or uri.inexact: message = Utils.Callback ( _("Warning: This URL is marked as Invalid or Approximate: %s\nContinue?") % fileuri) if not message.answer (): return if document: document.statusbar.set_status (_("Determining Mime Type ... ")) try: mimetype = Compat.get_mime_type (fileuri) except RuntimeError, mesg: Utils.error_dialog(_("Cannot determine mime type for item %s ") % entry.key.key, _("URL in question is: %s\n" "You should check the url or path given for errors.\n" "Details: %s") % (fileuri, mesg)) if document: document.statusbar.pop () return
if scheme == 'file' and not location: filename = path elif mimetype in ['text/html', 'text/plain']: filename = fileuri else: filename, headers = urllib.urlretrieve (fileuri) if mimetype == 'application/x-gzip': try: tempname = os.tmpnam () os.system ("gzip -d < %s >%s" %(filename, tempname)) filename = tempname mimetype = Compat.get_mime_type (filename) except RuntimeError, mesg: Utils.error_dialog (_("IOError for item %s: cannot uncompress resource.") % entry.key.key, _("URL: %s\nDetails: %s") % (filename, mesg)) if document: document.statusbar.pop () return viewers = [ item [1] for item in Config.get (config_viewers).data if item [0] == mimetype] or [ item [1] for item in Config.get (config_viewers).data if item [0].endswith ('/*') and item [0] [:-2] == mimetype1]