Commit Graph

43730 Commits

Author SHA1 Message Date
Jehan afe0bcbc58 libgimpwidgets: introspect libgimpwidgets.
Only leave behind gimpcolorscale, gimpcolorscales and gimpcolorselect
for now. There are some GI compilation errors and I don't have the time
right now to look into it. Most of libgimpwidgets is available to GI
bindings now anyway.
2019-07-30 12:53:15 +02:00
Michael Natterer 1a8d300994 pdb: remove an obsolete snippet from lib.pl 2019-07-30 12:16:04 +02:00
Michael Natterer af5c587e21 pdb, libgimp: port lib.pl to the new GType based libgimp API
All foo_pdb.c functions in libgimp regenerated. I have reviewed this a
dozen times, but please have a look, there might well be glitches and
our public API is sortof important...
2019-07-30 10:51:16 +02:00
Michael Natterer a0ee939dff pdb: "gtype", "dup_value_func" and "take_value_func" to all PDB types
so we have the toolkit for generating proper GType-based code in
libgimp. This commit changes no code yet.
2019-07-30 10:39:56 +02:00
Michael Natterer ee0b06cbf1 libgimp: remove all validation code from gimp_value_set_foo_id()
Validation is not the job of a GValue setter, we have the GParamSpec's
value_validate for that. Also, we will use the new GType-based API in
the libgimp PDB wrappers soon, and it's really a bad idea to
implicitly call e.g. gimp_image_is_valid() from the generated
gimp_image_is_valid() wrapper.
2019-07-30 10:28:26 +02:00
Michael Natterer e9443b2561 libgimpbase: add gimp_value_array_new_from_types()
and _new_from_types_valist()

which take a va_list of GTypes and creates a GimpValueArray
initialized with these types, so one can simply have a list of

g_value_set_foo (gimp_value_array_index (array, i), foo);

in the next lines. I'm not so sure this is the best API ever...
2019-07-30 10:26:08 +02:00
Michael Natterer 9e50f1ed8f libgimpbase: NULL-terminate the result of gimp_value_dup_string_array()
so it can be free'd with g_strfreev().
2019-07-30 01:38:07 +02:00
Jehan aab75bb1d0 plug-ins: install the pygimp.interp file.
Python scripts should already properly run, whether you run them with a
direct python shebang or a `env python` one (cf. previous commit). But
it's still nice to install a `.interp` file, which allows to control
exactly the interpreter to use, overriding the shebang. With this file,
Python scripts will use installation-time Python interpreter.

Also update old code to make the interp contents about Python 3 instead
of 2.
2019-07-29 14:28:29 +02:00
Jehan 9e844ae1d7 app: when interpreter not found in interpreter DB, leave shebang as-is.
In particular, if the shebang is `#!/usr/bin/env lang` and we have not
registered a specific interpreter for `lang`, the system should leave
the env tool search the right interpreter for us. We only bypass env
when we set our own explicit interpreter.

Apply this to palette-to-gradient.py plug-in.
2019-07-29 14:11:25 +02:00
Michael Natterer 9a547c14d5 libgimp: add preliminary function gimp_run_procedure_with_array()
which takes and returns GimpValueArrays. This or something similar is
the new central function for running core procedures. Use the new
function from gimp_run_procedure2().
2019-07-29 12:53:27 +02:00
Michael Natterer 39ee40b1f0 libgimp: pass the GimpValueArray to gimp_set_pdb_error()
not the cruft GimpParam array.
2019-07-29 12:42:47 +02:00
Michael Natterer 0402313e60 libgimp: forgot to enable one commented-out gimp_value_array_unref() 2019-07-29 12:33:08 +02:00
Michael Natterer 0a6f157d58 app, libgimp, libgimpbase: big plug-in API refactoring part three
- libgimpbase: change GPParam to transfer all information about the
  GValues we use, in the same way done for GPParamDef. GPParam is now
  different from GimpParam from libgimp, pointers can't be casted any
  longer. The protocol is now completely GimpPDBArgType-free. Remove
  gp_params_destroy() from the public API.

