def mime_type_is_defined(type): """ Return True if a description for a mime type exists. """ try: mime_get_description(type) return True except: return False
def getMime(self, path): """ @summary: Gets a tuple with mime type and mime description. @param path: Path to extract mime. @return: Tuple with two string, the first with mime name and the second with mime description. """ # Check if path exist if not os.path.exists(path): return ("", "") mimeType = "" mimeDescription = "" if (GNOME): # get mime mimeType = gnomevfs.get_mime_type(path) mimeDescription = gnomevfs.mime_get_description(mimeType) elif (WINDOWS): info = self.__getWindowsInfo__(path) file, ext = os.path.splitext(path) mimeType = ext mimeDescription = info[4] if (mimeDescription == ""): mimeDescription = ("%s %s" % (_("File"), ext)) return (mimeType, mimeDescription)
def __init__(self, uri): _gtk.Builder.__init__(self) gfile = _gio.File(uri=uri) self.path = gfile.get_path() self.add_from_file(_os.path.join(_os.environ["FILEMANAGER_PATH"], "file-properties-dialog.builder")) self.dialog = self.get_object("FilePropertiesDialog") self.name_entry = self.get_object("name_entry") self.type_info = self.get_object("type_info") self.size_notebook = self.get_object("size_notebook") self.size_info = self.get_object("size_info") self.find_size = self.get_object("find_size") self.location_info = self.get_object("location_info") self.accessed_info = self.get_object("accessed_info") self.modified_info = self.get_object("modified_info") self.exec_column = self.get_object("Exec") self.permissions_model = self.get_object("PermissionsModel") self.read_renderer = self.get_object("read-renderer") self.write_renderer = self.get_object("write-renderer") self.exec_renderer = self.get_object("exec-renderer") self.name_entry.connect("activate", self.change_filename) self.name_entry.set_text(_os.path.basename(self.path)) fileinfo = gfile.query_info("standard::content-type") mime_type = _gio.content_type_get_mime_type(fileinfo.get_content_type()) description = _gnomevfs.mime_get_description(mime_type) if description: self.type_info.set_text("%s (%s)" % (description, mime_type)) else: self.type_info.set_text("%s" % mime_type) if _os.path.isdir(self.path): self.exec_column.set_title("Acceso") self.size_notebook.set_current_page(1) self.find_size.connect("clicked", self.find_dir_size, self.path) else: self.size_notebook.set_current_page(0) self.size_info.set_text(_file_size.get_file_size(self.path)) if gfile.get_uri_scheme() != "file": self.location_info.set_text(uri) else: self.location_info.set_text(self.path) stat = _os.stat(self.path) self.accessed_info.set_text(_time.ctime(stat.st_atime)) self.modified_info.set_text(_time.ctime(stat.st_mtime)) permissions = oct(_stat.S_IMODE(stat.st_mode))[1:] owner = bin(int(permissions[0]))[2:] while len(owner) != 3: owner = "0"+owner self.permissions_model.append(["Propietario", bool(int(owner[0])), bool(int(owner[1])), bool(int(owner[2]))]) group = bin(int(permissions[1]))[2:] while len(group) != 3: group = "0"+group self.permissions_model.append(["Grupo", bool(int(group[0])), bool(int(group[1])), bool(int(group[2]))]) others = bin(int(permissions[2]))[2:] while len(others) != 3: others = "0"+others self.permissions_model.append(["Otros", bool(int(others[0])), bool(int(others[1])), bool(int(others[2]))]) self.read_renderer.connect("toggled", self.permissions_toggled) self.write_renderer.connect("toggled", self.permissions_toggled) self.exec_renderer.connect("toggled", self.permissions_toggled)
def file_description(file): # com o comando file: #process = subprocess.Popen(["file", "--brief", file], stdout=subprocess.PIPE) #return process.stdout.readline().rstrip() mime = gnomevfs.get_file_mime_type(file) if mime: return gnomevfs.mime_get_description(mime) else: return None
def get_tooltips(self): doc = self.get_document() uri = doc.get_uri_for_display() if uri == None: return ruri = utils.replace_home_dir_with_tilde(uri) # Not sure: ruri_markup = g_markup_printf_escaped ("<i>%s</i>", ruri); ruri_markup = "<i>%s</i>" % gobject.markup_escape_text(uri); if(self._state == TAB_STATE_LOADING_ERROR): tip = "Error opening file %s" % ruri_marup elif(self._state == TAB_STATE_REVERTING_ERROR): tip = "Error reverting file %s" % ruri_markup elif(self._state == TAB_STATE_SAVING_ERROR): tip = "Error saving file %s" % ruri_markup else: mime_type = doc.get_mime_type() mime_description = None if mime_type != None: mime_description = gnomevfs.mime_get_description(mime_type) if mime_description == None: mime_full_description = mime_type else: mime_full_description = "%s (%s)" % (mime_description, mime_type) enc = doc.get_encoding() if enc == None: encoding = "Unicode (UTF-8)" else: encoding = enc.to_string() tip = "<b>%s</b> %s\n\n<b>%s</b> %s\n<b>%s</b> %s" % ( gobject.markup_escape_text("Name:"), gobject.markup_escape_text(ruri), gobject.markup_escape_text("MIME Type:"), gobject.markup_escape_text(mime_full_description), gobject.markup_escape_text("Encoding"), gobject.markup_escape_text(encoding)); # FIXME: Unsure about this: #tip = g_markup_printf_escaped ("<b>%s</b> %s\n\n" # "<b>%s</b> %s\n" # "<b>%s</b> %s", # _("Name:"), ruri, # _("MIME Type:"), mime_full_description, # _("Encoding:"), encoding); return tip
def get_tooltips(self): doc = self.get_document() uri = doc.get_uri_for_display() if uri == None: return ruri = utils.replace_home_dir_with_tilde(uri) # Not sure: ruri_markup = g_markup_printf_escaped ("<i>%s</i>", ruri); ruri_markup = "<i>%s</i>" % gobject.markup_escape_text(uri) if (self._state == TAB_STATE_LOADING_ERROR): tip = "Error opening file %s" % ruri_marup elif (self._state == TAB_STATE_REVERTING_ERROR): tip = "Error reverting file %s" % ruri_markup elif (self._state == TAB_STATE_SAVING_ERROR): tip = "Error saving file %s" % ruri_markup else: mime_type = doc.get_mime_type() mime_description = None if mime_type != None: mime_description = gnomevfs.mime_get_description(mime_type) if mime_description == None: mime_full_description = mime_type else: mime_full_description = "%s (%s)" % (mime_description, mime_type) enc = doc.get_encoding() if enc == None: encoding = "Unicode (UTF-8)" else: encoding = enc.to_string() tip = "<b>%s</b> %s\n\n<b>%s</b> %s\n<b>%s</b> %s" % ( gobject.markup_escape_text("Name:"), gobject.markup_escape_text(ruri), gobject.markup_escape_text("MIME Type:"), gobject.markup_escape_text(mime_full_description), gobject.markup_escape_text("Encoding"), gobject.markup_escape_text(encoding)) # FIXME: Unsure about this: #tip = g_markup_printf_escaped ("<b>%s</b> %s\n\n" # "<b>%s</b> %s\n" # "<b>%s</b> %s", # _("Name:"), ruri, # _("MIME Type:"), mime_full_description, # _("Encoding:"), encoding); return tip
def get_meta_info(filename): try: file_mimetype = gnomevfs.get_mime_type(filename) except: return False ret = {} ret['mime'] = file_mimetype ret['default_app'] = gnomevfs.mime_get_default_application(file_mimetype) ret['other_apps'] = gnomevfs.mime_get_all_applications(file_mimetype) if len(ret['other_apps']) > 0: del ret['other_apps'][0] ret ['description'] = gnomevfs.mime_get_description(file_mimetype) return ret
def get_mime_description(self, mtype, subtype): """ Given a IMAP-style TYPE and SUBTYPE, return a description from somewhere. We try GNOME first, and fallback to WX. If WX fails too, give up and return the traditional type/subtype. """ mtype = mtype.lower() subtype = subtype.lower() try: descr = gnomevfs.mime_get_description(mtype + "/" + subtype) if descr is not None: return descr except: pass ft = wx.TheMimeTypesManager.GetFileTypeFromMimeType(mtype + "/" + subtype) if ft is not None: if len(ft.GetDescription()) != 0: return ft.GetDescription() return mtype + "/" + subtype
def _getAvailableMusicTypes(self): availaibleMimeTypes = Phonon.BackendCapabilities.availableMimeTypes() for mimeType in availaibleMimeTypes: # Only keep audio mimetypes if not "audio/" in mimeType: continue # Map mimetype to extension extensions = mimetypes.guess_all_extensions(str(mimeType)) # Filter out mimetypes without extensions if not extensions: continue # gnomevfs allows having nice human readable type descriptions # but it is not available on all platforms if gnomevfs: name = gnomevfs.mime_get_description(str(mimeType)) else: # Let's use the first returned extension as the filter name name = extensions[0] filter = [] for extension in extensions: # We need to remove the leading dot in order to use the extension as a filter filter.append(extension[1:]) self._filterList.append((name, filter))
def __init__(self, fobj): super(FileSlideout, self).__init__() vbox = CanvasVBox(border_color=0x0000000ff, spacing=4) self.get_root().append(vbox) self.__header = Header(topborder=False) text = ThemedText(theme_hints=['header'], text=fobj.get_name(), font="14px Bold", xalign=hippo.ALIGNMENT_START) self.__header.append(text, hippo.PACK_EXPAND) vbox.append(self.__header) hbox = CanvasHBox(spacing=4, padding=4) img = hippo.CanvasImage(scale_width=60, scale_height=60, xalign=hippo.ALIGNMENT_START, yalign=hippo.ALIGNMENT_START) img.set_property('image-name', fobj.get_image_name()) hbox.append(img) vbox.append(hbox) detailvbox = CanvasVBox(spacing=3) hbox.append(detailvbox) mime = fobj.get_mimetype() if mime: mimename = gnomevfs.mime_get_description(mime) text = ThemedText(theme_hints=['subforeground'], text=mimename, font='12px', xalign=hippo.ALIGNMENT_START) detailvbox.append(text) size = fobj.get_size() if size is not None: sizestr = format_file_size(size) text = ThemedText(theme_hints=['subforeground'], text=sizestr, font='12px', xalign=hippo.ALIGNMENT_START) detailvbox.append(text) fname = os.path.dirname(fobj.get_full_name()) if fname.startswith('file://'): fname = fname[7:] home = os.path.expanduser('~') if fname.startswith(home): fname = fname[:len(home)] fname = urllib.unquote(fname) text = ThemedText(theme_hints=['subforeground'], text=fname, font='12px', xalign=hippo.ALIGNMENT_START) detailvbox.append(text) apps = gnomevfs.mime_get_all_applications(mime) if apps: text = ThemedText(text='Open With: ', font='14px') detailvbox.append(text) def on_app_clicked(button, app): self.emit('close', True) _logger.debug("launching app %s", app) _launch_vfsmimeapp(app, fobj.get_url()) directory = apps_directory.get_app_directory() for app in apps: _logger.debug("mime type: %s got app %s", mime, app) button = hippo.CanvasButton() labelhbox = gtk.HBox() labelhbox.set_border_width(1) labelhbox.set_spacing(2) try: menu = directory.lookup(app[0]) except KeyError, e: _logger.debug("failed to find desktop file %s", app[0]) menu = None img = gtk.Image() if menu: pixbuf = get_menu_pixbuf(menu, size=16) img.set_from_pixbuf(pixbuf) else: img.set_size_request(16, 16) labelhbox.pack_start(img, False, False) textlabel = gtk.Label(app[1]) labelhbox.pack_start(textlabel, False) labelhbox.show_all() button.get_property('widget').add(labelhbox) button.get_property('widget').connect('clicked', on_app_clicked, app) button.get_property('widget').set_name('bigboard-nopad-button') detailvbox.append(button)
def get_description(type): """Return the description of the specified mime type.""" try: return mime_get_description(type) except: return _("unknown")
def __init__(self, uri): _gtk.Builder.__init__(self) gfile = _gio.File(uri=uri) self.path = gfile.get_path() self.add_from_file(_os.path.join(_os.environ["FILEMANAGER_PATH"], "file-properties-dialog.builder")) self.dialog = self.get_object("FilePropertiesDialog") self.dialog.set_title(_("Properties")) self.get_object("name_label").set_text(_("Name: ")) self.name_entry = self.get_object("name_entry") self.get_object("type_label").set_text(_("Type: ")) self.type_info = self.get_object("type_info") self.get_object("size_label").set_text(_("Size: ")) self.size_notebook = self.get_object("size_notebook") self.size_info = self.get_object("size_info") self.find_size = self.get_object("find_size") self.find_size.set_label(_("Calculate")) self.get_object("location_label").set_text(_("Location: ")) self.location_info = self.get_object("location_info") self.get_object("accessed_label").set_text(_("Accessed: ")) self.accessed_info = self.get_object("accessed_info") self.get_object("modified_label").set_text(_("Modified: ")) self.modified_info = self.get_object("modified_info") self.get_object("permissions_label").set_text(_("Permissions: ")) self.get_object("Read").set_title(_("Read")) self.get_object("Write").set_title(_("Write")) self.exec_column = self.get_object("Exec") self.exec_column.set_title(_("Execution")) self.permissions_model = self.get_object("PermissionsModel") self.read_renderer = self.get_object("read-renderer") self.write_renderer = self.get_object("write-renderer") self.exec_renderer = self.get_object("exec-renderer") self.name_entry.connect("activate", self.change_filename) self.name_entry.set_text(_os.path.basename(self.path)) fileinfo = gfile.query_info("standard::content-type") mime_type = _gio.content_type_get_mime_type(fileinfo.get_content_type()) description = _gnomevfs.mime_get_description(mime_type) if description: self.type_info.set_text("%s (%s)" % (description, mime_type)) else: self.type_info.set_text("%s" % mime_type) if _os.path.isdir(self.path): self.exec_column.set_title(_("Access")) self.size_notebook.set_current_page(1) self.find_size.connect("clicked", self.find_dir_size, self.path) else: self.size_notebook.set_current_page(0) self.size_info.set_text(_file_size.get_file_size(self.path)) if gfile.get_uri_scheme() != "file": self.location_info.set_text(uri) else: self.location_info.set_text(self.path) stat = _os.stat(self.path) self.accessed_info.set_text(_time.ctime(stat.st_atime)) self.modified_info.set_text(_time.ctime(stat.st_mtime)) permissions = oct(_stat.S_IMODE(stat.st_mode))[1:] owner = bin(int(permissions[0]))[2:] while len(owner) != 3: owner = "0"+owner self.permissions_model.append([_("Owner"), bool(int(owner[0])), bool(int(owner[1])), bool(int(owner[2]))]) group = bin(int(permissions[1]))[2:] while len(group) != 3: group = "0"+group self.permissions_model.append([_("Group"), bool(int(group[0])), bool(int(group[1])), bool(int(group[2]))]) others = bin(int(permissions[2]))[2:] while len(others) != 3: others = "0"+others self.permissions_model.append([_("Others"), bool(int(others[0])), bool(int(others[1])), bool(int(others[2]))]) self.read_renderer.connect("toggled", self.permissions_toggled) self.write_renderer.connect("toggled", self.permissions_toggled) self.exec_renderer.connect("toggled", self.permissions_toggled)