summaryrefslogtreecommitdiff
path: root/src/nautilus-file-utilities.h
blob: 4b2124b3bf46f1bae2b2160535c08079a9ba4d13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

/* nautilus-file-utilities.h - interface for file manipulation routines.

   Copyright (C) 1999, 2000, 2001 Eazel, Inc.

   The Gnome Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   The Gnome Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with the Gnome Library; see the file COPYING.LIB.  If not,
   see <http://www.gnu.org/licenses/>.

   Authors: John Sullivan <sullivan@eazel.com>
*/

#ifndef NAUTILUS_FILE_UTILITIES_H
#define NAUTILUS_FILE_UTILITIES_H

#include <gio/gio.h>
#include <gtk/gtk.h>

#include <config.h>

#define NAUTILUS_DESKTOP_ID APPLICATION_ID ".desktop"

/* These functions all return something something that needs to be
 * freed with g_free, is not NULL, and is guaranteed to exist.
 */
char *   nautilus_get_user_directory                 (void);
GFile *  nautilus_get_desktop_location               (void);
char *   nautilus_get_home_directory_uri             (void);
gboolean nautilus_is_desktop_directory_file          (GFile *dir,
						      const char *filename);
gboolean nautilus_is_root_directory                  (GFile *dir);
gboolean nautilus_is_desktop_directory               (GFile *dir);
gboolean nautilus_is_home_directory                  (GFile *dir);
gboolean nautilus_is_home_directory_file             (GFile *dir,
						      const char *filename);
gboolean nautilus_is_in_system_dir                   (GFile *location);
gboolean nautilus_is_search_directory                (GFile *dir);
gboolean nautilus_is_recent_directory                (GFile *dir);
gboolean nautilus_is_starred_directory              (GFile *dir);
gboolean nautilus_is_trash_directory                 (GFile *dir);
gboolean nautilus_is_other_locations_directory       (GFile *dir);
GMount * nautilus_get_mounted_mount_for_root         (GFile *location);

gboolean nautilus_should_use_templates_directory     (void);
char *   nautilus_get_templates_directory            (void);
char *   nautilus_get_templates_directory_uri        (void);

char *	 nautilus_compute_title_for_location	     (GFile *file);

gboolean nautilus_is_file_roller_installed           (void);

GIcon *  nautilus_special_directory_get_icon         (GUserDirectory directory);
GIcon *  nautilus_special_directory_get_symbolic_icon (GUserDirectory directory);

gboolean nautilus_uri_parse                          (const char  *uri,
						      char       **host,
						      guint16     *port,
						      char       **userinfo);

/* Return an allocated file location that is guranteed to be unique, but
 * tries to make the location name readable to users.
 * This isn't race-free, so don't use for security-related things
 */
GFile * nautilus_generate_unique_file_in_directory (GFile      *directory,
                                                    const char *basename);

GFile *  nautilus_find_existing_uri_in_hierarchy     (GFile *location);

char * nautilus_get_scripts_directory_path (void);

GHashTable * nautilus_trashed_files_get_original_directories (GList *files,
							      GList **unhandled_files);
void nautilus_restore_files_from_trash (GList *files,
					GtkWindow *parent_window);

typedef void (*NautilusMountGetContent) (const char **content, gpointer user_data);

char ** nautilus_get_cached_x_content_types_for_mount (GMount *mount);
void nautilus_get_x_content_types_for_mount_async (GMount *mount,
						   NautilusMountGetContent callback,
						   GCancellable *cancellable,
						   gpointer user_data);
char * get_message_for_content_type (const char *content_type);
char * get_message_for_two_content_types (const char * const *content_types);
gboolean should_handle_content_type (const char *content_type);
gboolean should_handle_content_types (const char * const *content_type);

gboolean nautilus_file_selection_equal (GList *selection_a, GList *selection_b);

/**
 * nautilus_get_common_filename_prefix:
 * @file_list: set of files (NautilusFile *)
 * @min_required_len: the minimum number of characters required in the prefix
 *
 * Returns: the common filename prefix for a set of files, or NULL if
 * there isn't a common prefix of length min_required_len
 */
char * nautilus_get_common_filename_prefix (GList *file_list,
                                            int    min_required_len);

/**
 * nautilus_get_common_filename_prefix_from_filenames:
 * @filename_list: set of file names (char *)
 * @min_required_len: the minimum number of characters required in the prefix
 *
 * Returns: the common filename prefix for a set of filenames, or NULL if
 * there isn't a common prefix of length min_required_len
 */
char * nautilus_get_common_filename_prefix_from_filenames (GList *filename_list,
                                                           int    min_required_len);

void nautilus_ensure_extension_points (void);
void nautilus_ensure_extension_builtins (void);

gboolean nautilus_file_can_rename_files (GList *files);

GList * nautilus_file_list_from_uri_list (GList *uris);

gchar * nautilus_uri_to_native_uri (const gchar *uri);

#endif /* NAUTILUS_FILE_UTILITIES_H */