- libgimp: add API to convert between an array of GPParams and
  GimpValueArray, the latter is now the new official API for dealing
  with procedure arguments and return values, GimpParam is cruft (the
  wire now talks with GimpPlugIn more directly than with the members
  of GimpPlugInInfo, which need additional compat conversions).

- libgimp, app: rename gimpgpparamspecs.[ch] to simply
  gimpgpparams.[ch] which is also more accurate because they now
  contain GValue functions too. The code that used to live in
  app/plug-in/plug-in-params.h is now completely in libgimp.

- app: contains no protocol compat code any longer, the only place
  that uses GimpPDBArgType is the PDB query procedure implementation,
  which also needs to change.

- app: change some forgotten int32 run-modes to enums.
2019-07-29 12:22:58 +02:00
Jehan f74320d4dc Makefile: libgimpui also introspected. 2019-07-29 02:08:27 +02:00
Jehan 404ab1da46 po-python: deactivate pot generation on VPATH builds.
Also remove temporarily the non-ported Python plug-ins from POTFILES to
fix distcheck.
2019-07-29 02:05:25 +02:00
Michael Schumacher 732852a471 build: adding a .gitlab-ci.yml file for automated GitLab pipeline builds 2019-07-29 01:11:44 +02:00
Ell 41d3b478a2 configure.ac: s/GOBJECT_INTROSPECTION_CHECK/GOBJECT_INTROSPECTION_REQUIRE/
Make sure configure fails when introspection is not installed,
since we compile it unconditionally for now.
2019-07-29 02:02:04 +03:00
Jehan c63ae2f945 plug-ins: one more missing backslash.
Come on!
2019-07-29 00:15:56 +02:00
Jehan ee4e9bfee5 plug-ins: missing backslash broke EXTRA_DIST.
Because of this, EXTRA_DIST was empty, hence images and XML resource
file were missing from the distributed files.
2019-07-28 23:47:05 +02:00
Jehan 7e23ed454a libgimp: fix gimp.def.
A distcheck showed a bunch of missing functions, while others were
listed yet not exported.
2019-07-28 23:36:54 +02:00
Jehan 94b7348777 tools: port defcheck.py to Python 3.
This build-only file could theoretically still run with Python 2, but
since now we use Python 3, better not our build to require both Python 2
and 3.
2019-07-28 23:19:05 +02:00
Jehan f049267f15 m4macros: fixing Makefile.
python3dev.m4 replaces pythondev.m4 and introspection.m4 was added.
2019-07-28 23:08:15 +02:00
Jehan 0f0cf4df87 po-python: install again localization for Python plug-ins.
This used to be deactivated. Let's install them again.
Also activate localization in the palette-to-gradient plug-in.
2019-07-28 21:06:36 +02:00
Jehan 7444b8eb9c libgimpthumb: do not scan gimpthumb-enums.c for introspection.
gimpthumb-enums.c is a built source from the header. No need to scan it.
As a side effect, it fixes another build break as it could not recognize
the construction rule for this file.
Thanks to tmanni for raising these build issues.
2019-07-28 20:59:10 +02:00
Jehan 01e958422b libgimpthumb: argh! Copy paste error which broke the build. 2019-07-28 20:42:36 +02:00
Jehan ebc797a64e libgimp: update gimp.def.
How come I always forget this so annoying file?!
2019-07-28 20:02:40 +02:00
Jehan 65fb7536e1 plug-ins: port Python plug-in palette-to-gradient to introspected API.
Localization still doesn't work, but this is normal (po-python is not
installed). I will later make the proper tests for this.

Other than this, it is a pretty simple port. It lost all particularities
and facilities of pygimp, but the fact that it now works similarly to
the C API is quite nice too.
It still uses the legacy API for plug-ins though and will have to be
ported further when the new API will be stable.

