Commit graph

681 commits

Author SHA1 Message Date
lloyd konneker
3c197d9578 ScriptFu: scripts: fix two test scripts affected by changes to object array in PDB API 2025-01-08 12:00:59 +00:00
Daniele Forsi
994137a82e Fix spelling errors found with codespell 2025-01-04 15:11:03 +00:00
Jehan
aa2d35c5fc app, pdb, plug-ins: replace (plug-in-bump-map).
For plug-in writers reference, these are equivalent:

- (plug-in-bump-map RUN-NONINTERACTIVE img drawable bump-layer azimuth elevation depth 0 0 0 0 FALSE FALSE 0)
+ (let* ((filter (car (gimp-drawable-filter-new drawable "gegl:bump-map" ""))))
+   (gimp-drawable-filter-configure filter LAYER-MODE-REPLACE 1.0
+                                   "azimuth" azimuth "elevation" elevation "depth" depth
+                                   "offset-x" 0 "offset-y" 0 "waterlevel" 0.0 "ambient" 0.0
+                                   "compensate" FALSE "invert" FALSE "type" "linear"
+                                   "tiled" FALSE)
+   (gimp-drawable-filter-set-aux-input filter "aux" bump-layer)
+   (gimp-drawable-merge-filter drawable filter)
+ )

The "type" argument now uses strings.

This commit also do a big cleanup of remaining now-unused helper
functions in the compat PDB code.
2024-12-17 16:24:54 +00:00
Jehan
e2d7cc163e app, pdb, plug-ins: replace (plug-in-displace).
For plug-in writers reference, these are equivalent:

- (plug-in-displace RUN-NONINTERACTIVE work-image frame-layer
-                   x-displacement y-displacement
-                   TRUE TRUE aux1 aux2 abyss))
+ (let* ((abyss "black")
+        (filter (car (gimp-drawable-filter-new frame-layer "gegl:displace" ""))))
+
+   (if (= edge-type 1) (set! abyss "loop"))
+   (if (= edge-type 2) (set! abyss "clamp"))
+
+   (gimp-drawable-filter-configure filter LAYER-MODE-REPLACE 1.0
+                                   "amount-x" x-displacement "amount-x" y-displacement "abyss-policy" abyss
+                                   "sampler-type" "cubic" "displace-mode" "cartesian")
+   (gimp-drawable-filter-set-aux-input filter "aux" aux1)
+   (gimp-drawable-filter-set-aux-input filter "aux2" aux2)
+   (gimp-drawable-merge-filter frame-layer filter)
+ )

I also changed a test which (I think) was just a no-op since do-x and
do-y were 0 0 (hence FALSE). Therefore the whole filter processing was
ignored. Note though that unlike the rippling animation filter, I
haven't tested the test script.
2024-12-17 16:24:54 +00:00
Jehan
1fbd2acc84 app, pdb, plug-ins: get rid of (plug-in-rotate).
It can be reimplemented with (gimp-image-rotate) and
(gimp-item-transform-rotate-simple), with even more capabilities for the
latter.

The item rotate procedure is a bit more tricky though, since it takes
into account the selection. It means that either you want to just remove
the selection before (that's what I did here, because this script was
already losing the selection anyway), or you want to store the selection
(with (gimp-channel-copy)), then reapply it (very likely with
(gimp-channel-combine-masks)) at the end, after also rotating it
appropriately the same way as the image if needed.
2024-12-17 16:24:54 +00:00
Jehan
c26b2cd08f app, pdb, plug-ins: replace (plug-in-noisify).
For plug-in writers reference, these are equivalent:

- (plug-in-noisify RUN-NONINTERACTIVE theImage mLayer TRUE r g b a)
+ (gimp-drawable-merge-new-filter mLayer "gegl:noise-rgb" 0 LAYER-MODE-REPLACE 1.0
+                                 "independent" TRUE "red" r "green" g "blue" b "alpha" a
+                                 "correlated" FALSE "seed" (msrg-rand) "linear" TRUE)

Notes:

* When "independent" is FALSE, then you only need to set "red" (which is
  equivalent to a "value" field) and "alpha".
* Original plug-in was using the second value ('g', a.k.a. noise_2 in
  the PDB args) as alpha when the source drawable was grayscale. This
  logic is meaningless now. Just set "alpha".
* The PDB procedure was wrapping the operation between
  "gegl:cast-format" nodes to cast the input buffer to linear. This is
  useless as the "gegl:noise-rgb" has already a "linear" argument
  (defaulting to TRUE, but I specify it explicitly in this commit, for
  clarity) which requests linear input when set.
