/* pantheon-files-core.h generated by valac 0.34.4, the Vala compiler, do not modify */


#ifndef __PANTHEON_FILES_CORE_H__
#define __PANTHEON_FILES_CORE_H__

#include <glib.h>
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string.h>
#include <gio/gio.h>
#include <glib-object.h>
#include <gof-file.h>
#include <gdk/gdk.h>
#include <gee.h>

G_BEGIN_DECLS


#define MARLIN_TYPE_PLACE_TYPE (marlin_place_type_get_type ())

#define MARLIN_TYPE_ABSTRACT_SIDEBAR (marlin_abstract_sidebar_get_type ())
#define MARLIN_ABSTRACT_SIDEBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MARLIN_TYPE_ABSTRACT_SIDEBAR, MarlinAbstractSidebar))
#define MARLIN_ABSTRACT_SIDEBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MARLIN_TYPE_ABSTRACT_SIDEBAR, MarlinAbstractSidebarClass))
#define MARLIN_IS_ABSTRACT_SIDEBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MARLIN_TYPE_ABSTRACT_SIDEBAR))
#define MARLIN_IS_ABSTRACT_SIDEBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MARLIN_TYPE_ABSTRACT_SIDEBAR))
#define MARLIN_ABSTRACT_SIDEBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MARLIN_TYPE_ABSTRACT_SIDEBAR, MarlinAbstractSidebarClass))

typedef struct _MarlinAbstractSidebar MarlinAbstractSidebar;
typedef struct _MarlinAbstractSidebarClass MarlinAbstractSidebarClass;
typedef struct _MarlinAbstractSidebarPrivate MarlinAbstractSidebarPrivate;

#define MARLIN_ABSTRACT_SIDEBAR_TYPE_COLUMN (marlin_abstract_sidebar_column_get_type ())

#define GOF_TYPE_ABSTRACT_SLOT (gof_abstract_slot_get_type ())
#define GOF_ABSTRACT_SLOT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GOF_TYPE_ABSTRACT_SLOT, GOFAbstractSlot))
#define GOF_ABSTRACT_SLOT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GOF_TYPE_ABSTRACT_SLOT, GOFAbstractSlotClass))
#define GOF_IS_ABSTRACT_SLOT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GOF_TYPE_ABSTRACT_SLOT))
#define GOF_IS_ABSTRACT_SLOT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOF_TYPE_ABSTRACT_SLOT))
#define GOF_ABSTRACT_SLOT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GOF_TYPE_ABSTRACT_SLOT, GOFAbstractSlotClass))

typedef struct _GOFAbstractSlot GOFAbstractSlot;
typedef struct _GOFAbstractSlotClass GOFAbstractSlotClass;
typedef struct _GOFAbstractSlotPrivate GOFAbstractSlotPrivate;

#define GOF_DIRECTORY_TYPE_ASYNC (gof_directory_async_get_type ())
#define GOF_DIRECTORY_ASYNC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GOF_DIRECTORY_TYPE_ASYNC, GOFDirectoryAsync))
#define GOF_DIRECTORY_ASYNC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GOF_DIRECTORY_TYPE_ASYNC, GOFDirectoryAsyncClass))
#define GOF_DIRECTORY_IS_ASYNC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GOF_DIRECTORY_TYPE_ASYNC))
#define GOF_DIRECTORY_IS_ASYNC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOF_DIRECTORY_TYPE_ASYNC))
#define GOF_DIRECTORY_ASYNC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GOF_DIRECTORY_TYPE_ASYNC, GOFDirectoryAsyncClass))

typedef struct _GOFDirectoryAsync GOFDirectoryAsync;
typedef struct _GOFDirectoryAsyncClass GOFDirectoryAsyncClass;

#define MARLIN_TYPE_BOOKMARK (marlin_bookmark_get_type ())
#define MARLIN_BOOKMARK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MARLIN_TYPE_BOOKMARK, MarlinBookmark))
#define MARLIN_BOOKMARK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MARLIN_TYPE_BOOKMARK, MarlinBookmarkClass))
#define MARLIN_IS_BOOKMARK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MARLIN_TYPE_BOOKMARK))
#define MARLIN_IS_BOOKMARK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MARLIN_TYPE_BOOKMARK))
#define MARLIN_BOOKMARK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MARLIN_TYPE_BOOKMARK, MarlinBookmarkClass))

typedef struct _MarlinBookmark MarlinBookmark;
typedef struct _MarlinBookmarkClass MarlinBookmarkClass;
typedef struct _MarlinBookmarkPrivate MarlinBookmarkPrivate;

#define MARLIN_TYPE_BOOKMARK_LIST (marlin_bookmark_list_get_type ())
#define MARLIN_BOOKMARK_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MARLIN_TYPE_BOOKMARK_LIST, MarlinBookmarkList))
#define MARLIN_BOOKMARK_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MARLIN_TYPE_BOOKMARK_LIST, MarlinBookmarkListClass))
#define MARLIN_IS_BOOKMARK_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MARLIN_TYPE_BOOKMARK_LIST))
#define MARLIN_IS_BOOKMARK_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MARLIN_TYPE_BOOKMARK_LIST))
#define MARLIN_BOOKMARK_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MARLIN_TYPE_BOOKMARK_LIST, MarlinBookmarkListClass))

