Commit Graph

2380 Commits

Author SHA1 Message Date
1be4ec2100 libgimpbase: remove enum GimpBlendMode, it's not used any longer 2019-11-19 21:13:31 +01:00
5a37be083a libgimp: doc fixes and improvements in procedure subclasses 2019-10-29 22:15:58 +01:00
0da5f0ae7e libgimp: make GimpProcedureConfig handle the image comment automatically
in gimp_procedure_config_begin_export() and end_export(). It uses
both the "gimp-comment" parasite and gimp_get_default_comment() and
syncs them with the config's "comment" property if it has one.
2019-10-29 20:38:51 +01:00
c8bf85cc54 pdb: item.pdb: '3,0' is not a version, it's '3.0' 2019-10-27 18:56:53 +01:00
f7c7924564 libgimp: automatically handle the image comment in GimpProcedureConfig
as in, sync it with a "comment" property on the config if one
exists. Also allow gimp_procedure_config_begin_export() and
end_export() to skip GimpMetadata handling, for file formats which
don't support it.
2019-10-23 19:08:33 +02:00
c7c0397fbe libgimp: add gimp_procedure_find_argument(), aux_argument(), return_value() 2019-10-23 19:08:33 +02:00
5fe20497c5 libgimp: (meson) set GIMP_DISABLE_DEPRECATED for introspection.
No need to introspect deprecated API, especially for the new non-C APIs
after a major version update.
This also sync both the autotools and meson-generated GIR files.
See also #4018.
2019-10-20 16:47:40 +02:00
b8d8424ae0 app, libgimp*: (meson) fix all the generated *-enums.c.
More of the files were wrong, or at least not absolutely identical to
the files generated by the autotools. I am not doing any code change
other than trying to make both build systems produce identical files
(except for slight differences on 2 files not worth the effort) even
though maybe some things can be improved (especially on the include
list). Maybe to be improved later.

Also fixing 2 of the previously autotools-generated files because of
space typos which should have been committed earlier.

Finally it is to be noted that there is no logics to copy the generated
files back to the source directory in the meson rules. I am not sure
anyway this is really worth it and maybe we should just stop tracking
these generated files eventually.
2019-10-19 22:32:29 +02:00
69e993b24e libgimp: remove duplicate gimpprocedureconfig.c (meson).
This is listed twice and is not needed for libgimpui (not listed in
autotools build) and apparently it provokes introspection warnings on
MSYS2 builds.
Thanks to lillolollo and Massimo for debugging this.
2019-10-11 14:07:58 +02:00
cf6dae6f83 libgimp: fix a type cast warning (win32).
I had this warning when cross-building for Windows 64-bit:

> libgimp/gimpui.c:187:52: warning: passing argument 2 of
> 'gdk_win32_window_foreign_new_for_display' makes pointer from integer
> without a cast [-Wint-conversion]

> note: expected 'HWND' {aka 'struct HWND__ *'} but argument is of type 'guint32' {aka 'unsigned int'}
2019-10-10 14:13:49 +02:00
f59b0db0c8 app, libgimp: fix more unused function warning (Win32).
Similar to commit 9b328167ab. Apparently the same function is duplicated
into app/.
Also add some comments to detail a bit more where this Win32 different
comes from (i.e. bug 359538 on Bugzilla, commit eac61e1e12).

Moreover I tested the same steps as comment 4 in bug 359538 on master
code. The same hanging issue still exists with GTK+ 3.24.1 (in a Windows
VM at least). I have not investigated further, just wanted to check if
this ifndef could not simply be removed by now. Apparently not.
2019-10-10 14:11:40 +02:00
590681434b libgimp: sync autotools and meson to the same list of introspectable…
… headers.
gimpitem.h was missing, as noted (again!) by Massimo, which resulted
into introspected plug-ins errors (breaking parenting of classes).
2019-10-10 12:39:07 +02:00
8cf4b7a43a libgimp: reduce GObject Introspection warnings.
Thanks to Massimo for helping:

> To reduce the number of warnings down to 2, it is necessary to list
> gimptypes.h and gimpenums.h right after gimp.h and gimpui.h
> gimpuitypes.h at the start of libgimpui_headers_introspectable like
> they are in the corresponding list in Makefile.gi.
>
> Their order evidently matters

