[gimp] plug-ins: replace gimp_datafiles_read_directories() by GFileEnumerator
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] plug-ins: replace gimp_datafiles_read_directories() by GFileEnumerator
- Date: Fri, 28 Jun 2019 09:51:18 +0000 (UTC)
commit 6078312bf28c7373a5abc6fdf588f156614a6766
Author: Michael Natterer <mitch gimp org>
Date: Fri Jun 28 11:49:58 2019 +0200
plug-ins: replace gimp_datafiles_read_directories() by GFileEnumerator
in fractal-explorer and gradient-flare.
plug-ins/fractal-explorer/fractal-explorer.c | 73 ++++++++++++++++++++++------
plug-ins/gradient-flare/gradient-flare.c | 71 +++++++++++++++++++++------
2 files changed, 113 insertions(+), 31 deletions(-)
---
diff --git a/plug-ins/fractal-explorer/fractal-explorer.c b/plug-ins/fractal-explorer/fractal-explorer.c
index 1b5fae6c56..01fe73a7ef 100644
--- a/plug-ins/fractal-explorer/fractal-explorer.c
+++ b/plug-ins/fractal-explorer/fractal-explorer.c
@@ -968,28 +968,69 @@ fractalexplorer_load (const gchar *filename,
}
static void
-fractalexplorer_list_load_one (const GimpDatafileData *file_data,
- gpointer user_data)
+fractalexplorer_list_load_all (const gchar *explorer_path)
{
- fractalexplorerOBJ *fractalexplorer;
+ GList *path;
+ GList *list;
- fractalexplorer = fractalexplorer_load (file_data->filename,
- file_data->basename);
-
- if (fractalexplorer)
- fractalexplorer_list_insert (fractalexplorer);
-}
-
-static void
-fractalexplorer_list_load_all (const gchar *path)
-{
/* Make sure to clear any existing fractalexplorers */
current_obj = NULL;
fractalexplorer_list_free_all ();
- gimp_datafiles_read_directories (path, G_FILE_TEST_IS_REGULAR,
- fractalexplorer_list_load_one,
- NULL);
+ path = gimp_config_path_expand_to_files (explorer_path, NULL);
+
+ for (list = path; list; list = g_list_next (list))
+ {
+ GFileEnumerator *enumerator;
+
+ enumerator = g_file_enumerate_children (list->data,
+ G_FILE_ATTRIBUTE_STANDARD_NAME ","
+ G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN ","
+ G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_QUERY_INFO_NONE,
+ NULL, NULL);
+
+ if (enumerator)
+ {
+ GFileInfo *info;
+
+ while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)))
+ {
+ GFileType file_type = g_file_info_get_file_type (info);
+
+ if (file_type == G_FILE_TYPE_REGULAR &&
+ ! g_file_info_get_is_hidden (info))
+ {
+ fractalexplorerOBJ *fractalexplorer;
+ GFile *child;
+ gchar *filename;
+ gchar *basename;
+
+ child = g_file_enumerator_get_child (enumerator, info);
+
+ filename = g_file_get_path (child);
+ basename = g_file_get_basename (child);
+
+ fractalexplorer = fractalexplorer_load (filename,
+ basename);
+
+ g_free (filename);
+ g_free (basename);
+
+ if (fractalexplorer)
+ fractalexplorer_list_insert (fractalexplorer);
+
+ g_object_unref (child);
+ }
+
+ g_object_unref (info);
+ }
+
+ g_object_unref (enumerator);
+ }
+ }
+
+ g_list_free_full (path, (GDestroyNotify) g_object_unref);
if (!fractalexplorer_list)
{
diff --git a/plug-ins/gradient-flare/gradient-flare.c b/plug-ins/gradient-flare/gradient-flare.c
index 48fb0f853b..0186c13df6 100644
--- a/plug-ins/gradient-flare/gradient-flare.c
+++ b/plug-ins/gradient-flare/gradient-flare.c
@@ -1633,27 +1633,68 @@ gflares_list_remove (GFlare *gflare)
/*
* Load all gflares, which are founded in gflare-path-list, into gflares_list.
*/
-static void
-gflares_list_load_one (const GimpDatafileData *file_data,
- gpointer user_data)
-{
- GFlare *gflare;
-
- gflare = gflare_load (file_data->filename, file_data->basename);
-
- if (gflare)
- gflares_list_insert (gflare);
-}
-
static void
gflares_list_load_all (void)
{
+ GList *path;
+ GList *list;
+
/* Make sure to clear any existing gflares */
gflares_list_free_all ();
- gimp_datafiles_read_directories (gflare_path, G_FILE_TEST_EXISTS,
- gflares_list_load_one,
- NULL);
+ path = gimp_config_path_expand_to_files (gflare_path, NULL);
+
+ for (list = path; list; list = g_list_next (list))
+ {
+ GFileEnumerator *enumerator;
+
+ enumerator = g_file_enumerate_children (list->data,
+ G_FILE_ATTRIBUTE_STANDARD_NAME ","
+ G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN ","
+ G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_QUERY_INFO_NONE,
+ NULL, NULL);
+
+ if (enumerator)
+ {
+ GFileInfo *info;
+
+ while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)))
+ {
+ GFileType file_type = g_file_info_get_file_type (info);
+
+ if (file_type == G_FILE_TYPE_REGULAR &&
+ ! g_file_info_get_is_hidden (info))
+ {
+ GFlare *gflare;
+ GFile *child;
+ gchar *filename;
+ gchar *basename;
+
+ child = g_file_enumerator_get_child (enumerator, info);
+
+ filename = g_file_get_path (child);
+ basename = g_file_get_basename (child);
+
+ gflare = gflare_load (filename, basename);
+
+ g_free (filename);
+ g_free (basename);
+
+ if (gflare)
+ gflares_list_insert (gflare);
+
+ g_object_unref (child);
+ }
+
+ g_object_unref (info);
+ }
+
+ g_object_unref (enumerator);
+ }
+ }
+
+ g_list_free_full (path, (GDestroyNotify) g_object_unref);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]