Commit Graph

50381 Commits

Author SHA1 Message Date
Jehan 38c717b149 app, libgimp, pdb: private _gimp_resource_get_by_identifiers() PDB function.
This finds the core resource knowing its type, name, collection and internal
state (in other words, the values returned by _gimp_resource_get_identifiers()).
2023-07-27 15:32:16 +02:00
Jehan fe58de7f81 app, libgimp, pdb: new private PDB call _gimp_resource_get_identifiers(). 2023-07-27 15:30:14 +02:00
Jehan 1a9c470b82 app: fix gimp_data_get_identifier() and add a concept of data collection.
The way we were creating a GimpData identifier was simply wrong, because it was
based on the assumption that the source file uniquely identifies a GimpData (cf.
gimp_tagged_get_identifier() which clearly says that the returned string must
uniquely identify this data). The very simple counter-examples for why this is
a mistake to consider a data file to be a good unique identifier are collection
files. For instance, TTC files (TrueType Collection) contain multiple fonts.

Instead I am adding the concept of "collection" with the assumption that
**within a given collection**, data names are unique (I do hope this to be and
stay true). So I add gimp_data_get_identifiers() and gimp_data_identify() to get
identifiers and check for identity.

The collection will use the old implementation of gimp_data_get_identifier()
because it is quite nice to have paths relative to data and config directories
(it allows some cases of data relocation without losing data identification).

The new implementation to compute a GimpTagged identifier on the other hand will
construct a string from the quality of being internal or not, the data name and
its collection.
2023-07-27 15:29:58 +02:00
Jehan 41ed091879 app, libgimp, pdb: add an internal gimp_context_get_resource().
This will be useful in an incoming code to serialize GimpResource PDB arguments.
2023-07-27 15:27:53 +02:00
Jehan 86cbb5232b pdb: fix a typo.
I guess we never use that type nowadays.
2023-07-27 15:27:29 +02:00
Jehan d439e9ff5c app, libgimp, pdb: factorize a bunch of similar code into gimp_pdb_get_resource().
Rather than reimplementing the same checks for every possible resource data
type, just do it once and redirect to the correct factory container.

For the libgimp API, we leave per-type functions `gimp_*_get_by_name()` (where *
can be brush|gradient|font|palette|pattern so far), but internally they all use
gimp_pdb_get_resource().

Note that eventually we want these functions to return a list of resources as it
should be possible to have several resources of a given type with the same name
(since they are made by third-party who might have had the same idea of a name).
2023-07-27 15:25:32 +02:00
Jehan ccde23ebaa libgimpconfig: don't break serializing properties if one property serialization…
… fails.

This happens for plug-in settings storage. Serialization stops at first failed
property serialization, whereas we could store more. This feels like the last
settings feature is broken.
2023-07-27 15:24:56 +02:00
Balázs Úr 13dcc85daa Update Hungarian translation 2023-07-26 23:40:40 +00:00
Alx Sa f947109f92 build: Enable IFF format on Windows
Now that libiff and libilbm have been added to the MSYS2 repositories,
the plug-in can be built automatically on Windows.
2023-07-26 17:12:35 -04:00
Jacob Boerema 43a5b92c65 build: MSYS2 package python3-gobject was replaced by python-gobject 2023-07-26 16:29:22 -04:00
Jehan b64543caff libgimpwidgets: create proper links in function documentation. 2023-07-26 15:25:39 +02:00
Martin 7b737ecff7 Update Slovenian translation 2023-07-26 08:57:13 +00:00
Martin 18081d1745 Update Slovenian translation 2023-07-26 08:55:42 +00:00
Ekaterine Papava acc2baa7a6 Update Georgian translation 2023-07-26 03:57:22 +00:00
Ekaterine Papava 3d1325f52a Update Georgian translation 2023-07-26 03:49:57 +00:00
Jehan 269502cfe4 NEWS: update. 2023-07-26 00:53:00 +02:00
programmer-ceds b84095d7c6 Fix Tools Shortcuts 2023-07-25 21:33:28 +00:00
Anders Jonsson 8b84c5551b plug-ins: add and correct gettext macros in Python 2023-07-25 21:26:57 +00:00
Jehan 21a329dae6 app: nearly all GimpFont object now have an associated file.
(except from the aliases "Sans-serif", "Serif" and "Monospace")

The code to get the file path was inspired by code in MR !1011 by Idriss Fekir.

My initial idea was to use FcFreeTypeQueryAll() when adding each font
individually through FcConfigAppFontAddFile() but we were only doing this for
our additional directories (not the system ones) and also before we actually
loaded all the fonts through FontConfig. So this would have required more work
to get right. Though it also means that now the ! USE_FONTCONFIG_DIRECTLY code
path is more broken than ever (as we consider this path information quite
important for plug-ins now).

Additionally to make this work, I got rid of the code making all GimpFont
objects internal data by default, which is nonsense to begin with. Fonts are not
writable by GIMP, sure, yet they are external to GIMP and loaded from a file!

