1/* GTK - The GIMP Toolkit
2 * gtkfilechooser.h: Abstract interface for file selector GUIs
3 * Copyright (C) 2003, Red Hat, Inc.
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifndef __GTK_FILE_CHOOSER_H__
20#define __GTK_FILE_CHOOSER_H__
21
22#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
23#error "Only <gtk/gtk.h> can be included directly."
24#endif
25
26#include <gtk/gtkfilefilter.h>
27#include <gtk/gtkwidget.h>
28
29G_BEGIN_DECLS
30
31#define GTK_TYPE_FILE_CHOOSER (gtk_file_chooser_get_type ())
32#define GTK_FILE_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER, GtkFileChooser))
33#define GTK_IS_FILE_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_CHOOSER))
34
35typedef struct _GtkFileChooser GtkFileChooser;
36
37/**
38 * GtkFileChooserAction:
39 * @GTK_FILE_CHOOSER_ACTION_OPEN: Indicates open mode. The file chooser
40 * will only let the user pick an existing file.
41 * @GTK_FILE_CHOOSER_ACTION_SAVE: Indicates save mode. The file chooser
42 * will let the user pick an existing file, or type in a new
43 * filename.
44 * @GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER: Indicates an Open mode for
45 * selecting folders. The file chooser will let the user pick an
46 * existing folder.
47 *
48 * Describes whether a `GtkFileChooser` is being used to open existing files
49 * or to save to a possibly new file.
50 */
51typedef enum
52{
53 GTK_FILE_CHOOSER_ACTION_OPEN,
54 GTK_FILE_CHOOSER_ACTION_SAVE,
55 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
56} GtkFileChooserAction;
57
58GDK_AVAILABLE_IN_ALL
59GType gtk_file_chooser_get_type (void) G_GNUC_CONST;
60
61/* GError enumeration for GtkFileChooser */
62/**
63 * GTK_FILE_CHOOSER_ERROR:
64 *
65 * Used to get the `GError` quark for `GtkFileChooser` errors.
66 */
67#define GTK_FILE_CHOOSER_ERROR (gtk_file_chooser_error_quark ())
68
69/**
70 * GtkFileChooserError:
71 * @GTK_FILE_CHOOSER_ERROR_NONEXISTENT: Indicates that a file does not exist.
72 * @GTK_FILE_CHOOSER_ERROR_BAD_FILENAME: Indicates a malformed filename.
73 * @GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS: Indicates a duplicate path (e.g. when
74 * adding a bookmark).
75 * @GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME: Indicates an incomplete hostname
76 * (e.g. "http://foo" without a slash after that).
77 *
78 * These identify the various errors that can occur while calling
79 * `GtkFileChooser` functions.
80 */
81typedef enum {
82 GTK_FILE_CHOOSER_ERROR_NONEXISTENT,
83 GTK_FILE_CHOOSER_ERROR_BAD_FILENAME,
84 GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS,
85 GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME
86} GtkFileChooserError;
87
88GDK_AVAILABLE_IN_ALL
89GQuark gtk_file_chooser_error_quark (void);
90
91/* Configuration */
92
93GDK_AVAILABLE_IN_ALL
94void gtk_file_chooser_set_action (GtkFileChooser *chooser,
95 GtkFileChooserAction action);
96GDK_AVAILABLE_IN_ALL
97GtkFileChooserAction gtk_file_chooser_get_action (GtkFileChooser *chooser);
98GDK_AVAILABLE_IN_ALL
99void gtk_file_chooser_set_select_multiple (GtkFileChooser *chooser,
100 gboolean select_multiple);
101GDK_AVAILABLE_IN_ALL
102gboolean gtk_file_chooser_get_select_multiple (GtkFileChooser *chooser);
103GDK_AVAILABLE_IN_ALL
104void gtk_file_chooser_set_create_folders (GtkFileChooser *chooser,
105 gboolean create_folders);
106GDK_AVAILABLE_IN_ALL
107gboolean gtk_file_chooser_get_create_folders (GtkFileChooser *chooser);
108
109/* Suggested name for the Save-type actions */
110
111GDK_AVAILABLE_IN_ALL
112void gtk_file_chooser_set_current_name (GtkFileChooser *chooser,
113 const char *name);
114GDK_AVAILABLE_IN_ALL
115char * gtk_file_chooser_get_current_name (GtkFileChooser *chooser);
116
117/* GFile manipulation */
118
119GDK_AVAILABLE_IN_ALL
120GFile * gtk_file_chooser_get_file (GtkFileChooser *chooser);
121GDK_AVAILABLE_IN_ALL
122gboolean gtk_file_chooser_set_file (GtkFileChooser *chooser,
123 GFile *file,
124 GError **error);
125GDK_AVAILABLE_IN_ALL
126GListModel * gtk_file_chooser_get_files (GtkFileChooser *chooser);
127GDK_AVAILABLE_IN_ALL
128gboolean gtk_file_chooser_set_current_folder (GtkFileChooser *chooser,
129 GFile *file,
130 GError **error);
131GDK_AVAILABLE_IN_ALL
132GFile * gtk_file_chooser_get_current_folder (GtkFileChooser *chooser);
133
134/* List of user selectable filters */
135
136GDK_AVAILABLE_IN_ALL
137void gtk_file_chooser_add_filter (GtkFileChooser *chooser,
138 GtkFileFilter *filter);
139GDK_AVAILABLE_IN_ALL
140void gtk_file_chooser_remove_filter (GtkFileChooser *chooser,
141 GtkFileFilter *filter);
142GDK_AVAILABLE_IN_ALL
143GListModel * gtk_file_chooser_get_filters (GtkFileChooser *chooser);
144
145/* Current filter */
146
147GDK_AVAILABLE_IN_ALL
148void gtk_file_chooser_set_filter (GtkFileChooser *chooser,
149 GtkFileFilter *filter);
150GDK_AVAILABLE_IN_ALL
151GtkFileFilter * gtk_file_chooser_get_filter (GtkFileChooser *chooser);
152
153/* Per-application shortcut folders */
154
155GDK_AVAILABLE_IN_ALL
156gboolean gtk_file_chooser_add_shortcut_folder (GtkFileChooser *chooser,
157 GFile *folder,
158 GError **error);
159GDK_AVAILABLE_IN_ALL
160gboolean gtk_file_chooser_remove_shortcut_folder
161 (GtkFileChooser *chooser,
162 GFile *folder,
163 GError **error);
164GDK_AVAILABLE_IN_ALL
165GListModel * gtk_file_chooser_get_shortcut_folders (GtkFileChooser *chooser);
166
167/* Custom widgets */
168
169GDK_AVAILABLE_IN_ALL
170void gtk_file_chooser_add_choice (GtkFileChooser *chooser,
171 const char *id,
172 const char *label,
173 const char **options,
174 const char **option_labels);
175GDK_AVAILABLE_IN_ALL
176void gtk_file_chooser_remove_choice (GtkFileChooser *chooser,
177 const char *id);
178GDK_AVAILABLE_IN_ALL
179void gtk_file_chooser_set_choice (GtkFileChooser *chooser,
180 const char *id,
181 const char *option);
182GDK_AVAILABLE_IN_ALL
183const char * gtk_file_chooser_get_choice (GtkFileChooser *chooser,
184 const char *id);
185
186G_END_DECLS
187
188#endif /* __GTK_FILE_CHOOSER_H__ */
189

source code of gtk/gtk/gtkfilechooser.h