typedef struct _MarlinBookmarkList MarlinBookmarkList;
typedef struct _MarlinBookmarkListClass MarlinBookmarkListClass;
typedef struct _MarlinBookmarkListPrivate MarlinBookmarkListPrivate;

#define MARLIN_TYPE_DND_HANDLER (marlin_dnd_handler_get_type ())
#define MARLIN_DND_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MARLIN_TYPE_DND_HANDLER, MarlinDndHandler))
#define MARLIN_DND_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MARLIN_TYPE_DND_HANDLER, MarlinDndHandlerClass))
#define MARLIN_IS_DND_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MARLIN_TYPE_DND_HANDLER))
#define MARLIN_IS_DND_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MARLIN_TYPE_DND_HANDLER))
#define MARLIN_DND_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MARLIN_TYPE_DND_HANDLER, MarlinDndHandlerClass))

typedef struct _MarlinDndHandler MarlinDndHandler;
typedef struct _MarlinDndHandlerClass MarlinDndHandlerClass;
typedef struct _MarlinDndHandlerPrivate MarlinDndHandlerPrivate;

#define MARLIN_TYPE_VIEW_MODE (marlin_view_mode_get_type ())

#define MARLIN_TYPE_OPEN_FLAG (marlin_open_flag_get_type ())

#define MARLIN_TYPE_ZOOM_LEVEL (marlin_zoom_level_get_type ())

#define MARLIN_TYPE_ICON_SIZE (marlin_icon_size_get_type ())

#define MARLIN_TYPE_TARGET_TYPE (marlin_target_type_get_type ())

#define GOF_TYPE_CALL_WHEN_READY (gof_call_when_ready_get_type ())
#define GOF_CALL_WHEN_READY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GOF_TYPE_CALL_WHEN_READY, GOFCallWhenReady))
#define GOF_CALL_WHEN_READY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GOF_TYPE_CALL_WHEN_READY, GOFCallWhenReadyClass))
#define GOF_IS_CALL_WHEN_READY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GOF_TYPE_CALL_WHEN_READY))
#define GOF_IS_CALL_WHEN_READY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOF_TYPE_CALL_WHEN_READY))
#define GOF_CALL_WHEN_READY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GOF_TYPE_CALL_WHEN_READY, GOFCallWhenReadyClass))

typedef struct _GOFCallWhenReady GOFCallWhenReady;
typedef struct _GOFCallWhenReadyClass GOFCallWhenReadyClass;
typedef struct _GOFCallWhenReadyPrivate GOFCallWhenReadyPrivate;
typedef struct _GOFDirectoryAsyncPrivate GOFDirectoryAsyncPrivate;

#define GOF_DIRECTORY_ASYNC_TYPE_STATE (gof_directory_async_state_get_type ())

#define GOF_TYPE_PREFERENCES (gof_preferences_get_type ())
#define GOF_PREFERENCES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GOF_TYPE_PREFERENCES, GOFPreferences))
#define GOF_PREFERENCES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GOF_TYPE_PREFERENCES, GOFPreferencesClass))
#define GOF_IS_PREFERENCES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GOF_TYPE_PREFERENCES))
#define GOF_IS_PREFERENCES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOF_TYPE_PREFERENCES))
#define GOF_PREFERENCES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GOF_TYPE_PREFERENCES, GOFPreferencesClass))

typedef struct _GOFPreferences GOFPreferences;
typedef struct _GOFPreferencesClass GOFPreferencesClass;
typedef struct _GOFPreferencesPrivate GOFPreferencesPrivate;

#define MARLIN_TYPE_PLUGIN_MANAGER (marlin_plugin_manager_get_type ())
#define MARLIN_PLUGIN_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MARLIN_TYPE_PLUGIN_MANAGER, MarlinPluginManager))
#define MARLIN_PLUGIN_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MARLIN_TYPE_PLUGIN_MANAGER, MarlinPluginManagerClass))
#define MARLIN_IS_PLUGIN_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MARLIN_TYPE_PLUGIN_MANAGER))
#define MARLIN_IS_PLUGIN_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MARLIN_TYPE_PLUGIN_MANAGER))
#define MARLIN_PLUGIN_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MARLIN_TYPE_PLUGIN_MANAGER, MarlinPluginManagerClass))

typedef struct _MarlinPluginManager MarlinPluginManager;
typedef struct _MarlinPluginManagerClass MarlinPluginManagerClass;
typedef struct _MarlinPluginManagerPrivate MarlinPluginManagerPrivate;

#define MARLIN_PLUGINS_TYPE_BASE (marlin_plugins_base_get_type ())
#define MARLIN_PLUGINS_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MARLIN_PLUGINS_TYPE_BASE, MarlinPluginsBase))
#define MARLIN_PLUGINS_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MARLIN_PLUGINS_TYPE_BASE, MarlinPluginsBaseClass))
#define MARLIN_PLUGINS_IS_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MARLIN_PLUGINS_TYPE_BASE))
#define MARLIN_PLUGINS_IS_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MARLIN_PLUGINS_TYPE_BASE))
#define MARLIN_PLUGINS_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MARLIN_PLUGINS_TYPE_BASE, MarlinPluginsBaseClass))

