def get_mimetype(self, uri): g_file = self._get_g_file(uri) info = g_file.query_info(FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE) content_type = info.get_attribute_as_string( FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE) return content_type_get_mime_type(content_type)
def get_file_mime(): file = "./data/2946117692.01.180" gio_file = gio.File(file) # gio_file_info = gio_file.query_info(",".join([ # gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, # gio.FILE_ATTRIBUTE_STANDARD_TYPE, # gio.FILE_ATTRIBUTE_STANDARD_NAME, # gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, # gio.FILE_ATTRIBUTE_STANDARD_SIZE, # gio.FILE_ATTRIBUTE_STANDARD_ICON, # gio.FILE_ATTRIBUTE_TIME_MODIFIED, # gio.FILE_ATTRIBUTE_TIME_CHANGED,])) gio_file_info = gio_file.query_info(",".join([ gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, ])) info_attr = gio_file_info.get_attribute_as_string( gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE) type_description = gio.content_type_get_description(info_attr) #print type_description mime_tye = gio.content_type_get_mime_type(info_attr) print mime_tye
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 install(self, uri_string): """ Install handler Basically copys the handlers into the user's handler dir and L{deskbar.Watcher} does the rest. The following MIME types are supported: * application/x-bzip-compressed-tar * application/x-compressed-tar * application/x-tar * application/zip * text/x-python @param uri_string: URI of file that should be installed @type uri_string: str """ do_cleanup = False self._reset() if (uri_string.startswith("file://")): gfile = gio.File(uri=uri_string) handlers_path = join(deskbar.USER_HANDLERS_DIR[0], gfile.get_basename()) self.local_path = gfile.get_path() if handlers_path == join(deskbar.USER_HANDLERS_DIR[0], self.local_path): # Source and destination are the same, nothing to do here return fileinfo = gfile.query_info ("standard::content-type") mime_type = gio.content_type_get_mime_type (fileinfo.get_content_type()) if (mime_type == "text/x-python"): shutil.copy(self.local_path, deskbar.USER_HANDLERS_DIR[0]) return else: gfile = gio.File(path=uri_string) handlers_path = join(deskbar.USER_HANDLERS_DIR[0], gfile.get_basename()) urllib.urlretrieve(uri_string, handlers_path) self.local_path = handlers_path do_cleanup = True decompresser = Decompresser(self, self.local_path, deskbar.USER_HANDLERS_DIR[0]) decompresser.start() # Wait for Decompresser to finish decompresser.join() if self.error != None: raise self.error[0](self.error[1]) if do_cleanup: self.cleanup()
class Decompresser(threading.Thread): def __init__(self, parent, path, dest_dir): """ @type parent: Thread that called Decompresser @param path: path pointing to archive @param dest_dir: Folder to extract contents to """ threading.Thread.__init__(self) self.parent = parent self.path = path self.dest_dir = dest_dir def run(self): """ Extract the contents of the file to C{self.dest_dir} @raise FormatNotSupportedError: """ gfile = gio.File(path=self.path) try: fileinfo = gfile.query_info("standard::content-type") except Exception, e: self.parent_error = (Exception, e.message) return mime_type = gio.content_type_get_mime_type (fileinfo.get_content_type()) if mime_type == 'application/x-bzip-compressed-tar': extracter = Bzip2Extracter elif mime_type == 'application/x-compressed-tar': extracter = GzipExtracter elif mime_type == 'application/zip': extracter = ZipExtracter elif mime_type == 'application/x-tar': extracter = TarExtracter elif mime_type == 'text/x-python': self.parent.delete_original = False return else: self.parent.error = (FormatNotSupportedError, mime_type+" is not supported") return extracter.extract(self.path, self.dest_dir)
def get_file_icon_from_name(name): gfile = _gio.File(name) fileinfo = gfile.query_info("standard::content-type") mime_type = _gio.content_type_get_mime_type(fileinfo.get_content_type()) icon = _gio.content_type_get_icon(mime_type).get_names() index = 0 icon_name = None pixbuf = None if "image-x-generic" in icon: try: pixbuf = _gtk.gdk.pixbuf_new_from_file_at_size(name, 64, 64) except: pixbuf = None if not pixbuf: while not (icon[index] in icons): index += 1 if index >= len(icon): icon_name = "unknown" break if not icon_name: icon_name = icon[index] return pixbuf, icon_name
def get_file_mime(): file = "./data/2946117692.01.180" gio_file = gio.File(file) # gio_file_info = gio_file.query_info(",".join([ # gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, # gio.FILE_ATTRIBUTE_STANDARD_TYPE, # gio.FILE_ATTRIBUTE_STANDARD_NAME, # gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, # gio.FILE_ATTRIBUTE_STANDARD_SIZE, # gio.FILE_ATTRIBUTE_STANDARD_ICON, # gio.FILE_ATTRIBUTE_TIME_MODIFIED, # gio.FILE_ATTRIBUTE_TIME_CHANGED,])) gio_file_info = gio_file.query_info(",".join([ gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,])) info_attr = gio_file_info.get_attribute_as_string(gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE) type_description = gio.content_type_get_description(info_attr) #print type_description mime_tye = gio.content_type_get_mime_type(info_attr) print mime_tye
def __init__(self, type): self._type = type self.mimeType = gio.content_type_get_mime_type(type) self.description = gio.content_type_get_description(type)
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)