static int set_field(guint32 *filter, const char *filterstr) { guint64 mask; mask = get_filter_mask(filterstr); if (mask == 0) return -EINVAL; *filter |= mask; return 0; }
static int remove_filter(struct pbap_data *pbap, const char *filterstr) { uint64_t mask; mask = get_filter_mask(filterstr); if (mask == 0) return -EINVAL; pbap->filter &= ~mask; return 0; }
void add_dialog_filters(GtkWidget *dialog, char * const p_types[], uint4 p_type_count ) { GtkFileFilter *filter ; if ( p_type_count >= 1 ) { for (uint4 a=0; a < p_type_count; a++) { char *t_filter_name, *t_filter_masks; t_filter_name = get_filter_name(p_types[a]); t_filter_masks = get_filter_masks(p_types[a]); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, t_filter_name); if (strcasecmp (t_filter_name, "All files") != 0) { for ( uint4 m = 0 ; m < get_filter_count(t_filter_masks); m++) { char *t_filter_mask; t_filter_mask = get_filter_mask(m, t_filter_masks); char *filter_mask; filter_mask = nil; MCCStringFormat(filter_mask, "*.%s", t_filter_mask); gtk_file_filter_add_pattern(filter, filter_mask); MCCStringFree(filter_mask); delete t_filter_mask; } } else gtk_file_filter_add_pattern ( filter, "*" ); gtk_file_chooser_add_filter ( GTK_FILE_CHOOSER ( dialog ) , filter ) ; delete t_filter_name; delete t_filter_masks; } } }