This will be important for an upcoming commit (which is currently in a branch
related to issues #50 and #9250), where we want to implement GimpResource
storage as plug-in settings, because fonts were the only GimpData without a file
and we are using this information to generate a collection identifier.
2023-07-25 23:10:29 +02:00
Jehan 9f9c0b4ea6 app: GimpFontFactory doesn't force anymore unique font names.
Note that there is a `container_obsolete` too in GimpDataFactory and I don't
apply the "unique-name" property to it because I'm unsure what it is.

Furthermore, eventually we'll want all types of data to allow duplicate names
(brushes, patterns or whatnot may come from all sources and may be named the
same by different people). But for now, let's focus on fonts before breaking
other parts of the codebase which we might not look into right now.
2023-07-25 23:10:26 +02:00
Jehan 0226b3ff5e app: only display the number of ignored fonts (and full listing if…
… the GIMP_DEBUG_FONTS environment variable is set.

Turns out nearly a thousand font files get ignored on my installation (and I
don't install much; a lot of them seem to be bitmap fonts (PCF) in a X11
directory). I still want output so that this topic doesn't get forgotten and
hopefully some day, we can do better. But a single line on stderr (and an
environment variable for details) is enough for now.
2023-07-25 21:16:04 +02:00
Idriss Fekir 5972d8d97f Implement support for custom fonts
Remap font names to unique generated names
so that pango sees them.

keep the font name for display and the internal
name for everything else.

* Fonts are still broken When exporting to pdf

* Not sure if xcf files would be usable on other systems
maybe use hash of psname internally instead

* Not sure if plug-ins using text layer work correctly
(do they use internal font name or the actual name?)
2023-07-25 21:16:04 +02:00
Yuri Chornoivan d337d2d196 Update Ukrainian translation 2023-07-25 19:04:17 +00:00
Jehan 490cb4ca3a app: rename snap data type to GimpImageSnapData and remove it from core-types.
This is definitely not core type material. Also it's much better in the proper
header gimpimage-snap.h and the type name should reflect the file namespace,
especially as we make it public.
2023-07-25 16:07:06 +02:00
mr.fantastic a6cf90b208 Support showing distance by view unit in realtime alignment 2023-07-25 15:31:16 +02:00
mr.fantastic 9e793cfe87 Adding on canvas text for equidistance snapping visualization 2023-07-25 15:31:16 +02:00
mr.fantastic 58d85efe75 Adding visuals to snapping by bounding boxes and equidistance
- Avoid conflict between snapping to active point and bbox/alignment snapping
- rearrange bbox snapping calls to give layer center more priority
2023-07-25 15:31:16 +02:00
mr.fantastic c47f4954ef Adding snapping by equidistance functionality 2023-07-25 15:31:16 +02:00
mr.fantastic 0aa8ac4660 Adding initial support for snapping layers/path_points by layers bounding boxes 2023-07-25 15:31:16 +02:00
Jordi Mas 54728e0fe1 Update Catalan translation 2023-07-25 10:53:09 +02:00
Shubham a7379664e9 app: Fix extra drawing with airbrush tool on layers with offset
When using airbrush tool, if the layer has a offset, then the offset was
applied to the the coords multiple times creating a series of dots when
holding the airbrush still (from the gimp_airbrush_stamp function).
Fixed this problem by storing the original value of coords before it
gets updated.
2023-07-24 15:55:30 +00:00
Shubham 8463544502 app: fix broken symmetry on offset layers
Painting with symmetry enabled on layers with offset was broken. Fixed
it.
2023-07-24 15:55:30 +00:00
Martin 8f09092ed3 Update Slovenian translation 2023-07-24 10:33:25 +00:00
Idriss Fekir 959426d4ee Fix Font Inline completion not working in some cases
Inline completion is case sensitive, this makes it
broken, because fonts desplayed in the pop should be
quried in a case-insensitive manner.

This fixes #2832.

See gtk issue #275.
2023-07-23 22:29:02 +00:00
psykose 300ce655c3 create_test_env.sh: use sh instead of bash
this is actually a regular sh-portable script, and this prevents needing
bash at build time or for tests (for packaging from tarballs)
2023-07-23 21:06:49 +00:00
Yuri Chornoivan 0485e36cce Update Ukrainian translation 2023-07-23 18:04:04 +00:00
Yuri Chornoivan 690f8ae35e Update Ukrainian translation 2023-07-23 18:02:21 +00:00
Jehan a7836feed3 NEWS: update. 2023-07-23 18:20:04 +02:00
Ekaterine Papava c0915480d7 Update Georgian translation 2023-07-23 03:31:45 +00:00
Anders Jonsson 095af5629c extensions: more i18n for goat-exercises 2023-07-22 15:16:42 +00:00
Jehan ba5b4794e1 libgimp: remove outdated recommendation about sending non-localized strings.
gimp_plug_in_set_translation_domain() was removed in GIMP 2.99.12. Plug-ins are
now fully responsible for their own localization.
2023-07-22 16:17:24 +02:00
Ekaterine Papava 56812b55ce Update Georgian translation 2023-07-22 03:57:00 +00:00
Martin 1c35aa797c Update Slovenian translation 2023-07-21 22:15:08 +00:00
Jacob Boerema 0fb801f7f5 pdb: forgot one case of behavior in previous commit 2023-07-21 17:03:32 -04:00
Jacob Boerema 18408ce966 app, libgimp, libgimpwidgets, plug-ins, etc: rename behaviour to behavior
We use US English which uses behavior. So we replace all occurrences of
behaviour.

Most notable is File Open behavior in preferences. Besides that several
mentions in function documentation and a few in comments.
2023-07-21 15:35:23 -04:00
programmer-ceds 4fa1472e9c Add terminating NULLs to the tools accelerator arrays 2023-07-20 22:59:51 +01:00
Yuri Chornoivan 53239a3ffa Update Ukrainian translation 2023-07-20 16:22:59 +00:00
Yuri Chornoivan 25f14743de Update Ukrainian translation 2023-07-20 15:59:46 +00:00
Martin 6efa8499e1 Update Slovenian translation 2023-07-19 06:33:11 +00:00
Ekaterine Papava b242365908 Update Georgian translation 2023-07-19 04:17:18 +00:00