See #4018.
Some stuff are still wrong, but this is a first step in the right
direction.
2019-10-10 12:32:05 +02:00
2409b6f219 libgimp: manage boolean "save-comment" properties automatically
using the GimpProcedureConfig/GimpMetadata mechanism.
2019-10-10 01:30:29 +02:00
1c7028aaaa app, libgimp: add boolean "export-comment" gimprc property
export it to libgimp via GPConfig and add new API gimp_export_comment().
Bump the protocol version and improve variable names in both GPConfig
and libgimp/gimp.c.
2019-10-10 00:48:28 +02:00
7f2995d568 libgimp: improve docs for gimp_image_metadata_save_prepare()/finish() 2019-10-10 00:05:49 +02:00
8219092a6c libgimp: start integrating image export with GimpProcedureConfig
Add gimp_procedure_config_begin_export() and end_export() which
are wrappers around begin_run() and end_run() and additionally
pretty much completely manage GimpMetadata handling.

A GimpProcedureConfig can provide boolean properties "save-exif",
"save-xmp" etc. in order to have them automatically managed by
begin_export() and end_export(). This also restores the feature of
overriding the procedure's saved default values with export
preferences, but not the values from the last export, like it
used to be in 2.10.

Move gimp_image_metadata_save_prepare() and save_finish() (which are
now completely handled by GimpProcedureConfig) from libgimpui to
libgimp, but keep their declarations in the libgimpui header. Not
perfect, but not finished either.

Also fix gimp_image_metadata_save_prepare() to set the affected
GimpMetadataSaveFlags to 0 when the image has no metadata at all.
2019-10-09 22:50:03 +02:00
9b328167ab libgimp: fix unused function (Win32).
Fixes:
> libgimp/gimpui.c:402:1: warning: 'gimp_window_transient_realized' defined but not used [-Wunused-function]
2019-10-09 16:34:51 +02:00
68f9b540c7 libgimp: fix all GIMP_PROC_ARG,AUX_ARG,VAL_FOO() macros
They all had "class" as first argument (copied from gimpconfig-params.h)
and only worked accidentially because all functions they are used in
happen to have the right local "procedure" variable...
2019-10-02 22:17:37 +02:00
Ell
d17dc3112f libgimp: fix segfault in gimp_procedure_config_load_default() with NULL error 2019-10-02 20:51:59 +03:00
f87ae8cc6c libgimp: fix meson build. 2019-09-30 23:05:01 +02:00
e1a9b9242e libgimp: remove underscores from the procedure conifig load/save functions
They are needed by GimpProcedureDialog wich is in libgimp. Keep them
in the private header anyway for now.
2019-09-28 20:53:21 +02:00
45e96a0ff4 libgimp: improve handling of procedure default values a lot
Add internal GimpProcedureConfig API to load/save "default values"
which are to be treated as if they were the hardcoded GParamSpec
defaults, but user-configurable. Also make all other load/save
functions available to other libgimp files.

In gimp_procedure_run(), if incomplete arguments are passed, don't
just complete them with the GParamSpec defaults, but look up the
user-saved defaults and use them if they exist. This happens before
everything else and brings back the PNG export feature of using
user-saved defaults also in non-interactive mode (but for all
procedures not just PNG export).

In GimpProcedureDialog, add "Load Defaults" and "Save Defaults"
buttons, they are the only way of managing the user-configurable
procedure defaults.

When clicking "Reset", show a popover with the reset options "Initial
Values" and "Factory Defaults".
2019-09-26 19:26:23 +02:00
9cb62f5f9a libgimp: move "image" and "run_mode" from gimp_procedure_config_end_run()
and remember them internally between begin_run() and end_run().
Simplifies plug-in code even more.

