mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-14 06:10:21 +00:00
filefilter: Drop custom filters
These don't work with native file choosers.
This commit is contained in:
parent
a8b0125da1
commit
644d522d19
@ -1414,14 +1414,12 @@ GtkFileChooserButtonPrivate
|
|||||||
<FILE>gtkfilefilter</FILE>
|
<FILE>gtkfilefilter</FILE>
|
||||||
GtkFileFilter
|
GtkFileFilter
|
||||||
GtkFileFilterFlags
|
GtkFileFilterFlags
|
||||||
GtkFileFilterFunc
|
|
||||||
gtk_file_filter_new
|
gtk_file_filter_new
|
||||||
gtk_file_filter_set_name
|
gtk_file_filter_set_name
|
||||||
gtk_file_filter_get_name
|
gtk_file_filter_get_name
|
||||||
gtk_file_filter_add_mime_type
|
gtk_file_filter_add_mime_type
|
||||||
gtk_file_filter_add_pattern
|
gtk_file_filter_add_pattern
|
||||||
gtk_file_filter_add_pixbuf_formats
|
gtk_file_filter_add_pixbuf_formats
|
||||||
gtk_file_filter_add_custom
|
|
||||||
gtk_file_filter_get_needed
|
gtk_file_filter_get_needed
|
||||||
gtk_file_filter_filter
|
gtk_file_filter_filter
|
||||||
|
|
||||||
|
@ -85,8 +85,7 @@ typedef struct _FilterRule FilterRule;
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
FILTER_RULE_PATTERN,
|
FILTER_RULE_PATTERN,
|
||||||
FILTER_RULE_MIME_TYPE,
|
FILTER_RULE_MIME_TYPE,
|
||||||
FILTER_RULE_PIXBUF_FORMATS,
|
FILTER_RULE_PIXBUF_FORMATS
|
||||||
FILTER_RULE_CUSTOM
|
|
||||||
} FilterRuleType;
|
} FilterRuleType;
|
||||||
|
|
||||||
struct _GtkFileFilterClass
|
struct _GtkFileFilterClass
|
||||||
@ -113,11 +112,6 @@ struct _FilterRule
|
|||||||
gchar *pattern;
|
gchar *pattern;
|
||||||
gchar *mime_type;
|
gchar *mime_type;
|
||||||
GSList *pixbuf_formats;
|
GSList *pixbuf_formats;
|
||||||
struct {
|
|
||||||
GtkFileFilterFunc func;
|
|
||||||
gpointer data;
|
|
||||||
GDestroyNotify notify;
|
|
||||||
} custom;
|
|
||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -205,10 +199,6 @@ filter_rule_free (FilterRule *rule)
|
|||||||
case FILTER_RULE_PATTERN:
|
case FILTER_RULE_PATTERN:
|
||||||
g_free (rule->u.pattern);
|
g_free (rule->u.pattern);
|
||||||
break;
|
break;
|
||||||
case FILTER_RULE_CUSTOM:
|
|
||||||
if (rule->u.custom.notify)
|
|
||||||
rule->u.custom.notify (rule->u.custom.data);
|
|
||||||
break;
|
|
||||||
case FILTER_RULE_PIXBUF_FORMATS:
|
case FILTER_RULE_PIXBUF_FORMATS:
|
||||||
g_slist_free (rule->u.pixbuf_formats);
|
g_slist_free (rule->u.pixbuf_formats);
|
||||||
break;
|
break;
|
||||||
@ -580,45 +570,6 @@ gtk_file_filter_add_pixbuf_formats (GtkFileFilter *filter)
|
|||||||
file_filter_add_rule (filter, rule);
|
file_filter_add_rule (filter, rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gtk_file_filter_add_custom:
|
|
||||||
* @filter: a #GtkFileFilter
|
|
||||||
* @needed: bitfield of flags indicating the information that the custom
|
|
||||||
* filter function needs.
|
|
||||||
* @func: callback function; if the function returns %TRUE, then
|
|
||||||
* the file will be displayed.
|
|
||||||
* @data: data to pass to @func
|
|
||||||
* @notify: function to call to free @data when it is no longer needed.
|
|
||||||
*
|
|
||||||
* Adds rule to a filter that allows files based on a custom callback
|
|
||||||
* function. The bitfield @needed which is passed in provides information
|
|
||||||
* about what sorts of information that the filter function needs;
|
|
||||||
* this allows GTK+ to avoid retrieving expensive information when
|
|
||||||
* it isn’t needed by the filter.
|
|
||||||
**/
|
|
||||||
void
|
|
||||||
gtk_file_filter_add_custom (GtkFileFilter *filter,
|
|
||||||
GtkFileFilterFlags needed,
|
|
||||||
GtkFileFilterFunc func,
|
|
||||||
gpointer data,
|
|
||||||
GDestroyNotify notify)
|
|
||||||
{
|
|
||||||
FilterRule *rule;
|
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_FILE_FILTER (filter));
|
|
||||||
g_return_if_fail (func != NULL);
|
|
||||||
|
|
||||||
rule = g_slice_new (FilterRule);
|
|
||||||
rule->type = FILTER_RULE_CUSTOM;
|
|
||||||
rule->needed = needed;
|
|
||||||
rule->u.custom.func = func;
|
|
||||||
rule->u.custom.data = data;
|
|
||||||
rule->u.custom.notify = notify;
|
|
||||||
|
|
||||||
file_filter_add_rule (filter, rule);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gtk_file_filter_get_needed:
|
* gtk_file_filter_get_needed:
|
||||||
* @filter: a #GtkFileFilter
|
* @filter: a #GtkFileFilter
|
||||||
@ -654,10 +605,6 @@ NSArray * _gtk_file_filter_get_as_pattern_nsstrings (GtkFileFilter *filter)
|
|||||||
|
|
||||||
switch (rule->type)
|
switch (rule->type)
|
||||||
{
|
{
|
||||||
case FILTER_RULE_CUSTOM:
|
|
||||||
[array release];
|
|
||||||
return NULL;
|
|
||||||
break;
|
|
||||||
case FILTER_RULE_MIME_TYPE:
|
case FILTER_RULE_MIME_TYPE:
|
||||||
{
|
{
|
||||||
// convert mime-types to UTI
|
// convert mime-types to UTI
|
||||||
@ -731,7 +678,6 @@ _gtk_file_filter_get_as_patterns (GtkFileFilter *filter)
|
|||||||
|
|
||||||
switch (rule->type)
|
switch (rule->type)
|
||||||
{
|
{
|
||||||
case FILTER_RULE_CUSTOM:
|
|
||||||
case FILTER_RULE_MIME_TYPE:
|
case FILTER_RULE_MIME_TYPE:
|
||||||
g_ptr_array_free (array, TRUE);
|
g_ptr_array_free (array, TRUE);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -853,10 +799,6 @@ gtk_file_filter_filter (GtkFileFilter *filter,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FILTER_RULE_CUSTOM:
|
|
||||||
if (rule->u.custom.func (info, rule->u.custom.data))
|
|
||||||
return TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -910,7 +852,6 @@ gtk_file_filter_to_gvariant (GtkFileFilter *filter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FILTER_RULE_CUSTOM:
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -52,19 +52,6 @@ typedef enum {
|
|||||||
GTK_FILE_FILTER_MIME_TYPE = 1 << 3
|
GTK_FILE_FILTER_MIME_TYPE = 1 << 3
|
||||||
} GtkFileFilterFlags;
|
} GtkFileFilterFlags;
|
||||||
|
|
||||||
/**
|
|
||||||
* GtkFileFilterFunc:
|
|
||||||
* @info: a #GFileInfo
|
|
||||||
* @data: (closure): user data passed to gtk_file_filter_add_custom()
|
|
||||||
*
|
|
||||||
* The type of function that is used with custom filters, see
|
|
||||||
* gtk_file_filter_add_custom().
|
|
||||||
*
|
|
||||||
* Returns: %TRUE if the file should be displayed
|
|
||||||
*/
|
|
||||||
typedef gboolean (*GtkFileFilterFunc) (GFileInfo *info,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
GType gtk_file_filter_get_type (void) G_GNUC_CONST;
|
GType gtk_file_filter_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
@ -84,12 +71,6 @@ void gtk_file_filter_add_pattern (GtkFileFilter *filter,
|
|||||||
const gchar *pattern);
|
const gchar *pattern);
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
void gtk_file_filter_add_pixbuf_formats (GtkFileFilter *filter);
|
void gtk_file_filter_add_pixbuf_formats (GtkFileFilter *filter);
|
||||||
GDK_AVAILABLE_IN_ALL
|
|
||||||
void gtk_file_filter_add_custom (GtkFileFilter *filter,
|
|
||||||
GtkFileFilterFlags needed,
|
|
||||||
GtkFileFilterFunc func,
|
|
||||||
gpointer data,
|
|
||||||
GDestroyNotify notify);
|
|
||||||
|
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
GtkFileFilterFlags gtk_file_filter_get_needed (GtkFileFilter *filter);
|
GtkFileFilterFlags gtk_file_filter_get_needed (GtkFileFilter *filter);
|
||||||
|
@ -118,21 +118,6 @@ response_cb (GtkDialog *dialog,
|
|||||||
g_main_context_wakeup (NULL);
|
g_main_context_wakeup (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
no_backup_files_filter (GFileInfo *info,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
const char *display_name;
|
|
||||||
gsize len;
|
|
||||||
|
|
||||||
display_name = g_file_info_get_display_name (info);
|
|
||||||
len = strlen (display_name);
|
|
||||||
if (len > 0 && display_name[len - 1] == '~')
|
|
||||||
return 0;
|
|
||||||
else
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
filter_changed (GtkFileChooserDialog *dialog,
|
filter_changed (GtkFileChooserDialog *dialog,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
@ -399,14 +384,6 @@ main (int argc, char **argv)
|
|||||||
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
|
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||||
g_object_unref (filter);
|
g_object_unref (filter);
|
||||||
|
|
||||||
filter = gtk_file_filter_new ();
|
|
||||||
gtk_file_filter_set_name (filter, "No backup files");
|
|
||||||
gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_DISPLAY_NAME,
|
|
||||||
no_backup_files_filter, NULL, NULL);
|
|
||||||
gtk_file_filter_add_mime_type (filter, "image/png");
|
|
||||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
|
||||||
g_object_unref (filter);
|
|
||||||
|
|
||||||
filter = gtk_file_filter_new ();
|
filter = gtk_file_filter_new ();
|
||||||
gtk_file_filter_set_name (filter, "Starts with D");
|
gtk_file_filter_set_name (filter, "Starts with D");
|
||||||
gtk_file_filter_add_pattern (filter, "D*");
|
gtk_file_filter_add_pattern (filter, "D*");
|
||||||
|
Loading…
Reference in New Issue
Block a user