2024-12-17 16:24:54 +00:00
Jehan
dc4daa8396 app, pdb, plug-ins: replace (plug-in-emboss).
For plug-in writers reference, these are equivalent:

- (plug-in-emboss RUN-NONINTERACTIVE img mask-emboss 315.0 45.0 7 TRUE)
+ (gimp-drawable-merge-new-filter mask-emboss "gegl:emboss" 0 LAYER-MODE-REPLACE 1.0 "azimuth" 315.0 "elevation" 45.0 "depth" 7 "type" "emboss")

Note: the last arg, emboss, must be replaced by a string, "emboss" when
it was TRUE, "bumpmap" when FALSE.

Similarly to "gegl:gaussian-blur", the call to wrap_in_gamma_cast() was
useless because "gegl:emboss" already sets its output format to linear,
as well as its input format (through GeglOperationAreaFilter parent
class).
2024-12-17 16:24:54 +00:00
Jehan
cba5b2c4c6 plug-ins: fix a call to (gimp-drawable-offset).
GIMP_OFFSET_BACKGROUND doesn't exist since commit 2770cce833 and was
replaced by GIMP_OFFSET_COLOR + a specific GeglColor added in
gimp_drawable_offset().
2024-12-17 16:24:54 +00:00
Jehan
1c4a00de78 app, pdb, plug-ins: replace (plug-in-gauss).
For plug-in writers reference, these are equivalent:

- (plug-in-gauss RUN-NONINTERACTIVE image layer hblur vblur 0)
+ (gimp-drawable-merge-new-filter layer "gegl:gaussian-blur" 0 LAYER-MODE-REPLACE 1.0 "std-dev-x" hblur "std-dev-y" vblur "filter" "auto")

Note: the method arg { AUTO (0), FIR (1), IIR (2) } is transformed into
a string in lowercase. E.g. 1 becomes "fir".

At first, I was a bit annoyed by the wrap_in_gamma_cast() call which
converts the buffer to linear first, but looking at "gegl:gaussian-blur"
implementation, it is just a meta op to 2 "gegl:gblur-1d" which anyway
sets input format (to various formats, but always linear).

This legacy cast code must be a remnant from older times where it might
have been needed. Clearly it's not anymore.
2024-12-17 16:24:54 +00:00
Jehan
082ba3bb1f app, pdb, plug-ins: replace (plug-in-waves).
For plug-in writers reference, these are equivalent:

- (plug-in-waves RUN-NONINTERACTIVE
-                image
-                source-layer
-                amplitude
-                phase
-                wavelength
-                0
-                FALSE)
+
+ (let* (
+       (phi phase)
+       (width (car (gimp-drawable-get-width source-layer)))
+       (height (car (gimp-drawable-get-height source-layer)))
+       (aspect (/ width height))
+       )
+
+   (while (< phi 0)
+     (set! phi (+ phi 360.0))
+   )
+   (set! phi (/ (- (modulo phase 360.0) 180.0) 180.0))
+
+   (if (< aspect 0.1)
+     (set! aspect 0.1))
+   (if (> aspect 10.0)
+     (set! aspect 10.0))
+   (gimp-drawable-merge-new-filter source-layer "gegl:waves" 0 LAYER-MODE-REPLACE 1.0 "amplitude" amplitude "phi" phi
+                                                                                      "period" (* wavelength 2.0)
+                                                                                      "clamp" TRUE "aspect" aspect)
+ )

Notes:

* The old type argument is the negated value of "clamp".
* The last argument (reflective) was unused.
2024-12-17 16:24:54 +00:00
Jehan
c70ffcec91 app, pdb, plug-ins: replace (plug-in-threshold-alpha).
For plug-in writers reference, these are equivalent:

- (plug-in-threshold-alpha RUN-NONINTERACTIVE image layer threshold))
+ (gimp-drawable-merge-new-filter layer "gimp:threshold-alpha" 0 LAYER-MODE-REPLACE 1.0 "value" (/ threshold 255))

The main difference is that threshold arg was a [0; 255] int whereas
"value" is a [0.0; 1.0] double.

This commit also shows how to run filters in C plug-ins (file-ico here)
as a one-liner too, thanks to the varargs conviency function.
2024-12-17 16:24:54 +00:00
Jehan
3c0c4db614 app, pdb, plug-ins: replace (plug-in-spread).
For plug-in writers reference, these are equivalent:

