1 /* GTK - The GIMP Toolkit 2 * gtkfilefilter.h: Filters for selecting a file subset 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_FILTER_H__ 20 #define __GTK_FILE_FILTER_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 <glib-object.h> 27 #include <gdk/gdk.h> 28 29 G_BEGIN_DECLS 30 31 #define GTK_TYPE_FILE_FILTER (gtk_file_filter_get_type ()) 32 #define GTK_FILE_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_FILTER, GtkFileFilter)) 33 #define GTK_IS_FILE_FILTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_FILTER)) 34 35 typedef struct _GtkFileFilter GtkFileFilter; 36 typedef struct _GtkFileFilterInfo GtkFileFilterInfo; 37 38 /** 39 * GtkFileFilterFlags: 40 * @GTK_FILE_FILTER_FILENAME: the filename of the file being tested 41 * @GTK_FILE_FILTER_URI: the URI for the file being tested 42 * @GTK_FILE_FILTER_DISPLAY_NAME: the string that will be used to 43 * display the file in the file chooser 44 * @GTK_FILE_FILTER_MIME_TYPE: the mime type of the file 45 * 46 * These flags indicate what parts of a #GtkFileFilterInfo struct 47 * are filled or need to be filled. 48 */ 49 typedef enum { 50 GTK_FILE_FILTER_FILENAME = 1 << 0, 51 GTK_FILE_FILTER_URI = 1 << 1, 52 GTK_FILE_FILTER_DISPLAY_NAME = 1 << 2, 53 GTK_FILE_FILTER_MIME_TYPE = 1 << 3 54 } GtkFileFilterFlags; 55 56 /** 57 * GtkFileFilterFunc: 58 * @filter_info: a #GtkFileFilterInfo that is filled according 59 * to the @needed flags passed to gtk_file_filter_add_custom() 60 * @data: (closure): user data passed to gtk_file_filter_add_custom() 61 * 62 * The type of function that is used with custom filters, see 63 * gtk_file_filter_add_custom(). 64 * 65 * Returns: %TRUE if the file should be displayed 66 */ 67 typedef gboolean (*GtkFileFilterFunc) (const GtkFileFilterInfo *filter_info, 68 gpointer data); 69 70 /** 71 * GtkFileFilterInfo: 72 * @contains: Flags indicating which of the following fields need 73 * are filled 74 * @filename: the filename of the file being tested 75 * @uri: the URI for the file being tested 76 * @display_name: the string that will be used to display the file 77 * in the file chooser 78 * @mime_type: the mime type of the file 79 * 80 * A #GtkFileFilterInfo-struct is used to pass information about the 81 * tested file to gtk_file_filter_filter(). 82 */ 83 struct _GtkFileFilterInfo 84 { 85 GtkFileFilterFlags contains; 86 87 const gchar *filename; 88 const gchar *uri; 89 const gchar *display_name; 90 const gchar *mime_type; 91 }; 92 93 GDK_AVAILABLE_IN_ALL 94 GType gtk_file_filter_get_type (void) G_GNUC_CONST; 95 96 GDK_AVAILABLE_IN_ALL 97 GtkFileFilter * gtk_file_filter_new (void); 98 GDK_AVAILABLE_IN_ALL 99 void gtk_file_filter_set_name (GtkFileFilter *filter, 100 const gchar *name); 101 GDK_AVAILABLE_IN_ALL 102 const gchar * gtk_file_filter_get_name (GtkFileFilter *filter); 103 104 GDK_AVAILABLE_IN_ALL 105 void gtk_file_filter_add_mime_type (GtkFileFilter *filter, 106 const gchar *mime_type); 107 GDK_AVAILABLE_IN_ALL 108 void gtk_file_filter_add_pattern (GtkFileFilter *filter, 109 const gchar *pattern); 110 GDK_AVAILABLE_IN_ALL 111 void gtk_file_filter_add_pixbuf_formats (GtkFileFilter *filter); 112 GDK_AVAILABLE_IN_ALL 113 void gtk_file_filter_add_custom (GtkFileFilter *filter, 114 GtkFileFilterFlags needed, 115 GtkFileFilterFunc func, 116 gpointer data, 117 GDestroyNotify notify); 118 119 GDK_AVAILABLE_IN_ALL 120 GtkFileFilterFlags gtk_file_filter_get_needed (GtkFileFilter *filter); 121 GDK_AVAILABLE_IN_ALL 122 gboolean gtk_file_filter_filter (GtkFileFilter *filter, 123 const GtkFileFilterInfo *filter_info); 124 125 GDK_AVAILABLE_IN_3_22 126 GVariant *gtk_file_filter_to_gvariant (GtkFileFilter *filter); 127 GDK_AVAILABLE_IN_3_22 128 GtkFileFilter *gtk_file_filter_new_from_gvariant (GVariant *variant); 129 130 G_END_DECLS 131 132 #endif /* __GTK_FILE_FILTER_H__ */ 133