typedef struct _MarlinPluginsBase MarlinPluginsBase;
typedef struct _MarlinPluginsBaseClass MarlinPluginsBaseClass;
typedef struct _MarlinPluginsBasePrivate MarlinPluginsBasePrivate;

#define PF_TYPE_SOUND_MANAGER (pf_sound_manager_get_type ())
#define PF_SOUND_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PF_TYPE_SOUND_MANAGER, PFSoundManager))
#define PF_SOUND_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PF_TYPE_SOUND_MANAGER, PFSoundManagerClass))
#define PF_IS_SOUND_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PF_TYPE_SOUND_MANAGER))
#define PF_IS_SOUND_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PF_TYPE_SOUND_MANAGER))
#define PF_SOUND_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PF_TYPE_SOUND_MANAGER, PFSoundManagerClass))

typedef struct _PFSoundManager PFSoundManager;
typedef struct _PFSoundManagerClass PFSoundManagerClass;
typedef struct _PFSoundManagerPrivate PFSoundManagerPrivate;

typedef void (*MarlinPluginCallbackFunc) (GtkWidget* widget, void* user_data);
typedef enum  {
	MARLIN_PLACE_TYPE_BUILT_IN,
	MARLIN_PLACE_TYPE_MOUNTED_VOLUME,
	MARLIN_PLACE_TYPE_BOOKMARK,
	MARLIN_PLACE_TYPE_BOOKMARKS_CATEGORY,
	MARLIN_PLACE_TYPE_PERSONAL_CATEGORY,
	MARLIN_PLACE_TYPE_STORAGE_CATEGORY,
	MARLIN_PLACE_TYPE_NETWORK_CATEGORY,
	MARLIN_PLACE_TYPE_PLUGIN_ITEM
} MarlinPlaceType;

struct _MarlinAbstractSidebar {
	GtkScrolledWindow parent_instance;
	MarlinAbstractSidebarPrivate * priv;
	GtkTreeStore* store;
	GtkTreeRowReference* network_category_reference;
	GtkBox* content_box;
};

struct _MarlinAbstractSidebarClass {
	GtkScrolledWindowClass parent_class;
	void (*add_place) (MarlinAbstractSidebar* self, MarlinPlaceType place_type, GtkTreeIter* parent, const gchar* name, GIcon* icon, const gchar* uri, GDrive* drive, GVolume* volume, GMount* mount, guint index, const gchar* tooltip, GtkTreeIter* result);
};

typedef enum  {
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_NAME,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_URI,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_DRIVE,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_VOLUME,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_MOUNT,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_ROW_TYPE,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_ICON,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_INDEX,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_CAN_EJECT,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_NO_EJECT,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_BOOKMARK,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_IS_CATEGORY,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_NOT_CATEGORY,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_TOOLTIP,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_EJECT_ICON,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_SHOW_SPINNER,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_SHOW_EJECT,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_SPINNER_PULSE,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_FREE_SPACE,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_DISK_SIZE,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_PLUGIN_CALLBACK,
	MARLIN_ABSTRACT_SIDEBAR_COLUMN_COUNT
} MarlinAbstractSidebarColumn;

struct _GOFAbstractSlot {
	GObject parent_instance;
	GOFAbstractSlotPrivate * priv;
	GtkBox* extra_location_widgets;
	GtkBox* content_box;
	gint slot_number;
	gint width;
};

struct _GOFAbstractSlotClass {
	GObjectClass parent_class;
	void (*initialize_directory) (GOFAbstractSlot* self);
	GList* (*get_selected_files) (GOFAbstractSlot* self);
	void (*set_active_state) (GOFAbstractSlot* self, gboolean set_active, gboolean animate);
	GOFAbstractSlot* (*get_current_slot) (GOFAbstractSlot* self);
	void (*reload) (GOFAbstractSlot* self, gboolean non_local_only);
	void (*grab_focus) (GOFAbstractSlot* self);
	void (*user_path_change_request) (GOFAbstractSlot* self, GFile* loc, gboolean allow_mode_change, gboolean make_root);
	void (*select_first_for_empty_selection) (GOFAbstractSlot* self);
	void (*select_glib_files) (GOFAbstractSlot* self, GList* locations, GFile* focus_location);
	void (*make_view) (GOFAbstractSlot* self);
	void (*cancel) (GOFAbstractSlot* self);
	void (*close) (GOFAbstractSlot* self);
	GFileInfo* (*lookup_file_info) (GOFAbstractSlot* self, GFile* loc);
	void (*zoom_out) (GOFAbstractSlot* self);
	void (*zoom_in) (GOFAbstractSlot* self);
	void (*zoom_normal) (GOFAbstractSlot* self);
	gboolean (*set_all_selected) (GOFAbstractSlot* self, gboolean all_selected);
	GtkWidget* (*get_content_box) (GOFAbstractSlot* self);
	gchar* (*get_root_uri) (GOFAbstractSlot* self);
	gchar* (*get_tip_uri) (GOFAbstractSlot* self);
	gboolean (*get_realized) (GOFAbstractSlot* self);
	gboolean (*get_locked_focus) (GOFAbstractSlot* self);
	gboolean (*get_is_frozen) (GOFAbstractSlot* self);
	void (*set_is_frozen) (GOFAbstractSlot* self, gboolean value);
};

