[gimp] extensions: update the 5 goat-exercise extensions to multi-drawable API.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] extensions: update the 5 goat-exercise extensions to multi-drawable API.
- Date: Tue, 6 Apr 2021 00:08:15 +0000 (UTC)
commit 931f44e54a1e47d10c7480e6a6f2850979efc59e
Author: Jehan <jehan girinstud io>
Date: Tue Apr 6 01:55:52 2021 +0200
extensions: update the 5 goat-exercise extensions to multi-drawable API.
extensions/goat-exercises/goat-exercise-c.c | 30 ++++++++++++++++++++---
extensions/goat-exercises/goat-exercise-gjs.js | 11 ++++++++-
extensions/goat-exercises/goat-exercise-lua.lua | 17 ++++++++++++-
extensions/goat-exercises/goat-exercise-py3.py | 10 +++++++-
extensions/goat-exercises/goat-exercise-vala.vala | 1 +
5 files changed, 62 insertions(+), 7 deletions(-)
---
diff --git a/extensions/goat-exercises/goat-exercise-c.c b/extensions/goat-exercises/goat-exercise-c.c
index 56311fb4f0..43355495e5 100644
--- a/extensions/goat-exercises/goat-exercise-c.c
+++ b/extensions/goat-exercises/goat-exercise-c.c
@@ -64,7 +64,8 @@ static GimpProcedure * goat_create_procedure (GimpPlugIn *plug_in,
static GimpValueArray * goat_run (GimpProcedure *procedure,
GimpRunMode run_mode,
GimpImage *image,
- GimpDrawable *drawable,
+ gint n_drawables,
+ GimpDrawable **drawables,
const GimpValueArray *args,
gpointer run_data);
@@ -107,6 +108,8 @@ goat_create_procedure (GimpPlugIn *plug_in,
goat_run, NULL, NULL);
gimp_procedure_set_image_types (procedure, "*");
+ gimp_procedure_set_sensitivity_mask (procedure,
+ GIMP_PROCEDURE_SENSITIVE_DRAWABLE);
gimp_procedure_set_menu_label (procedure, N_("Exercise in _C minor"));
gimp_procedure_set_icon_name (procedure, GIMP_ICON_GEGL);
@@ -130,15 +133,34 @@ static GimpValueArray *
goat_run (GimpProcedure *procedure,
GimpRunMode run_mode,
GimpImage *image,
- GimpDrawable *drawable,
+ gint n_drawables,
+ GimpDrawable **drawables,
const GimpValueArray *args,
gpointer run_data)
{
- GimpPDBStatusType status = GIMP_PDB_SUCCESS;
- gint x, y, width, height;
+ GimpDrawable *drawable;
+ GimpPDBStatusType status = GIMP_PDB_SUCCESS;
+ gint x, y, width, height;
INIT_I18N();
+ if (n_drawables != 1)
+ {
+ GError *error = NULL;
+
+ g_set_error (&error, GIMP_PLUG_IN_ERROR, 0,
+ _("Procedure '%s' only works with one drawable."),
+ PLUG_IN_PROC);
+
+ return gimp_procedure_new_return_values (procedure,
+ GIMP_PDB_CALLING_ERROR,
+ error);
+ }
+ else
+ {
+ drawable = drawables[0];
+ }
+
/* In interactive mode, display a dialog to advertise the exercise. */
if (run_mode == GIMP_RUN_INTERACTIVE)
{
diff --git a/extensions/goat-exercises/goat-exercise-gjs.js b/extensions/goat-exercises/goat-exercise-gjs.js
index 352c86b449..e1942de35e 100755
--- a/extensions/goat-exercises/goat-exercise-gjs.js
+++ b/extensions/goat-exercises/goat-exercise-gjs.js
@@ -56,6 +56,7 @@ var Goat = GObject.registerClass({
let procedure = Gimp.ImageProcedure.new(this, name, Gimp.PDBProcType.PLUGIN, this.run);
procedure.set_image_types("*");
+ procedure.set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE);
procedure.set_menu_label("Exercise a JavaScript goat");
procedure.set_icon_name(GimpUi.ICON_GEGL);
@@ -69,9 +70,17 @@ var Goat = GObject.registerClass({
return procedure;
}
- run(procedure, run_mode, image, drawable, args, run_data) {
+ run(procedure, run_mode, image, drawables, args, run_data) {
/* TODO: localization. */
+ if (drawables.length != 1) {
+ let msg = `Procedure '${procedure.get_name()}' only works with one drawable.`;
+ let error = GLib.Error.new_literal(Gimp.PlugIn.error_quark(), 0, msg);
+ return procedure.new_return_values(Gimp.PDBStatusType.CALLING_ERROR, error)
+ }
+
+ let drawable = drawables[0];
+
if (run_mode == Gimp.RunMode.INTERACTIVE) {
GimpUi.init("goat-exercise-gjs");
/* TODO: help function and ID. */
diff --git a/extensions/goat-exercises/goat-exercise-lua.lua b/extensions/goat-exercises/goat-exercise-lua.lua
index cec8107ead..1af3f44451 100755
--- a/extensions/goat-exercises/goat-exercise-lua.lua
+++ b/extensions/goat-exercises/goat-exercise-lua.lua
@@ -33,10 +33,24 @@ local Gdk = lgi.Gdk
local Goat = lgi.package 'Goat'
local Goat = lgi.Goat
-function run(procedure, run_mode, image, drawable, args, run_data)
+function run(procedure, run_mode, image, drawables, args, run_data)
-- procedure:new_return_values() crashes LGI so we construct the
-- GimpValueArray manually.
local retval = Gimp.ValueArray(1)
+
+ if table.getn(drawables) ~= 1 then
+ local calling_err = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.CALLING_ERROR)
+ local msg = "Procedure '%s' only works with one drawable."
+
+ msg = string.format(msg, procedure:get_name())
+
+ retval:append(calling_err)
+ retval:append(GObject.Value(GObject.Type.STRING, msg))
+ return retval
+ end
+
+ local drawable = drawables[1]
+
-- Not sure why run_mode has become a string instead of testing
-- against Gimp.RunMode.INTERACTIVE.
if run_mode == "INTERACTIVE" then
@@ -145,6 +159,7 @@ function Goat.Exercise:do_create_procedure(name)
run, nil)
procedure:set_image_types("*");
+ procedure:set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE);
procedure:set_menu_label("Exercise a Lua goat");
procedure:set_icon_name(GimpUi.ICON_GEGL);
diff --git a/extensions/goat-exercises/goat-exercise-py3.py b/extensions/goat-exercises/goat-exercise-py3.py
index 4662ba73e6..7b526920a5 100755
--- a/extensions/goat-exercises/goat-exercise-py3.py
+++ b/extensions/goat-exercises/goat-exercise-py3.py
@@ -55,6 +55,7 @@ class Goat (Gimp.PlugIn):
self.run, None)
procedure.set_image_types("*")
+ procedure.set_sensitivity_mask (Gimp.ProcedureSensitivityMask.DRAWABLE)
procedure.set_menu_label(N_("Exercise a goat and a python"))
procedure.set_icon_name(GimpUi.ICON_GEGL)
@@ -67,7 +68,14 @@ class Goat (Gimp.PlugIn):
return procedure
- def run(self, procedure, run_mode, image, drawable, args, run_data):
+ def run(self, procedure, run_mode, image, n_drawables, drawables, args, run_data):
+ if n_drawables != 1:
+ msg = _("Procedure '{}' only works with one drawable.").format(procedure.get_name())
+ error = GLib.Error.new_literal(Gimp.PlugIn.error_quark(), msg, 0)
+ return procedure.new_return_values(Gimp.PDBStatusType.CALLING_ERROR, error)
+ else:
+ drawable = drawables[0]
+
if run_mode == Gimp.RunMode.INTERACTIVE:
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
diff --git a/extensions/goat-exercises/goat-exercise-vala.vala
b/extensions/goat-exercises/goat-exercise-vala.vala
index 68ac500411..004d9e18d1 100755
--- a/extensions/goat-exercises/goat-exercise-vala.vala
+++ b/extensions/goat-exercises/goat-exercise-vala.vala
@@ -41,6 +41,7 @@ public class Goat : Gimp.PlugIn {
var procedure = new Gimp.ImageProcedure(this, name, Gimp.PDBProcType.PLUGIN, this.run);
procedure.set_image_types("RGB*, INDEXED*, GRAY*");
+ procedure.set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE);
procedure.set_menu_label("Exercise a Vala goat");
procedure.set_documentation("Exercise a goat in the Vala language",
"Takes a goat for a walk in Vala",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]