- (plug-in-spread RUN-NONINTERACTIVE image layer inSpread inSpread)
+ (gimp-drawable-merge-new-filter layer "gegl:noise-spread" 0 LAYER-MODE-REPLACE 1.0 "amount-x" inSpread "amount-y" inSpread "seed" (msrg-rand))
2024-12-17 16:24:54 +00:00
Jehan
5af02d292a app, pdb, plug-ins: replace (plug-in-solid-noise).
For plug-in writers reference, these are equivalent:

- (plug-in-solid-noise RUN-NONINTERACTIVE image layer FALSE TRUE seed 2 2 2)
+ (let* ((width  (cadddr (gimp-drawable-mask-intersect layer)))
+        (height (caddr (cddr (gimp-drawable-mask-intersect layer)))))
+   (gimp-drawable-merge-new-filter layer "gegl:noise-solid" 0 LAYER-MODE-REPLACE 1.0 "tileable" FALSE "turbulent" TRUE "seed" seed
+                                                                                     "detail" 2 "x-size" 2.0 "y-size" 2.0
+                                                                                     "width" width "height" height)
+ )
2024-12-17 16:24:54 +00:00
Jehan
093b09ccc6 app, pdb, plug-ins: replace (plug-in-oilify).
For plug-in writers reference, these are equivalent:

- (plug-in-oilify RUN-NONINTERACTIVE image active-layer mask-size 0)
+ (gimp-drawable-merge-new-filter active-layer "gegl:oilify" 0 LAYER-MODE-REPLACE 1.0 "mask-radius" (max 1 (/ mask-size 2)) "use-inten" FALSE)
2024-12-17 16:24:54 +00:00
Jehan
dfeab826ce app, pdb, plug-ins: replace (plug-in-maze).
For plug-in writers reference:

- (plug-in-maze RUN-NONINTERACTIVE image active-layer 5 5 TRUE 0 seed 57 1)
+ (gimp-drawable-merge-new-filter active-layer "gegl:maze" 0 LAYER-MODE-REPLACE 1.0 "x" 5 "y" 5 "tileable" TRUE "algorithm-type" "depth-first"
+                                                                                   "seed" seed
+                                                                                   "fg-color" (car (gimp-context-get-foreground))
+                                                                                   "bg-color" (car (gimp-context-get-background)))

Notes:

* FG and BG colors were hardcoded to current context colors. It also
  means with the new API, you can use whatever else you want.
* The algorithm arg changes like this:
  - 0 -> "depth-first"
  - 0 -> "prim"
* multiple and offset args (the 2 last args) were bogus and were doing
  nothing already.
2024-12-17 16:24:54 +00:00
Jehan
7e81bdfa14 app, pdb, plug-ins: replace (plug-in-edge).
For plug-in writers reference:

- (plug-in-edge RUN-NONINTERACTIVE image layer 2 1 0)
+ (gimp-drawable-merge-new-filter layer "gegl:edge" 0 LAYER-MODE-REPLACE opacity "amount" 2.0 "border-behavior" "loop" "algorithm" "sobel")

The warpmode (before-last) arg has to be replaced like this (types from
GeglAbyssPolicy enum type):

* NONE (0)  -> "none"
* WRAP (1)  -> "loop"
* SMEAR (2) -> "clamp"
* BLACK (3) -> "black"

