X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkfilesystem.h;h=57b687615b0fdbae787f670bd9f838a5feb28137;hb=cf216d780cb2c889a3bcb5faa825fc1b21af8896;hp=913d5149df3172c7a1e0229502210964ed80c673;hpb=bb320fcb5bc54d4a0d2c836b57ff0e063c01d971;p=~andy%2Fgtk diff --git a/gtk/gtkfilesystem.h b/gtk/gtkfilesystem.h index 913d5149d..57b687615 100644 --- a/gtk/gtkfilesystem.h +++ b/gtk/gtkfilesystem.h @@ -1,5 +1,5 @@ /* GTK - The GIMP Toolkit - * gtkfilesystem.h: Abstract file system interfaces + * gtkfilesystem.h: Filesystem abstraction functions. * Copyright (C) 2003, Red Hat, Inc. * * This library is free software; you can redistribute it and/or @@ -13,208 +13,123 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ #ifndef __GTK_FILE_SYSTEM_H__ #define __GTK_FILE_SYSTEM_H__ -#include -#include +#include +#include /* For icon handling */ G_BEGIN_DECLS -typedef gint64 GtkFileTime; +#define GTK_TYPE_FILE_SYSTEM (_gtk_file_system_get_type ()) +#define GTK_FILE_SYSTEM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_FILE_SYSTEM, GtkFileSystem)) +#define GTK_FILE_SYSTEM_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GTK_TYPE_FILE_SYSTEM, GtkFileSystemClass)) +#define GTK_IS_FILE_SYSTEM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_FILE_SYSTEM)) +#define GTK_IS_FILE_SYSTEM_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GTK_TYPE_FILE_SYSTEM)) +#define GTK_FILE_SYSTEM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_FILE_SYSTEM, GtkFileSystemClass)) -typedef struct _GtkFileFolder GtkFileFolder; -typedef struct _GtkFileFolderIface GtkFileFolderIface; -typedef struct _GtkFileInfo GtkFileInfo; -typedef struct _GtkFileSystem GtkFileSystem; -typedef struct _GtkFileSystemIface GtkFileSystemIface; +typedef struct GtkFileSystem GtkFileSystem; +typedef struct GtkFileSystemPrivate GtkFileSystemPrivate; +typedef struct GtkFileSystemClass GtkFileSystemClass; -/* Mask of information about a file, for monitoring and - * gtk_file_system_get_info() - */ -typedef enum { - GTK_FILE_INFO_DISPLAY_NAME = 1 << 0, - GTK_FILE_INFO_IS_FOLDER = 1 << 1, - GTK_FILE_INFO_IS_HIDDEN = 1 << 2, - GTK_FILE_INFO_MIME_TYPE = 1 << 3, - GTK_FILE_INFO_MODIFICATION_TIME = 1 << 4, - GTK_FILE_INFO_SIZE = 1 << 5, - GTK_FILE_INFO_ICON = 1 << 6 -} GtkFileInfoType; - -/* GError enumeration for GtkFileSystem - */ - -#define GTK_FILE_SYSTEM_ERROR (gtk_file_system_error_quark ()) -typedef enum -{ - GTK_FILE_SYSTEM_ERROR_NONEXISTANT, - GTK_FILE_SYSTEM_ERROR_NOT_FOLDER, - GTK_FILE_SYSTEM_ERROR_INVALID_URI, - GTK_FILE_SYSTEM_ERROR_BAD_FILENAME, - GTK_FILE_SYSTEM_ERROR_FAILED, -} GtkFileSystemError; - -GQuark gtk_file_system_error_quark (void); +typedef struct GtkFileSystemVolume GtkFileSystemVolume; /* opaque struct */ +typedef struct GtkFileSystemBookmark GtkFileSystemBookmark; /* opaque struct */ -/* Boxed-type for gtk_file_folder_get_info() results - */ -#define GTK_TYPE_FILE_INFO (gtk_file_info_get_type ()) - -GType gtk_file_info_get_type (void); - -GtkFileInfo *gtk_file_info_new (void); -GtkFileInfo *gtk_file_info_copy (GtkFileInfo *info); -void gtk_file_info_free (GtkFileInfo *info); - - -G_CONST_RETURN gchar *gtk_file_info_get_display_name (const GtkFileInfo *info); -void gtk_file_info_set_display_name (GtkFileInfo *info, - const gchar *display_name); -gboolean gtk_file_info_get_is_folder (const GtkFileInfo *info); -void gtk_file_info_set_is_folder (GtkFileInfo *info, - gboolean is_folder); -gboolean gtk_file_info_get_is_hidden (const GtkFileInfo *info); -void gtk_file_info_set_is_hidden (GtkFileInfo *info, - gboolean is_hidden); -G_CONST_RETURN gchar *gtk_file_info_get_mime_type (const GtkFileInfo *info); -void gtk_file_info_set_mime_type (GtkFileInfo *info, - const gchar *mime_type); -GtkFileTime gtk_file_info_get_modification_time (const GtkFileInfo *info); -void gtk_file_info_set_modification_time (GtkFileInfo *info, - GtkFileTime modification_time); -gint64 gtk_file_info_get_size (const GtkFileInfo *info); -void gtk_file_info_set_size (GtkFileInfo *info, - gint64 size); -GdkPixbuf * gtk_file_info_get_icon (const GtkFileInfo *info); -void gtk_file_info_set_icon (GtkFileInfo *info, - GdkPixbuf *icon); - -/* The base GtkFileSystem interface - */ -#define GTK_TYPE_FILE_SYSTEM (gtk_file_system_get_type ()) -#define GTK_FILE_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_SYSTEM, GtkFileSystem)) -#define GTK_IS_FILE_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_SYSTEM)) -#define GTK_FILE_SYSTEM_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_FILE_SYSTEM, GtkFileSystemIface)) -struct _GtkFileSystemIface +struct GtkFileSystem { - GTypeInterface base_iface; - - /* Methods - */ - GSList * (*list_roots) (GtkFileSystem *file_system); - - GtkFileInfo * (*get_root_info) (GtkFileSystem *file_system, - const gchar *uri, - GtkFileInfoType types, - GError **error); - - GtkFileFolder * (*get_folder) (GtkFileSystem *file_system, - const gchar *uri, - GtkFileInfoType types, - GError **error); - gboolean (*create_folder) (GtkFileSystem *file_system, - const gchar *uri, - GError **error); - - /* URI Manipulation - */ - gboolean (*get_parent) (GtkFileSystem *file_system, - const gchar *uri, - gchar **parent, - GError **error); - gchar * (*make_uri) (GtkFileSystem *file_system, - const gchar *base_uri, - const gchar *display_name, - GError **error); - gboolean (*parse) (GtkFileSystem *file_system, - const gchar *base_uri, - const gchar *str, - gchar **folder, - gchar **file_part, - GError **error); - /* Signals - */ - void (*roots_changed) (GtkFileSystem *file_system); -}; + GObject parent_object; -GType gtk_file_system_get_type (void); - -GSList * gtk_file_system_list_roots (GtkFileSystem *file_system); -GtkFileInfo * gtk_file_system_get_root_info (GtkFileSystem *file_system, - const gchar *uri, - GtkFileInfoType types, - GError **error); - -gboolean gtk_file_system_get_parent (GtkFileSystem *file_system, - const gchar *uri, - gchar **parent, - GError **error); -GtkFileFolder *gtk_file_system_get_folder (GtkFileSystem *file_system, - const gchar *uri, - GtkFileInfoType types, - GError **error); -gboolean gtk_file_system_create_folder (GtkFileSystem *file_system, - const gchar *uri, - GError **error); -gchar * gtk_file_system_make_uri (GtkFileSystem *file_system, - const gchar *base_uri, - const gchar *display_name, - GError **error); -gboolean gtk_file_system_parse (GtkFileSystem *file_system, - const gchar *base_uri, - const gchar *str, - gchar **folder, - gchar **file_part, - GError **error); -/* - * Detailed information about a particular folder - */ -#define GTK_TYPE_FILE_FOLDER (gtk_file_folder_get_type ()) -#define GTK_FILE_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_FOLDER, GtkFileFolder)) -#define GTK_IS_FILE_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_FOLDER)) -#define GTK_FILE_FOLDER_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_FILE_FOLDER, GtkFileFolderIface)) + GtkFileSystemPrivate *priv; +}; -struct _GtkFileFolderIface +struct GtkFileSystemClass { - GTypeInterface base_iface; - - /* Methods - */ - GtkFileInfo * (*get_info) (GtkFileFolder *folder, - const gchar *uri, - GError **error); - gboolean (*list_children) (GtkFileFolder *folder, - GSList **children, - GError **error); - - /* ??? refresh() ??? */ - - /* Signals - */ - void (*deleted) (GtkFileFolder *monitor); - void (*file_added) (GtkFileFolder *monitor, - const gchar *uri); - void (*file_changed) (GtkFileFolder *monitor, - const gchar *uri); - void (*file_removed) (GtkFileFolder *monitor, - const gchar *uri); + GObjectClass parent_class; + + void (*bookmarks_changed) (GtkFileSystem *file_system); + void (*volumes_changed) (GtkFileSystem *file_system); }; -GType gtk_file_folder_get_type (void); -gboolean gtk_file_folder_list_children (GtkFileFolder *folder, - GSList **children, - GError **error); -GtkFileInfo *gtk_file_folder_get_info (GtkFileFolder *folder, - const gchar *uri, - GError **error); + +typedef void (* GtkFileSystemGetInfoCallback) (GCancellable *cancellable, + GFileInfo *file_info, + const GError *error, + gpointer data); +typedef void (* GtkFileSystemVolumeMountCallback) (GCancellable *cancellable, + GtkFileSystemVolume *volume, + const GError *error, + gpointer data); + +/* GtkFileSystem methods */ +GType _gtk_file_system_get_type (void) G_GNUC_CONST; + +GtkFileSystem * _gtk_file_system_new (void); + +GSList * _gtk_file_system_list_volumes (GtkFileSystem *file_system); +GSList * _gtk_file_system_list_bookmarks (GtkFileSystem *file_system); + +GCancellable * _gtk_file_system_get_info (GtkFileSystem *file_system, + GFile *file, + const gchar *attributes, + GtkFileSystemGetInfoCallback callback, + gpointer data); +GCancellable * _gtk_file_system_mount_volume (GtkFileSystem *file_system, + GtkFileSystemVolume *volume, + GMountOperation *mount_operation, + GtkFileSystemVolumeMountCallback callback, + gpointer data); +GCancellable * _gtk_file_system_mount_enclosing_volume (GtkFileSystem *file_system, + GFile *file, + GMountOperation *mount_operation, + GtkFileSystemVolumeMountCallback callback, + gpointer data); + +gboolean _gtk_file_system_insert_bookmark (GtkFileSystem *file_system, + GFile *file, + gint position, + GError **error); +gboolean _gtk_file_system_remove_bookmark (GtkFileSystem *file_system, + GFile *file, + GError **error); + +gchar * _gtk_file_system_get_bookmark_label (GtkFileSystem *file_system, + GFile *file); +void _gtk_file_system_set_bookmark_label (GtkFileSystem *file_system, + GFile *file, + const gchar *label); + +GtkFileSystemVolume * _gtk_file_system_get_volume_for_file (GtkFileSystem *file_system, + GFile *file); + +/* GtkFileSystemVolume methods */ +gchar * _gtk_file_system_volume_get_display_name (GtkFileSystemVolume *volume); +gboolean _gtk_file_system_volume_is_mounted (GtkFileSystemVolume *volume); +GFile * _gtk_file_system_volume_get_root (GtkFileSystemVolume *volume); +GdkPixbuf * _gtk_file_system_volume_render_icon (GtkFileSystemVolume *volume, + GtkWidget *widget, + gint icon_size, + GError **error); + +GtkFileSystemVolume *_gtk_file_system_volume_ref (GtkFileSystemVolume *volume); +void _gtk_file_system_volume_unref (GtkFileSystemVolume *volume); + +/* GtkFileSystemBookmark methods */ +void _gtk_file_system_bookmark_free (GtkFileSystemBookmark *bookmark); + +/* GFileInfo helper functions */ +GdkPixbuf * _gtk_file_info_render_icon (GFileInfo *info, + GtkWidget *widget, + gint icon_size); + +gboolean _gtk_file_info_consider_as_directory (GFileInfo *info); + +/* GFile helper functions */ +gboolean _gtk_file_is_path_not_local (GFile *file); G_END_DECLS