mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-04 10:16:17 +01:00
gfileenumerator: Add a g_file_enumerator_get_child method
This is a new convenience method designed to simplify some use cases of GFileEnumerator, by making it easy to get the next file from a file enumerator. https://bugzilla.gnome.org/show_bug.cgi?id=690083
This commit is contained in:
parent
6cce4790b7
commit
3c87ab97ff
@ -213,6 +213,7 @@ g_file_enumerator_is_closed
|
||||
g_file_enumerator_has_pending
|
||||
g_file_enumerator_set_pending
|
||||
g_file_enumerator_get_container
|
||||
g_file_enumerator_get_child
|
||||
<SUBSECTION Standard>
|
||||
GFileEnumeratorClass
|
||||
G_FILE_ENUMERATOR
|
||||
|
@ -589,6 +589,37 @@ g_file_enumerator_get_container (GFileEnumerator *enumerator)
|
||||
return enumerator->priv->container;
|
||||
}
|
||||
|
||||
/**
|
||||
* g_file_enumerator_get_child:
|
||||
* @enumerator: a #GFileEnumerator
|
||||
* @info: a #GFileInfo gotten from g_file_enumerator_next_file()
|
||||
* or the async equivalents.
|
||||
*
|
||||
* Return a new #GFile which refers to the file named by @info in the source
|
||||
* directory of @enumerator. This function is primarily intended to be used
|
||||
* inside loops with g_file_enumerator_next_file().
|
||||
*
|
||||
* This is a convenience method that's equivalent to:
|
||||
* |[
|
||||
* gchar *name = g_file_info_get_name (info);
|
||||
* GFile *child = g_file_get_child (g_file_enumerator_get_container (enumr),
|
||||
* name);
|
||||
* ]|
|
||||
*
|
||||
* Returns: (transfer full): a #GFile for the #GFileInfo passed it.
|
||||
*
|
||||
* Since: 2.36
|
||||
*/
|
||||
GFile *
|
||||
g_file_enumerator_get_child (GFileEnumerator *enumerator,
|
||||
GFileInfo *info)
|
||||
{
|
||||
g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
|
||||
|
||||
return g_file_get_child (enumerator->priv->container,
|
||||
g_file_info_get_name (info));
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
int num_files;
|
||||
GList *files;
|
||||
|
@ -126,6 +126,9 @@ gboolean g_file_enumerator_has_pending (GFileEnumerator *enumerator
|
||||
void g_file_enumerator_set_pending (GFileEnumerator *enumerator,
|
||||
gboolean pending);
|
||||
GFile * g_file_enumerator_get_container (GFileEnumerator *enumerator);
|
||||
GLIB_AVAILABLE_IN_2_36
|
||||
GFile * g_file_enumerator_get_child (GFileEnumerator *enumerator,
|
||||
GFileInfo *info);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -384,6 +384,7 @@ g_file_enumerator_close_finish
|
||||
g_file_enumerator_is_closed
|
||||
g_file_enumerator_has_pending
|
||||
g_file_enumerator_set_pending
|
||||
g_file_enumerator_get_child
|
||||
g_file_enumerator_get_container
|
||||
g_file_icon_get_type
|
||||
g_file_icon_new
|
||||
|
@ -513,7 +513,7 @@ traverse_recurse_dirs (GFile * parent, GFile * root)
|
||||
info = g_file_enumerator_next_file (enumerator, NULL, &error);
|
||||
while ((info) && (!error))
|
||||
{
|
||||
descend = g_file_get_child (parent, g_file_info_get_name (info));
|
||||
descend = g_file_enumerator_get_child (enumerator, info);
|
||||
g_assert (descend != NULL);
|
||||
relative_path = g_file_get_relative_path (root, descend);
|
||||
g_assert (relative_path != NULL);
|
||||
@ -1159,7 +1159,7 @@ cleanup_dir_recurse (GFile *parent, GFile *root)
|
||||
info = g_file_enumerator_next_file (enumerator, NULL, &error);
|
||||
while ((info) && (!error))
|
||||
{
|
||||
descend = g_file_get_child (parent, g_file_info_get_name (info));
|
||||
descend = g_file_enumerator_get_child (enumerator, info);
|
||||
g_assert (descend != NULL);
|
||||
relative_path = g_file_get_relative_path (root, descend);
|
||||
g_assert (relative_path != NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user