struct _MarlinBookmark {
	GTypeInstance parent_instance;
	volatile int ref_count;
	MarlinBookmarkPrivate * priv;
};

struct _MarlinBookmarkClass {
	GTypeClass parent_class;
	void (*finalize) (MarlinBookmark *self);
};

struct _MarlinBookmarkList {
	GObject parent_instance;
	MarlinBookmarkListPrivate * priv;
};

struct _MarlinBookmarkListClass {
	GObjectClass parent_class;
};

struct _MarlinDndHandler {
	GObject parent_instance;
	MarlinDndHandlerPrivate * priv;
};

struct _MarlinDndHandlerClass {
	GObjectClass parent_class;
};

typedef enum  {
	MARLIN_VIEW_MODE_ICON,
	MARLIN_VIEW_MODE_LIST,
	MARLIN_VIEW_MODE_MILLER_COLUMNS,
	MARLIN_VIEW_MODE_CURRENT,
	MARLIN_VIEW_MODE_PREFERRED,
	MARLIN_VIEW_MODE_INVALID
} MarlinViewMode;

typedef enum  {
	MARLIN_OPEN_FLAG_DEFAULT,
	MARLIN_OPEN_FLAG_NEW_ROOT,
	MARLIN_OPEN_FLAG_NEW_TAB,
	MARLIN_OPEN_FLAG_NEW_WINDOW
} MarlinOpenFlag;

typedef enum  {
	MARLIN_ZOOM_LEVEL_SMALLEST,
	MARLIN_ZOOM_LEVEL_SMALLER,
	MARLIN_ZOOM_LEVEL_SMALL,
	MARLIN_ZOOM_LEVEL_NORMAL,
	MARLIN_ZOOM_LEVEL_LARGE,
	MARLIN_ZOOM_LEVEL_LARGER,
	MARLIN_ZOOM_LEVEL_HUGE,
	MARLIN_ZOOM_LEVEL_HUGER,
	MARLIN_ZOOM_LEVEL_LARGEST,
	MARLIN_ZOOM_LEVEL_N_LEVELS
} MarlinZoomLevel;

typedef enum  {
	MARLIN_ICON_SIZE_EMBLEM = 16,
	MARLIN_ICON_SIZE_SMALLEST = 16,
	MARLIN_ICON_SIZE_LARGE_EMBLEM = 24,
	MARLIN_ICON_SIZE_SMALLER = 24,
	MARLIN_ICON_SIZE_SMALL = 32,
	MARLIN_ICON_SIZE_NORMAL = 48,
	MARLIN_ICON_SIZE_LARGE = 64,
	MARLIN_ICON_SIZE_LARGER = 96,
	MARLIN_ICON_SIZE_HUGE = 128,
	MARLIN_ICON_SIZE_HUGER = 192,
	MARLIN_ICON_SIZE_LARGEST = 256
} MarlinIconSize;

typedef enum  {
	MARLIN_TARGET_TYPE_STRING,
	MARLIN_TARGET_TYPE_TEXT_URI_LIST,
	MARLIN_TARGET_TYPE_XDND_DIRECT_SAVE0,
	MARLIN_TARGET_TYPE_NETSCAPE_URL
} MarlinTargetType;

typedef void (*PFFileUtilsRenameCallbackFunc) (GFile* old_location, GFile* new_location, GError* _error_, void* user_data);
struct _GOFCallWhenReady {
	GObject parent_instance;
	GOFCallWhenReadyPrivate * priv;
	GList* files;
};

struct _GOFCallWhenReadyClass {
	GObjectClass parent_class;
};

typedef void (*GOFCallWhenReadycall_when_ready_func) (GList* files, void* user_data);
struct _GOFDirectoryAsync {
	GObject parent_instance;
	GOFDirectoryAsyncPrivate * priv;
	GFile* location;
	GFile* selected_file;
	GOFFile* file;
	gint icon_size;
	gboolean uri_contain_keypath_icons;
	gchar* longest_file_name;
	gboolean track_longest_name;
	guint files_count;
	gboolean permission_denied;
	gboolean network_available;
};

struct _GOFDirectoryAsyncClass {
	GObjectClass parent_class;
};

typedef enum  {
	GOF_DIRECTORY_ASYNC_STATE_NOT_LOADED,
	GOF_DIRECTORY_ASYNC_STATE_LOADING,
	GOF_DIRECTORY_ASYNC_STATE_LOADED
} GOFDirectoryAsyncState;

typedef void (*GOFDirectoryAsyncGOFFileLoadedFunc) (GOFFile* file, void* user_data);
struct _GOFPreferences {
	GObject parent_instance;
	GOFPreferencesPrivate * priv;
	gboolean pref_show_hidden_files;
	gboolean pref_confirm_trash;
	gboolean pref_force_icon_size;
	gchar* pref_date_format;
};

