You can call the PDB-functions straightforwardly, but you have to keep in mind that they always return a list, even when this list contains just one element. Colors are represented by a list '(red green blue).
(set! new-layer (car (plug-in-pagecurl 1 img drw 1 1 0 1))) (gimp-palette-set-foreground '(255 0 0)) (gimp-image-add-layer img (car (gimp-layer-copy drw 1)) -1)
These commands are not always equivalent to their GUI counterpart. For example: When creating a new layer, this layer is neither clean, nor automatically added to the image. In a script you have to do this:
(set! new-layer (car (gimp-layer-new img 100 100 RGBA_IMAGE "New Layer" 50.7 0))) (gimp-edit-clear new-layer) (gimp-image-add-layer img new-layer -1)
The scripts in /usr/share/gimp/1.2/scripts/ are a valuable resource when you are trying to write your own scripts. Generally it is a good idea to look and learn from them. If your script does not behave as expected you might want to search for a script that solves a similiar task. Maybe you can find a better solution there.
To make a script callable via the menu it must be registered with the PDB. This looks like this:
(script-fu-register "script-fu-simple-drop-shadow" _"<Image>/Script-Fu/Shadow/Drop-Shadow (simple)..." "Add a simple drop-shadow of the alpha-channel" "Simon Budig <firstname.lastname@example.org>" ; author "Simon Budig" ; copyright holder "2002/2/3" ; date "RGBA GRAYA" ; image types SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 SF-ADJUSTMENT _"Offset X" '(8 -4096 4096 1 10 0 1) SF-ADJUSTMENT _"Offset Y" '(8 -4096 4096 1 10 0 1) SF-COLOR _"Color" '(0 0 0) SF-ADJUSTMENT _"Opacity" '(75 0 100 1 10 0 0))
This enters the script in the PDB. The first argument is the name in the PDB, the second is the Menu-Path (the underscore indicates that it should be translated). The next arguments are a short description, name of the author and copyright notice, date of creation and a specification of the valid image types (RGB* is a shortcut for "RGB and RGBA").
The subsequent entries specify the parameters, with additional information for the generated GUI. If the script registers in the hierarchy of the menu it has to accept an IMAGE and a DRAWABLE as its first two arguments. They get filled by The GIMP's framework.
Further parameters are optional. You can specify SF-COLOR for colors, SF-TEXT for text and some other stuff. A complete list of all available parameter types is in the test-sphere.scm script, delivered with The GIMP source code.
These specifications get translated in a nice GUI when the user invokes the Script via the Menu. SF-COLOR gets connected to a color selector, SF-FONT to a font selector. The ADJUSTMENT Parameters accept a list that defines the behaviour of the GUI: '(default_value, lower_bound, upper_bound, small_increment, big_increment, prescision, slider_or_entry).