diff --git a/libgimp/gimpbatchprocedure.c b/libgimp/gimpbatchprocedure.c index c7f16487e5..b6da0b05a4 100644 --- a/libgimp/gimpbatchprocedure.c +++ b/libgimp/gimpbatchprocedure.c @@ -124,12 +124,14 @@ static GimpValueArray * gimp_batch_procedure_run (GimpProcedure *procedure, const GimpValueArray *args) { - GimpBatchProcedure *batch_proc = GIMP_BATCH_PROCEDURE (procedure); - GimpValueArray *remaining; - GimpValueArray *return_values; - GimpRunMode run_mode; - const gchar *cmd; - gint i; + GimpBatchProcedure *batch_proc = GIMP_BATCH_PROCEDURE (procedure); + GimpValueArray *remaining; + GimpValueArray *return_values; + GimpRunMode run_mode; + const gchar *cmd; + GimpProcedureConfig *config; + GimpPDBStatusType status = GIMP_PDB_EXECUTION_ERROR; + gint i; run_mode = GIMP_VALUES_GET_ENUM (args, 0); cmd = GIMP_VALUES_GET_STRING (args, 1); @@ -143,12 +145,22 @@ gimp_batch_procedure_run (GimpProcedure *procedure, gimp_value_array_append (remaining, value); } + config = gimp_procedure_create_config (procedure); + gimp_procedure_config_begin_run (config, NULL, run_mode, remaining); + gimp_value_array_unref (remaining); + return_values = batch_proc->priv->run_func (procedure, run_mode, cmd, - remaining, + config, batch_proc->priv->run_data); - gimp_value_array_unref (remaining); + if (return_values != NULL && + gimp_value_array_length (return_values) > 0 && + G_VALUE_HOLDS_ENUM (gimp_value_array_index (return_values, 0))) + status = GIMP_VALUES_GET_ENUM (return_values, 0); + + gimp_procedure_config_end_run (config, status); + g_object_unref (config); return return_values; } diff --git a/libgimp/gimpbatchprocedure.h b/libgimp/gimpbatchprocedure.h index aab7c01a90..a24e4ec6c3 100644 --- a/libgimp/gimpbatchprocedure.h +++ b/libgimp/gimpbatchprocedure.h @@ -33,7 +33,7 @@ G_BEGIN_DECLS * GimpBatchFunc: * @procedure: the #GimpProcedure that runs. * @run_mode: the #GimpRunMode. - * @args: the @procedure's remaining arguments. + * @config: the @procedure's remaining arguments. * @run_data: (closure): the run_data given in gimp_batch_procedure_new(). * * The batch function is run during the lifetime of the GIMP session, @@ -46,7 +46,7 @@ G_BEGIN_DECLS typedef GimpValueArray * (* GimpBatchFunc) (GimpProcedure *procedure, GimpRunMode run_mode, const gchar *command, - const GimpValueArray *args, + GimpProcedureConfig *config, gpointer run_data); diff --git a/plug-ins/python/python-eval.py b/plug-ins/python/python-eval.py index e601437710..988e0cba90 100644 --- a/plug-ins/python/python-eval.py +++ b/plug-ins/python/python-eval.py @@ -26,13 +26,12 @@ from gi.repository import Gio import sys -def code_eval(procedure, run_mode, code, args, data): +def code_eval(procedure, run_mode, code, config, data): if code == '-': code = sys.stdin.read() exec(code, globals()) return procedure.new_return_values(Gimp.PDBStatusType.SUCCESS, GLib.Error()) - class PythonEval (Gimp.PlugIn): ## GimpPlugIn virtual methods ## def do_set_i18n(self, procname): diff --git a/plug-ins/script-fu/console/script-fu-console.c b/plug-ins/script-fu/console/script-fu-console.c index 68cb883f70..2c6f6fd7ad 100644 --- a/plug-ins/script-fu/console/script-fu-console.c +++ b/plug-ins/script-fu/console/script-fu-console.c @@ -96,8 +96,8 @@ static void script_fu_command_to_history (ConsoleInterface *console, */ GimpValueArray * -script_fu_console_run (GimpProcedure *procedure, - const GimpValueArray *args) +script_fu_console_run (GimpProcedure *procedure, + GimpProcedureConfig *config) { ConsoleInterface console = { 0, }; GtkWidget *vbox; @@ -105,8 +105,6 @@ script_fu_console_run (GimpProcedure *procedure, GtkWidget *scrolled_window; GtkWidget *hbox; - GimpProcedureConfig *config; - script_fu_set_print_flag (1); gimp_ui_init ("script-fu"); @@ -116,10 +114,6 @@ script_fu_console_run (GimpProcedure *procedure, console_history_init (&console.history); console_total_append_welcome (console.total_history); - /* Get previous or default settings into config. */ - config = gimp_procedure_create_config (procedure); - gimp_procedure_config_begin_run (config, NULL, GIMP_RUN_INTERACTIVE, args); - script_fu_models_from_settings (&console, config); console.dialog = gimp_dialog_new (_("Script Console"), @@ -217,8 +211,6 @@ script_fu_console_run (GimpProcedure *procedure, /* Update config with user's change to history */ console_history_to_settings (&console.history, config); - /* Persist config */ - gimp_procedure_config_end_run (config, GIMP_PDB_SUCCESS); return gimp_procedure_new_return_values (procedure, GIMP_PDB_SUCCESS, NULL); } @@ -639,4 +631,4 @@ script_fu_command_to_history (ConsoleInterface *console, console_total_append_command (console->total_history, command); /* Ensure there is a new tail. */ -} \ No newline at end of file +} diff --git a/plug-ins/script-fu/console/script-fu-console.h b/plug-ins/script-fu/console/script-fu-console.h index 2f4b31a74d..a027696b63 100644 --- a/plug-ins/script-fu/console/script-fu-console.h +++ b/plug-ins/script-fu/console/script-fu-console.h @@ -20,7 +20,7 @@ GimpValueArray * script_fu_console_run (GimpProcedure *procedure, - const GimpValueArray *args); + GimpProcedureConfig *config); #endif /* __SCRIPT_FU_CONSOLE_H__ */ diff --git a/plug-ins/script-fu/script-fu-eval.c b/plug-ins/script-fu/script-fu-eval.c index f709d38b94..68acad137a 100644 --- a/plug-ins/script-fu/script-fu-eval.c +++ b/plug-ins/script-fu/script-fu-eval.c @@ -29,7 +29,7 @@ GimpValueArray * script_fu_eval_run (GimpProcedure *procedure, GimpRunMode run_mode, const gchar *code, - const GimpValueArray *args) + GimpProcedureConfig *config) { GString *output = g_string_new (NULL); GimpPDBStatusType status = GIMP_PDB_SUCCESS; diff --git a/plug-ins/script-fu/script-fu-eval.h b/plug-ins/script-fu/script-fu-eval.h index 17cea41232..20213125c2 100644 --- a/plug-ins/script-fu/script-fu-eval.h +++ b/plug-ins/script-fu/script-fu-eval.h @@ -22,7 +22,7 @@ GimpValueArray * script_fu_eval_run (GimpProcedure *procedure, GimpRunMode run_mode, const gchar *code, - const GimpValueArray *args); + GimpProcedureConfig *config); #endif /* __SCRIPT_FU_EVAL_H__ */ diff --git a/plug-ins/script-fu/script-fu-text-console.c b/plug-ins/script-fu/script-fu-text-console.c index 0eebbe43bb..714ac1bae4 100644 --- a/plug-ins/script-fu/script-fu-text-console.c +++ b/plug-ins/script-fu/script-fu-text-console.c @@ -33,7 +33,7 @@ GimpValueArray * script_fu_text_console_run (GimpProcedure *procedure, - const GimpValueArray *args) + GimpProcedureConfig *config) { script_fu_redirect_output_to_stdout (); diff --git a/plug-ins/script-fu/script-fu-text-console.h b/plug-ins/script-fu/script-fu-text-console.h index b714207dbb..bac2832067 100644 --- a/plug-ins/script-fu/script-fu-text-console.h +++ b/plug-ins/script-fu/script-fu-text-console.h @@ -20,7 +20,7 @@ GimpValueArray * script_fu_text_console_run (GimpProcedure *procedure, - const GimpValueArray *args); + GimpProcedureConfig *config); #endif /* __SCRIPT_FU_TEXT_CONSOLE_H__ */ diff --git a/plug-ins/script-fu/script-fu.c b/plug-ins/script-fu/script-fu.c index c5761e1150..4c8686db8b 100644 --- a/plug-ins/script-fu/script-fu.c +++ b/plug-ins/script-fu/script-fu.c @@ -42,12 +42,12 @@ static GimpProcedure * script_fu_create_procedure (GimpPlugIn *plug_i const gchar *name); static GimpValueArray * script_fu_run (GimpProcedure *procedure, - const GimpValueArray *args, + GimpProcedureConfig *config, gpointer run_data); static GimpValueArray * script_fu_batch_run (GimpProcedure *procedure, GimpRunMode run_mode, const gchar *code, - const GimpValueArray *args, + GimpProcedureConfig *config, gpointer run_data); static void script_fu_run_init (GimpProcedure *procedure, GimpRunMode run_mode); @@ -99,9 +99,9 @@ script_fu_create_procedure (GimpPlugIn *plug_in, if (! strcmp (name, "extension-script-fu")) { - procedure = gimp_procedure_new (plug_in, name, - GIMP_PDB_PROC_TYPE_EXTENSION, - script_fu_run, NULL, NULL); + procedure = gimp_procedure_new2 (plug_in, name, + GIMP_PDB_PROC_TYPE_EXTENSION, + script_fu_run, NULL, NULL); gimp_procedure_set_documentation (procedure, "A scheme interpreter for scripting " @@ -115,9 +115,9 @@ script_fu_create_procedure (GimpPlugIn *plug_in, } else if (! strcmp (name, "plug-in-script-fu-console")) { - procedure = gimp_procedure_new (plug_in, name, - GIMP_PDB_PROC_TYPE_PLUGIN, - script_fu_run, NULL, NULL); + procedure = gimp_procedure_new2 (plug_in, name, + GIMP_PDB_PROC_TYPE_PLUGIN, + script_fu_run, NULL, NULL); gimp_procedure_set_menu_label (procedure, _("Script-Fu _Console")); gimp_procedure_add_menu_path (procedure, @@ -147,9 +147,9 @@ script_fu_create_procedure (GimpPlugIn *plug_in, } else if (! strcmp (name, "plug-in-script-fu-text-console")) { - procedure = gimp_procedure_new (plug_in, name, - GIMP_PDB_PROC_TYPE_PLUGIN, - script_fu_run, NULL, NULL); + procedure = gimp_procedure_new2 (plug_in, name, + GIMP_PDB_PROC_TYPE_PLUGIN, + script_fu_run, NULL, NULL); gimp_procedure_set_documentation (procedure, "Provides a text console mode for " @@ -191,17 +191,17 @@ script_fu_create_procedure (GimpPlugIn *plug_in, static GimpValueArray * script_fu_run (GimpProcedure *procedure, - const GimpValueArray *args, + GimpProcedureConfig *config, gpointer run_data) { GimpPlugIn *plug_in = gimp_procedure_get_plug_in (procedure); const gchar *name = gimp_procedure_get_name (procedure); GimpValueArray *return_vals = NULL; + GimpRunMode run_mode = GIMP_RUN_NONINTERACTIVE; - if (gimp_value_array_length (args) > 0) - script_fu_run_init (procedure, GIMP_VALUES_GET_ENUM (args, 0)); - else - script_fu_run_init (procedure, GIMP_RUN_NONINTERACTIVE); + if (g_object_class_find_property (G_OBJECT_GET_CLASS (config), "run-mode") != NULL) + g_object_get (config, "run-mode", &run_mode, NULL); + script_fu_run_init (procedure, run_mode); if (strcmp (name, "extension-script-fu") == 0) { @@ -222,7 +222,7 @@ script_fu_run (GimpProcedure *procedure, * The script-fu text console for interactive Scheme development */ - return_vals = script_fu_text_console_run (procedure, args); + return_vals = script_fu_text_console_run (procedure, config); } else if (strcmp (name, "plug-in-script-fu-console") == 0) { @@ -230,7 +230,7 @@ script_fu_run (GimpProcedure *procedure, * The script-fu console for interactive Scheme development */ - return_vals = script_fu_console_run (procedure, args); + return_vals = script_fu_console_run (procedure, config); } if (! return_vals) @@ -245,7 +245,7 @@ static GimpValueArray * script_fu_batch_run (GimpProcedure *procedure, GimpRunMode run_mode, const gchar *code, - const GimpValueArray *args, + GimpProcedureConfig *config, gpointer run_data) { const gchar *name = gimp_procedure_get_name (procedure); @@ -261,9 +261,9 @@ script_fu_batch_run (GimpProcedure *procedure, if (g_strcmp0 (code, "-") == 0) /* Redirecting to script-fu text console, for backward compatibility */ - return_vals = script_fu_text_console_run (procedure, args); + return_vals = script_fu_text_console_run (procedure, config); else - return_vals = script_fu_eval_run (procedure, run_mode, code, args); + return_vals = script_fu_eval_run (procedure, run_mode, code, config); } if (! return_vals)