For edgemode (last arg), just use the name value in lowercase as string:
{ SOBEL (0), PREWITT (1), GRADIENT (2), ROBERTS (3), DIFFERENTIAL (4), LAPLACE (5) }
E.g. "differencial" instead of formerly 4.
2024-12-17 16:24:54 +00:00
Jehan
4cc50c6701 app, pdb, plug-ins: replace (plug-in-cubism).
For plug-in developers reference:
- (plug-in-cubism RUN-NONINTERACTIVE image layer tile_size saturation 0)
+ (gimp-drawable-merge-new-filter layer "gegl:cubism" 0 LAYER-MODE-REPLACE 1.0 "tile-size" tile_size "tile-saturation" saturation "bg-color" '(0 0 0))

Now you can even choose the bg-color (not just an int/enum of black and
background color only).
2024-12-17 16:24:54 +00:00
Jehan
f539f8fb62 app, libgimp, pdb, plug-ins: plug-in-c-astretch compat PDB proc removed.
For plug-in writers, here is how to replace it:

- (plug-in-c-astretch RUN-NONINTERACTIVE img drawable)
+ (gimp-drawable-merge-new-filter drawable "gegl:stretch-contrast" 0 LAYER-MODE-REPLACE 1.0 "keep-colors" FALSE)
2024-12-17 16:24:54 +00:00
Jehan
6ac920542e Issue #11653: Revise plug-in procedures that convert parameters from…
… legacy to gegl parameters.

This commit removed 57 legacy PDB procedures which were replacing
outdated plug-ins (before transformed into GEGL ops) as far as I
understand.

These were all kept only as a legacy compatibility layer for third-party
scripts. Since we are breaking API anyway, let's remove as many as we
can. I've only kept the few which are still used at least once in our
core scripts or plug-ins.

Now as pippin notes, we still have no easy way to quickly run GEGL ops
on drawables in script-fu. Though we have at least access to GEGL API
for C plug-ins and all GObject-Introspected bindings. But that's true
for all other ops anyway.

I guess what should happen (quickly-ish) after 3.0 release is a libgimp
utility function which does the heavy lifting of creating a GEGL graph
for us, and for script-fu probably a special-case binding or something.
2024-11-03 18:56:33 +01:00
Alx Sa
c093837bda scripts, pdb: Consolidate gauss and pixelize compat functions
Currently there are 5 separate plug-in-gauss
functions. IIR2 and RLE2 are not used, and
IIR and RLE are identical to each other.
Additionally, they all call a separate
gaussian_blur () function which multiples
two parameters by 0.32 to convert to the
actual GEGL operation.

This patch removes all functions except
for plug-in-gauss. It converts each
existing script that used one of the other
variants to use plug-in-gauss, and
multiples the coefficients by 0.32 so that
plug-in-gauss behaves the same as calling
gegl:gaussian-blur with a C plug-in.

There also exists a plug_in_pixelize2 ()
function in the PDB which allows the user to set
both the pixel width and height.
This patch converts this to become
plug_in_pixelize (), and removes the older
function which used a single width
parameter for both values.
2024-10-28 04:39:39 +00:00
lloyd konneker
bdcf1ba22f ScriptFu: scripts: add Clothify v2 back as a test plugin
After we converted most scripts in the repo to use new registration functions,
there are no *filters* left from version 2.

But version 2 filters are still supported, with a warning
to the console like "image procedures ... only one drawable ... are deprecated."

A version 2 filter uses
the deprecated registration function script-fu-register
and declares args img and drawable (singular) explicitly
(contrary to encouraged multi-layer capable.)

Until we actually obsolete scripts of this ilk,
we need this test plugin for testing.
2024-10-26 07:08:44 -04:00
Jehan
e3bdce7c5d plug-ins: port script-fu scripts to the new array handling.
These are most (all?) of the broken scripts. At least I hope so! 😅
2024-10-25 23:31:42 +02:00
lloyd konneker
0db5f7dd72 ScriptFu: add compatibility scripts for third party scripts
For some symbols defined or deprecated in GIMP 2 and obsolete in GIMP 3.

ScriptFu automatically loaded these definitions
during development of GIMP 3 (from 2.99 to 3.0rc1).
That is no longer the case.

A third-party script CAN load them explicitly.
We discourage that, for scripts to be shared,
but it is convenient for private use.

PDB-compat-v2.scm is also an executable definition of renamings,
useful as a cross check of published documents re porting plugins
from v2 to v3.
2024-10-25 13:56:36 +00:00
lloyd konneker
b70fad8c94 ScriptFu: rename the init scripts to have suffix .scm
So an editor recognizes them.

Renames script-fu.init to init.scm since that is a Scheme convention.
Scheme interpreter maintainers expect that name.
The same name as upstream TinyScheme.
2024-10-25 13:56:36 +00:00
lloyd konneker
b4a67b661f ScriptFu: move init scripts to separate directory /scripts/scriptfu-init
When mingled with plugin scripts, they needed a non-standard suffix .init.
Which makes an editor not recognize them.
Which deviates from Scheme convention for the main init script: init.scm.

The separate directory is also a place for script authors
to put Scheme scripts they don't want loaded automatically,
but when a script calls Scheme load function.

No change to observable behavior in the app or ScriptFu tools.
2024-10-25 13:56:36 +00:00
lloyd konneker
fd7b029471 ScriptFu: tests: add test: scripts non-interactive call other script plugins
This is rarely done.
Most script plugins call PDB functions that are GIMP INTERNAL (gimp-foo)
or filter plugins that wrap Gegl filters (plug-in-foo).
But a Scheme script plugin can call other script plugins (script-fu-foo).

When a script does call another script,
it can be within the interpreter (purely in Scheme),
or to an interpreter in another process (via the PDB, with binding.)

It can get complicated using the optional v3 binding of return values.

This tests and illustrates different cases.
2024-10-22 15:18:50 -04:00
lloyd konneker
0c5a716fe8 ScriptFu: scripts: fix scripts that used now obsolete functions from the SIOD dialect
Mostly one word substitutions.

A few function definitions were moved to the scope of
a single script that used them.
Those functions won't be available to third party scripts
except now by cut and paste.

For major release 3.0.
2024-10-22 15:18:50 -04:00
lloyd konneker
e4372897fa ScriptFu: revert removal of certain compatibility definitions for SIOD
When the function is not trivially substituted with  a call to a Scheme R5RS function.
In other words, compatibility definitions that are not just an alias from SIOD to R5RS
Scheme dialects.

The prior removal was based on comments in the code,
saying the functions could easily be removed.
It turns out the functions are used in the repo, and not easily replaced.

Third party scripts may suffer the same dilemma:
use SIOD functions that are not trivially replaced.
This commit only fixes the dilemma for the scripts in the GIMP repo.

Reverted and kept:
  *pi* symbol for math constant
  cons-array an obscure function of unknown origin
  butlast a function in some Scheme dialects but apparently not in R5RS

These MIGHT be removed in the future, with more work.
2024-10-22 15:18:50 -04:00
lloyd konneker
38220ec9eb ScriptFu: obsolete compatibility scripts for SIOD dialect and older PDB
For major release 3.0

SIOD dialect was used before GIMP 2.4 circa 2006.

Two deprecated PDB adaptors removed, one dealing with multi-layer select.
2024-10-22 15:18:50 -04:00
lloyd konneker
1889f554d7 ScriptFu: scripts: revert changes to SF-TOGGLE args
Prior commits porting these scripts to v3 dialect
incorrectly compared SF-TOGGLE args to #t and #f.
They are bound to TRUE and FALSE, 1 and 0,
before choice of dialect can take effect.
2024-10-13 14:28:46 -04:00
Alx Sa
67fd22d0c2 scripts: Port 'Set Colormap' to use gimp-image-set-palette
Resolves #12108
This use of gimp-image-set-colormap was missed during
the API change in 3bfda4f1.
2024-10-02 23:28:12 +00:00
Anders Jonsson
6c98bfdc8a script-fu: mark label for translation 2024-09-29 14:34:47 +00:00
Jehan
3051796f3e app, libgimp, pdb, plug-ins: merge gimp_channel_new() in libgimp and PDB.
Why have 2 functions if one is basically just redirecting to the other.
All we needed to do was to reorder the PDB args.
2024-09-29 12:27:49 +02:00
lloyd konneker
771dd219f6 ScriptFu: rename script-fu-register-regular => -procedure
As suggested by reviewers, use a better word.
Regular denotes size.
Procedure is the same word used in the classes in the code.
Procedure denotes a general procedure, without specialization.

Renames only where visible externally by script authors.
Internally, some functions are still named "_regular".
That can be changed later as a style issue.
2024-09-27 14:35:50 +00:00
lloyd konneker
96e02122b8 ScriptFu: plugins: port to script-fu-register-regular
Ported all supported/shipped Scheme plugins in the repo
that formerly called script-fu-register.
No test plugins were ported.

The plugins now use the new dialog, GimpProcedureDialog.

These are the plugins that are not filters i.e. not GimpImageProcedure,
which were ported earlier to script-fu-register-filter.

The test plugin Demo>Sphere demonstrates that while script-fu-register
is now deprecated, it still works, showing the old dialog.

Misc bug fix to prior commits.

Misc porting of same plugins to v3 binding of PDB return values.

Misc fixes: invalid default font names, and deprecated PDB calls.
2024-09-27 14:35:50 +00:00
lloyd konneker
d0a6c4c758 ScriptFu: add Scheme language function script-fu-register-regular
Building on prior commits, with a few small fixes to them.

First demonstrable changes towards #12605.

Font map plugin is ported as a test case.

Old-style plugins using script-fu-register still work.
2024-09-27 14:35:50 +00:00
lloyd konneker
4ffc99b75d ScriptFu: fix 8463 obsolete SF-VALUE
Any third-party scripts using SF-VALUE will need porting.
2024-09-27 06:41:29 -04:00
Alx Sa
439a5c9831 scripts: Remove last use of SF-VALUE
This patch replaces SF-VALUE in burn-in-anim.scm with
SF-ADJUSTMENT, allowing us to deprecate and remove
SF-VALUE from the API.
2024-09-24 13:12:25 +00:00
lloyd konneker
697efa72aa Plugins: fix old font defaults giving missing resource warnings
A plugin declaring a default font that is invalid warns at startup.
No such plugins should be installed by GIMP, even for a testing build.
2024-09-20 10:34:41 -04:00
lloyd konneker
653cca0993 Plugins: Stain, convert to v3 ScriptFu binding of PDB return values
Easier to read, more canonical Scheme
2024-09-20 10:58:50 +00:00
lloyd konneker
eb57122365 Plugins: fix Stain plugin call to changed Distress Selection plugin
Symptom is "Arg 3 invalid or out of range".  Issue not formally reported.

Broke because Distress Selection plugin signature changed: arg Threshold type Int=>Float
2024-09-20 10:58:50 +00:00
lloyd konneker
d67676a48b Plugins: Decor>Stencil Chrome use v3 binding and style changes
No intended change to function.
Style changes for easier reading.

Use v3 binding of PDB returns (elide many car), TRUE=>#t, etc.

Also condense trailing right parens to one line
2024-09-18 11:34:18 -04:00
lloyd konneker
4f9a860569 Plugins: Decor>Stencil Chrome: relax image mode requirements (sensitivity)
Was "GRAY" without alpha.
Now "*" i.e. any image mode, w or w/o alpha.
The effect is more or less the same,
and should be exactly the same if the user submits a GRAY.
2024-09-18 11:34:18 -04:00
lloyd konneker
dd241e9c71 Plugin: Stencil Chrome: allow user not to choose a secondary image
When the user does not choose a file of a secondary image,
use a copy of the primary image as the secondary image.
Rather than throw an error.
The filter still has effects, if not quite the same as when user
chooses a secondary image that is not the primary image.
2024-09-18 11:34:18 -04:00
Alx Sa
290e46b912 script-fu: Fix missing label in Distress Selection
Since the port to GimpProcedureDialog,
the Threshold label was not being shown
due to it accidentally having an invalid
tag, <-->.
This patch renames it to just "Threshold"
and updates the range to be clearer,
which was the purpose of the original
extended label.
2024-09-17 11:15:13 +00:00
Alx Sa
165f616fb7 script-fu: Port image scripts to GimpProcedureDialog 2024-09-12 19:01:15 +00:00
Alx Sa
74c272ce69 script-fu: Port lava.scm to GimpProcedureDialog
Resolves #10822

After improvements by Lloyd Konneker and Jehan,
Script-fu's implementation of GimpProcedureDialog retains
defaults for GimpResources.
This patch ports lava.scm to use the new API, and also switches
the default gradient to Incandescent.
2024-09-08 01:38:41 +00:00
lloyd konneker
cb1a46511a ScriptFu: fix #11954 err call PDB file-export-foo type GimpExportOption
GimpExportOptions is incomplete.
It exists so the API is stable.
For now, ScriptFu eat and ignore actual args,
binding to NULL, in calls to PDB procedures
file-export-foo having formal args of this type.

Unlikely that in the future ScriptFu will do anything else:
if a plugin needs export options, use another language.
The few file exporters used by existing ScriptFu scripts
(file-gbr-export and file-pat-export)
don't honor export options.
2024-08-28 09:35:38 -04:00
Anders Jonsson
5422c8829d script-fu: fix gettext extraction
Gettext treats #! in scheme files as a comment start
and needs a !# for the comment to end, otherwise it skips
the whole file.
2024-08-12 09:24:13 +00:00
Jehan
34af64b70f extensions, plug-ins: fixing CamelCase on the "Plug-In Examples" items.
First of all: sorry to all translators who started working on these new
strings!

We use CamelCase for our titles, and in particular "Plug-In" is
capitalized with 'I'.

Furthermore, let's use understandable titles like "Plug-In Example in C"
and not just "In C", because while the short title works OK in the menu,
it makes for very broken action names in non-contextual parts of the
software, such as the action search.

Note that we in fact have a concept of short label for actions since
commit 89772351c9. I added support for it to GEGL actions (cf. commit
6dc5f6792e), and to a few core actions (e.g. commit ea1205f094).
Unfortunately I don't think I added an API yet for short label in
plug-ins. Maybe I'll add it soon. But for now, if we have to have a
single label, it should be long, so that it works in every situation.

P.S.: not sure if it's useful to keep documentation strings just
repeating the title, but for now, let's leave them.
2024-08-10 23:33:57 +02:00