Search code examples
gimpscript-fu

Fix "Procedure execution of ... failed on invalid input arguments" error


I've been trying to write a script-fu script for GIMP 2.6+ that uses one of the built-in script-fu methods, namely the script-fu-add-bevel method. My problem is that whenever I call it, either in the console or in my script, I get:

Error: Procedure execution of gimp-drawable-type-with-alpha failed on invalid input
arguments: Procedure 'gimp-drawable-type-with-alpha' has been called with an
invalid ID for argument 'drawable'. Most likely a plug-in is trying to work on a layer that
doesn't exist any longer. 

This is really strange because I can clearly see by calling gimp-image-get-active-drawable with my image ID as the parameter that the layer ID that I'm passing to the script-fu method exists. The script is erroring while calling gimp-drawable-type-with-alpha, but I can call this method with the same ID in the console with no error. How can I fix this problem?


Solution

  • From this forum post, I learned that when calling a script-fu method, you shouldn't pass in the run-mode argument. This is done behind the scenes, and if you pass anything for that value, it will be interpreted as the second argument! This means that every argument you send in will be one parameter off, and it's only a matter of time before the script crashes.

    So calling script-fu-add-bevel from another script-fu would look something like this:

    (script-fu-add-bevel img layer bevel-width FALSE FALSE)