2008-04-04 Cosimo Cecchi <cosimoc@gnome.org>
[nautilus.git] / libnautilus-extension / nautilus-file-info.h
blobd7a7278b52fe56321112b291a1f5fca3febfd220
1 /*
2 * nautilus-file-info.h - Information about a file
4 * Copyright (C) 2003 Novell, Inc.
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; if not, write to the Free
18 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 /* NautilusFileInfo is an interface to the NautilusFile object. It
23 * provides access to the asynchronous data in the NautilusFile.
24 * Extensions are passed objects of this type for operations. */
26 #ifndef NAUTILUS_FILE_INFO_H
27 #define NAUTILUS_FILE_INFO_H
29 #include <glib-object.h>
30 #include <gio/gio.h>
32 G_BEGIN_DECLS
34 #define NAUTILUS_TYPE_FILE_INFO (nautilus_file_info_get_type ())
35 #define NAUTILUS_FILE_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_FILE_INFO, NautilusFileInfo))
36 #define NAUTILUS_IS_FILE_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_FILE_INFO))
37 #define NAUTILUS_FILE_INFO_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), NAUTILUS_TYPE_FILE_INFO, NautilusFileInfoIface))
40 #ifndef NAUTILUS_FILE_DEFINED
41 #define NAUTILUS_FILE_DEFINED
42 /* Using NautilusFile for the vtable to make implementing this in
43 * NautilusFile easier */
44 typedef struct NautilusFile NautilusFile;
45 #endif
47 typedef NautilusFile NautilusFileInfo;
48 typedef struct _NautilusFileInfoIface NautilusFileInfoIface;
51 struct _NautilusFileInfoIface
53 GTypeInterface g_iface;
55 gboolean (*is_gone) (NautilusFileInfo *file);
57 char * (*get_name) (NautilusFileInfo *file);
58 char * (*get_uri) (NautilusFileInfo *file);
59 char * (*get_parent_uri) (NautilusFileInfo *file);
60 char * (*get_uri_scheme) (NautilusFileInfo *file);
62 char * (*get_mime_type) (NautilusFileInfo *file);
63 gboolean (*is_mime_type) (NautilusFileInfo *file,
64 const char *mime_Type);
65 gboolean (*is_directory) (NautilusFileInfo *file);
67 void (*add_emblem) (NautilusFileInfo *file,
68 const char *emblem_name);
69 char * (*get_string_attribute) (NautilusFileInfo *file,
70 const char *attribute_name);
71 void (*add_string_attribute) (NautilusFileInfo *file,
72 const char *attribute_name,
73 const char *value);
74 void (*invalidate_extension_info) (NautilusFileInfo *file);
76 char * (*get_activation_uri) (NautilusFileInfo *file);
78 GFileType (*get_file_type) (NautilusFileInfo *file);
79 GFile * (*get_location) (NautilusFileInfo *file);
80 GFile * (*get_parent_location) (NautilusFileInfo *file);
81 NautilusFileInfo* (*get_parent_info) (NautilusFileInfo *file);
82 GMount * (*get_mount) (NautilusFileInfo *file);
83 gboolean (*can_write) (NautilusFileInfo *file);
87 GList *nautilus_file_info_list_copy (GList *files);
88 void nautilus_file_info_list_free (GList *files);
89 GType nautilus_file_info_get_type (void);
91 /* Return true if the file has been deleted */
92 gboolean nautilus_file_info_is_gone (NautilusFileInfo *file);
94 /* Name and Location */
95 GFileType nautilus_file_info_get_file_type (NautilusFileInfo *file);
96 GFile * nautilus_file_info_get_location (NautilusFileInfo *file);
97 char * nautilus_file_info_get_name (NautilusFileInfo *file);
98 char * nautilus_file_info_get_uri (NautilusFileInfo *file);
99 char * nautilus_file_info_get_activation_uri (NautilusFileInfo *file);
100 GFile * nautilus_file_info_get_parent_location (NautilusFileInfo *file);
101 char * nautilus_file_info_get_parent_uri (NautilusFileInfo *file);
102 GMount * nautilus_file_info_get_mount (NautilusFileInfo *file);
103 char * nautilus_file_info_get_uri_scheme (NautilusFileInfo *file);
104 /* It's not safe to call this recursively multiple times, as it works
105 * only for files already cached by Nautilus.
107 NautilusFileInfo* nautilus_file_info_get_parent_info (NautilusFileInfo *file);
109 /* File Type */
110 char * nautilus_file_info_get_mime_type (NautilusFileInfo *file);
111 gboolean nautilus_file_info_is_mime_type (NautilusFileInfo *file,
112 const char *mime_type);
113 gboolean nautilus_file_info_is_directory (NautilusFileInfo *file);
114 gboolean nautilus_file_info_can_write (NautilusFileInfo *file);
117 /* Modifying the NautilusFileInfo */
118 void nautilus_file_info_add_emblem (NautilusFileInfo *file,
119 const char *emblem_name);
120 char * nautilus_file_info_get_string_attribute (NautilusFileInfo *file,
121 const char *attribute_name);
122 void nautilus_file_info_add_string_attribute (NautilusFileInfo *file,
123 const char *attribute_name,
124 const char *value);
126 /* Invalidating file info */
127 void nautilus_file_info_invalidate_extension_info (NautilusFileInfo *file);
130 G_END_DECLS
132 #endif