Also I still haven't figured out why we need to return the number of
returned values. With the proper annotations, an array length parameter
disappears in introspected Python (because it is useless as Python lists
know their length). But it would seem that this annotation doesn't work
the same for returned values, which is a bit sad as it creates ugly
redundancy.

It can be noted that I an going to move all Python plug-ins from
plug-ins/pygimp/plug-ins/ to plug-ins/python/. The whole pygimp/
subdirectory will actually be deleted eventually (I keep it around for
now as reference) as Python plug-in should not need to be considered
particularly from now on. They can just be considered as generic
executables.
2019-07-28 18:43:00 +02:00
Jehan 521ff83cba configure: some Python test cleanup/improvements.
In particular, when header check fails, Python option is disabled.

Also let's use pkg-config to search for the Python include directory.
The reason is that include/python{version} is not always
true. On my system in particular, python3.7 was in `include/python3.7m`.
2019-07-28 18:43:00 +02:00
Akkana Peck 872aa50c56 Re-enable Python in the build, but requiring Python >3.6.0 since...
... we'll need that for gobject introspection
Edit by Jehan: don't actually re-enable pygimp, only do bring back the
Python 3 configure search.
2019-07-28 18:43:00 +02:00
Jehan 6b442a1ba3 app, pdb, libgimp: fix annotations of some PDB functions.
These are used in the first port of a Python plug-in which I am doing
right now.
2019-07-28 18:43:00 +02:00
Jehan 3a9ae8cc69 libgimp: API to create GimpParam from values.
The `data` property of a GimpParam is a union. Unfortunately setting a
union is not supported by GObject Introspection yet. So I create some
APIs to create GimpParam-s from values. Note that this is temporary API
(i.e. it may be removed before GIMP 3 release) since we likely won't use
this GimpParam type anymore with the new plug-in API. But for now, this
is necessary, at least for testing and porting Python plug-ins.

Also for GimpParam to be actually introspectable, I had to make it a
boxed type, but since no length information is available for various
variants of the type (arrays, whose length information is a separate
parameter), the copy and free functions are basically broken or leaking
respectively for all types requiring a length.

Bottom line: this is ugly and we really need a new introspectable
parameter type. But for now, it allows to start porting some of our
Python plug-ins.
2019-07-28 18:43:00 +02:00
Michael Natterer 624d091887 libgimpbase: use _gimp_write_read_color() and _write_color()
instead of dealing with the 4 doubles manually.
2019-07-28 18:00:42 +02:00
Michael Natterer 32ea28b6b1 app, libgimp, libgimpbase: plug-in and PDB protocol refactoring part two
- Change the wire protocol's GPProcInstall to transmit the entire
  information needed for constructing all GParamSpecs we use, don't
  use GimpPDBArgType in GPProcInstall but an enum private to the wire
  protocol plus the GParamSpec's GType name. Bump the wire protocol
  version.

- Add gimpgpparamspecs.[ch] in both app/plug-in/ and libgimp/ which
  take care of converting between GPParamDef and GParamSpec. They
  share code as far as possible.

- Change pluginrc writing and parsing to re-use GPParamDef and the
  utility functions from gimpgpparamspecs.

- Remove gimp_pdb_compat_param_spec() from app/pdb/gimp-pdb-compat.[ch],
  the entire core uses proper GParamSpecs from the wire protocol now,
  the whole file will follow down the drain once we use a GValue
  representation on the wire too.

- In gimp_plug_in_handle_proc_install(), change the "run-mode"
  parameter to a GParamSpecEnum(GIMP_TYPE_RUN_MODE) (if it is not
  already an enum). and change all places in app/ to treat it as an
  enum value.

- plug-ins: fix cml-explorer to register correctly, a typo in
  "run-mode" was never noticed until now.

- Add gimpgpcompat.[ch] in libgimp to deal with all the transforms
  between old-style wire communication and using GParamSpec and
  GValue, it contains some functions that are subject to change or
  even removal in the next steps.

- Change the libgimp GimpProcedure and GimpPlugIn in many ways to be
  able to actually install procedures the new way.

