app: port the pluginrc code from filename to GFile

This commit is contained in:
Michael Natterer 2014-07-03 00:04:58 +02:00
parent 53b5822926
commit f146d454e8
3 changed files with 45 additions and 40 deletions

View File

@ -52,9 +52,9 @@
static void gimp_plug_in_manager_search (GimpPlugInManager *manager,
GimpInitStatusFunc status_callback);
static gchar * gimp_plug_in_manager_get_pluginrc (GimpPlugInManager *manager);
static GFile * gimp_plug_in_manager_get_pluginrc (GimpPlugInManager *manager);
static void gimp_plug_in_manager_read_pluginrc (GimpPlugInManager *manager,
const gchar *pluginrc,
GFile *file,
GimpInitStatusFunc status_callback);
static void gimp_plug_in_manager_query_new (GimpPlugInManager *manager,
GimpContext *context,
@ -85,7 +85,7 @@ gimp_plug_in_manager_restore (GimpPlugInManager *manager,
GimpInitStatusFunc status_callback)
{
Gimp *gimp;
gchar *pluginrc;
GFile *pluginrc;
GSList *list;
GError *error = NULL;
@ -128,7 +128,7 @@ gimp_plug_in_manager_restore (GimpPlugInManager *manager,
if (manager->write_pluginrc)
{
if (gimp->be_verbose)
g_print ("Writing '%s'\n", gimp_filename_to_utf8 (pluginrc));
g_print ("Writing '%s'\n", gimp_file_get_utf8_name (pluginrc));
if (! plug_in_rc_write (manager->plug_in_defs, pluginrc, &error))
{
@ -140,7 +140,7 @@ gimp_plug_in_manager_restore (GimpPlugInManager *manager,
manager->write_pluginrc = FALSE;
}
g_free (pluginrc);
g_object_unref (pluginrc);
/* create locale and help domain lists */
for (list = manager->plug_in_defs; list; list = list->next)
@ -246,28 +246,33 @@ gimp_plug_in_manager_search (GimpPlugInManager *manager,
g_free (path);
}
static gchar *
static GFile *
gimp_plug_in_manager_get_pluginrc (GimpPlugInManager *manager)
{
Gimp *gimp = manager->gimp;
gchar *pluginrc;
GFile *pluginrc;
if (gimp->config->plug_in_rc_path)
{
pluginrc = gimp_config_path_expand (gimp->config->plug_in_rc_path,
TRUE, NULL);
gchar *path;
if (! g_path_is_absolute (pluginrc))
path = gimp_config_path_expand (gimp->config->plug_in_rc_path,
TRUE, NULL);
if (! g_path_is_absolute (path))
{
gchar *str = g_build_filename (gimp_directory (), pluginrc, NULL);
gchar *str = g_build_filename (gimp_directory (), path, NULL);
g_free (pluginrc);
pluginrc = str;
g_free (path);
path = str;
}
pluginrc = g_file_new_for_path (path);
g_free (path);
}
else
{
pluginrc = gimp_personal_rc_file ("pluginrc");
pluginrc = gimp_personal_rc_gfile ("pluginrc");
}
return pluginrc;
@ -276,17 +281,17 @@ gimp_plug_in_manager_get_pluginrc (GimpPlugInManager *manager)
/* read the pluginrc file for cached data */
static void
gimp_plug_in_manager_read_pluginrc (GimpPlugInManager *manager,
const gchar *pluginrc,
GFile *pluginrc,
GimpInitStatusFunc status_callback)
{
GSList *rc_defs;
GError *error = NULL;
status_callback (_("Resource configuration"),
gimp_filename_to_utf8 (pluginrc), 0.0);
gimp_file_get_utf8_name (pluginrc), 0.0);
if (manager->gimp->be_verbose)
g_print ("Parsing '%s'\n", gimp_filename_to_utf8 (pluginrc));
g_print ("Parsing '%s'\n", gimp_file_get_utf8_name (pluginrc));
rc_defs = plug_in_rc_parse (manager->gimp, pluginrc, &error);

View File

@ -96,9 +96,9 @@ enum
GSList *
plug_in_rc_parse (Gimp *gimp,
const gchar *filename,
GError **error)
plug_in_rc_parse (Gimp *gimp,
GFile *file,
GError **error)
{
GScanner *scanner;
GEnumClass *enum_class;
@ -108,10 +108,10 @@ plug_in_rc_parse (Gimp *gimp,
GTokenType token;
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
g_return_val_if_fail (filename != NULL, NULL);
g_return_val_if_fail (G_IS_FILE (file), NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
scanner = gimp_scanner_new_file (filename, error);
scanner = gimp_scanner_new_gfile (file, error);
if (! scanner)
return NULL;
@ -225,14 +225,14 @@ plug_in_rc_parse (Gimp *gimp,
g_set_error (error,
GIMP_CONFIG_ERROR, GIMP_CONFIG_ERROR_VERSION,
_("Skipping '%s': wrong GIMP protocol version."),
gimp_filename_to_utf8 (filename));
gimp_file_get_utf8_name (file));
}
else if (file_version != PLUG_IN_RC_FILE_VERSION)
{
g_set_error (error,
GIMP_CONFIG_ERROR, GIMP_CONFIG_ERROR_VERSION,
_("Skipping '%s': wrong pluginrc file format version."),
gimp_filename_to_utf8 (filename));
gimp_file_get_utf8_name (file));
}
else
{
@ -783,21 +783,21 @@ plug_in_has_init_deserialize (GScanner *scanner,
/* serialize functions */
gboolean
plug_in_rc_write (GSList *plug_in_defs,
const gchar *filename,
GError **error)
plug_in_rc_write (GSList *plug_in_defs,
GFile *file,
GError **error)
{
GimpConfigWriter *writer;
GEnumClass *enum_class;
GSList *list;
writer = gimp_config_writer_new_file (filename,
FALSE,
"GIMP pluginrc\n\n"
"This file can safely be removed and "
"will be automatically regenerated by "
"querying the installed plugins.",
error);
writer = gimp_config_writer_new_gfile (file,
FALSE,
"GIMP pluginrc\n\n"
"This file can safely be removed and "
"will be automatically regenerated by "
"querying the installed plugins.",
error);
if (!writer)
return FALSE;

View File

@ -22,12 +22,12 @@
#define __PLUG_IN_RC_H__
GSList * plug_in_rc_parse (Gimp *gimp,
const gchar *filename,
GError **error);
gboolean plug_in_rc_write (GSList *plug_in_defs,
const gchar *filename,
GError **error);
GSList * plug_in_rc_parse (Gimp *gimp,
GFile *file,
GError **error);
gboolean plug_in_rc_write (GSList *plug_in_defs,
GFile *file,
GError **error);
#endif /* __PLUG_IN_RC_H__ */