/** * ev_document_factory_add_filters: * @chooser: a #GtkFileChooser * @document: a #EvDocument, or %NULL * * Adds some file filters to @chooser. * Always add a "All documents" format. * * If @document is not %NULL, adds a #GtkFileFilter for @document's MIME type. * * If @document is %NULL, adds a #GtkFileFilter for each document type that atril * can handle. */ void ev_document_factory_add_filters (GtkWidget *chooser, EvDocument *document) { GList *all_types; GtkFileFilter *filter; GtkFileFilter *default_filter; GtkFileFilter *document_filter; g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); g_return_if_fail (document == NULL || EV_IS_DOCUMENT (document)); all_types = ev_backends_manager_get_all_types_info (); default_filter = document_filter = filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Documents")); g_list_foreach (all_types, (GFunc)file_filter_add_mime_types, filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); if (document) { EvTypeInfo *info; info = ev_backends_manager_get_document_type_info (document); default_filter = filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, info->desc); file_filter_add_mime_types (info, filter); g_free (info); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); } else { GList *l; for (l = all_types; l; l = g_list_next (l)){ EvTypeInfo *info; info = (EvTypeInfo *)l->data; default_filter = filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, info->desc); file_filter_add_mime_types (info, filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); } } g_list_foreach (all_types, (GFunc)g_free, NULL); g_list_free (all_types); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Files")); gtk_file_filter_add_pattern (filter, "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), document == NULL ? document_filter : default_filter); }
/** * ev_document_factory_add_filters: * @chooser: a #GtkFileChooser * @document: a #EvDocument, or %NULL * * Adds some file filters to @chooser. * Always add a "All documents" format. * * If @document is not %NULL, adds a #GtkFileFilter for @document's MIME type. * * If @document is %NULL, adds a #GtkFileFilter for each document type that evince * can handle. */ void ev_document_factory_add_filters (GtkWidget *chooser, EvDocument *document) { GtkFileFilter *filter; GtkFileFilter *default_filter; GtkFileFilter *document_filter; g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); g_return_if_fail (document == NULL || EV_IS_DOCUMENT (document)); default_filter = document_filter = filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Documents")); g_list_foreach (ev_backends_list, (GFunc)file_filter_add_mime_types, filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); if (document) { EvBackendInfo *info; info = get_backend_info_for_document (document); g_assert (info != NULL); default_filter = filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, info->type_desc); file_filter_add_mime_types (info, filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); } else { GList *l; for (l = ev_backends_list; l; l = l->next) { EvBackendInfo *info = (EvBackendInfo *) l->data; default_filter = filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, info->type_desc); file_filter_add_mime_types (info, filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); } } filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Files")); gtk_file_filter_add_pattern (filter, "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), document == NULL ? document_filter : default_filter); }