[TRACKING] Enhance GimpProcedureDialog
This describes planned enhancements for GimpProcedureDialog.
This roadmap assumes that we don't obsolete features of GIMP 2 plugins with regard to plugin dialogs. Some of the features might be rarely used.
-
!710 (merged): show int combo box for statically defined enums. -
!722: show int combo box for "mock enums". Mock enums are declared by plugin procedures by declaring an arg of type int, and putting a formatted string in the blurb of the G_PARAM_SPEC_INT. Known in v2 as PF-OPTION or SF-OPTION kind of arguments -
!722: Fix ScriptFu to declare mock enums (creating proper blurb) -
!724: show chooser widgets for images and GIMP item objects (Drawable, Layer, Vectors, Channel) -
!740 (merged): show chooser widgets for GIMP resource objects (Brush, Pattern, Gradient, Font, Palette.). This probably entails defining new GIMP_PARAM_SPEC_RESOURCE. These resources are identified by a string name. A brush is a little more involved. -
!771 (merged): Fix ScriptFu to declare args for GIMP resource objects (now it just declares string args.) (linked !771 (merged) because it seems to be the last MR that touched this code in ScriptFu) -
!786 (merged) -
#9270 (closed) -
#9250: fix plugins (Python and ScriptFu) to use GimpProcedureDialog(tracked at #9250) -
write a test Python plugin that exercises the full set of PF_ constants from v2 PyGimp (expect GimpProcedureDialog to show a widget for each), since "Sphere v3" doesn't show proper widgets.
Background
In GIMP 2, both PyGimp and ScriptFu implemented their own GUI dialogs.
In GIMP 3, the new GimpProcedureDialog is intended to show dialogs for plugins, including Python, ScriptFu, and any other plugin language. Obsoleting the separate GUI implementations in PyGimp and ScriptFu.
A plugin procedure declares its formal arguments. Since v3, using properties. The metadata for a formal arg is a GParamSpec. The properties describing arguments are GParamSpec. The settings for a procedure (the last used and default values) are in a GimpConfig, also having properties that are GParamSpec.
The widgets in GProcedureDialog are PropWidgets, that directly edit a value in a property that is a GParamSpec. The enhancement entails implementing new PropWidgets where missing. A PropWidget wraps an underlying widget, binding the edited value to a property. The underlying chooser widgets already exist.
A factory might be used to create prop widgets, since the products are similar for the set of Gimp item objects, and the set of Gimp resource objects.