Move the begin_run() before gimp_export_image() block in all export
plug-ins.
2019-09-26 00:44:52 +02:00
cb40cfd10e Issue #3983 - gimp_get_images returns NULL pointer whilst num_images > 0
In libgimp/gimp.c: gimp_main() make sure that GIMP_TYPE_OBJECT_ARRAY
and GIMP_TYPE_PARAM_OBJECT_ARRAY are known to the type system and can
be looked up by name.
2019-09-25 20:47:25 +02:00
58bf1d431d libgimp: add a "status" parameter to gimp_procedure_config_end_run()
and require it to be always called paired with begin_run(), which is
more straightforward and makes the resulting code more future-proof.
2019-09-25 12:09:03 +02:00
191fcdf884 libgimp: add macros for adding aux args to gimpprocedure-params.h 2019-09-24 15:11:50 +02:00
c3efeae31d libgimp: add the concept of "Auxiliary arguments" to GimpProcedure
Aux arguments are arbitrary values the procedure wants managed and
remembered across invocations in GimpProcedureConfig. They are not
passed to run() and are not known to the PDB, they only exist in the
procedure's config object.
2019-09-24 12:39:02 +02:00
70ac0e9d9a libgimp: fix gimp_image_metadata_save_prepare()'s check for IPTC flags
it was checking gimp_export_xmp() not gimp_export_iptc(), probably a
copy/paste error.
2019-09-24 12:11:59 +02:00
aeef726044 libgimp: implement GimpProcedure::create_config() in all subclasses 2019-09-24 00:59:50 +02:00
247f99ce22 libgimp: change GimpProcedureDialog's "OK" with the procedure type
- "_Open" for GimpLoadProcedure
- "_Export" for GimpSaveProcedure
- "_OK" otherwise
2019-09-23 20:00:19 +02:00
243042730e libgimp: add "image" parameters to gimp_procedure_config_begin,end_run()
When non-NULL, the code tries to load/save image-specific last used
values from/to the image using a parasite. This is meant to be used by
file export plug-ins.
2019-09-23 19:28:04 +02:00
edd824ddef libgimp: disable GObject Introspection generation when cross-compiling.
This is hopefully a temporary setback since we want to consider the
introspected API as a core feature (otherwise we'd end up with third
party builds deactivating the feature, and get a very random experience
depending on where you got GIMP) hence don't want it to be optional
(note that I haven't added a configure option).
Anyway for now, it seems that cross-building introspected data is not
really supported (or I'm still figuring it out).
2019-09-22 20:03:29 +02:00
Ell
5cc289b642 libgimpbase, libgimp, app: inherit swap-compression in plug-ins
Pass the swap-compression option set in the preferences down to
plug-ins, so that they use the same swap-compression algorithm as
the main app.
2019-09-22 18:05:24 +03:00
44d10e458c Fix various typos
Found via `codespell` (v1.17.0.dev0)
2019-09-21 17:10:46 +00:00
3ce2c7e3f9 libgimp: s/filename/file/ in docs 2019-09-21 19:02:40 +02:00
dbd793d631 libgimpconfig: get rid of filenames in all config related APIs
and rename function names which say "gfile" to just "file".
2019-09-21 12:55:12 +02:00
396d227436 libgimp: fix typo and libgimpui build.
Apart from some obvious typo, libgimpui link was failing with meson
because it now relies on a function from libgimpconfig (i.e.
gimp_config_reset()), since commit bfb7f43dbc. This fixes:
> /usr/bin/ld: libgimp/gimpproceduredialog.c:223: undefined reference to `gimp_config_reset'
2019-09-21 01:29:16 +02:00
df8d5b02ae libgimp, plug-ins: remove the "preview" parameter from gimp_ui_init()
It's dead since a looong time.
2019-09-20 19:56:00 +02:00
aa41baef1e libgimp: add gimp_procedure_config_get_procedure()
and use it in gimp_procedure_dialog_new() to make sure that the passed
config was created by the passed procedure.
2019-09-20 19:33:50 +02:00
bfb7f43dbc libgimp: add GimpProcedureDialog, the new dialog class for plug-ins
It knows about the procedure and its config, and so far implements the
entire construction boilerplate and "Reset" on its own.
2019-09-20 19:24:40 +02:00
b441d100ff libgimp: add GimpProcedureConfig which implements the GimpConfig interface
It's the base for bringing proper management of saved settings
(including the last used values) and generated GUI using prop_widgets
to plug-ins.
2019-09-20 12:34:03 +02:00
cf276ed972 libgimp: fix introspection of PDB functions in meson build.
PDB headers had been forgotten and therefore a whole bunch of functions
were not introspected.
2019-09-14 23:26:30 +02:00
73cd120a4c Issue #3912 - Object proxy management not happy with bindings
Don't drop references we do not own. Turns out bindings can have
things referenced even after all procedure code has returned. Keep the
old code there in #if 0 and keep the debug warning for now, maybe we
can do something generic about this.
2019-09-12 12:17:35 +02:00
83a936b8fe pdb: rename all functions in the "plug_in" group
from gimp_plugin_foo() to gimp_plug_in_foo() for consistency.
2019-09-11 23:58:47 +02:00
6de4af4ade pdb: change paths and URIs in the "plug_in" group to GFiles 2019-09-11 23:54:53 +02:00
77731d1e8e pdb: change the URIs in the color profile API to GFiles 2019-09-11 22:44:17 +02:00
14af676b51 pdb, libgimp: change "filename" to "file" in gimp_pdb_dump() 2019-09-11 22:37:40 +02:00
6468fa06c7 pdb, plug-ins: change gimp_temp_name() to gimp_temp_file() 2019-09-11 22:32:44 +02:00
4118fb6a76 Resolve implicit declaration of function 'getpid' 2019-09-11 19:55:16 +00:00