/** * gimp_module_db_load: * @db: A #GimpModuleDB. * @module_path: A #G_SEARCHPATH_SEPARATOR delimited list of directories * to load modules from. * * Scans the directories contained in @module_path and creates a * #GimpModule instance for every loadable module contained in the * directories. **/ void gimp_module_db_load (GimpModuleDB *db, const gchar *module_path) { g_return_if_fail (GIMP_IS_MODULE_DB (db)); g_return_if_fail (module_path != NULL); if (g_module_supported ()) { GList *path; GList *list; path = gimp_config_path_expand_to_files (module_path, NULL); for (list = path; list; list = g_list_next (list)) { gimp_module_db_load_directory (db, list->data); } g_list_free_full (path, (GDestroyNotify) g_object_unref); } if (DUMP_DB) g_list_foreach (db->modules, gimp_module_db_module_dump_func, NULL); }
/** * gimp_module_db_get_load_inhibit: * @db: A #GimpModuleDB. * * Return the #G_SEARCHPATH_SEPARATOR delimited list of module filenames * which are excluded from auto-loading. * * Return value: the @db's @load_inhibit string. **/ const gchar * gimp_module_db_get_load_inhibit (GimpModuleDB *db) { g_return_val_if_fail (GIMP_IS_MODULE_DB (db), NULL); return db->load_inhibit; }
/** * gimp_module_db_load: * @db: A #GimpModuleDB. * @module_path: A #G_SEARCHPATH_SEPARATOR delimited list of directories * to load modules from. * * Scans the directories contained in @module_path using * gimp_datafiles_read_directories() and creates a #GimpModule * instance for every loadable module contained in the directories. **/ void gimp_module_db_load (GimpModuleDB *db, const gchar *module_path) { g_return_if_fail (GIMP_IS_MODULE_DB (db)); g_return_if_fail (module_path != NULL); if (g_module_supported ()) gimp_datafiles_read_directories (module_path, G_FILE_TEST_EXISTS, gimp_module_db_module_initialize, db); #ifdef DUMP_DB g_list_foreach (db->modules, gimp_module_db_dump_module, NULL); #endif }
/** * gimp_module_db_refresh: * @db: A #GimpModuleDB. * @module_path: A #G_SEARCHPATH_SEPARATOR delimited list of directories * to load modules from. * * Does the same as gimp_module_db_load(), plus removes all #GimpModule * instances whose modules have been deleted from disk. * * Note that the #GimpModule's will just be removed from the internal * list and not freed as this is not possible with #GTypeModule * instances which actually implement types. **/ void gimp_module_db_refresh (GimpModuleDB *db, const gchar *module_path) { GList *kill_list = NULL; g_return_if_fail (GIMP_IS_MODULE_DB (db)); g_return_if_fail (module_path != NULL); /* remove modules we don't have on disk anymore */ g_list_foreach (db->modules, gimp_module_db_module_on_disk_func, &kill_list); g_list_foreach (kill_list, gimp_module_db_module_remove_func, db); g_list_free (kill_list); /* walk filesystem and add new things we find */ gimp_module_db_load (db, module_path); }
/** * gimp_module_db_set_load_inhibit: * @db: A #GimpModuleDB. * @load_inhibit: A #G_SEARCHPATH_SEPARATOR delimited list of module * filenames to exclude from auto-loading. * * Sets the @load_inhibit flag for all #GimpModule's which are kept * by @db (using gimp_module_set_load_inhibit()). **/ void gimp_module_db_set_load_inhibit (GimpModuleDB *db, const gchar *load_inhibit) { GList *list; g_return_if_fail (GIMP_IS_MODULE_DB (db)); if (db->load_inhibit) g_free (db->load_inhibit); db->load_inhibit = g_strdup (load_inhibit); for (list = db->modules; list; list = g_list_next (list)) { GimpModule *module = list->data; gimp_module_set_load_inhibit (module, is_in_inhibit_list (module->filename, load_inhibit)); } }
/** * gimp_module_db_refresh: * @db: A #GimpModuleDB. * @module_path: A #G_SEARCHPATH_SEPARATOR delimited list of directories * to load modules from. * * Does the same as gimp_module_db_load(), plus removes all #GimpModule * instances whose modules have been deleted from disk. * * Note that the #GimpModule's will just be removed from the internal * list and not freed as this is not possible with #GTypeModule * instances which actually implement types. **/ void gimp_module_db_refresh (GimpModuleDB *db, const gchar *module_path) { GList *kill_list = NULL; g_return_if_fail (GIMP_IS_MODULE_DB (db)); g_return_if_fail (module_path != NULL); /* remove modules we don't have on disk anymore */ g_list_foreach (db->modules, gimp_module_db_module_on_disk_func, &kill_list); g_list_foreach (kill_list, gimp_module_db_module_remove_func, db); g_list_free (kill_list); /* walk filesystem and add new things we find */ gimp_datafiles_read_directories (module_path, G_FILE_TEST_EXISTS, gimp_module_db_module_initialize, db); }