04-22-2021, 09:00 PM
(This post was last modified: 04-22-2021, 10:27 PM by programmer_ceds.)
(04-22-2021, 08:08 PM)Ofnuts Wrote: AFAIK the API in Gimp3 is very different. The Gimp2 PDB was mostly a way to mimic the Scheme API but it is removed in Gimp3 (instead you talk more directly to the Gimp and Gegl APIs, but the objects classes have a much more complete set of methods). So the rewrite effort comes more from the Gimp2 ➤ Gimp3 change than from the Python2 ➤ Python3 one.
My main worry is that AFAIK you no longer have the auto-generated parameter dialogs, so you have to cook up your own dialog for every plugin you create and this can take a lot more time than writing the plugin code itself. One of the devs mentioned that there will be specialized widgets to display Gimp-specific data (active images, layers, brushes, etc...) but I have not yet seen some example code for this (but I haven't refreshed my Gimp3 for a while).
Also, one wonders about built-in Python support in Windows....
Assuming that V2.99.4 is representative of V3.x.x then there is little problem with .scm scripts - the main change being that the scripts and the menu entries have to be registered separately. The auto-generated UI dialog is still present (I have seen erroneous posts on other sites that suggest that this is not the case). Also the .scm files that have been updated for V2.99.4 still run on V2.10.24 - so no need to maintain two versions. (There was one script that needed code to check the GIMP version and then to use gimp-procedural-db-proc-exists in V2.10 and gimp-pdb-proc-exists in V2.99.x/V3.x.x but in all of the other scripts the same functions applied to both V2.10 and V2.99)
The Goat exercise Python code provides an example of how to generate the dialog and how to call GIMP functions and I was assuming that as it was provided as an example it would work - which leads me to suspect that either I haven't installed V2.99.4 flatpak correctly (although I followed the instructions provided by GIMP) or that the flatpak version doesn't support Python.