struct _GOFPreferencesClass {
	GObjectClass parent_class;
};

struct _MarlinPluginManager {
	GObject parent_instance;
	MarlinPluginManagerPrivate * priv;
	GList* menus;
};

struct _MarlinPluginManagerClass {
	GObjectClass parent_class;
};

struct _MarlinPluginsBase {
	GTypeInstance parent_instance;
	volatile int ref_count;
	MarlinPluginsBasePrivate * priv;
	GtkWidget* window;
};

struct _MarlinPluginsBaseClass {
	GTypeClass parent_class;
	void (*finalize) (MarlinPluginsBase *self);
	void (*directory_loaded) (MarlinPluginsBase* self, void* data);
	void (*context_menu) (MarlinPluginsBase* self, GtkWidget* widget, GList* files);
	void (*ui) (MarlinPluginsBase* self, GtkUIManager* widget);
	void (*update_sidebar) (MarlinPluginsBase* self, GtkWidget* widget);
	void (*update_file_info) (MarlinPluginsBase* self, GOFFile* file);
};

struct _PFSoundManager {
	GObject parent_instance;
	PFSoundManagerPrivate * priv;
};

struct _PFSoundManagerClass {
	GObjectClass parent_class;
};


GType marlin_place_type_get_type (void) G_GNUC_CONST;
GType marlin_abstract_sidebar_get_type (void) G_GNUC_CONST;
GType marlin_abstract_sidebar_column_get_type (void) G_GNUC_CONST;
void marlin_abstract_sidebar_init (MarlinAbstractSidebar* self);
void marlin_abstract_sidebar_add_extra_network_item (MarlinAbstractSidebar* self, const gchar* text, const gchar* tooltip, GIcon* icon, MarlinPluginCallbackFunc cb, void* cb_target);
void marlin_abstract_sidebar_add_extra_item (MarlinAbstractSidebar* self, const GtkTreeRowReference* category, const gchar* text, const gchar* tooltip, GIcon* icon, MarlinPluginCallbackFunc cb, void* cb_target);
void marlin_abstract_sidebar_add_place (MarlinAbstractSidebar* self, MarlinPlaceType place_type, GtkTreeIter* parent, const gchar* name, GIcon* icon, const gchar* uri, GDrive* drive, GVolume* volume, GMount* mount, guint index, const gchar* tooltip, GtkTreeIter* result);
MarlinAbstractSidebar* marlin_abstract_sidebar_construct (GType object_type);
GType gof_abstract_slot_get_type (void) G_GNUC_CONST;
void gof_abstract_slot_add_extra_widget (GOFAbstractSlot* self, GtkWidget* widget);
void gof_abstract_slot_init (GOFAbstractSlot* self);
void gof_abstract_slot_initialize_directory (GOFAbstractSlot* self);
GList* gof_abstract_slot_get_selected_files (GOFAbstractSlot* self);
void gof_abstract_slot_set_active_state (GOFAbstractSlot* self, gboolean set_active, gboolean animate);
GOFAbstractSlot* gof_abstract_slot_get_current_slot (GOFAbstractSlot* self);
void gof_abstract_slot_reload (GOFAbstractSlot* self, gboolean non_local_only);
void gof_abstract_slot_grab_focus (GOFAbstractSlot* self);
void gof_abstract_slot_user_path_change_request (GOFAbstractSlot* self, GFile* loc, gboolean allow_mode_change, gboolean make_root);
void gof_abstract_slot_select_first_for_empty_selection (GOFAbstractSlot* self);
void gof_abstract_slot_select_glib_files (GOFAbstractSlot* self, GList* locations, GFile* focus_location);
void gof_abstract_slot_make_view (GOFAbstractSlot* self);
void gof_abstract_slot_cancel (GOFAbstractSlot* self);
void gof_abstract_slot_close (GOFAbstractSlot* self);
GFileInfo* gof_abstract_slot_lookup_file_info (GOFAbstractSlot* self, GFile* loc);
void gof_abstract_slot_zoom_out (GOFAbstractSlot* self);
void gof_abstract_slot_zoom_in (GOFAbstractSlot* self);
void gof_abstract_slot_zoom_normal (GOFAbstractSlot* self);
gboolean gof_abstract_slot_set_all_selected (GOFAbstractSlot* self, gboolean all_selected);
GtkWidget* gof_abstract_slot_get_content_box (GOFAbstractSlot* self);
gchar* gof_abstract_slot_get_root_uri (GOFAbstractSlot* self);
gchar* gof_abstract_slot_get_tip_uri (GOFAbstractSlot* self);
gboolean gof_abstract_slot_get_realized (GOFAbstractSlot* self);
GOFAbstractSlot* gof_abstract_slot_construct (GType object_type);
GType gof_directory_async_get_type (void) G_GNUC_CONST;
GOFDirectoryAsync* gof_abstract_slot_get_directory (GOFAbstractSlot* self);
void gof_abstract_slot_set_directory (GOFAbstractSlot* self, GOFDirectoryAsync* value);
GOFFile* gof_abstract_slot_get_file (GOFAbstractSlot* self);
GFile* gof_abstract_slot_get_location (GOFAbstractSlot* self);
const gchar* gof_abstract_slot_get_uri (GOFAbstractSlot* self);
gboolean gof_abstract_slot_get_can_create (GOFAbstractSlot* self);
gboolean gof_abstract_slot_get_locked_focus (GOFAbstractSlot* self);
gboolean gof_abstract_slot_get_is_frozen (GOFAbstractSlot* self);
void gof_abstract_slot_set_is_frozen (GOFAbstractSlot* self, gboolean value);
gpointer marlin_bookmark_ref (gpointer instance);
void marlin_bookmark_unref (gpointer instance);
GParamSpec* marlin_param_spec_bookmark (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void marlin_value_set_bookmark (GValue* value, gpointer v_object);
void marlin_value_take_bookmark (GValue* value, gpointer v_object);
gpointer marlin_value_get_bookmark (const GValue* value);
GType marlin_bookmark_get_type (void) G_GNUC_CONST;
extern GCompareFunc marlin_bookmark_compare_with;
extern GCompareFunc marlin_bookmark_compare_uris;
MarlinBookmark* marlin_bookmark_new_from_uri (const gchar* uri, const gchar* label);
MarlinBookmark* marlin_bookmark_construct_from_uri (GType object_type, const gchar* uri, const gchar* label);
MarlinBookmark* marlin_bookmark_copy (MarlinBookmark* self);
GFile* marlin_bookmark_get_location (MarlinBookmark* self);
gchar* marlin_bookmark_get_uri (MarlinBookmark* self);
gchar* marlin_bookmark_get_parse_name (MarlinBookmark* self);
GIcon* marlin_bookmark_get_icon (MarlinBookmark* self);
gboolean marlin_bookmark_uri_known_not_to_exist (MarlinBookmark* self);
const gchar* marlin_bookmark_get_label (MarlinBookmark* self);
void marlin_bookmark_set_label (MarlinBookmark* self, const gchar* value);
GOFFile* marlin_bookmark_get_gof_file (MarlinBookmark* self);
GType marlin_bookmark_list_get_type (void) G_GNUC_CONST;
MarlinBookmarkList* marlin_bookmark_list_get_instance (void);
void marlin_bookmark_list_insert_uri (MarlinBookmarkList* self, const gchar* uri, guint index, const gchar* label);
void marlin_bookmark_list_insert_uri_at_end (MarlinBookmarkList* self, const gchar* uri, const gchar* label);
void marlin_bookmark_list_insert_uris (MarlinBookmarkList* self, GList* uris, guint index);
void marlin_bookmark_list_insert_uris_at_end (MarlinBookmarkList* self, GList* uris);
gboolean marlin_bookmark_list_contains (MarlinBookmarkList* self, MarlinBookmark* bm);
void marlin_bookmark_list_delete_item_at (MarlinBookmarkList* self, guint index);
void marlin_bookmark_list_delete_items_with_uri (MarlinBookmarkList* self, const gchar* uri);
guint marlin_bookmark_list_length (MarlinBookmarkList* self);
MarlinBookmark* marlin_bookmark_list_item_at (MarlinBookmarkList* self, guint index);
void marlin_bookmark_list_move_item (MarlinBookmarkList* self, guint index, guint destination);
GList* marlin_bookmark_list_get_list (MarlinBookmarkList* self);
GType marlin_dnd_handler_get_type (void) G_GNUC_CONST;
MarlinDndHandler* marlin_dnd_handler_new (void);
MarlinDndHandler* marlin_dnd_handler_construct (GType object_type);
gboolean marlin_dnd_handler_dnd_perform (MarlinDndHandler* self, GtkWidget* widget, GOFFile* drop_target, GList* drop_file_list, GdkDragAction action);
GdkDragAction* marlin_dnd_handler_drag_drop_action_ask (MarlinDndHandler* self, GtkWidget* dest_widget, GtkApplicationWindow* win, GdkDragAction possible_actions);
void marlin_dnd_handler_on_choice (MarlinDndHandler* self, GVariant* param);
gchar* marlin_dnd_handler_get_source_filename (MarlinDndHandler* self, GdkDragContext* context);
void marlin_dnd_handler_set_source_uri (MarlinDndHandler* self, GdkDragContext* context, const gchar* uri);
gboolean marlin_dnd_handler_handle_xdnddirectsave (MarlinDndHandler* self, GdkDragContext* context, GOFFile* drop_target, GtkSelectionData* selection);
gboolean marlin_dnd_handler_handle_netscape_url (MarlinDndHandler* self, GdkDragContext* context, GOFFile* drop_target, GtkSelectionData* selection);
gboolean marlin_dnd_handler_handle_file_drag_actions (MarlinDndHandler* self, GtkWidget* dest_widget, GtkApplicationWindow* win, GdkDragContext* context, GOFFile* drop_target, GList* drop_file_list, GdkDragAction possible_actions, GdkDragAction suggested_action, guint32 timestamp);
gboolean marlin_dnd_handler_selection_data_is_uri_list (GtkSelectionData* selection_data, guint info, gchar** text);
gchar* marlin_dnd_handler_data_to_string (guchar* cdata, int cdata_length1);
void marlin_dnd_handler_set_selection_data_from_file_list (GtkSelectionData* selection_data, GList* file_list, const gchar* prefix);
GType marlin_view_mode_get_type (void) G_GNUC_CONST;
GType marlin_open_flag_get_type (void) G_GNUC_CONST;
GType marlin_zoom_level_get_type (void) G_GNUC_CONST;
GType marlin_icon_size_get_type (void) G_GNUC_CONST;
MarlinIconSize marlin_zoom_level_to_icon_size (MarlinZoomLevel zoom_level);
MarlinZoomLevel marlin_zoom_level_get_nearest_from_value (gint size);
GtkIconSize marlin_zoom_level_to_stock_icon_size (MarlinZoomLevel zoom_level);
GType marlin_target_type_get_type (void) G_GNUC_CONST;
GFile* pf_file_utils_get_file_for_path (const gchar* path);
gchar* pf_file_utils_get_parent_path_from_path (const gchar* path);
void pf_file_utils_restore_files_from_trash (GList* files, GtkWidget* widget);
gboolean pf_file_utils_path_has_parent (const gchar* new_path);
gchar* pf_file_utils_escape_uri (const gchar* uri, gboolean allow_utf8);
gchar* pf_file_utils_sanitize_path (const gchar* p, const gchar* cp);
void pf_file_utils_split_protocol_from_path (const gchar* path, gchar** protocol, gchar** new_path);
gchar* pf_file_utils_get_smb_share_from_uri (const gchar* uri);
void pf_file_utils_set_file_display_name (GFile* old_location, const gchar* new_name, PFFileUtilsRenameCallbackFunc f, void* f_target);
gchar* pf_file_utils_get_formatted_time_attribute_from_info (GFileInfo* info, const gchar* attr, const gchar* format);
gchar* pf_file_utils_get_formatted_date_time (GDateTime* dt, const gchar* format);
#define MARLIN_ROOT_FS_URI "file://"
#define MARLIN_TRASH_URI "trash://"
#define MARLIN_NETWORK_URI "network://"
#define MARLIN_RECENT_URI "recent://"
#define MARLIN_AFP_URI "afp://"
#define MARLIN_DAV_URI "dav://"
#define MARLIN_DAVS_URI "davs://"
#define MARLIN_SFTP_URI "sftp://"
#define MARLIN_FTP_URI "ftp://"
#define MARLIN_SMB_URI "smb://"
#define MARLIN_MTP_URI "mtp://"
GType gof_call_when_ready_get_type (void) G_GNUC_CONST;
GOFCallWhenReady* gof_call_when_ready_new (GList* _files, GOFCallWhenReadycall_when_ready_func _f, void* _f_target);
GOFCallWhenReady* gof_call_when_ready_construct (GType object_type, GList* _files, GOFCallWhenReadycall_when_ready_func _f, void* _f_target);
GType gof_directory_async_state_get_type (void) G_GNUC_CONST;
void gof_directory_async_init (GOFDirectoryAsync* self, GOFDirectoryAsyncGOFFileLoadedFunc file_loaded_func, void* file_loaded_func_target);
void gof_directory_async_check_network (GOFDirectoryAsync* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean gof_directory_async_check_network_finish (GOFDirectoryAsync* self, GAsyncResult* _res_);
void gof_directory_async_cancel (GOFDirectoryAsync* self);
void gof_directory_async_reload (GOFDirectoryAsync* self);
void gof_directory_async_block_monitor (GOFDirectoryAsync* self);
void gof_directory_async_unblock_monitor (GOFDirectoryAsync* self);
void gof_directory_async_load_hiddens (GOFDirectoryAsync* self);
void gof_directory_async_update_files (GOFDirectoryAsync* self);
void gof_directory_async_update_desktop_files (GOFDirectoryAsync* self);
GOFFile* gof_directory_async_file_hash_lookup_location (GOFDirectoryAsync* self, GFile* location);
void gof_directory_async_file_hash_add_file (GOFDirectoryAsync* self, GOFFile* gof);
GOFFile* gof_directory_async_file_cache_find_or_insert (GOFDirectoryAsync* self, GFile* file, gboolean update_hash);
void gof_directory_async_notify_files_changed (GList* files);
void gof_directory_async_notify_files_added (GList* files);
void gof_directory_async_notify_files_removed (GList* files);
void gof_directory_async_notify_files_moved (GList* files);
GOFDirectoryAsync* gof_directory_async_from_gfile (GFile* file);
GOFDirectoryAsync* gof_directory_async_from_file (GOFFile* gof);
void gof_directory_async_remove_file_from_cache (GOFFile* gof);
GOFDirectoryAsync* gof_directory_async_cache_lookup (GFile* file);
GOFDirectoryAsync* gof_directory_async_cache_lookup_parent (GFile* file);
gboolean gof_directory_async_remove_dir_from_cache (GOFDirectoryAsync* self);
gboolean gof_directory_async_purge_dir_from_cache (GOFDirectoryAsync* self);
gboolean gof_directory_async_has_parent (GOFDirectoryAsync* self);
GFile* gof_directory_async_get_parent (GOFDirectoryAsync* self);
gboolean gof_directory_async_is_loading (GOFDirectoryAsync* self);
gboolean gof_directory_async_is_loaded (GOFDirectoryAsync* self);
gboolean gof_directory_async_is_empty (GOFDirectoryAsync* self);
GList* gof_directory_async_get_sorted_dirs (GOFDirectoryAsync* self);
GOFDirectoryAsyncState gof_directory_async_get_state (GOFDirectoryAsync* self);
const gchar* gof_directory_async_get_scheme (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_is_local (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_is_trash (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_is_network (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_is_recent (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_is_no_info (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_has_mounts (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_has_trash_dirs (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_can_load (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_can_open_files (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_can_stream_files (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_is_cancelled (GOFDirectoryAsync* self);
gboolean gof_directory_async_get_freeze_update (GOFDirectoryAsync* self);
void gof_directory_async_set_freeze_update (GOFDirectoryAsync* self, gboolean value);
GType gof_preferences_get_type (void) G_GNUC_CONST;
extern GOFPreferences* gof_preferences;
GOFPreferences* gof_preferences_new (void);
GOFPreferences* gof_preferences_construct (GType object_type);
GOFPreferences* gof_preferences_get_default (void);
gboolean gof_preferences_get_show_hidden_files (GOFPreferences* self);
void gof_preferences_set_show_hidden_files (GOFPreferences* self, gboolean value);
gboolean gof_preferences_get_show_remote_thumbnails (GOFPreferences* self);
void gof_preferences_set_show_remote_thumbnails (GOFPreferences* self, gboolean value);
gboolean gof_preferences_get_confirm_trash (GOFPreferences* self);
void gof_preferences_set_confirm_trash (GOFPreferences* self, gboolean value);
gboolean gof_preferences_get_force_icon_size (GOFPreferences* self);
void gof_preferences_set_force_icon_size (GOFPreferences* self, gboolean value);
const gchar* gof_preferences_get_date_format (GOFPreferences* self);
void gof_preferences_set_date_format (GOFPreferences* self, const gchar* value);
GType marlin_plugin_manager_get_type (void) G_GNUC_CONST;
extern MarlinPluginManager* plugins;
MarlinPluginManager* marlin_plugin_manager_new (const gchar* plugin_dir);
MarlinPluginManager* marlin_plugin_manager_construct (GType object_type, const gchar* plugin_dir);
void marlin_plugin_manager_load_plugins (MarlinPluginManager* self);
void marlin_plugin_manager_hook_context_menu (MarlinPluginManager* self, GtkWidget* menu, GList* files);
void marlin_plugin_manager_ui (MarlinPluginManager* self, GtkUIManager* data);
void marlin_plugin_manager_directory_loaded (MarlinPluginManager* self, void* path);
void marlin_plugin_manager_interface_loaded (MarlinPluginManager* self, GtkWidget* win);
void marlin_plugin_manager_update_sidebar (MarlinPluginManager* self, GtkWidget* widget);
void marlin_plugin_manager_update_file_info (MarlinPluginManager* self, GOFFile* file);
GeeList* marlin_plugin_manager_get_available_plugins (MarlinPluginManager* self);
GeeList* marlin_plugin_manager_get_menuitem_references (MarlinPluginManager* self);
gpointer marlin_plugins_base_ref (gpointer instance);
void marlin_plugins_base_unref (gpointer instance);
GParamSpec* marlin_plugins_param_spec_base (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void marlin_plugins_value_set_base (GValue* value, gpointer v_object);
void marlin_plugins_value_take_base (GValue* value, gpointer v_object);
gpointer marlin_plugins_value_get_base (const GValue* value);
GType marlin_plugins_base_get_type (void) G_GNUC_CONST;
void marlin_plugins_base_directory_loaded (MarlinPluginsBase* self, void* data);
void marlin_plugins_base_context_menu (MarlinPluginsBase* self, GtkWidget* widget, GList* files);
void marlin_plugins_base_ui (MarlinPluginsBase* self, GtkUIManager* widget);
void marlin_plugins_base_update_sidebar (MarlinPluginsBase* self, GtkWidget* widget);
void marlin_plugins_base_update_file_info (MarlinPluginsBase* self, GOFFile* file);
void marlin_plugins_base_interface_loaded (MarlinPluginsBase* self, GtkWidget* widget);
MarlinPluginsBase* marlin_plugins_base_construct (GType object_type);
GType pf_sound_manager_get_type (void) G_GNUC_CONST;
PFSoundManager* pf_sound_manager_get_instance (void);
void pf_sound_manager_play_delete_sound (PFSoundManager* self);
void pf_sound_manager_play_empty_trash_sound (PFSoundManager* self);
void pf_sound_manager_play_sound (PFSoundManager* self, const gchar* pf_sound_id);
#define PF_SOUND_THEME "freedesktop"
#define PF_SOUND_DELETE "trash-empty"
#define PF_SOUND_EMPTY_TRASH "trash-empty"

extern const gchar* GOF_PREFERENCES_TAGS_COLORS[10];

G_END_DECLS

#endif
