[gimp] app: keep the plug-in executable path around as GFile
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: keep the plug-in executable path around as GFile
- Date: Tue, 8 Jul 2014 19:12:30 +0000 (UTC)
commit c3573c3c45ea5f704276998c1b7af136fd19a02b
Author: Michael Natterer <mitch gimp org>
Date: Tue Jul 8 21:09:35 2014 +0200
app: keep the plug-in executable path around as GFile
app/actions/plug-in-actions.c | 11 ++---
app/core/gimpmarshal.list | 1 +
app/menus/plug-in-menus.c | 8 ++--
app/pdb/help-cmds.c | 2 +-
app/pdb/plug-in-cmds.c | 2 +-
app/plug-in/gimpplugin-message.c | 44 ++++++++++----------
app/plug-in/gimpplugin.c | 53 +++++++++++++----------
app/plug-in/gimpplugin.h | 4 +-
app/plug-in/gimpplugindef.c | 10 ++--
app/plug-in/gimpplugindef.h | 4 +-
app/plug-in/gimppluginmanager-call.c | 4 +-
app/plug-in/gimppluginmanager-data.c | 2 +-
app/plug-in/gimppluginmanager-help-domain.c | 21 +++++----
app/plug-in/gimppluginmanager-help-domain.h | 4 +-
app/plug-in/gimppluginmanager-locale-domain.c | 19 ++++----
app/plug-in/gimppluginmanager-locale-domain.h | 4 +-
app/plug-in/gimppluginmanager-menu-branch.c | 12 +++---
app/plug-in/gimppluginmanager-menu-branch.h | 4 +-
app/plug-in/gimppluginmanager-query.c | 4 +-
app/plug-in/gimppluginmanager-restore.c | 57 ++++++++++++++++--------
app/plug-in/gimppluginmanager.c | 6 +-
app/plug-in/gimppluginmanager.h | 2 +-
app/plug-in/gimppluginprocedure.c | 38 ++++++++--------
app/plug-in/gimppluginprocedure.h | 12 +++---
app/plug-in/gimptemporaryprocedure.c | 12 +++---
app/plug-in/plug-in-rc.c | 19 ++++++---
app/xcf/xcf.c | 11 ++++-
tools/pdbgen/pdb/help.pdb | 2 +-
tools/pdbgen/pdb/plug_in.pdb | 2 +-
29 files changed, 207 insertions(+), 167 deletions(-)
---
diff --git a/app/actions/plug-in-actions.c b/app/actions/plug-in-actions.c
index e7f928d..9c6f3f9 100644
--- a/app/actions/plug-in-actions.c
+++ b/app/actions/plug-in-actions.c
@@ -52,7 +52,7 @@
/* local function prototypes */
static void plug_in_actions_menu_branch_added (GimpPlugInManager *manager,
- const gchar *progname,
+ GFile *file,
const gchar *menu_path,
const gchar *menu_label,
GimpActionGroup *group);
@@ -175,7 +175,7 @@ plug_in_actions_setup (GimpActionGroup *group)
GimpPlugInMenuBranch *branch = list->data;
plug_in_actions_menu_branch_added (manager,
- branch->prog_name,
+ branch->file,
branch->menu_path,
branch->menu_label,
group);
@@ -192,7 +192,7 @@ plug_in_actions_setup (GimpActionGroup *group)
{
GimpPlugInProcedure *plug_in_proc = list->data;
- if (plug_in_proc->prog)
+ if (plug_in_proc->file)
plug_in_actions_register_procedure (group->gimp->pdb,
GIMP_PROCEDURE (plug_in_proc),
group);
@@ -300,7 +300,7 @@ plug_in_actions_update (GimpActionGroup *group,
static void
plug_in_actions_menu_branch_added (GimpPlugInManager *manager,
- const gchar *progname,
+ GFile *file,
const gchar *menu_path,
const gchar *menu_label,
GimpActionGroup *group)
@@ -311,8 +311,7 @@ plug_in_actions_menu_branch_added (GimpPlugInManager *manager,
gchar *full;
gchar *full_translated;
- locale_domain = gimp_plug_in_manager_get_locale_domain (manager,
- progname, NULL);
+ locale_domain = gimp_plug_in_manager_get_locale_domain (manager, file, NULL);
path_translated = dgettext (locale_domain, menu_path);
label_translated = dgettext (locale_domain, menu_label);
diff --git a/app/core/gimpmarshal.list b/app/core/gimpmarshal.list
index 668e9fd..12a1851 100644
--- a/app/core/gimpmarshal.list
+++ b/app/core/gimpmarshal.list
@@ -52,6 +52,7 @@ VOID: OBJECT, BOOLEAN
VOID: OBJECT, INT
VOID: OBJECT, OBJECT
VOID: OBJECT, POINTER
+VOID: OBJECT, STRING, STRING
VOID: POINTER
VOID: POINTER, BOXED
VOID: POINTER, ENUM
diff --git a/app/menus/plug-in-menus.c b/app/menus/plug-in-menus.c
index 1091e1c..322a9b2 100644
--- a/app/menus/plug-in-menus.c
+++ b/app/menus/plug-in-menus.c
@@ -126,7 +126,7 @@ plug_in_menus_setup (GimpUIManager *manager,
{
GimpPlugInProcedure *plug_in_proc = list->data;
- if (! plug_in_proc->prog)
+ if (! plug_in_proc->file)
continue;
g_signal_connect_object (plug_in_proc, "menu-path-added",
@@ -143,17 +143,17 @@ plug_in_menus_setup (GimpUIManager *manager,
if (g_str_has_prefix (path->data, manager->name))
{
PlugInMenuEntry *entry = g_slice_new0 (PlugInMenuEntry);
- const gchar *progname;
+ GFile *file;
const gchar *locale_domain;
entry->proc = plug_in_proc;
entry->menu_path = path->data;
- progname = gimp_plug_in_procedure_get_progname (plug_in_proc);
+ file = gimp_plug_in_procedure_get_file (plug_in_proc);
locale_domain =
gimp_plug_in_manager_get_locale_domain (plug_in_manager,
- progname, NULL);
+ file, NULL);
if (plug_in_proc->menu_label)
{
diff --git a/app/pdb/help-cmds.c b/app/pdb/help-cmds.c
index da4aacf..bea08a2 100644
--- a/app/pdb/help-cmds.c
+++ b/app/pdb/help-cmds.c
@@ -60,7 +60,7 @@ help_invoker (GimpProcedure *procedure,
if (! help_domain && manager->current_plug_in)
help_domain = (gchar *)
gimp_plug_in_manager_get_help_domain (manager,
- manager->current_plug_in->prog,
+ manager->current_plug_in->file,
NULL);
gimp_help (gimp, progress, help_domain, help_id);
diff --git a/app/pdb/plug-in-cmds.c b/app/pdb/plug-in-cmds.c
index 0984670..e0a3de0 100644
--- a/app/pdb/plug-in-cmds.c
+++ b/app/pdb/plug-in-cmds.c
@@ -218,7 +218,7 @@ plugin_menu_branch_register_invoker (GimpProcedure *procedure,
if (plug_in)
{
gimp_plug_in_manager_add_menu_branch (gimp->plug_in_manager,
- plug_in->prog, menu_path, menu_name);
+ plug_in->file, menu_path, menu_name);
}
else
{
diff --git a/app/plug-in/gimpplugin-message.c b/app/plug-in/gimpplugin-message.c
index e3d361f..a9296eb 100644
--- a/app/plug-in/gimpplugin-message.c
+++ b/app/plug-in/gimpplugin-message.c
@@ -98,7 +98,7 @@ gimp_plug_in_handle_message (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"sent a CONFIG message. This should not happen.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
break;
@@ -111,7 +111,7 @@ gimp_plug_in_handle_message (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"sent a TILE_ACK message. This should not happen.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
break;
@@ -120,7 +120,7 @@ gimp_plug_in_handle_message (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"sent a TILE_DATA message. This should not happen.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
break;
@@ -137,7 +137,7 @@ gimp_plug_in_handle_message (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"sent a TEMP_PROC_RUN message. This should not happen.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
break;
@@ -240,7 +240,7 @@ gimp_plug_in_handle_tile_put (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"tried writing to invalid drawable %d (killing)",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
tile_info->drawable_ID);
gimp_plug_in_close (plug_in, TRUE);
return;
@@ -252,7 +252,7 @@ gimp_plug_in_handle_tile_put (GimpPlugIn *plug_in,
"tried writing to drawable %d which was removed "
"from the image (killing)",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
tile_info->drawable_ID);
gimp_plug_in_close (plug_in, TRUE);
return;
@@ -278,7 +278,7 @@ gimp_plug_in_handle_tile_put (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"tried writing to a locked drawable %d (killing)",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
tile_info->drawable_ID);
gimp_plug_in_close (plug_in, TRUE);
return;
@@ -289,7 +289,7 @@ gimp_plug_in_handle_tile_put (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"tried writing to a group layer %d (killing)",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
tile_info->drawable_ID);
gimp_plug_in_close (plug_in, TRUE);
return;
@@ -308,7 +308,7 @@ gimp_plug_in_handle_tile_put (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"requested invalid tile (killing)",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
return;
}
@@ -365,7 +365,7 @@ gimp_plug_in_handle_tile_get (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"tried reading from invalid drawable %d (killing)",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
request->drawable_ID);
gimp_plug_in_close (plug_in, TRUE);
return;
@@ -377,7 +377,7 @@ gimp_plug_in_handle_tile_get (GimpPlugIn *plug_in,
"tried reading from drawable %d which was removed "
"from the image (killing)",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
request->drawable_ID);
gimp_plug_in_close (plug_in, TRUE);
return;
@@ -404,7 +404,7 @@ gimp_plug_in_handle_tile_get (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"requested invalid tile (killing)",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
return;
}
@@ -543,7 +543,7 @@ gimp_plug_in_handle_proc_run (GimpPlugIn *plug_in,
"called deprecated procedure '%s'.\n"
"It should call '%s' instead!",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
canonical, proc_name);
}
}
@@ -558,7 +558,7 @@ gimp_plug_in_handle_proc_run (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n"
"called deprecated procedure '%s'.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
canonical);
}
else
@@ -568,7 +568,7 @@ gimp_plug_in_handle_proc_run (GimpPlugIn *plug_in,
"called deprecated procedure '%s'.\n"
"It should call '%s' instead!",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
canonical, procedure->deprecated);
}
}
@@ -696,7 +696,7 @@ gimp_plug_in_handle_temp_proc_return (GimpPlugIn *plug_in,
"sent a TEMP_PROC_RETURN message while not running "
"a temporary procedure. This should not happen.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
}
}
@@ -735,7 +735,7 @@ gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
"which fails to comply with the array parameter "
"passing standard. Argument %d is noncompliant.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
canonical, i);
g_free (canonical);
return;
@@ -794,7 +794,7 @@ gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install a procedure NULL parameter name.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
g_free (canonical);
return;
}
@@ -805,7 +805,7 @@ gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install a procedure with invalid UTF-8 strings.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
g_free (canonical);
return;
}
@@ -817,7 +817,7 @@ gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
case GIMP_PLUGIN:
case GIMP_EXTENSION:
procedure = gimp_plug_in_procedure_new (proc_install->type,
- plug_in->prog);
+ plug_in->file);
break;
case GIMP_TEMPORARY:
@@ -939,7 +939,7 @@ gimp_plug_in_handle_extension_ack (GimpPlugIn *plug_in)
"sent an EXTENSION_ACK message while not being started "
"as an extension. This should not happen.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
}
}
@@ -958,7 +958,7 @@ gimp_plug_in_handle_has_init (GimpPlugIn *plug_in)
"sent an HAS_INIT message while not in query(). "
"This should not happen.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
gimp_plug_in_close (plug_in, TRUE);
}
}
diff --git a/app/plug-in/gimpplugin.c b/app/plug-in/gimpplugin.c
index 085d924..d197954 100644
--- a/app/plug-in/gimpplugin.c
+++ b/app/plug-in/gimpplugin.c
@@ -139,7 +139,7 @@ static void
gimp_plug_in_init (GimpPlugIn *plug_in)
{
plug_in->manager = NULL;
- plug_in->prog = NULL;
+ plug_in->file = NULL;
plug_in->call_mode = GIMP_PLUG_IN_CALL_NONE;
plug_in->open = FALSE;
@@ -168,7 +168,7 @@ gimp_plug_in_finalize (GObject *object)
{
GimpPlugIn *plug_in = GIMP_PLUG_IN (object);
- g_free (plug_in->prog);
+ g_object_unref (plug_in->file);
gimp_plug_in_proc_frame_dispose (&plug_in->main_proc_frame, plug_in);
@@ -183,7 +183,7 @@ gimp_plug_in_new (GimpPlugInManager *manager,
GimpContext *context,
GimpProgress *progress,
GimpPlugInProcedure *procedure,
- const gchar *prog)
+ GFile *file)
{
GimpPlugIn *plug_in;
@@ -192,20 +192,20 @@ gimp_plug_in_new (GimpPlugInManager *manager,
g_return_val_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress), NULL);
g_return_val_if_fail (procedure == NULL ||
GIMP_IS_PLUG_IN_PROCEDURE (procedure), NULL);
- g_return_val_if_fail (prog == NULL || g_path_is_absolute (prog), NULL);
- g_return_val_if_fail ((procedure != NULL || prog != NULL) &&
- ! (procedure != NULL && prog != NULL), NULL);
+ g_return_val_if_fail (file == NULL || G_IS_FILE (file), NULL);
+ g_return_val_if_fail ((procedure != NULL || file != NULL) &&
+ ! (procedure != NULL && file != NULL), NULL);
plug_in = g_object_new (GIMP_TYPE_PLUG_IN, NULL);
- if (! prog)
- prog = gimp_plug_in_procedure_get_progname (procedure);
+ if (! file)
+ file = gimp_plug_in_procedure_get_file (procedure);
gimp_object_take_name (GIMP_OBJECT (plug_in),
- g_filename_display_basename (prog));
+ g_path_get_basename (gimp_file_get_utf8_name (file)));
plug_in->manager = manager;
- plug_in->prog = g_strdup (prog);
+ plug_in->file = g_object_ref (file);
gimp_plug_in_proc_frame_init (&plug_in->main_proc_frame,
context, progress, procedure);
@@ -218,6 +218,7 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
GimpPlugInCallMode call_mode,
gboolean synchronous)
{
+ gchar *progname;
gint my_read[2];
gint my_write[2];
gchar **envp;
@@ -243,7 +244,7 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
gimp_message (plug_in->manager->gimp, NULL, GIMP_MESSAGE_ERROR,
"Unable to run plug-in \"%s\"\n(%s)\n\npipe() failed: %s",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
g_strerror (errno));
return FALSE;
}
@@ -312,8 +313,10 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
stm = g_strdup_printf ("%d", plug_in->manager->gimp->stack_trace_mode);
+ progname = g_file_get_path (plug_in->file);
+
interp = gimp_interpreter_db_resolve (plug_in->manager->interpreter_db,
- plug_in->prog, &interp_arg);
+ progname, &interp_arg);
argc = 0;
@@ -323,7 +326,7 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
if (interp_arg)
args[argc++] = interp_arg;
- args[argc++] = plug_in->prog;
+ args[argc++] = progname;
args[argc++] = "-gimp";
args[argc++] = read_fd;
args[argc++] = write_fd;
@@ -342,7 +345,7 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
if (plug_in->manager->debug)
{
gchar **debug_argv = gimp_plug_in_debug_argv (plug_in->manager->debug,
- plug_in->prog,
+ progname,
debug_flag, args);
if (debug_argv)
@@ -364,9 +367,10 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
gimp_message (plug_in->manager->gimp, NULL, GIMP_MESSAGE_ERROR,
"Unable to run plug-in \"%s\"\n(%s)\n\n%s",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
error->message);
- g_error_free (error);
+ g_clear_error (&error);
+ g_free (progname);
goto cleanup;
}
@@ -408,6 +412,7 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
g_free (stm);
g_free (interp);
g_free (interp_arg);
+ g_free (progname);
return plug_in->open;
}
@@ -445,7 +450,7 @@ gimp_plug_in_close (GimpPlugIn *plug_in,
{
if (plug_in->manager->gimp->be_verbose)
g_print ("Terminating plug-in: '%s'\n",
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
/* If the plug-in opened a process group, kill the group instead
* of only the plug-in, so we kill the plug-in's children too
@@ -484,7 +489,7 @@ gimp_plug_in_close (GimpPlugIn *plug_in,
{
if (plug_in->manager->gimp->be_verbose)
g_print ("Terminating plug-in: '%s'\n",
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
TerminateProcess ((HANDLE) plug_in->pid, 0);
}
@@ -641,7 +646,7 @@ gimp_plug_in_recv_message (GIOChannel *channel,
"state. You may want to save your images and restart "
"GIMP to be on the safe side."),
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog));
+ gimp_file_get_utf8_name (plug_in->file));
}
g_object_unref (plug_in);
@@ -892,7 +897,7 @@ gimp_plug_in_menu_register (GimpPlugIn *plug_in,
"It has however not installed that procedure. This "
"is not allowed.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
menu_path, proc_name);
return FALSE;
@@ -924,7 +929,7 @@ gimp_plug_in_menu_register (GimpPlugIn *plug_in,
"pass just the menu's label to "
"gimp_install_procedure().",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
menu_path, proc_name);
return FALSE;
@@ -938,7 +943,7 @@ gimp_plug_in_menu_register (GimpPlugIn *plug_in,
"in the menu \"%s\", but the procedure has no label. "
"This is not allowed.",
gimp_object_get_name (plug_in),
- gimp_filename_to_utf8 (plug_in->prog),
+ gimp_file_get_utf8_name (plug_in->file),
proc_name, menu_path);
return FALSE;
@@ -1004,10 +1009,10 @@ gimp_plug_in_add_temp_proc (GimpPlugIn *plug_in,
GIMP_TEMPORARY_PROCEDURE (overridden));
locale_domain = gimp_plug_in_manager_get_locale_domain (plug_in->manager,
- plug_in->prog,
+ plug_in->file,
NULL);
help_domain = gimp_plug_in_manager_get_help_domain (plug_in->manager,
- plug_in->prog,
+ plug_in->file,
NULL);
gimp_plug_in_procedure_set_locale_domain (GIMP_PLUG_IN_PROCEDURE (proc),
diff --git a/app/plug-in/gimpplugin.h b/app/plug-in/gimpplugin.h
index 519e045..8fd0d4d 100644
--- a/app/plug-in/gimpplugin.h
+++ b/app/plug-in/gimpplugin.h
@@ -42,7 +42,7 @@ struct _GimpPlugIn
GimpObject parent_instance;
GimpPlugInManager *manager;
- gchar *prog; /* Plug-in's full path name */
+ GFile *file; /* Plug-in's full path name */
GimpPlugInCallMode call_mode; /* QUERY, INIT or RUN */
guint open : 1; /* Is the plug-in open? */
@@ -83,7 +83,7 @@ GimpPlugIn * gimp_plug_in_new (GimpPlugInManager *manager,
GimpContext *context,
GimpProgress *progress,
GimpPlugInProcedure *procedure,
- const gchar *prog);
+ GFile *file);
gboolean gimp_plug_in_open (GimpPlugIn *plug_in,
GimpPlugInCallMode call_mode,
diff --git a/app/plug-in/gimpplugindef.c b/app/plug-in/gimpplugindef.c
index de011a9..fa2fbda 100644
--- a/app/plug-in/gimpplugindef.c
+++ b/app/plug-in/gimpplugindef.c
@@ -62,7 +62,7 @@ gimp_plug_in_def_finalize (GObject *object)
{
GimpPlugInDef *plug_in_def = GIMP_PLUG_IN_DEF (object);
- g_free (plug_in_def->prog);
+ g_object_unref (plug_in_def->file);
g_free (plug_in_def->locale_domain_name);
g_free (plug_in_def->locale_domain_path);
g_free (plug_in_def->help_domain_name);
@@ -80,7 +80,7 @@ gimp_plug_in_def_get_memsize (GimpObject *object,
GimpPlugInDef *plug_in_def = GIMP_PLUG_IN_DEF (object);
gint64 memsize = 0;
- memsize += gimp_string_get_memsize (plug_in_def->prog);
+ memsize += gimp_g_object_get_memsize (G_OBJECT (plug_in_def->file));
memsize += gimp_string_get_memsize (plug_in_def->locale_domain_name);
memsize += gimp_string_get_memsize (plug_in_def->locale_domain_path);
memsize += gimp_string_get_memsize (plug_in_def->help_domain_name);
@@ -96,15 +96,15 @@ gimp_plug_in_def_get_memsize (GimpObject *object,
/* public functions */
GimpPlugInDef *
-gimp_plug_in_def_new (const gchar *prog)
+gimp_plug_in_def_new (GFile *file)
{
GimpPlugInDef *plug_in_def;
- g_return_val_if_fail (prog != NULL, NULL);
+ g_return_val_if_fail (G_IS_FILE (file), NULL);
plug_in_def = g_object_new (GIMP_TYPE_PLUG_IN_DEF, NULL);
- plug_in_def->prog = g_strdup (prog);
+ plug_in_def->file = g_object_ref (file);
return plug_in_def;
}
diff --git a/app/plug-in/gimpplugindef.h b/app/plug-in/gimpplugindef.h
index adfd74e..b9bcfae 100644
--- a/app/plug-in/gimpplugindef.h
+++ b/app/plug-in/gimpplugindef.h
@@ -37,7 +37,7 @@ struct _GimpPlugInDef
{
GimpObject parent_instance;
- gchar *prog;
+ GFile *file;
GSList *procedures;
gchar *locale_domain_name;
gchar *locale_domain_path;
@@ -56,7 +56,7 @@ struct _GimpPlugInDefClass
GType gimp_plug_in_def_get_type (void) G_GNUC_CONST;
-GimpPlugInDef * gimp_plug_in_def_new (const gchar *prog);
+GimpPlugInDef * gimp_plug_in_def_new (GFile *file);
void gimp_plug_in_def_add_procedure (GimpPlugInDef *plug_in_def,
GimpPlugInProcedure *proc);
diff --git a/app/plug-in/gimppluginmanager-call.c b/app/plug-in/gimppluginmanager-call.c
index a85112e..5d8d646 100644
--- a/app/plug-in/gimppluginmanager-call.c
+++ b/app/plug-in/gimppluginmanager-call.c
@@ -63,7 +63,7 @@ gimp_plug_in_manager_call_query (GimpPlugInManager *manager,
g_return_if_fail (GIMP_IS_PLUG_IN_DEF (plug_in_def));
plug_in = gimp_plug_in_new (manager, context, NULL,
- NULL, plug_in_def->prog);
+ NULL, plug_in_def->file);
if (plug_in)
{
@@ -103,7 +103,7 @@ gimp_plug_in_manager_call_init (GimpPlugInManager *manager,
g_return_if_fail (GIMP_IS_PLUG_IN_DEF (plug_in_def));
plug_in = gimp_plug_in_new (manager, context, NULL,
- NULL, plug_in_def->prog);
+ NULL, plug_in_def->file);
if (plug_in)
{
diff --git a/app/plug-in/gimppluginmanager-data.c b/app/plug-in/gimppluginmanager-data.c
index 54fa3e0..ac01b14 100644
--- a/app/plug-in/gimppluginmanager-data.c
+++ b/app/plug-in/gimppluginmanager-data.c
@@ -21,7 +21,7 @@
#include <string.h>
-#include <glib-object.h>
+#include <gio/gio.h>
#include "plug-in-types.h"
diff --git a/app/plug-in/gimppluginmanager-help-domain.c b/app/plug-in/gimppluginmanager-help-domain.c
index e2d5311..65a24f2 100644
--- a/app/plug-in/gimppluginmanager-help-domain.c
+++ b/app/plug-in/gimppluginmanager-help-domain.c
@@ -21,7 +21,7 @@
#include <string.h>
-#include <glib-object.h>
+#include <gio/gio.h>
#include "plug-in-types.h"
@@ -33,7 +33,7 @@ typedef struct _GimpPlugInHelpDomain GimpPlugInHelpDomain;
struct _GimpPlugInHelpDomain
{
- gchar *prog_name;
+ GFile *file;
gchar *domain_name;
gchar *domain_uri;
};
@@ -50,7 +50,7 @@ gimp_plug_in_manager_help_domain_exit (GimpPlugInManager *manager)
{
GimpPlugInHelpDomain *domain = list->data;
- g_free (domain->prog_name);
+ g_object_unref (domain->file);
g_free (domain->domain_name);
g_free (domain->domain_uri);
g_slice_free (GimpPlugInHelpDomain, domain);
@@ -62,19 +62,19 @@ gimp_plug_in_manager_help_domain_exit (GimpPlugInManager *manager)
void
gimp_plug_in_manager_add_help_domain (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar *domain_name,
const gchar *domain_uri)
{
GimpPlugInHelpDomain *domain;
g_return_if_fail (GIMP_IS_PLUG_IN_MANAGER (manager));
- g_return_if_fail (prog_name != NULL);
+ g_return_if_fail (G_IS_FILE (file));
g_return_if_fail (domain_name != NULL);
domain = g_slice_new (GimpPlugInHelpDomain);
- domain->prog_name = g_strdup (prog_name);
+ domain->file = g_object_ref (file);
domain->domain_name = g_strdup (domain_name);
domain->domain_uri = g_strdup (domain_uri);
@@ -89,26 +89,27 @@ gimp_plug_in_manager_add_help_domain (GimpPlugInManager *manager,
const gchar *
gimp_plug_in_manager_get_help_domain (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar **domain_uri)
{
GSList *list;
g_return_val_if_fail (GIMP_IS_PLUG_IN_MANAGER (manager), NULL);
+ g_return_val_if_fail (file == NULL || G_IS_FILE (file), NULL);
if (domain_uri)
*domain_uri = NULL;
/* A NULL prog_name is GIMP itself, return the default domain */
- if (! prog_name)
+ if (! file)
return NULL;
for (list = manager->help_domains; list; list = list->next)
{
GimpPlugInHelpDomain *domain = list->data;
- if (domain && domain->prog_name &&
- ! strcmp (domain->prog_name, prog_name))
+ if (domain && domain->file &&
+ g_file_equal (domain->file, file))
{
if (domain_uri && domain->domain_uri)
*domain_uri = domain->domain_uri;
diff --git a/app/plug-in/gimppluginmanager-help-domain.h b/app/plug-in/gimppluginmanager-help-domain.h
index e9ee783..f36427f 100644
--- a/app/plug-in/gimppluginmanager-help-domain.h
+++ b/app/plug-in/gimppluginmanager-help-domain.h
@@ -25,13 +25,13 @@ void gimp_plug_in_manager_help_domain_exit (GimpPlugInManager *manage
/* Add a help domain */
void gimp_plug_in_manager_add_help_domain (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar *domain_name,
const gchar *domain_uri);
/* Retrieve a plug-ins help domain */
const gchar * gimp_plug_in_manager_get_help_domain (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar **help_uri);
/* Retrieve all help domains */
diff --git a/app/plug-in/gimppluginmanager-locale-domain.c b/app/plug-in/gimppluginmanager-locale-domain.c
index 82903c4..dc6f4f5 100644
--- a/app/plug-in/gimppluginmanager-locale-domain.c
+++ b/app/plug-in/gimppluginmanager-locale-domain.c
@@ -38,7 +38,7 @@ typedef struct _GimpPlugInLocaleDomain GimpPlugInLocaleDomain;
struct _GimpPlugInLocaleDomain
{
- gchar *prog_name;
+ GFile *file;
gchar *domain_name;
gchar *domain_path;
};
@@ -55,7 +55,7 @@ gimp_plug_in_manager_locale_domain_exit (GimpPlugInManager *manager)
{
GimpPlugInLocaleDomain *domain = list->data;
- g_free (domain->prog_name);
+ g_object_unref (domain->file);
g_free (domain->domain_name);
g_free (domain->domain_path);
g_slice_free (GimpPlugInLocaleDomain, domain);
@@ -67,19 +67,19 @@ gimp_plug_in_manager_locale_domain_exit (GimpPlugInManager *manager)
void
gimp_plug_in_manager_add_locale_domain (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar *domain_name,
const gchar *domain_path)
{
GimpPlugInLocaleDomain *domain;
g_return_if_fail (GIMP_IS_PLUG_IN_MANAGER (manager));
- g_return_if_fail (prog_name != NULL);
+ g_return_if_fail (G_IS_FILE (file));
g_return_if_fail (domain_name != NULL);
domain = g_slice_new (GimpPlugInLocaleDomain);
- domain->prog_name = g_strdup (prog_name);
+ domain->file = g_object_ref (file);
domain->domain_name = g_strdup (domain_name);
domain->domain_path = g_strdup (domain_path);
@@ -95,26 +95,27 @@ gimp_plug_in_manager_add_locale_domain (GimpPlugInManager *manager,
const gchar *
gimp_plug_in_manager_get_locale_domain (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar **domain_path)
{
GSList *list;
g_return_val_if_fail (GIMP_IS_PLUG_IN_MANAGER (manager), NULL);
+ g_return_val_if_fail (file == NULL || G_IS_FILE (file), NULL);
if (domain_path)
*domain_path = gimp_locale_directory ();
/* A NULL prog_name is GIMP itself, return the default domain */
- if (! prog_name)
+ if (! file)
return NULL;
for (list = manager->locale_domains; list; list = list->next)
{
GimpPlugInLocaleDomain *domain = list->data;
- if (domain && domain->prog_name &&
- ! strcmp (domain->prog_name, prog_name))
+ if (domain && domain->file &&
+ g_file_equal (domain->file, file))
{
if (domain_path && domain->domain_path)
*domain_path = domain->domain_path;
diff --git a/app/plug-in/gimppluginmanager-locale-domain.h b/app/plug-in/gimppluginmanager-locale-domain.h
index c6e0595..0078ebc 100644
--- a/app/plug-in/gimppluginmanager-locale-domain.h
+++ b/app/plug-in/gimppluginmanager-locale-domain.h
@@ -25,13 +25,13 @@ void gimp_plug_in_manager_locale_domain_exit (GimpPlugInManager *mana
/* Add a locale domain */
void gimp_plug_in_manager_add_locale_domain (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar *domain_name,
const gchar *domain_path);
/* Retrieve a plug-ins locale domain */
const gchar * gimp_plug_in_manager_get_locale_domain (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar **locale_path);
/* Retrieve all locale domains */
diff --git a/app/plug-in/gimppluginmanager-menu-branch.c b/app/plug-in/gimppluginmanager-menu-branch.c
index 8129579..c3f6335 100644
--- a/app/plug-in/gimppluginmanager-menu-branch.c
+++ b/app/plug-in/gimppluginmanager-menu-branch.c
@@ -19,7 +19,7 @@
#include "config.h"
-#include <glib-object.h>
+#include <gio/gio.h>
#include "plug-in-types.h"
@@ -41,7 +41,7 @@ gimp_plug_in_manager_menu_branch_exit (GimpPlugInManager *manager)
{
GimpPlugInMenuBranch *branch = list->data;
- g_free (branch->prog_name);
+ g_object_unref (branch->file);
g_free (branch->menu_path);
g_free (branch->menu_label);
g_slice_free (GimpPlugInMenuBranch, branch);
@@ -53,27 +53,27 @@ gimp_plug_in_manager_menu_branch_exit (GimpPlugInManager *manager)
void
gimp_plug_in_manager_add_menu_branch (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar *menu_path,
const gchar *menu_label)
{
GimpPlugInMenuBranch *branch;
g_return_if_fail (GIMP_IS_PLUG_IN_MANAGER (manager));
- g_return_if_fail (prog_name != NULL);
+ g_return_if_fail (G_IS_FILE (file));
g_return_if_fail (menu_path != NULL);
g_return_if_fail (menu_label != NULL);
branch = g_slice_new (GimpPlugInMenuBranch);
- branch->prog_name = g_strdup (prog_name);
+ branch->file = g_object_ref (file);
branch->menu_path = plug_in_menu_path_map (menu_path, menu_label);
branch->menu_label = g_strdup (menu_label);
manager->menu_branches = g_slist_append (manager->menu_branches, branch);
g_signal_emit_by_name (manager, "menu-branch-added",
- branch->prog_name,
+ branch->file,
branch->menu_path,
branch->menu_label);
diff --git a/app/plug-in/gimppluginmanager-menu-branch.h b/app/plug-in/gimppluginmanager-menu-branch.h
index f026136..6cea32a 100644
--- a/app/plug-in/gimppluginmanager-menu-branch.h
+++ b/app/plug-in/gimppluginmanager-menu-branch.h
@@ -23,7 +23,7 @@
struct _GimpPlugInMenuBranch
{
- gchar *prog_name;
+ GFile *file;
gchar *menu_path;
gchar *menu_label;
};
@@ -33,7 +33,7 @@ void gimp_plug_in_manager_menu_branch_exit (GimpPlugInManager *manager);
/* Add a menu branch */
void gimp_plug_in_manager_add_menu_branch (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar *menu_path,
const gchar *menu_label);
GSList * gimp_plug_in_manager_get_menu_branches (GimpPlugInManager *manager);
diff --git a/app/plug-in/gimppluginmanager-query.c b/app/plug-in/gimppluginmanager-query.c
index 197b1b9..4c5ef61 100644
--- a/app/plug-in/gimppluginmanager-query.c
+++ b/app/plug-in/gimppluginmanager-query.c
@@ -89,7 +89,7 @@ gimp_plug_in_manager_query (GimpPlugInManager *manager,
{
GimpPlugInProcedure *proc = list->data;
- if (proc->prog && proc->menu_paths)
+ if (proc->file && proc->menu_paths)
{
gchar *name;
@@ -142,7 +142,7 @@ gimp_plug_in_manager_query (GimpPlugInManager *manager,
(*menu_strs)[i] = gimp_strip_uline (name);
(*accel_strs)[i] = NULL;
- (*prog_strs)[i] = g_strdup (proc->prog);
+ (*prog_strs)[i] = g_file_get_path (proc->file);
(*types_strs)[i] = g_strdup (proc->image_types);
(*realname_strs)[i] = g_strdup (gimp_object_get_name (proc));
(*time_ints)[i] = proc->mtime;
diff --git a/app/plug-in/gimppluginmanager-restore.c b/app/plug-in/gimppluginmanager-restore.c
index e3f94c4..55837ef 100644
--- a/app/plug-in/gimppluginmanager-restore.c
+++ b/app/plug-in/gimppluginmanager-restore.c
@@ -149,20 +149,20 @@ gimp_plug_in_manager_restore (GimpPlugInManager *manager,
if (plug_in_def->locale_domain_name)
gimp_plug_in_manager_add_locale_domain (manager,
- plug_in_def->prog,
+ plug_in_def->file,
plug_in_def->locale_domain_name,
plug_in_def->locale_domain_path);
else
/* set the default plug-in locale domain */
gimp_plug_in_def_set_locale_domain (plug_in_def,
gimp_plug_in_manager_get_locale_domain (manager,
- plug_in_def->prog,
+ plug_in_def->file,
NULL),
NULL);
if (plug_in_def->help_domain_name)
gimp_plug_in_manager_add_help_domain (manager,
- plug_in_def->prog,
+ plug_in_def->file,
plug_in_def->help_domain_name,
plug_in_def->help_domain_uri);
}
@@ -347,14 +347,15 @@ gimp_plug_in_manager_query_new (GimpPlugInManager *manager,
{
gchar *basename;
- basename = g_filename_display_basename (plug_in_def->prog);
+ basename =
+ g_path_get_basename (gimp_file_get_utf8_name (plug_in_def->file));
status_callback (NULL, basename,
(gdouble) nth++ / (gdouble) n_plugins);
g_free (basename);
if (manager->gimp->be_verbose)
g_print ("Querying plug-in: '%s'\n",
- gimp_filename_to_utf8 (plug_in_def->prog));
+ gimp_file_get_utf8_name (plug_in_def->file));
gimp_plug_in_manager_call_query (manager, context, plug_in_def);
}
@@ -395,14 +396,15 @@ gimp_plug_in_manager_init_plug_ins (GimpPlugInManager *manager,
{
gchar *basename;
- basename = g_filename_display_basename (plug_in_def->prog);
+ basename =
+ g_path_get_basename (gimp_file_get_utf8_name (plug_in_def->file));
status_callback (NULL, basename,
(gdouble) nth++ / (gdouble) n_plugins);
g_free (basename);
if (manager->gimp->be_verbose)
g_print ("Initializing plug-in: '%s'\n",
- gimp_filename_to_utf8 (plug_in_def->prog));
+ gimp_file_get_utf8_name (plug_in_def->file));
gimp_plug_in_manager_call_init (manager, context, plug_in_def);
}
@@ -428,7 +430,7 @@ gimp_plug_in_manager_run_extensions (GimpPlugInManager *manager,
{
GimpPlugInProcedure *proc = list->data;
- if (proc->prog &&
+ if (proc->file &&
GIMP_PROCEDURE (proc)->proc_type == GIMP_EXTENSION &&
GIMP_PROCEDURE (proc)->num_args == 0)
{
@@ -550,6 +552,7 @@ gimp_plug_in_manager_add_from_file (const GimpDatafileData *file_data,
{
GimpPlugInManager *manager = data;
GimpPlugInDef *plug_in_def;
+ GFile *file;
GSList *list;
/* When we scan build dirs for plug-ins, there will be some
@@ -562,10 +565,14 @@ gimp_plug_in_manager_add_from_file (const GimpDatafileData *file_data,
for (list = manager->plug_in_defs; list; list = list->next)
{
+ gchar *path;
gchar *plug_in_name;
plug_in_def = list->data;
- plug_in_name = g_path_get_basename (plug_in_def->prog);
+
+ path = g_file_get_path (plug_in_def->file);
+ plug_in_name = g_path_get_basename (path);
+ g_free (path);
if (g_ascii_strcasecmp (file_data->basename, plug_in_name) == 0)
{
@@ -580,7 +587,9 @@ gimp_plug_in_manager_add_from_file (const GimpDatafileData *file_data,
g_free (plug_in_name);
}
- plug_in_def = gimp_plug_in_def_new (file_data->filename);
+ file = g_file_new_for_path (file_data->filename);
+ plug_in_def = gimp_plug_in_def_new (file);
+ g_object_unref (file);
gimp_plug_in_def_set_mtime (plug_in_def, file_data->mtime);
gimp_plug_in_def_set_needs_query (plug_in_def, TRUE);
@@ -593,20 +602,24 @@ gimp_plug_in_manager_add_from_rc (GimpPlugInManager *manager,
GimpPlugInDef *plug_in_def)
{
GSList *list;
+ gchar *path1;
gchar *basename1;
g_return_if_fail (GIMP_IS_PLUG_IN_MANAGER (manager));
g_return_if_fail (plug_in_def != NULL);
- g_return_if_fail (plug_in_def->prog != NULL);
+ g_return_if_fail (plug_in_def->file != NULL);
- if (! g_path_is_absolute (plug_in_def->prog))
+ path1 = g_file_get_path (plug_in_def->file);
+
+ if (! g_path_is_absolute (path1))
{
g_warning ("plug_ins_def_add_from_rc: filename not absolute (skipping)");
g_object_unref (plug_in_def);
+ g_free (path1);
return;
}
- basename1 = g_path_get_basename (plug_in_def->prog);
+ basename1 = g_path_get_basename (path1);
/* If this is a file load or save plugin, make sure we have
* something for one of the extensions, prefixes, or magic number.
@@ -635,14 +648,19 @@ gimp_plug_in_manager_add_from_rc (GimpPlugInManager *manager,
for (list = manager->plug_in_defs; list; list = list->next)
{
GimpPlugInDef *ondisk_plug_in_def = list->data;
+ gchar *path2;
gchar *basename2;
- basename2 = g_path_get_basename (ondisk_plug_in_def->prog);
+ path2 = g_file_get_path (ondisk_plug_in_def->file);
+
+ basename2 = g_path_get_basename (path2);
+
+ g_free (path2);
if (! strcmp (basename1, basename2))
{
- if (! g_ascii_strcasecmp (plug_in_def->prog,
- ondisk_plug_in_def->prog) &&
+ if (g_file_equal (plug_in_def->file,
+ ondisk_plug_in_def->file) &&
(plug_in_def->mtime == ondisk_plug_in_def->mtime))
{
/* Use pluginrc entry, deleting on-disk entry */
@@ -665,13 +683,14 @@ gimp_plug_in_manager_add_from_rc (GimpPlugInManager *manager,
}
g_free (basename1);
+ g_free (path1);
manager->write_pluginrc = TRUE;
if (manager->gimp->be_verbose)
{
g_printerr ("pluginrc lists '%s', but it wasn't found\n",
- gimp_filename_to_utf8 (plug_in_def->prog));
+ gimp_file_get_utf8_name (plug_in_def->file));
}
g_object_unref (plug_in_def);
@@ -736,10 +755,10 @@ gimp_plug_in_manager_file_proc_compare (gconstpointer a,
const gchar *label_b;
gint retval = 0;
- if (g_str_has_prefix (proc_a->prog, "gimp-xcf"))
+ if (g_str_has_prefix (gimp_file_get_utf8_name (proc_a->file), "gimp-xcf"))
return -1;
- if (g_str_has_prefix (proc_b->prog, "gimp-xcf"))
+ if (g_str_has_prefix (gimp_file_get_utf8_name (proc_b->file), "gimp-xcf"))
return 1;
label_a = gimp_plug_in_procedure_get_label (proc_a);
diff --git a/app/plug-in/gimppluginmanager.c b/app/plug-in/gimppluginmanager.c
index c252ade..4323a92 100644
--- a/app/plug-in/gimppluginmanager.c
+++ b/app/plug-in/gimppluginmanager.c
@@ -113,9 +113,9 @@ gimp_plug_in_manager_class_init (GimpPlugInManagerClass *klass)
G_STRUCT_OFFSET (GimpPlugInManagerClass,
menu_branch_added),
NULL, NULL,
- gimp_marshal_VOID__STRING_STRING_STRING,
+ gimp_marshal_VOID__OBJECT_STRING_STRING,
G_TYPE_NONE, 1,
- G_TYPE_STRING,
+ G_TYPE_FILE,
G_TYPE_STRING,
G_TYPE_STRING);
@@ -359,7 +359,7 @@ gimp_plug_in_manager_add_procedure (GimpPlugInManager *manager,
g_printerr ("Removing duplicate PDB procedure '%s' "
"registered by '%s'\n",
gimp_object_get_name (tmp_proc),
- gimp_filename_to_utf8 (tmp_proc->prog));
+ gimp_file_get_utf8_name (tmp_proc->file));
/* search the plugin list to see if any plugins had references to
* the tmp_proc.
diff --git a/app/plug-in/gimppluginmanager.h b/app/plug-in/gimppluginmanager.h
index f74a805..5f42b86 100644
--- a/app/plug-in/gimppluginmanager.h
+++ b/app/plug-in/gimppluginmanager.h
@@ -74,7 +74,7 @@ struct _GimpPlugInManagerClass
GimpPlugIn *plug_in);
void (* menu_branch_added) (GimpPlugInManager *manager,
- const gchar *prog_name,
+ GFile *file,
const gchar *menu_path,
const gchar *menu_label);
void (* history_changed) (GimpPlugInManager *manager);
diff --git a/app/plug-in/gimppluginprocedure.c b/app/plug-in/gimppluginprocedure.c
index 9efa5ea..fec91ef 100644
--- a/app/plug-in/gimppluginprocedure.c
+++ b/app/plug-in/gimppluginprocedure.c
@@ -71,7 +71,7 @@ static void gimp_plug_in_procedure_execute_async (GimpProcedure *proc
GimpValueArray *args,
GimpObject *display);
-const gchar * gimp_plug_in_procedure_real_get_progname (const GimpPlugInProcedure *procedure);
+GFile * gimp_plug_in_procedure_real_get_file (const GimpPlugInProcedure *procedure);
G_DEFINE_TYPE (GimpPlugInProcedure, gimp_plug_in_procedure,
@@ -106,7 +106,7 @@ gimp_plug_in_procedure_class_init (GimpPlugInProcedureClass *klass)
proc_class->execute = gimp_plug_in_procedure_execute;
proc_class->execute_async = gimp_plug_in_procedure_execute_async;
- klass->get_progname = gimp_plug_in_procedure_real_get_progname;
+ klass->get_file = gimp_plug_in_procedure_real_get_file;
klass->menu_path_added = NULL;
}
@@ -124,7 +124,7 @@ gimp_plug_in_procedure_finalize (GObject *object)
{
GimpPlugInProcedure *proc = GIMP_PLUG_IN_PROCEDURE (object);
- g_free (proc->prog);
+ g_object_unref (proc->file);
g_free (proc->menu_label);
g_list_free_full (proc->menu_paths, (GDestroyNotify) g_free);
@@ -157,7 +157,7 @@ gimp_plug_in_procedure_get_memsize (GimpObject *object,
GList *list;
GSList *slist;
- memsize += gimp_string_get_memsize (proc->prog);
+ memsize += gimp_g_object_get_memsize (G_OBJECT (proc->file));
memsize += gimp_string_get_memsize (proc->menu_label);
for (list = proc->menu_paths; list; list = g_list_next (list))
@@ -238,10 +238,10 @@ gimp_plug_in_procedure_execute_async (GimpProcedure *procedure,
}
}
-const gchar *
-gimp_plug_in_procedure_real_get_progname (const GimpPlugInProcedure *procedure)
+GFile *
+gimp_plug_in_procedure_real_get_file (const GimpPlugInProcedure *procedure)
{
- return procedure->prog;
+ return procedure->file;
}
@@ -249,17 +249,17 @@ gimp_plug_in_procedure_real_get_progname (const GimpPlugInProcedure *procedure)
GimpProcedure *
gimp_plug_in_procedure_new (GimpPDBProcType proc_type,
- const gchar *prog)
+ GFile *file)
{
GimpPlugInProcedure *proc;
g_return_val_if_fail (proc_type == GIMP_PLUGIN ||
proc_type == GIMP_EXTENSION, NULL);
- g_return_val_if_fail (prog != NULL, NULL);
+ g_return_val_if_fail (G_IS_FILE (file), NULL);
proc = g_object_new (GIMP_TYPE_PLUG_IN_PROCEDURE, NULL);
- proc->prog = g_strdup (prog);
+ proc->file = g_object_ref (file);
GIMP_PROCEDURE (proc)->proc_type = proc_type;
@@ -283,12 +283,12 @@ gimp_plug_in_procedure_find (GSList *list,
return NULL;
}
-const gchar *
-gimp_plug_in_procedure_get_progname (const GimpPlugInProcedure *proc)
+GFile *
+gimp_plug_in_procedure_get_file (const GimpPlugInProcedure *proc)
{
g_return_val_if_fail (GIMP_IS_PLUG_IN_PROCEDURE (proc), NULL);
- return GIMP_PLUG_IN_PROCEDURE_GET_CLASS (proc)->get_progname (proc);
+ return GIMP_PLUG_IN_PROCEDURE_GET_CLASS (proc)->get_file (proc);
}
void
@@ -345,7 +345,7 @@ gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
p = strchr (menu_path, '>');
if (p == NULL || (*(++p) && *p != '/'))
{
- basename = g_filename_display_basename (proc->prog);
+ basename = g_path_get_basename (gimp_file_get_utf8_name (proc->file));
g_set_error (error, GIMP_PLUG_IN_ERROR, GIMP_PLUG_IN_FAILED,
"Plug-In \"%s\"\n(%s)\n"
@@ -353,7 +353,7 @@ gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
"in the invalid menu location \"%s\".\n"
"The menu path must look like either \"<Prefix>\" "
"or \"<Prefix>/path/to/item\".",
- basename, gimp_filename_to_utf8 (proc->prog),
+ basename, gimp_file_get_utf8_name (proc->file),
gimp_object_get_name (proc),
menu_path);
goto failure;
@@ -467,7 +467,7 @@ gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
}
else
{
- basename = g_filename_display_basename (proc->prog);
+ basename = g_path_get_basename (gimp_file_get_utf8_name (proc->file));
g_set_error (error, GIMP_PLUG_IN_ERROR, GIMP_PLUG_IN_FAILED,
"Plug-In \"%s\"\n(%s)\n"
@@ -478,7 +478,7 @@ gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
"\"<Colormap>\", \"<Brushes>\", \"<Dynamics>\", "
"\"<Gradients>\", \"<Palettes>\", \"<Patterns>\", "
"\"<ToolPresets>\", \"<Fonts>\" or \"<Buffers>\".",
- basename, gimp_filename_to_utf8 (proc->prog),
+ basename, gimp_file_get_utf8_name (proc->file),
gimp_object_get_name (proc),
menu_path);
goto failure;
@@ -503,14 +503,14 @@ gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
p = strchr (prefix, '>') + 1;
*p = '\0';
- basename = g_filename_display_basename (proc->prog);
+ basename = g_path_get_basename (gimp_file_get_utf8_name (proc->file));
g_set_error (error, GIMP_PLUG_IN_ERROR, GIMP_PLUG_IN_FAILED,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install %s procedure \"%s\" "
"which does not take the standard %s Plug-In "
"arguments: (%s).",
- basename, gimp_filename_to_utf8 (proc->prog),
+ basename, gimp_file_get_utf8_name (proc->file),
prefix, gimp_object_get_name (proc), prefix,
required);
diff --git a/app/plug-in/gimppluginprocedure.h b/app/plug-in/gimppluginprocedure.h
index 27dadf4..988d873 100644
--- a/app/plug-in/gimppluginprocedure.h
+++ b/app/plug-in/gimppluginprocedure.h
@@ -39,7 +39,7 @@ struct _GimpPlugInProcedure
GimpProcedure parent_instance;
/* common members */
- gchar *prog;
+ GFile *file;
GQuark locale_domain;
GQuark help_domain;
gchar *menu_label;
@@ -71,23 +71,23 @@ struct _GimpPlugInProcedureClass
GimpProcedureClass parent_class;
/* virtual functions */
- const gchar * (* get_progname) (const GimpPlugInProcedure *procedure);
+ GFile * (* get_file) (const GimpPlugInProcedure *procedure);
/* signals */
- void (* menu_path_added) (GimpPlugInProcedure *procedure,
- const gchar *menu_path);
+ void (* menu_path_added) (GimpPlugInProcedure *procedure,
+ const gchar *menu_path);
};
GType gimp_plug_in_procedure_get_type (void) G_GNUC_CONST;
GimpProcedure * gimp_plug_in_procedure_new (GimpPDBProcType proc_type,
- const gchar *prog);
+ GFile *file);
GimpPlugInProcedure * gimp_plug_in_procedure_find (GSList *list,
const gchar *proc_name);
-const gchar * gimp_plug_in_procedure_get_progname (const GimpPlugInProcedure *proc);
+GFile * gimp_plug_in_procedure_get_file (const GimpPlugInProcedure *proc);
void gimp_plug_in_procedure_set_locale_domain (GimpPlugInProcedure *proc,
const gchar *locale_domain);
diff --git a/app/plug-in/gimptemporaryprocedure.c b/app/plug-in/gimptemporaryprocedure.c
index 1e8bb0a..7b22114 100644
--- a/app/plug-in/gimptemporaryprocedure.c
+++ b/app/plug-in/gimptemporaryprocedure.c
@@ -51,7 +51,7 @@ static void gimp_temporary_procedure_execute_async (GimpProcedure *proce
GimpValueArray *args,
GimpObject *display);
-const gchar * gimp_temporary_procedure_get_progname (const GimpPlugInProcedure *procedure);
+static GFile * gimp_temporary_procedure_get_file (const GimpPlugInProcedure *procedure);
G_DEFINE_TYPE (GimpTemporaryProcedure, gimp_temporary_procedure,
@@ -72,7 +72,7 @@ gimp_temporary_procedure_class_init (GimpTemporaryProcedureClass *klass)
proc_class->execute = gimp_temporary_procedure_execute;
proc_class->execute_async = gimp_temporary_procedure_execute_async;
- plug_class->get_progname = gimp_temporary_procedure_get_progname;
+ plug_class->get_file = gimp_temporary_procedure_get_file;
}
static void
@@ -130,10 +130,10 @@ gimp_temporary_procedure_execute_async (GimpProcedure *procedure,
}
}
-const gchar *
-gimp_temporary_procedure_get_progname (const GimpPlugInProcedure *procedure)
+static GFile *
+gimp_temporary_procedure_get_file (const GimpPlugInProcedure *procedure)
{
- return GIMP_TEMPORARY_PROCEDURE (procedure)->plug_in->prog;
+ return GIMP_TEMPORARY_PROCEDURE (procedure)->plug_in->file;
}
@@ -150,7 +150,7 @@ gimp_temporary_procedure_new (GimpPlugIn *plug_in)
proc->plug_in = plug_in;
- GIMP_PLUG_IN_PROCEDURE (proc)->prog = g_strdup ("none");
+ GIMP_PLUG_IN_PROCEDURE (proc)->file = g_file_new_for_path ("none");
return GIMP_PROCEDURE (proc);
}
diff --git a/app/plug-in/plug-in-rc.c b/app/plug-in/plug-in-rc.c
index 233d0dc..0b67335 100644
--- a/app/plug-in/plug-in-rc.c
+++ b/app/plug-in/plug-in-rc.c
@@ -52,7 +52,7 @@ static GTokenType plug_in_def_deserialize (Gimp *gimp,
GSList **plug_in_defs);
static GTokenType plug_in_procedure_deserialize (GScanner *scanner,
Gimp *gimp,
- const gchar *prog,
+ GFile *file,
GimpPlugInProcedure **proc);
static GTokenType plug_in_menu_path_deserialize (GScanner *scanner,
GimpPlugInProcedure *proc);
@@ -261,6 +261,7 @@ plug_in_def_deserialize (Gimp *gimp,
GimpPlugInProcedure *proc = NULL;
gchar *name;
gchar *path;
+ GFile *file;
gint64 mtime;
GTokenType token;
@@ -270,9 +271,12 @@ plug_in_def_deserialize (Gimp *gimp,
path = gimp_config_path_expand (name, TRUE, NULL);
g_free (name);
- plug_in_def = gimp_plug_in_def_new (path);
+ file = g_file_new_for_path (path);
g_free (path);
+ plug_in_def = gimp_plug_in_def_new (file);
+ g_object_unref (file);
+
if (! gimp_scanner_parse_int64 (scanner, &mtime))
{
g_object_unref (plug_in_def);
@@ -298,7 +302,7 @@ plug_in_def_deserialize (Gimp *gimp,
{
case PROC_DEF:
token = plug_in_procedure_deserialize (scanner, gimp,
- plug_in_def->prog,
+ plug_in_def->file,
&proc);
if (token == G_TOKEN_LEFT_PAREN)
@@ -353,7 +357,7 @@ plug_in_def_deserialize (Gimp *gimp,
static GTokenType
plug_in_procedure_deserialize (GScanner *scanner,
Gimp *gimp,
- const gchar *prog,
+ GFile *file,
GimpPlugInProcedure **proc)
{
GimpProcedure *procedure;
@@ -374,7 +378,7 @@ plug_in_procedure_deserialize (GScanner *scanner,
return G_TOKEN_INT;
}
- procedure = gimp_plug_in_procedure_new (proc_type, prog);
+ procedure = gimp_plug_in_procedure_new (proc_type, file);
*proc = GIMP_PLUG_IN_PROCEDURE (procedure);
@@ -820,9 +824,12 @@ plug_in_rc_write (GSList *plug_in_defs,
if (plug_in_def->procedures)
{
GSList *list2;
+ gchar *path;
gchar *utf8;
- utf8 = g_filename_to_utf8 (plug_in_def->prog, -1, NULL, NULL, NULL);
+ path = g_file_get_path (plug_in_def->file);
+ utf8 = g_filename_to_utf8 (path, -1, NULL, NULL, NULL);
+ g_free (path);
if (! utf8)
continue;
diff --git a/app/xcf/xcf.c b/app/xcf/xcf.c
index 7634e95..3ea8d9a 100644
--- a/app/xcf/xcf.c
+++ b/app/xcf/xcf.c
@@ -82,6 +82,7 @@ void
xcf_init (Gimp *gimp)
{
GimpPlugInProcedure *proc;
+ GFile *file;
GimpProcedure *procedure;
g_return_if_fail (GIMP_IS_GIMP (gimp));
@@ -96,7 +97,10 @@ xcf_init (Gimp *gimp)
*/
/* gimp-xcf-save */
- procedure = gimp_plug_in_procedure_new (GIMP_PLUGIN, "gimp-xcf-save");
+ file = g_file_new_for_path ("gimp-xcf-save");
+ procedure = gimp_plug_in_procedure_new (GIMP_PLUGIN, file);
+ g_object_unref (file);
+
procedure->proc_type = GIMP_INTERNAL;
procedure->marshal_func = xcf_save_invoker;
@@ -167,7 +171,10 @@ xcf_init (Gimp *gimp)
g_object_unref (procedure);
/* gimp-xcf-load */
- procedure = gimp_plug_in_procedure_new (GIMP_PLUGIN, "gimp-xcf-load");
+ file = g_file_new_for_path ("gimp-xcf-load");
+ procedure = gimp_plug_in_procedure_new (GIMP_PLUGIN, file);
+ g_object_unref (file);
+
procedure->proc_type = GIMP_INTERNAL;
procedure->marshal_func = xcf_load_invoker;
diff --git a/tools/pdbgen/pdb/help.pdb b/tools/pdbgen/pdb/help.pdb
index 4512a4a..4eb17c6 100644
--- a/tools/pdbgen/pdb/help.pdb
+++ b/tools/pdbgen/pdb/help.pdb
@@ -45,7 +45,7 @@ HELP
if (! help_domain && manager->current_plug_in)
help_domain = (gchar *)
gimp_plug_in_manager_get_help_domain (manager,
- manager->current_plug_in->prog,
+ manager->current_plug_in->file,
NULL);
gimp_help (gimp, progress, help_domain, help_id);
diff --git a/tools/pdbgen/pdb/plug_in.pdb b/tools/pdbgen/pdb/plug_in.pdb
index b6dac0f..338a5fc 100644
--- a/tools/pdbgen/pdb/plug_in.pdb
+++ b/tools/pdbgen/pdb/plug_in.pdb
@@ -216,7 +216,7 @@ HELP
if (plug_in)
{
gimp_plug_in_manager_add_menu_branch (gimp->plug_in_manager,
- plug_in->prog, menu_path, menu_name);
+ plug_in->file, menu_path, menu_name);
}
else
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]