- plug-ins: change goat-exercise to completely use the new GimpPlugIn
  and GimpProcedure API, look here to see how plug-ins will look in
  the future, of course subject to change until this is finished.

- Next: changing GPParam to transmit all information about a GValue.
2019-07-28 17:34:40 +02:00
Jordi Mas 83d485d9c6 Update Catalan translation 2019-07-28 12:36:10 +02:00
Ell 5a500b4a12 app: use longer iteration inteval (= bigger chunks) when applyng an op
In gimp_gegl_apply_[cached_]operation(), use a longer iteration
interval (resulying in bigger chunks) when processing the op, than
the iteration interval used for rendering the projection.  In
particular, use an even longer interval when processing area
filters, since their may be particularly sensitive to the chunk
size (see, for example, issue #3711).  Likewise, use the asme
longer interval when not showing progress indication, since we
don't need to stay responsive in this case (but don't avoid
chunking altogether, to reduce the space required for intermediate
results).

This allows us to process an op faster when committing a filter,
while still remaining responsive (if overall slower) during
preview.
2019-07-28 12:10:18 +03:00
Ell f6c4e4912a app: add gimp_gegl_node_is_area_filter_operation()
... which determines if a node is an area filter operation.  If the
node is a meta op, we conservatively return TRUE, as it may involve
an area-filter op.
2019-07-28 12:10:18 +03:00
Ell a1f676aabd app: in the gradient tool, set the graph's underlying node
... to the gimp:gradient node
2019-07-28 12:10:17 +03:00
Jehan ab6783902e libgimpbase: more (transfer) and (element-type) warnings fixed. 2019-07-28 10:09:46 +02:00
Jehan 74a0da9aa0 libgimpconfig: fix a few more warnings.
Fixes these sorts of warnings:
> return value: Missing (element-type) annotation
> return value: Missing (transfer) annotation
2019-07-28 09:50:20 +02:00
Jehan 4e99c25902 libgimpconfig: fix introspection in gimpcolorconfig.c.
Several returned values had no documentation, and needed in particular
(transfer) annotations.

Fixes various warnings:
> return value: Missing (transfer) annotation
2019-07-27 23:55:30 +02:00
Jehan c67fa791be GOI: add more introspected libraries as dependencies to ours.
This fixes various "Unresolved type" warnings.
2019-07-27 23:41:54 +02:00
Jehan fb4c86a660 libgimp*: make more libgimp* libraries introspected.
Only libgimpwidgets is not introspected yet as it didn't work from
scratch and I don't have the time right now to look into it. Anyway with
all the others, we already have so many warnings during the GObject
Introspection step now that we have a lot of work to do already!
2019-07-27 20:25:20 +02:00
Michael Natterer 3597e92a20 libgimpcolor: add gimp_param_spec_rgb_get_default() 2019-07-27 16:10:24 +02:00
Piotr Drąg 597f3e0916 Update Polish translation 2019-07-27 15:36:58 +02:00
Jordi Mas a375a744c7 Update Catalan translation 2019-07-27 12:10:08 +02:00
Jehan 2e03300eb7 desktop: new <release> appdata tag for GIMP 2.10.14. 2019-07-26 19:44:10 +02:00
Michael Natterer 0093487d33 libgimp: include the new file in gimp.h 2019-07-26 16:08:09 +02:00
Michael Natterer 427b01a634 libgimp: add GType and GParamSpec types for all IDs, like image, drawable
Same set of functions and types as in app/, but purely ID-based.
2019-07-26 16:05:11 +02:00
Michael Natterer d74ae12781 app: oops these two files were not meant to be pushed just yet 2019-07-26 16:02:33 +02:00
Michael Natterer 76ee0f6559 app, libgimpbase: move lots of GValue and GParamSpec types to libgimpbase
all the stuff from app/core/gimpparamspecs.[ch] that is not about
image, drawable etc IDs, these will have to go to libgimp with
different implementations than in app/.
2019-07-26 15:54:33 +02:00