Commit 0abdbeba authored by Jehan's avatar Jehan

plug-ins: fix and install the Lua goat-exercise.

So procedure:new_return_values() just seems broken with LGI. It doesn't
even look like it reaches the C code.
Anyway we can also just reconstruct the GimpValueArray, which works
fine. We now have official support for Lua plug-ins!
parent bbfa8f8e
Pipeline #105261 failed with stages
in 20 minutes and 17 seconds
......@@ -2359,6 +2359,52 @@ fi
AM_CONDITIONAL(HAS_JAVASCRIPT_INTERP, test "x$GJS" != "xno")
AM_CONDITIONAL(BUILD_JAVASCRIPT, test "x$with_javascript" != xno)
####################################
# Check for Lua runtime dependencies
####################################
AC_ARG_WITH(lua,
[ --with-lua=no|yes|force install Lua plug-ins (default=yes)], ,
[with_lua=yes])
if test "x$with_lua" = xno; then
warning_lua="
WARNING: you disabled the installation of core Lua plug-ins. This
is discouraged as it won't provide the full GIMP experience.
Note that you may install the Lua plug-ins even if Lua LGI
is not installed at build-time by passing the configure option
--with-lua=force.
Just make sure that it is available at run-time."
elif test "x$with_lua" = xforce; then
with_lua="yes"
warning_lua=
AC_CHECK_PROGS(LUA, luajit, no)
if test "x$LUA" = xno; then
warning_lua="
WARNING: luagit not found.
Lua plug-ins will be installed anyway but you should make
sure that luagit and LGI are available at installation,
otherwise installed plug-ins won't be usable."
with_lua="yes (see warning below)"
fi
else
with_lua="yes"
AC_CHECK_PROGS(LUA, luajit, no)
if test "x$GJS" = xno; then
required_deps="$required_deps
- luagit not found.
*** Please install the Lua interpreter luagit.
*** Note that you may install the Lua plug-ins even if luajit
*** is not installed at build-time by passing the configure
*** option --with-lua=force.
*** Just make sure that luajit and LGI are available at run-time."
with_lua="no"
fi
fi
AM_CONDITIONAL(HAS_LUA_INTERP, test "x$LUA" != "xno")
AM_CONDITIONAL(BUILD_LUA, test "x$with_lua" != xno)
###########################################################
# Some plug-ins don't build on Win32, others are Win32-only
###########################################################
......@@ -3092,6 +3138,7 @@ Optional Plug-Ins:
Print: $enable_print
Python 3 plug-ins: $with_python
JavaScript plug-ins: $with_javascript
Lua plug-ins: $with_lua
TWAIN (Win32): $os_win32
Webpage: $have_webkit
WMF: $have_libwmf
......@@ -3110,7 +3157,7 @@ Tests:
Test desktop file $have_desktop_file_validate
Bug report URL: $with_bug_report_url
$override_bug_report_url$warning_vector_icons_windows$warning_glib_networking$warning_gcc$warning_python$warning_javascript"
$override_bug_report_url$warning_vector_icons_windows$warning_glib_networking$warning_gcc$warning_python$warning_javascript$warning_lua"
if test "x$required_deps" = "x"; then
AC_OUTPUT
......
......@@ -67,6 +67,13 @@ goat_exercise_gjsdir = $(gimpplugindir)/plug-ins/goat-exercise-gjs
goat_exercise_gjs_SCRIPTS = goat-exercise-gjs.js
endif
# Lua (lua-jit + LGI) version.
if BUILD_LUA
goat_exercise_luadir = $(gimpplugindir)/plug-ins/goat-exercise-lua
goat_exercise_lua_SCRIPTS = goat-exercise-lua.lua
endif
# Python 3 (pygobject) version.
# Commented out for now until we figure out the GParamSpec issues.
......@@ -78,4 +85,5 @@ endif
EXTRA_DIST = \
goat-exercise-gjs.js \
goat-exercise-lua.lua \
goat-exercise-py3.py
......@@ -33,6 +33,9 @@ local Goat = lgi.package 'Goat'
local Goat = lgi.Goat
function run(procedure, args, data)
-- procedure:new_return_values() crashes LGI so we construct the
-- GimpValueArray manually.
local retval = Gimp.ValueArray(1)
local run_mode = GObject.Value.get_enum(args:index(0))
if run_mode == Gimp.RunMode.INTERACTIVE then
Gimp.ui_init("goat-exercise-lua", false);
......@@ -93,14 +96,16 @@ function run(procedure, args, data)
Gio.app_info_launch_default_for_uri(url, nil);
else -- CANCEL, CLOSE, DELETE_EVENT
dialog:destroy()
return procedure:new_return_values(Gimp.PDBStatusType.CANCEL, nil)
local cancel = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.CANCEL)
retval:append(cancel)
return retval
end
end
end
local drawable_id = args:index(2):get_int()
local x, y, width, height = Gimp.drawable_mask_intersect (drawable_id)
if width > 0 and height > 0 then
if width ~= nill and height ~= nil and width > 0 and height > 0 then
Gegl.init(nil)
local buffer = Gimp.drawable_get_buffer (drawable_id)
......@@ -122,12 +127,16 @@ function run(procedure, args, data)
Gimp.drawable_update(drawable_id, x, y, width, height)
Gimp.displays_flush()
else
local err = GLib.Error.new_literal(GLib.quark_from_string("goat-error-quark"), 0,
"No pixels to process in the selected area.")
return procedure:new_return_values(Gimp.PDBStatusType.CALLING_ERROR, err)
local fail = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.CALLING_ERROR)
retval:append(fail)
local err = GObject.Value(GObject.Type.STRING, "No pixels to process in the selected area.")
retval:append(err)
return retval
end
return procedure:new_return_values(Gimp.PDBStatusType.SUCCESS, 0)
local success = GObject.Value(Gimp.PDBStatusType, Gimp.PDBStatusType.SUCCESS)
retval:append(success)
return retval
end
Goat:class('Exercise', Gimp.PlugIn)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment