1
1
mirror of https://gitlab.gnome.org/GNOME/gimp.git synced 2025-10-06 01:12:40 +02:00

Compare commits

...

46 Commits

Author SHA1 Message Date
Gabriele
cb5d8ac8a3 Merge branch 'gabrybarbe-fix-color-area-update' into 'master'
issue #14883: make color preview update immediate

Closes #14883

See merge request GNOME/gimp!2465
2025-10-05 00:38:42 +02:00
Bruno Lopes
d8d73266bc build/linux: Update poppler module to 25.10
Synced from
6d4124f7b8
2025-10-04 18:51:18 -03:00
Bruno Lopes
356c2baec5 gitlab-ci, build/windows: Remove forgotten comment about fixed #12284 2025-10-04 16:16:49 -03:00
Bruno Lopes
aea7042aa1 meson: Support Windows native paths (aka backslashes) on -Dprefix
Closes: #12284
2025-10-04 16:12:00 -03:00
Alan Mortensen
97944a5415 Update Danish translation
(cherry picked from commit d81cfcc325)
2025-10-04 12:48:26 +00:00
Alx Sa
a5182a010f tools: Fix missing cursor for MyPaint Brush tool
Resolves #15001
In the MyPaint Brushes v2 port (ea8b9dc1),
I implemented a cursor_update () function from the
parent class. However, I did not call the parent's
version of the function afterwards, so the MyPaint
Brush cursor was not being redrawn. This patch
adds the call to fix the cursor display issue.
2025-10-03 22:14:52 +00:00
Øyvind Kolås
9c2c5ff183 meson, app: depend on GEGL-0.4.64 2025-10-03 23:56:36 +02:00
Bruno Lopes
f09007507f Declare gexiv2 dependency on many targets (due to gimpmetadata.h)
Our build files were relying 'sysroot' to find gexiv2.h but this is
not possible with Apple Clang om which sysroot points to macOS SDK.
So, exotic environments like Homebrew were failing. Let's fix this.
2025-10-03 18:31:53 -03:00
Bruno Lopes
2b91551f4e gitlab-ci: Complete cbe56ff3 2025-10-03 09:03:26 -03:00
Bruno Lopes
cbe56ff388 gitlab-ci: Remove dangling MSYSTEM_PREFIX on Win job names
It makes them consistent with other non-Windows jobs so
easier to read.
2025-10-02 21:37:33 -03:00
Anders Jonsson
7cec3f52b9 .gitlab: fix template typo 2025-10-03 00:54:09 +02:00
Alx Sa
81c67e5614 tools: Don't commit Filter Tool without a filter
The Filter Tool is a "hidden" tool that we switch to
when applying a filter. Like other tools, it commits when
we save our image. However, we may no longer have an
active filter in the tool when we do so (like, after applying
an NDE filter). Because we check the drawable from the
filter to confirm whether we should force NDE or not,
this can cause a CRITICAL when we try to access a now
non-existent filter.

This patch extends the "if (filter_tool->filter)" check to
cover the full commit check process, to prevent the bug.
2025-10-02 12:07:25 +00:00
Øyvind Kolås
67fa72a94e meson, app: depend on babl-0.1.116 2025-10-02 13:22:29 +02:00
Yuri Chornoivan
6587256c3a Update Ukrainian translation 2025-10-02 08:21:41 +00:00
Bruno Lopes
ad9dbf2c8b tools: Drop bashism/gnushism in read command 2025-10-01 21:26:25 -03:00
Bruno Lopes
2f0bfc569b meson: Fix wrong debugging_format detection on clang-cl and msvc 2025-10-01 20:13:33 -03:00
Alx Sa
36330a271a tools: Prevent bucket fill on link/vector layers
Resolves #14993
We currently prevent paint tools from painting on
link or vector layers. However, we had not added this
protection to the bucket fill tool. This patch copies over
the relevant if statements to prevent this.
2025-10-01 13:23:09 +00:00
Jehan
baa4825880 app: use the new release/ alias URLs for the "Learn more" link of…
… Release Notes tab.
2025-10-01 14:40:18 +02:00
Jehan
8c910c2b6b tools: improve release stats.
- Interactively query the release version from standard input.
- Compute the logical previous version but also the previous release in
  time. For instance the logical previous release of GIMP 3.0.6 will be
  3.0.4 but the time-wise previous release will be 3.1.4.
- Some statistics will use the logical previous release whereas others
  the time-wise one.
2025-10-01 14:39:51 +02:00
Marco Ciampa
a025cfe41b Updated Italian translation 2025-10-01 12:37:59 +02:00
Jehan
41035c7589 plug-ins: fix memory management and handle multi-file zip.
We should not call archive_entry_free() since man
archive_read_next_header explicitly says that the returned entry is an
internal object:

> This is a convenience wrapper around archive_read_next_header2() that
> reuses an internal struct archive_entry object for each request.

The only reason why it was not crashing is that we were not properly
freeing the archive itself so internal objects were hanging! The man
archive_read says:

> Once you have finished reading data from the archive, you should call
> archive_read_close() to close the archive, then call archive_read_free()
> to release all resources, including all memory allocated by the library.

Therefore this code add archive_read_free() at the end and removes
archive_entry_free().

Furthermore we now verify if the zip archive contains any other file.
Unlike all other compression formats we were supporting until now, zip
is a full multi-file container format and we are always only trying to
read the first file listed in the archive. This likely means that this
file was not meant to be opened this way. In any case, still try to load
the first file as an image, yet raise a warning about the existence of
more files in the archive.
2025-09-30 20:14:01 +02:00
Jehan
7275569079 plug-ins: localize strings and improve extension list.
- Uppercase first letter of blurbs.
- Make the blurb and documentation strings localizable and localized.
- Add the compression format extension to the list of extensions. I am
  unsure why it was set as FIXME, because it does work perfectly (per
  tests) as a generic (de)compressor plug-in for any of the image
  formats we support. Not even this, but I am even putting the generic
  extension first, because sometimes we take the first listed extension
  of a load procedure to determine the source file format. Yet the only
  thing we can say *generically* about a file loaded by these procedures
  is that it was compressed with the associated container format!
- For the new zip-support, do not show xcf.zip and xcfzip extensions in
  the list. I don't think we want to promote these new extensions as
  standard XCF variants, even though in practice this will still work
  fine. Instead add hgt.zip (but again, after the generic zip, cf.
  previous point), because we know that this is a commonly used format
  combination for HGT files.
2025-09-30 19:53:36 +02:00
Jehan
dfafb7c6f2 NEWS: add new feature and clean out backported enhancements.
Various items have been moved to gimp-3-0 branch (commit f2c13d319e) and
some were already duplicated.
2025-09-30 17:50:39 +02:00
Aleksandr Prokudin
25d1b7f8c3 Update Russian translation 2025-09-30 17:12:29 +02:00
Bruno Lopes
0edf615333 libgimp: Improve .gir and .vapi dependencies by using unified list
To avoid bugs like: #14902
2025-09-30 11:29:51 -03:00
Aefgh Threenine
daf23e1a50 Update Thai translation 2025-09-29 23:54:22 +00:00
Alx Sa
b633b4b9c7 python: Remove layer offsets on ORA export
When exporting formats that use image procedures
(like PNG), if we don't remove the layer offsets then
the image is cut off on export. This is because we
size the image to the layer size, but then the layer offsets
move it off the canvas. This patch fixes the issue for
ORA export.
2025-09-29 18:55:20 -03:00
Yuri Chornoivan
cfa3fd6bb7 Update Ukrainian translation 2025-09-29 20:00:05 +00:00
Yuri Chornoivan
669685d1d8 Update Ukrainian translation 2025-09-29 19:51:36 +00:00
Alx Sa
f032153596 plug-ins: Add zip decompression support
This patch adds support for decompressing .zip files and
loading an image within. This allows us to load zipped
images like hgt.zip and other compressed formats.
2025-09-29 19:28:18 +00:00
Jehan
13639b1d3d NEWS: update. 2025-09-29 21:06:08 +02:00
Jehan
eb0bfe7bdb Issue #13553: pop an error dialog up only for specific GIO error.
This fixes 46d9a09698. There was a reason why this was not implemented
as an assert-type error nor as a user-facing error: network problems
happen.

We cannot pop an error up every time:

* The computer is offline! 😱 GIMP is not made to be run as a connected
  software and working on GIMP with a non-connected computer is a
  perfectly valid way of using GIMP.
* gimp.org is down (it's rare, but it happens and it should not have any
  impact to creators with GIMP).
* You are behind some kind of proxy or other complicated network
  configuration which GIO is not able to pass through.
* And any other reason which could make your GIMP not able to read the
  remote json file…

Instead let's check the more particular domain and error code, though
even this I hesitated between doing this change or simply reverting
commit 46d9a09698.
Indeed it's still quite a generic G_IO_ERROR_NOT_SUPPORTED error, so I
do hope we cannot get it in other normal conditions where reading a
remote link may fail. The last thing we want is GIMP popping up errors
which are neither bugs in our code, nor environment issues for which
anyone can do anything about.
2025-09-29 20:31:40 +02:00
Asier Saratsua Garmendia
393ca59e79 Update Basque translation 2025-09-29 17:59:37 +00:00
Jehan
3a698a05a1 plug-ins: only set the file if it's actually an inner XCF file.
Soon we will officially support .hgt.zip files (see !2483) but in fact,
even without this, the file-compressor actually support any other
formats we support, compressed into one of the container formats
supported by this plug-in.

This fixes such error message:

> gimp_image_set_file: failure to set file 'file:///home/jehan/Documents/gimp-splash-deleteme.png.gz' with extension 'gz'. The extension must be '.xcf' (or a compressed variant).
2025-09-29 17:46:33 +02:00
Jehan
f4a7da1ee3 app, pdb: similar to the previous commit, but for files loaded with…
… gimp_file_load().

We make sure that the load procedure associated to the file is the one
used for the inner-file (in case of imbricated files into container
formats).

Also let's set the imported file unless it's a XCF inner format.
2025-09-29 17:46:32 +02:00
Jehan
bb9d8df855 app: make sure we only consider the inner file load procedure to…
… determine if a file is XCF.

This was kinda already working for files loaded through the GUI. Yet the
code in file_open_file_proc_is_import() was assuming a file loaded
through the file-compressor plug-in is necessarily XCF.

Even though it is the original use, the code in file-compressor is
actually generic and is able to load any supported format additionally
compressed with gz, bz2 or xz.
Furthermore, we will soon support zip-ped imaged, explicitly to support
the format .hgt.zip which is quite common (see !2483). So remove any
logic of a file loaded by file-compressor as meaning it's a compressed
XCF.
2025-09-29 17:46:32 +02:00
Kolbjørn Stuestøl
78e68efd06 Update Norwegian Nynorsk translation 2025-09-29 15:15:57 +00:00
Ekaterine Papava
2fa82d51ee Update Georgian translation 2025-09-29 14:52:02 +00:00
Martin
f223dae9fe Update Slovenian translation 2025-09-29 13:21:27 +00:00
luzpaz
9daf5d2e5d libgimpconfig: fix typo in gimpconfig-params.c
Fixes source comment typo and modifies whitespace for readability.
2025-09-29 11:07:55 +00:00
Bruno Lopes
789af76a32 app: Move "Documentation" link one line up over (community) "Tutorials"
Users were thinking the tutorials are some kind of official docs,
but they are not maintained as the official GIMP help website,
they are more like informal documentation about GIMP made public.

Let's clarify this reordering the buttons.
2025-09-29 07:32:12 -03:00
Bruno Lopes
f9ba343558 build/windows: Stay on Inno 6.5.4 to avoid (potentially) broken 6.6.0 Dark Mode
It was announced by the devs on Google Groups that they are on preview state.

I will need time to conform our scripts to the upcoming 6.6.0.
So, let's not risk creating installers with broken UI.
2025-09-28 22:12:16 -03:00
Bruno Lopes
014aa5ae6f build/linux: Patch mypaint brushes on AppImage and Snap too
Following 2f6b7591
2025-09-28 21:39:00 -03:00
Bruno Lopes
47eac319b1 build/linux: Silence noisy warnings about GTK_MODULES
From GTK mouth:
https://gitlab.gnome.org/GNOME/gtk/-/blob/3.24.50/gtk/gtkmodules.c?ref_type=tags#L250
2025-09-28 19:58:25 -03:00
Bruno Lopes
3bde6195f6 build/windows, gimp-data: Prepare to Inno Setup 6.6.0 2025-09-28 18:19:18 -03:00
Gabriele Barbero
9d64379b1c libgimpcolor, libgimpwidgets: make color preview update immediate
Previously, the `gimp_color_area_set_color` function compared the new color
to the current one using perceptual similarity. This caused small or gradual
color changes to be missed, resulting in a "laggy" update of the color preview
in GimpColorSelection.

Now, the check is performed on the actual color difference, and the preview
is updated every time the color changes, even for minimal variations.
This ensures the color preview is always immediate.
2025-09-13 00:44:51 +02:00
73 changed files with 21319 additions and 20210 deletions

View File

@@ -532,10 +532,7 @@ gimp-snap:
STORE_OPTION: '-Dms-store=true'
parallel:
matrix:
- RUNNER: windows-aarch64
MSYSTEM_PREFIX: clangarm64
- RUNNER: win32-ps
MSYSTEM_PREFIX: clang64
- RUNNER: [windows-aarch64, win32-ps]
tags:
- $RUNNER
variables:
@@ -543,8 +540,8 @@ gimp-snap:
#meson.build forces non-relocatable .pc. See: https://github.com/mesonbuild/meson/issues/14346
PKGCONF_RELOCATABLE_OPTION: '-Dpkgconfig.relocatable=true'
before_script:
# FIXME:'gimpenv' have buggy code about Windows paths. See: https://gitlab.gnome.org/GNOME/gimp/-/issues/12284
- $GIMP_PREFIX = "$PWD\_install-$MSYSTEM_PREFIX".Replace('\', '/')
- if (-not $env:MSYSTEM_PREFIX) { $env:MSYSTEM_PREFIX = if ((Get-WmiObject Win32_ComputerSystem).SystemType -like 'ARM64*') { 'clangarm64' } else { 'clang64' }}
- $GIMP_PREFIX = "$PWD\_install-$env:MSYSTEM_PREFIX"
timeout: 30m
.win_environ: &WIN_ENVIRON
@@ -565,9 +562,9 @@ deps-win:
- build\windows\1_build-deps-msys2.ps1
artifacts:
paths:
- _install-$MSYSTEM_PREFIX/
- babl/_build-$MSYSTEM_PREFIX/meson-logs/meson-log.txt
- gegl/_build-$MSYSTEM_PREFIX/meson-logs/meson-log.txt
- _install-*/
- babl/_build-*/meson-logs/meson-log.txt
- gegl/_build-*/meson-logs/meson-log.txt
expire_in: 2 hours
gimp-win:
@@ -583,14 +580,14 @@ gimp-win:
- build\windows\2_build-gimp-msys2.ps1
artifacts:
paths:
- gimp-$MSYSTEM_PREFIX/
- _build-$MSYSTEM_PREFIX/meson-logs/meson-log.txt
- _build-$MSYSTEM_PREFIX/done-dll.list
- gimp-*/
- _build-*/meson-logs/meson-log.txt
- _build-*/done-dll.list
# Needed by dist-installer-weekly and dist-store-weekly
- _build-$MSYSTEM_PREFIX/config.h
- _build-$MSYSTEM_PREFIX/plug-ins/file_associations.list
- _build-$MSYSTEM_PREFIX/build/windows/installer/
- _build-$MSYSTEM_PREFIX/build/windows/store/
- _build-*/config.h
- _build-*/plug-ins/file_associations.list
- _build-*/build/windows/installer/
- _build-*/build/windows/store/
expire_in: 2 days
@@ -599,12 +596,10 @@ gimp-win:
extends: .win
parallel:
matrix:
- RUNNER: win32-ps
MSYSTEM_PREFIX: mingw32
- RUNNER: [win32-ps]
variables:
MSYSTEM_PREFIX: mingw32
MINGW_PACKAGE_PREFIX: mingw-w64-i686
CC: cc
CXX: c++
deps-win-eol:
extends: .win-eol

View File

@@ -24,7 +24,7 @@ https://gitlab.gnome.org/GNOME/gimp/-/issues/?sort=updated_desc&state=all&label_
- "Be considerate and respectful". This is our main rule.
E.g. avoid negative emotional writing which only generates more upsetting
interactions.
- Stay on topic by writting only one bug per report created.
- Stay on topic by writing only one bug per report created.
- Add full (not cropped) screenshots or other files using the clip button on GitLab. -->
### Reproduction

View File

@@ -12,4 +12,4 @@
Only human created works please!
- You can request the devs to allow installable packages to be
generated from this MR by writting ~Package: in the comments -->
generated from this MR by writing ~Package: in the comments -->

28
NEWS
View File

@@ -11,8 +11,6 @@ Overview of Changes from GIMP 3.1.4 to GIMP 3.2-RC1
Core:
- Improve Export to SVG of paths by not exporting the DTD and adding
an explicit SVG version.
- macOS: "Quit" from the dock's right-click menu will now follow our
standard Quit procedure, by intercepting the
applicationShouldTerminate signal, instead of forcing the
@@ -26,16 +24,13 @@ Graphical User Interface:
- "Monitor Linked Image" and "Discard Link Information" menu items
added to Layer menu when the selected layer is a link layer.
- Palette Import dialog now display file format filters, both to let
users hide irrelevant files from view and to highlight which formats
we support.
- The GimpColorHexEntry will now update the chosen color as you type.
- Use a standard, yet extended, AppMenu on macOS.
Plug-Ins:
- Fixed vulnerabilities: ZDI-CAN-27684, ZDI-CAN-27863, ZDI-CAN-27878,
ZDI-CAN-27836, ZDI-CAN-27823, ZDI-CAN-27793
- macOS: improved handling of plug-in icons which were flashing in
macOS dock.
- file-compressor: add zip decompression support. This allows support
for .hgt.zip files, as well as other formats compressed with zip.
API:
@@ -83,22 +78,9 @@ API:
* gimp_procedure_add_link_layer_argument
* gimp_procedure_add_link_layer_aux_argument
* gimp_procedure_add_link_layer_return_value
* gimp_link_layer_get_mime_type
- New libgimp class: GimpLinkLayer
Build:
- CI:
* Linux builds ported from unmaintained Kaniko to Buildah.
* Colored output and .pdb support for builds of dependency using
CMake.
* Ability to apply remote patches on dependency builds.
* New job "branches-check" to warn about dead branches.
- We now build Exiv2 ourselves on Windows as a temporary workaround to
issue #12626.
- release-stats.sh script updated to generate text directly pastable
into our release news.
- Improved packages binary caching with ORAS for Flatpak.
Overview of Changes from GIMP 3.1.2 to GIMP 3.1.4
=================================================

View File

@@ -101,6 +101,6 @@ libappactions = static_library('appactions',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Actions"',
dependencies: [
gegl, gdk_pixbuf, gtk3,
gegl, gdk_pixbuf, gtk3, gexiv2,
],
)

View File

@@ -44,7 +44,7 @@ libappconfig = static_library('appconfig',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Config"',
dependencies: [
cairo, gegl, gdk_pixbuf, gio, gio_specific, libmypaint,
cairo, gegl, gdk_pixbuf, gexiv2, gio, gio_specific, libmypaint,
],
)

View File

@@ -539,16 +539,16 @@ welcome_dialog_create_welcome_page (Gimp *gimp,
/* "globe with meridians" emoticone in UTF-8. */
"\xf0\x9f\x8c\x90",
_("GIMP website"), "https://www.gimp.org/");
welcome_add_link (GTK_GRID (grid), 0, &row,
/* "graduation cap" emoticone in UTF-8. */
"\xf0\x9f\x8e\x93",
_("Tutorials"),
"https://www.gimp.org/tutorials/");
welcome_add_link (GTK_GRID (grid), 0, &row,
/* "open book" emoticone in UTF-8. */
"\xf0\x9f\x93\x96",
_("Documentation"),
"https://docs.gimp.org/");
welcome_add_link (GTK_GRID (grid), 0, &row,
/* "graduation cap" emoticone in UTF-8. */
"\xf0\x9f\x8e\x93",
_("Community Tutorials"),
"https://www.gimp.org/tutorials/");
/* XXX: should we add API docs for plug-in developers once it's
* properly set up? */
@@ -1125,10 +1125,19 @@ welcome_dialog_create_release_page (Gimp *gimp,
tmp = g_strdup_printf (GIMP_VERSION);
if (GIMP_MINOR_VERSION % 2 == 0 && ! strstr (tmp, "RC"))
release_link = g_strdup_printf ("https://www.gimp.org/release-notes/gimp-%d.%d.html",
GIMP_MAJOR_VERSION, GIMP_MINOR_VERSION);
{
if (GIMP_MICRO_VERSION == 0 && ! strstr (tmp, "RC"))
release_link = g_strdup_printf ("https://www.gimp.org/release-notes/gimp-%d.%d.html",
GIMP_MAJOR_VERSION, GIMP_MINOR_VERSION);
else
release_link = g_strdup_printf ("https://www.gimp.org/release/%d.%d.%d/",
GIMP_MAJOR_VERSION, GIMP_MINOR_VERSION,
GIMP_MICRO_VERSION);
}
else
release_link = g_strdup ("https://www.gimp.org/");
{
release_link = g_strdup ("https://www.gimp.org/");
}
g_free (tmp);
widget = gtk_link_button_new_with_label (release_link, _("Learn more"));

View File

@@ -122,6 +122,6 @@ libappdisplay = static_library('appdisplay',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Display"',
dependencies: [
gegl, gtk3, cairo,
gegl, gtk3, cairo, gexiv2
],
)

View File

@@ -16,6 +16,7 @@ libappfiledata = static_library('appfiledata',
cairo,
gdk_pixbuf,
gegl,
gexiv2,
libarchive,
],
)

View File

@@ -248,7 +248,15 @@ file_open_image (Gimp *gimp,
{
if (image)
{
/* Only set the load procedure if it hasn't already been set. */
/* Only set the load procedure if it hasn't already been set.
* The reason is that we want to know the information of the
* inner format, in case loading the file went through
* intermediate container file formats procedures, typically
* the procedures registered by the file-compressor plug-in.
*
* E.g. it could be used for our compressed XCF, but also for
* commonly compressed formats such as .hgt.zip.
*/
if (! gimp_image_get_load_proc (image))
gimp_image_set_load_proc (image, file_proc);
@@ -815,7 +823,9 @@ file_open_link_image (Gimp *gimp,
layer = gimp_link_layer_new (image, link);
gimp_image_add_layer (image, layer, NULL, 0, FALSE);
gimp_image_set_load_proc (image, gimp_link_get_load_proc (link));
if (! gimp_image_get_load_proc (image))
gimp_image_set_load_proc (image, gimp_link_get_load_proc (link));
file_proc = gimp_image_get_load_proc (image);
if (mime_type)
*mime_type = g_slist_nth_data (file_proc->mime_types_list, 0);
@@ -945,14 +955,11 @@ file_open_file_proc_is_import (GimpPlugInProcedure *file_proc)
proc_name = gimp_object_get_name (file_proc);
return (g_strcmp0 (proc_name, "gimp-xcf-load") != 0 &&
/* Assuming that all file-compressor file are XCF.
* So far, this is always true with current file-compressor
* implementation.
*/
g_strcmp0 (proc_name, "file-gz-load") != 0 &&
g_strcmp0 (proc_name, "file-bz2-load") != 0 &&
g_strcmp0 (proc_name, "file-xz-load") != 0);
/* Even when loading through an intermediate container format plug-in
* (e.g. file-compressor), the stored procedure shall be the inner
* format.
*/
return (g_strcmp0 (proc_name, "gimp-xcf-load") != 0);
}
static gboolean

View File

@@ -11,6 +11,6 @@ libappfile = static_library('appfile',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-File"',
dependencies: [
gegl, gdk_pixbuf,
gegl, gdk_pixbuf, gexiv2
],
)

View File

@@ -56,5 +56,6 @@ libappgegl = static_library('appgegl',
cairo,
gegl,
gdk_pixbuf,
gexiv2
],
)

View File

@@ -415,17 +415,25 @@ gimp_check_updates_callback (GObject *source,
gchar *uri = g_file_get_uri (G_FILE (source));
#ifndef GIMP_CONSOLE_COMPILATION
if (error->domain == G_IO_ERROR &&
error->code == G_IO_ERROR_NOT_SUPPORTED)
{
#ifndef G_OS_WIN32
g_message ("%s: loading of %s failed: %s\n\n%s",
G_STRFUNC, uri, error->message,
_("Perhaps you are missing GIO backends and need "
"to install GVFS?"));
g_message ("%s: loading of %s failed: %s\n\n%s",
G_STRFUNC, uri, error->message,
_("Perhaps you are missing GIO backends and need "
"to install GVFS?"));
#else
g_message ("%s: loading of %s failed: %s\n\n%s",
G_STRFUNC, uri, error->message,
_("Perhaps you are missing GIO backends."));
g_message ("%s: loading of %s failed: %s\n\n%s",
G_STRFUNC, uri, error->message,
_("Perhaps you are missing GIO backends."));
#endif /* G_OS_WIN32 */
}
else
{
g_printerr ("%s: loading of %s failed: %s\n", G_STRFUNC,
uri, error->message);
}
#else
g_printerr ("%s: loading of %s failed: %s\n", G_STRFUNC,
uri, error->message);

View File

@@ -31,7 +31,7 @@ libappgui = static_library('appgui',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-GUI"',
dependencies: [
cairo, gegl, gdk_pixbuf, gio_specific, gtk3
cairo, gegl, gdk_pixbuf, gexiv2, gio_specific, gtk3
],
install: false,
)

View File

@@ -16,6 +16,6 @@ libappmenus = static_library('appmenus',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Menus"',
dependencies: [
gegl, gtk3
gegl, gtk3, gexiv2
],
)

View File

@@ -25,6 +25,6 @@ libapplayermodeslegacy = static_library('applayermodeslegacy',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Layer-Modes-Legacy"',
dependencies: [
cairo, gegl, gdk_pixbuf,
cairo, gegl, gdk_pixbuf, gexiv2
],
)

View File

@@ -50,5 +50,6 @@ libapplayermodes = static_library('applayermodes',
cairo,
gegl,
gdk_pixbuf,
gexiv2
],
)

View File

@@ -66,7 +66,7 @@ libappoperations = static_library('appoperations',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Operations"',
dependencies: [
cairo, gegl, gdk_pixbuf,
cairo, gegl, gdk_pixbuf, gexiv2
],
)

View File

@@ -63,6 +63,6 @@ libapppaint = static_library('apppaint',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Paint"',
dependencies: [
cairo, gegl, gdk_pixbuf, libmypaint,
cairo, gegl, gdk_pixbuf, gexiv2, libmypaint,
],
)

View File

@@ -22,6 +22,6 @@ libapppath = static_library('apppath',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Path"',
dependencies: [
cairo, gegl, gdk_pixbuf,
cairo, gegl, gdk_pixbuf, gexiv2
],
)

View File

@@ -112,7 +112,16 @@ file_load_invoker (GimpProcedure *procedure,
{
GimpImage *image =
g_value_get_object (gimp_value_array_index (return_vals, 1));
gimp_image_set_load_proc (image, file_proc);
if (! gimp_image_get_load_proc (image))
/* Leave the initial load procedure if it already exists as
* it will give information about the source format. See
* similar code in file_open_image().
*/
gimp_image_set_load_proc (image, file_proc);
if (! gimp_image_get_file (image))
gimp_image_set_imported_file (image, file);
}
}

View File

@@ -75,7 +75,7 @@ libapppdb = static_library('apppdb',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-PDB"',
dependencies: [
cairo, gegl, gdk_pixbuf,
cairo, gegl, gdk_pixbuf, gexiv2
],
)
@@ -85,7 +85,7 @@ libappinternalprocs = static_library('appinternalprocs',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-PDB"',
dependencies: [
cairo, gegl, gdk_pixbuf, pangocairo, pango,
cairo, gegl, gdk_pixbuf, gexiv2, pangocairo, pango,
],
sources: [
pdbgen

View File

@@ -56,6 +56,6 @@ libappplugin = static_library('appplug-in',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Plug-In"',
dependencies: [
cairo, gegl, gdk_pixbuf,
cairo, gegl, gdk_pixbuf, gexiv2,
],
)

View File

@@ -28,6 +28,6 @@ libapppropgui = static_library('apppropgui',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-PropGUI"',
dependencies: [
gegl, gtk3,
gegl, gtk3, gexiv2
],
)

View File

@@ -464,7 +464,7 @@ sanity_check_babl (void)
#define BABL_REQUIRED_MAJOR 0
#define BABL_REQUIRED_MINOR 1
#define BABL_REQUIRED_MICRO 114
#define BABL_REQUIRED_MICRO 116
babl_get_version (&babl_major_version,
&babl_minor_version,
@@ -502,7 +502,7 @@ sanity_check_gegl (void)
#define GEGL_REQUIRED_MAJOR 0
#define GEGL_REQUIRED_MINOR 4
#define GEGL_REQUIRED_MICRO 62
#define GEGL_REQUIRED_MICRO 64
gegl_get_version (&gegl_major_version,
&gegl_minor_version,

View File

@@ -42,6 +42,6 @@ libapptext = static_library('apptext',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Text"',
dependencies: [
gegl, gdk_pixbuf, harfbuzz, pangocairo, pangoft2,
gegl, gdk_pixbuf, gexiv2, harfbuzz, pangocairo, pangoft2,
],
)

View File

@@ -39,6 +39,7 @@
#include "core/gimpimageproxy.h"
#include "core/gimpitem.h"
#include "core/gimplineart.h"
#include "core/gimplinklayer.h"
#include "core/gimppickable.h"
#include "core/gimppickable-contiguous-region.h"
#include "core/gimpprogress.h"
@@ -50,6 +51,8 @@
#include "operations/layer-modes/gimp-layer-modes.h"
#include "path/gimpvectorlayer.h"
#include "widgets/gimphelp-ids.h"
#include "widgets/gimpwidgets-utils.h"
@@ -620,7 +623,21 @@ gimp_bucket_fill_tool_button_press (GimpTool *tool,
return;
}
if (gimp_item_is_content_locked (GIMP_ITEM (drawable), &locked_item))
if (gimp_item_is_link_layer (GIMP_ITEM (drawable)))
{
gimp_tool_message_literal (tool, display,
_("Link layers must be rasterized "
"before they can be painted on."));
return;
}
else if (gimp_item_is_vector_layer (GIMP_ITEM (drawable)))
{
gimp_tool_message_literal (tool, display,
_("Vector layers must be rasterized "
"before they can be painted on."));
return;
}
else if (gimp_item_is_content_locked (GIMP_ITEM (drawable), &locked_item))
{
gimp_tool_message_literal (tool, display,
_("The selected layer's pixels are locked."));

View File

@@ -562,48 +562,50 @@ gimp_filter_tool_control (GimpTool *tool,
case GIMP_TOOL_ACTION_COMMIT:
if (filter_tool->filter)
drawable = gimp_drawable_filter_get_drawable (filter_tool->filter);
/* TODO: Expand non-destructive editing to other drawables
* besides layers and channels */
if ((! GIMP_IS_LAYER (drawable) && ! GIMP_IS_CHANNEL (drawable)) ||
GIMP_IS_LAYER_MASK (drawable) ||
(! filter_tool->existing_filter && options->merge_filter))
non_destructive = FALSE;
if (filter_tool->operation)
{
gegl_node_get (filter_tool->operation,
"operation", &operation_name,
NULL);
drawable = gimp_drawable_filter_get_drawable (filter_tool->filter);
if (! g_strcmp0 (operation_name, "gegl:nop"))
/* TODO: Expand non-destructive editing to other drawables
* besides layers and channels */
if ((! GIMP_IS_LAYER (drawable) && ! GIMP_IS_CHANNEL (drawable)) ||
GIMP_IS_LAYER_MASK (drawable) ||
(! filter_tool->existing_filter && options->merge_filter))
non_destructive = FALSE;
/* TODO: Once we can serialize GimpDrawable, remove so that filters with
* aux nodes can be non-destructive */
if (gegl_node_has_pad (filter_tool->operation, "aux") ||
/* GEGL graph is dangerous even without using third-party
* effects, because it may run any effect. E.g. it can
* run sink effects overwriting any local files with user
* rights. We leave a way in through an environment
* variable because it is a useful tool for GEGL ops
* developers but it should only be set while knowing what
* you are doing.
*/
(g_strcmp0 (operation_name, "gegl:gegl") == 0 &&
g_getenv ("GIMP_ALLOW_GEGL_GRAPH_LAYER_EFFECT") == NULL))
non_destructive = FALSE;
if (filter_tool->operation)
{
gegl_node_get (filter_tool->operation,
"operation", &operation_name,
NULL);
g_free (operation_name);
if (! g_strcmp0 (operation_name, "gegl:nop"))
non_destructive = FALSE;
/* TODO: Once we can serialize GimpDrawable, remove so that
* filters with aux nodes can be non-destructive */
if (gegl_node_has_pad (filter_tool->operation, "aux") ||
/* GEGL graph is dangerous even without using third-party
* effects, because it may run any effect. E.g. it can
* run sink effects overwriting any local files with user
* rights. We leave a way in through an environment
* variable because it is a useful tool for GEGL ops
* developers but it should only be set while knowing what
* you are doing.
*/
(g_strcmp0 (operation_name, "gegl:gegl") == 0 &&
g_getenv ("GIMP_ALLOW_GEGL_GRAPH_LAYER_EFFECT") == NULL))
non_destructive = FALSE;
g_free (operation_name);
}
/* Ensure that filters applied to group, vector or link layers are
* non-destructive */
if (GIMP_IS_GROUP_LAYER (drawable) ||
gimp_item_is_vector_layer (GIMP_ITEM (drawable)) ||
gimp_item_is_link_layer (GIMP_ITEM (drawable)))
non_destructive = TRUE;
}
/* Ensure that filters applied to group, vector or link layers are non-destructive */
if (GIMP_IS_GROUP_LAYER (drawable) ||
gimp_item_is_vector_layer (GIMP_ITEM (drawable)) ||
gimp_item_is_link_layer (GIMP_ITEM (drawable)))
non_destructive = TRUE;
gimp_filter_tool_commit (filter_tool, non_destructive);
break;
}

View File

@@ -127,6 +127,8 @@ static void gimp_mybrush_tool_cursor_update (GimpTool *tool,
options->view_zoom = (gimp_zoom_model_get_factor (shell->zoom) > 0.0f) ?
gimp_zoom_model_get_factor (shell->zoom) : 1.0f;
options->view_rotation = shell->rotate_angle;
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
}
static void

View File

@@ -143,6 +143,6 @@ libapptools = static_library('apptools',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Tools"',
dependencies: [
gegl, gtk3,
gegl, gtk3, gexiv2,
],
)

View File

@@ -280,6 +280,6 @@ libappwidgets = static_library('appwidgets',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-Widgets"',
dependencies: [
gegl, gtk3,
gegl, gtk3, gexiv2,
],
)

View File

@@ -13,6 +13,6 @@ libappxcf = static_library('appxcf',
include_directories: [ rootInclude, rootAppInclude, ],
c_args: '-DG_LOG_DOMAIN="Gimp-XCF"',
dependencies: [
cairo, gegl, gdk_pixbuf, zlib
cairo, gegl, gdk_pixbuf, gexiv2, zlib
],
)

View File

@@ -325,6 +325,7 @@ conf_app GTK_PATH "${LIB_DIR}/${LIB_SUBDIR}gtk-3.0"
prep_pkg "ibus-gtk3"
bund_usr "$UNIX_PREFIX" "lib/gtk-3.0/*.*.*/immodules/*.so" --bundler
conf_app GTK_IM_MODULE_FILE "${LIB_DIR}/${LIB_SUBDIR}gtk-3.0/*.*.*/immodules.cache"
conf_app GTK_MODULES "" --no-expand
## Core features
bund_usr "$GIMP_PREFIX" "lib/libbabl*"
@@ -353,6 +354,10 @@ bund_usr "$GIMP_PREFIX" "etc/gimp"
## Other features and plug-ins
### mypaint brushes
bund_usr "$UNIX_PREFIX" "share/mypaint-data/2.0"
####https://salsa.debian.org/multimedia-team/mypaint-brushes/-/merge_requests/2
for myb in $(find "$USR_DIR/share/mypaint-data/2.0/brushes/Dieterle" -iname "*.myb"); do
sed -i -e 's|surfacemap_x|gridmap_x|g' -e 's|surfacemap_y|gridmap_y|g' $myb;
done
### Needed for 'th' word breaking in Text tool etc
bund_usr "$UNIX_PREFIX" "share/libthai"
conf_app LIBTHAI_DICTDIR "share/libthai"

View File

@@ -29,6 +29,7 @@
"--filesystem=/tmp",
"--filesystem=xdg-run/gvfs",
"--filesystem=xdg-run/gvfsd",
"--unset-env=GTK_MODULES",
"--talk-name=org.gtk.vfs.*",
"--talk-name=org.freedesktop.FileManager1",
"--talk-name=org.gnome.Shell.Screenshot",
@@ -244,8 +245,8 @@
"sources": [
{
"type": "archive",
"url": "https://poppler.freedesktop.org/poppler-25.09.1.tar.xz",
"sha256": "0c1091d01d3dd1664a13816861e812d02b29201e96665454b81b52d261fad658",
"url": "https://poppler.freedesktop.org/poppler-25.10.0.tar.xz",
"sha256": "6b5e9bb64dabb15787a14db1675291c7afaf9387438cc93a4fb7f6aec4ee6fe0",
"x-checker-data": {
"type": "anitya",
"project-id": 3686,

View File

@@ -29,6 +29,8 @@ apps:
LIBHEIF_PLUGIN_PATH: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libheif/plugins
#PostScript plug-in support
GS_LIB: $SNAP/usr/share/ghostscript/10.02.1/Resource/Init
#Acessibility support
GTK_MODULES: ""
slots:
- dbus-gimp
plugs:
@@ -164,3 +166,7 @@ parts:
# get gimp icon for proper desktop integration
cp $CRAFT_STAGE/usr/share/icons/hicolor/scalable/apps/gimp.svg $CRAFT_PRIME/gimp
craftctl default
#https://salsa.debian.org/multimedia-team/mypaint-brushes/-/merge_requests/2
for myb in $(find "$CRAFT_PRIME/usr/share/mypaint-data/2.0/brushes/Dieterle" -iname "*.myb"); do
sed -i -e 's|surfacemap_x|gridmap_x|g' -e 's|surfacemap_y|gridmap_y|g' $myb;
done

View File

@@ -32,8 +32,7 @@ if ($GITLAB_CI)
# Prepare env
if (-not $GIMP_PREFIX)
{
#FIXME:'gimpenv' have buggy code about Windows paths. See: https://gitlab.gnome.org/GNOME/gimp/-/issues/12284
$GIMP_PREFIX = "$PWD\..\_install".Replace('\', '/')
$GIMP_PREFIX = "$PWD\..\_install"
}
Invoke-Expression ((Get-Content .gitlab-ci.yml | Select-String 'win_environ\[' -Context 0,7) -replace '> ','' -replace '- ','')

View File

@@ -26,7 +26,7 @@ Write-Output "$([char]27)[0Ksection_start:$(Get-Date -UFormat %s -Millisecond 0)
## Install or Update Inno (if needed)
## (We need to ensure that TLS 1.2 is enabled because of some runners)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest https://jrsoftware.org/download.php/is.exe -OutFile ..\is.exe
Invoke-WebRequest https://files.jrsoftware.org/is/6/innosetup-6.5.4.exe -OutFile ..\is.exe
$inno_version_downloaded = (Get-Item ..\is.exe).VersionInfo.ProductVersion -replace ' ',''
$broken_inno = Get-ChildItem $env:TMP -Filter *.isl.bak -ErrorAction SilentlyContinue
$inno_version = Get-ItemProperty Registry::'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\Inno Setup*' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty DisplayVersion

View File

@@ -140,10 +140,12 @@
;3 INSTALLER SOURCE
#define ASSETS_DIR BUILD_DIR + "\build\windows\installer"
;3.1.1 Icons and other files
#define ASSETS_DIR BUILD_DIR + "\build\windows\installer"
#include ASSETS_DIR + "\splash-dimensions.h"
#define WIZARD_SMALL_IMAGE ASSETS_DIR + "\gimp.scale-100.bmp," + ASSETS_DIR + "\gimp.scale-125.bmp," + ASSETS_DIR + "\gimp.scale-150.bmp," + ASSETS_DIR + "\gimp.scale-175.bmp," + ASSETS_DIR + "\gimp.scale-200.bmp," + ASSETS_DIR + "\gimp.scale-225.bmp," + ASSETS_DIR + "\gimp.scale-250.bmp"
#define WIZARD_IMAGE ASSETS_DIR + "\install-end.scale-100.bmp," + ASSETS_DIR + "\install-end.scale-125.bmp," + ASSETS_DIR + "\install-end.scale-150.bmp," + ASSETS_DIR + "\install-end.scale-175.bmp," + ASSETS_DIR + "\install-end.scale-200.bmp," + ASSETS_DIR + "\install-end.scale-225.bmp," + ASSETS_DIR + "\install-end.scale-250.bmp"
;3.1.2 Installer lang files
[Languages]
@@ -247,8 +249,9 @@ AlwaysShowDirOnReadyPage=yes
WizardStyle=modern
WizardSizePercent=100
WizardResizable=no
WizardSmallImageFile={#ASSETS_DIR}\gimp.scale-100.bmp,{#ASSETS_DIR}\gimp.scale-125.bmp,{#ASSETS_DIR}\gimp.scale-150.bmp,{#ASSETS_DIR}\gimp.scale-175.bmp,{#ASSETS_DIR}\gimp.scale-200.bmp,{#ASSETS_DIR}\gimp.scale-225.bmp,{#ASSETS_DIR}\gimp.scale-250.bmp
WizardImageFile={#ASSETS_DIR}\install-end.scale-100.bmp,{#ASSETS_DIR}\install-end.scale-125.bmp,{#ASSETS_DIR}\install-end.scale-150.bmp,{#ASSETS_DIR}\install-end.scale-175.bmp,{#ASSETS_DIR}\install-end.scale-200.bmp,{#ASSETS_DIR}\install-end.scale-225.bmp,{#ASSETS_DIR}\install-end.scale-250.bmp
WizardImageAlphaFormat=defined
WizardSmallImageFile={#WIZARD_SMALL_IMAGE}
WizardImageFile={#WIZARD_IMAGE}
WizardImageStretch=yes
[LangOptions]
DialogFontName=Segoe UI

View File

@@ -48,7 +48,7 @@ if have_vala and have_gobject_introspection
'goat-exercise-vala.vala',
include_directories: [ rootInclude, ],
dependencies: [
libgimp_vapi, libgimpui_vapi, gtk3, gegl, math,
libgimp_vapi, libgimpui_vapi, libgimpui_dep, math,
],
c_args: [
'-DGETTEXT_PACKAGE="@0@"'.format('org.gimp.extension.goat-exercises'),

View File

@@ -361,6 +361,32 @@ libgimpui_introspectable = [
]
if glib.version().version_compare('>=2.86')
if not platform_windows
gio_specific_gir = 'GioUnix-2.0'
gio_specific_vapi = 'gio-unix-2.0'
else
gio_specific_gir = 'GioWin32-2.0'
gio_specific_vapi = 'gio-windows-2.0'
endif
else
gio_specific_gir = ''
gio_specific_vapi = ''
endif
libgimp_deps_table = [
{ 'gir': 'Babl-0.1', 'vapi': 'babl-0.1', },
{ 'gir': 'cairo-1.0', 'vapi': 'cairo-1.0', },
{ 'gir': 'GdkPixbuf-2.0', 'vapi': 'gdk-pixbuf-2.0', },
{ 'gir': 'Gegl-0.4', 'vapi': 'gegl-0.4', },
{ 'gir': 'Gio-2.0', 'vapi': 'gio-2.0', },
{ 'gir': gio_specific_gir, 'vapi': gio_specific_vapi, },
{ 'gir': 'GLib-2.0', 'vapi': 'glib-2.0', },
{ 'gir': 'GObject-2.0', 'vapi': 'gobject-2.0', },
{ 'gir': 'Pango-1.0', 'vapi': 'gtk+-3.0', },
]
libgimp = library('gimp-'+ gimp_api_version,
libgimp_sources,
include_directories: rootInclude,
@@ -395,6 +421,7 @@ libgimp_dep = declare_dependency(
cairo,
gdk_pixbuf,
gegl,
gexiv2,
],
link_with: [
libgimp,
@@ -412,7 +439,6 @@ libgimpui = library('gimpui-'+ gimp_api_version,
libgimpui_sources,
dependencies: [
libgimp_dep,
gexiv2,
gtk3,
],
sources: [
@@ -489,23 +515,12 @@ elif get_option('b_sanitize') != 'none'
warnings += gobject_introspection_warning
else
have_gobject_introspection = true
libgimp_gir_includes = [
'Babl-0.1',
'cairo-1.0',
'GdkPixbuf-2.0',
'Gegl-0.4',
'Gio-2.0',
'GLib-2.0',
'GObject-2.0',
'Pango-1.0',
]
if glib.version().version_compare('>=2.86')
if not platform_windows
libgimp_gir_includes += [ 'GioUnix-2.0' ]
else
libgimp_gir_includes += [ 'GioWin32-2.0' ]
libgimp_gir_includes = []
foreach dep : libgimp_deps_table
if dep['gir'] != ''
libgimp_gir_includes += [dep['gir']]
endif
endif
endforeach
gir_args = [
'-DGIMP_COMPILATION',
@@ -569,23 +584,12 @@ else
endif
if have_vala
vapi_deps = [
'babl-0.1',
'cairo-1.0',
'gdk-pixbuf-2.0',
'gegl-0.4',
'gio-2.0',
'glib-2.0',
'gobject-2.0',
'gtk+-3.0',
]
if glib.version().version_compare('>=2.86')
if not platform_windows
vapi_deps += [ 'gio-unix-2.0' ]
else
vapi_deps += [ 'gio-windows-2.0' ]
vapi_deps = []
foreach dep : libgimp_deps_table
if dep['vapi'] != ''
vapi_deps += [dep['vapi']]
endif
endif
endforeach
libgimp_vapi = gnome.generate_vapi('gimp-' + gimp_api_version,
sources: libgimp_gir[0],

View File

@@ -150,6 +150,38 @@ gimp_color_is_perceptually_identical (GeglColor *color1,
return (gimp_color_get_CIE2000_distance (color1, color2) < 0.6);
}
/**
* gimp_color_is_identical:
* @color1: a [class@Gegl.Color]
* @color2: a [class@Gegl.Color]
*
* Determine whether @color1 and @color2 are exactly the same, by comparing
* their RGBA components. If the RGBA values are the same, then the colors are
* considered identical, otherwise not.
*
* Returns: whether the 2 colors are exactly the same.
*
* Since: 3.2
**/
gboolean
gimp_color_is_identical (GeglColor *color1,
GeglColor *color2)
{
gdouble r1, g1, b1, a1;
gdouble r2, g2, b2, a2;
g_return_val_if_fail (GEGL_IS_COLOR (color1), FALSE);
g_return_val_if_fail (GEGL_IS_COLOR (color2), FALSE);
gegl_color_get_rgba (color1, &r1, &g1, &b1, &a1);
gegl_color_get_rgba (color2, &r2, &g2, &b2, &a2);
return (r1 == r2 &&
g1 == g2 &&
b1 == b2 &&
a1 == a2);
}
/**
* gimp_color_is_out_of_self_gamut:
* @color: a [class@Gegl.Color]

View File

@@ -9,6 +9,7 @@ EXPORTS
gimp_cairo_checkerboard_create
gimp_cairo_surface_create_buffer
gimp_cairo_surface_get_format
gimp_color_is_identical
gimp_color_is_out_of_gamut
gimp_color_is_out_of_self_gamut
gimp_color_is_perceptually_identical

View File

@@ -50,6 +50,9 @@ void gimp_color_set_alpha (GeglColor *color,
gboolean gimp_color_is_perceptually_identical (GeglColor *color1,
GeglColor *color2);
gboolean gimp_color_is_identical (GeglColor *color1,
GeglColor *color2);
GeglColor * gimp_color_parse_css (const gchar *css);
GeglColor * gimp_color_parse_hex (const gchar *hex);
GeglColor * gimp_color_parse_name (const gchar *name);

View File

@@ -36,7 +36,7 @@ libgimpcolor = library('gimpcolor-' + gimp_api_version,
libgimpcolor_sources,
include_directories: rootInclude,
dependencies: [
cairo, gdk_pixbuf, gegl, lcms, math,
cairo, gdk_pixbuf, gegl, gexiv2, lcms, math,
],
c_args: [ '-DG_LOG_DOMAIN="LibGimpColor"', '-DGIMP_COLOR_COMPILATION', ],
link_with: [ libgimpbase, ],

View File

@@ -307,8 +307,8 @@ gimp_config_param_spec_duplicate (GParamSpec *pspec)
const gchar *type_name = g_type_name (value_type);
if (value_type == G_TYPE_FILE ||
/* These types are not visibile in libgimpconfig so we compare
* with type names instead.
/* These types are not visible in libgimpconfig
* so we compare with type names instead.
*/
g_strcmp0 (type_name, "GimpImage") == 0 ||
g_strcmp0 (type_name, "GimpDisplay") == 0 ||

View File

@@ -70,7 +70,7 @@ libgimpconfig = library('gimpconfig-' + gimp_api_version,
libgimpconfig_sources,
include_directories: rootInclude,
dependencies: [
cairo, gdk_pixbuf, gegl, gio, gio_specific,
cairo, gdk_pixbuf, gegl, gexiv2, gio, gio_specific,
],
c_args: [ '-DG_LOG_DOMAIN="LibGimpConfig"', '-DGIMP_CONFIG_COMPILATION', ],
link_with: [

View File

@@ -19,7 +19,7 @@ libgimpmodule = library('gimpmodule-' + gimp_api_version,
libgimpmodule_sources,
include_directories: rootInclude,
dependencies: [
gegl, gio, glib, gmodule,
gegl, gexiv2, gio, glib, gmodule,
],
c_args: [ '-DG_LOG_DOMAIN="LibGimpModule"', '-DGIMP_MODULE_COMPILATION', ],
link_with: [

View File

@@ -65,7 +65,7 @@ libgimpthumb = library('gimpthumb-'+ gimp_api_version,
libgimpthumb_sources,
include_directories: rootInclude,
dependencies: [
gegl, glib, gobject, gdk_pixbuf, gio,
gegl, gexiv2, glib, gobject, gdk_pixbuf, gio,
],
c_args: [ '-DG_LOG_DOMAIN="LibGimpThumb"', '-DGIMP_THUMB_COMPILATION', ],
link_with: [

View File

@@ -528,7 +528,7 @@ gimp_color_area_set_color (GimpColorArea *area,
g_return_if_fail (GIMP_IS_COLOR_AREA (area));
g_return_if_fail (GEGL_IS_COLOR (color));
if (! gimp_color_is_perceptually_identical (area->color, color))
if (! gimp_color_is_identical (area->color, color))
{
area->needs_render = TRUE;
gtk_widget_queue_draw (GTK_WIDGET (area));

View File

@@ -683,7 +683,7 @@ gimp_color_selection_notebook_changed (GimpColorSelector *selector,
selection->color = gegl_color_duplicate (color);
update = UPDATE_SCALES | UPDATE_ENTRY;
if (! gimp_color_is_perceptually_identical (color, old_color))
if (! gimp_color_is_identical (color, old_color))
update |= UPDATE_COLOR;
gimp_color_selection_update (selection, update);

View File

@@ -207,7 +207,7 @@ libgimpwidgets = library('gimpwidgets-'+ gimp_api_version,
libgimpwidgets_sources,
include_directories: rootInclude,
dependencies: [
gegl, gtk3, lcms, math, mscms
gegl, gexiv2, gtk3, lcms, math, mscms
],
c_args: [ '-DG_LOG_DOMAIN="LibGimpWidgets"', '-DGIMP_WIDGETS_COMPILATION', ],
link_with: [

View File

@@ -128,7 +128,7 @@ fs = import('fs')
cc = meson.get_compiler('c')
cxx = meson.get_compiler('cpp')
prefix = get_option('prefix')
prefix = get_option('prefix').replace('\\', '/')
buildtype = get_option('buildtype')
exec_ver = '-' + gimp_app_version
@@ -334,6 +334,9 @@ if get_option('buildtype') == 'debug' or get_option('buildtype') == 'debugoptimi
if not platform_windows
# DWARF symbols for GCC and LLDB on Unix
debugging_format = 'native'
elif cc.get_argument_syntax() == 'msvc'
# CodeView symbols for DIA or DbgHelp debuggers and LLDB on Windows
debugging_format = 'Native'
elif platform_windows and get_option('win-debugging') == 'native' and cc.has_argument('-gcodeview') and cc.has_link_argument('-Wl,--pdb=') and cc.get_id() == 'clang'
# CodeView symbols for DIA or DbgHelp debuggers and LLDB on Windows
debugging_format = 'native'
@@ -406,7 +409,7 @@ winsock = platform_windows ? cc.find_library('ws2_32') : no_dep
mscms = platform_windows ? cc.find_library('mscms') : no_dep
atk_minver = '2.4.0'
atk = dependency('atk', version: '>='+atk_minver)
babl_minver = '0.1.114'
babl_minver = '0.1.116'
babl = dependency('babl-0.1', version: '>='+babl_minver, required: false)
if not babl.found()
# babl changed its pkg-config name from 'babl' to 'babl-0.1' in version
@@ -428,7 +431,7 @@ freetype2_minver = '2.1.7'
freetype2 = dependency('freetype2', version: '>='+freetype2_minver)
gdk_pixbuf_minver = '2.30.8'
gdk_pixbuf = dependency('gdk-pixbuf-2.0', version: '>='+gdk_pixbuf_minver)
gegl_minver = '0.4.62'
gegl_minver = '0.4.64'
gegl = dependency('gegl-0.4', version: '>='+gegl_minver)
exiv2_minver = '0.27.4'
exiv2 = dependency('exiv2', version: '>='+exiv2_minver)
@@ -2046,7 +2049,7 @@ pkgconfig.generate(libgimpui,
# Install native debug data (.pdb) on Windows
# Ideally meson should take care of it automatically.
# See: https://github.com/mesonbuild/meson/issues/12977
if platform_windows and debugging_format == 'native'
if platform_windows and debugging_format == 'native' and cc.get_argument_syntax() != 'msvc'
install_win_debug_script = find_program('build/windows/2_bundle-gimp-uni_sym.py')
meson.add_install_script(install_win_debug_script)
endif

View File

@@ -1,6 +1,6 @@
modules_deps = [
gtk3, babl, gegl, math,
gtk3, babl, gegl, gexiv2, math,
]
color_selector_libs = [

View File

@@ -104,7 +104,16 @@ HELP
{
GimpImage *image =
g_value_get_object (gimp_value_array_index (return_vals, 1));
gimp_image_set_load_proc (image, file_proc);
if (! gimp_image_get_load_proc (image))
/* Leave the initial load procedure if it already exists as
* it will give information about the source format. See
* similar code in file_open_image().
*/
gimp_image_set_load_proc (image, file_proc);
if (! gimp_image_get_file (image))
gimp_image_set_imported_file (image, file);
}
}

View File

@@ -88,6 +88,8 @@
#include "libgimp/stdplugins-intl.h"
#include <archive.h>
#include <archive_entry.h>
#include <zlib.h>
#include <bzlib.h>
#include <lzma.h>
@@ -201,6 +203,9 @@ static gboolean xz_load (GFile *infi
GFile *outfile);
static gboolean xz_export (GFile *infile,
GFile *outfile);
static gboolean zip_load (GFile *infile,
GFile *outfile);
static goffset get_file_info (GFile *file);
@@ -215,58 +220,77 @@ static const CompressorEntry compressors[] =
{
N_("gzip archive"),
"application/x-gzip",
"xcf.gz,xcfgz", /* FIXME "xcf.gz,gz,xcfgz" */
"gz,xcf.gz,xcfgz",
"0,string,\037\213",
".xcfgz",
".gz",
"file-gz-load",
"loads files compressed with gzip",
"This procedure loads files in the gzip compressed format.",
N_("Loads files compressed with gzip"),
N_("This procedure loads files in the gzip compressed format."),
gzip_load,
"file-gz-export",
"saves files compressed with gzip",
"This procedure saves files in the gzip compressed format.",
N_("Exports files compressed with gzip"),
N_("This procedure exports files in the gzip compressed format."),
gzip_export
},
{
N_("bzip archive"),
"application/x-bzip",
"xcf.bz2,xcfbz2", /* FIXME "xcf.bz2,bz2,xcfbz2" */
"bz2,xcf.bz2,xcfbz2",
"0,string,BZh",
".xcfbz2",
".bz2",
"file-bz2-load",
"loads files compressed with bzip2",
"This procedure loads files in the bzip2 compressed format.",
N_("Loads files compressed with bzip2"),
N_("This procedure loads files in the bzip2 compressed format."),
bzip2_load,
"file-bz2-export",
"saves files compressed with bzip2",
"This procedure saves files in the bzip2 compressed format.",
N_("Exports files compressed with bzip2"),
N_("This procedure exports files in the bzip2 compressed format."),
bzip2_export
},
{
N_("xz archive"),
"application/x-xz",
"xcf.xz,xcfxz", /* FIXME "xcf.xz,xz,xcfxz" */
"xz,xcf.xz,xcfxz",
"0,string,\3757zXZ\x00",
".xcfxz",
".xz",
"file-xz-load",
"loads files compressed with xz",
"This procedure loads files in the xz compressed format.",
N_("Loads files compressed with xz"),
N_("This procedure loads files in the xz compressed format."),
xz_load,
"file-xz-export",
"saves files compressed with xz",
"This procedure saves files in the xz compressed format.",
N_("Exports files compressed with xz"),
N_("This procedure exports files in the xz compressed format."),
xz_export
},
{
N_("zip archive"),
"application/zip",
"zip,hgt.zip",
"0,string,PK\x03\x04",
".xcfzip",
".zip",
"file-zip-load",
N_("Loads files compressed with zip"),
N_("This procedure loads files in the zip compressed format."),
zip_load,
NULL,
NULL,
NULL,
NULL
}
};
@@ -297,7 +321,8 @@ compressor_query_procedures (GimpPlugIn *plug_in)
const CompressorEntry *compressor = &compressors[i];
list = g_list_append (list, g_strdup (compressor->load_proc));
list = g_list_append (list, g_strdup (compressor->save_proc));
if (compressor->save_proc)
list = g_list_append (list, g_strdup (compressor->save_proc));
}
return list;
@@ -322,14 +347,14 @@ compressor_create_procedure (GimpPlugIn *plug_in,
(gpointer) compressor, NULL);
gimp_procedure_set_documentation (procedure,
compressor->load_blurb,
compressor->load_help,
_(compressor->load_blurb),
_(compressor->load_help),
name);
gimp_file_procedure_set_magics (GIMP_FILE_PROCEDURE (procedure),
compressor->magic);
}
else if (! strcmp (name, compressor->save_proc))
else if (compressor->save_proc && ! strcmp (name, compressor->save_proc))
{
procedure = gimp_export_procedure_new (plug_in, name,
GIMP_PDB_PROC_TYPE_PLUGIN,
@@ -339,8 +364,8 @@ compressor_create_procedure (GimpPlugIn *plug_in,
gimp_procedure_set_image_types (procedure, "RGB*, GRAY*, INDEXED*");
gimp_procedure_set_documentation (procedure,
compressor->save_blurb,
compressor->save_help,
_(compressor->save_blurb),
_(compressor->save_help),
name);
}
@@ -387,8 +412,7 @@ compressor_load (GimpProcedure *procedure,
gimp_plug_in_set_pdb_error_handler (gimp_procedure_get_plug_in (procedure),
GIMP_PDB_ERROR_HANDLER_PLUGIN);
image = load_image (compressor, file, run_mode,
&status, &error);
image = load_image (compressor, file, run_mode, &status, &error);
return_vals = gimp_procedure_new_return_values (procedure, status, error);
@@ -526,9 +550,17 @@ load_image (const CompressorEntry *compressor,
if (image)
{
GFile *xcf_file;
*status = GIMP_PDB_SUCCESS;
gimp_image_set_file (image, file);
if ((xcf_file = gimp_image_get_xcf_file (image)))
/* Replace the temporary file with the actual source file, but
* only if the inner format was actually XCF.
*/
gimp_image_set_file (image, file);
g_clear_object (&xcf_file);
}
else
{
@@ -1018,6 +1050,79 @@ xz_export (GFile *infile,
return ret;
}
static gboolean
zip_load (GFile *infile,
GFile *outfile)
{
gboolean ret;
FILE *in;
FILE *out;
struct archive *a;
struct archive_entry *entry;
gint r;
ret = FALSE;
in = NULL;
out = NULL;
in = g_fopen (g_file_peek_path (infile), "rb");
if (!in)
goto out;
out = g_fopen (g_file_peek_path (outfile), "wb");
if (! out)
goto out;
if ((a = archive_read_new ()))
{
const gchar *name = gimp_file_get_utf8_name (infile);
archive_read_support_format_all (a);
r = archive_read_open_filename (a, name, 10240);
if (r != ARCHIVE_OK)
{
archive_read_close (a);
archive_read_free (a);
goto out;
}
if (archive_read_next_header (a, &entry) == ARCHIVE_OK)
{
r = archive_read_data_into_fd (a, fileno (out));
if (r != ARCHIVE_OK)
{
archive_read_close (a);
archive_read_free (a);
goto out;
}
ret = TRUE;
if (archive_read_next_header (a, &entry) != ARCHIVE_EOF)
/* Leave a chance for the load to succeed (in case the first
* file happens to be an image file), yet still warns. This
* procedure expects that the archive contains a single
* file.
*/
g_message (_("This zip archive contains more than one file."));
}
archive_read_close (a);
archive_read_free (a);
}
out:
if (in)
fclose (in);
if (out)
fclose (out);
return ret;
}
/* get file size from a filename */
static goffset
get_file_info (GFile *file)

View File

@@ -10,9 +10,7 @@ common_plugins_list = [
{ 'name': 'colormap-remap', },
{ 'name': 'compose', },
{ 'name': 'contrast-retinex', },
{ 'name': 'crop-zealous',
'deps': [ gtk3, gegl, gdk_pixbuf, cairo, ],
},
{ 'name': 'crop-zealous' },
{ 'name': 'curve-bend', },
{ 'name': 'decompose', },
{ 'name': 'depth-merge', },
@@ -20,7 +18,7 @@ common_plugins_list = [
{ 'name': 'destripe', },
{ 'name': 'file-cel', },
{ 'name': 'file-compressor',
'deps': [ gegl, gdk_pixbuf, cairo, gio, liblzma, pango, bz2, zlib, ],
'deps': [ gio, libarchive, liblzma, pango, bz2, zlib, ],
},
{ 'name': 'file-csource', },
{ 'name': 'file-dicom', },
@@ -28,34 +26,32 @@ common_plugins_list = [
{ 'name': 'file-gbr', },
{ 'name': 'file-gegl', },
{ 'name': 'file-gif-load',
'deps': [ gtk3, gegl, gdk_pixbuf, cairo, zlib, ],
'deps': [ zlib, ],
},
{ 'name': 'file-gif-export', },
{ 'name': 'file-gih', },
{ 'name': 'file-glob',
'deps': [ gtk3, gegl, gdk_pixbuf, cairo, ],
},
{ 'name': 'file-glob', },
{ 'name': 'file-header', },
{ 'name': 'file-html-table', },
{ 'name': 'file-paa', },
{ 'name': 'file-pat', },
{ 'name': 'file-pcx', },
{ 'name': 'file-pdf-load',
'deps': [ gtk3, gegl, gdk_pixbuf, poppler ],
'deps': [ poppler ],
},
{ 'name': 'file-pix', },
{ 'name': 'file-png',
'deps': [ gtk3, gegl, libpng, lcms ],
'deps': [ libpng, lcms ],
},
{ 'name': 'file-pnm', },
{ 'name': 'file-psp',
'deps': [ gtk3, gegl, zlib, ],
'deps': [ zlib, ],
},
{ 'name': 'file-raw-data', },
{ 'name': 'file-seattle-filmworks', },
{ 'name': 'file-sunras', },
{ 'name': 'file-svg',
'deps': [ gtk3, gegl, rsvg, ],
'deps': [ rsvg, ],
},
{ 'name': 'file-tga', },
{ 'name': 'file-tim', },
@@ -88,26 +84,26 @@ common_plugins_list = [
if libaa.found()
common_plugins_list += {
'name': 'file-aa',
'deps': [ gtk3, gegl, gdk_pixbuf, libaa, ],
'deps': [ libaa, ],
}
endif
if have_heif
common_plugins_list += { 'name': 'file-heif',
'deps': [ gtk3, gegl, libheif, gexiv2, lcms, ],
'deps': [ libheif, lcms, ],
}
endif
if openjpeg.found()
common_plugins_list += { 'name': 'file-jp2',
'deps': [ gtk3, gegl, gdk_pixbuf, openjpeg, ],
'deps': [ openjpeg, ],
}
endif
if libjxl.found() and libjxl_threads.found()
common_plugins_list += {
'name': 'file-jpegxl',
'deps': [ gtk3, gegl, gexiv2, libjxl, libjxl_threads, ],
'deps': [ libjxl, libjxl_threads, ],
}
endif
@@ -117,57 +113,55 @@ if libmng.found()
mng_cflags = [ '-DMNG_USE_DLL' ]
endif
common_plugins_list += { 'name': 'file-mng',
'deps': [ gtk3, gegl, libmng, libpng, ],
'deps': [ libmng, libpng, ],
'cflags': mng_cflags,
}
endif
if cairopdf.found()
common_plugins_list += { 'name': 'file-pdf-export',
'deps': [ gtk3, gegl, gdk_pixbuf, poppler, cairo, cairopdf ],
'deps': [ poppler, cairopdf ],
}
endif
if ghostscript.found()
common_plugins_list += { 'name': 'file-ps',
'deps': [ gtk3, gegl, gdk_pixbuf, ghostscript, ],
'deps': [ ghostscript, ],
}
endif
if wmf.found()
common_plugins_list += { 'name': 'file-wmf',
'deps': [ gtk3, gegl, wmf, ],
'deps': [ wmf, ],
}
endif
if xmc.found()
common_plugins_list += { 'name': 'file-xmc',
'deps': [ gtk3, gegl, xmc, ],
'deps': [ xmc, ],
}
endif
if libxpm.found()
common_plugins_list += { 'name': 'file-xpm',
'deps': [ gtk3, gegl, libxpm, ],
'deps': [ libxpm, ],
}
endif
if have_qoi
common_plugins_list += {
'name': 'file-qoi',
'deps': [ gtk3, gegl, ],
}
endif
if libiff.found() and libilbm.found()
common_plugins_list += {
'name': 'file-iff',
'deps': [ gtk3, gegl, libiff, libilbm, ],
'deps': [ libiff, libilbm, ],
}
elif have_ilbm
common_plugins_list += {
'name': 'file-iff',
'deps': [ gtk3, gegl, ],
}
endif
@@ -178,7 +172,6 @@ endif
if platform_linux
common_plugins_list += {
'name': 'file-desktop-link',
'deps': [ gtk3, gegl, gdk_pixbuf, cairo, ],
}
endif
if not platform_windows
@@ -187,7 +180,7 @@ endif
if get_option('webkit-unmaintained')
common_plugins_list += { 'name': 'web-page',
'deps': [ gtk3, gegl, gdk_pixbuf, webkit, ],
'deps': [ webkit, ],
}
endif
@@ -195,7 +188,7 @@ plugin_custom_targets = []
foreach plugin : common_plugins_list
plugin_name = plugin.get('name')
plugin_sources = [ plugin.get('sources', plugin_name + '.c') ]
plugin_deps = plugin.get('deps', [ gtk3, gegl, gdk_pixbuf, ])
plugin_deps = plugin.get('deps', [])
plugin_cflags = plugin.get('cflags', [])
if platform_windows
@@ -241,7 +234,7 @@ foreach plugin : common_plugins_list
libgimpui,
libgimpwidgets,
],
dependencies: [ plugin_deps, math ],
dependencies: [ plugin_deps, math, libgimpui_dep ],
c_args: plugin_cflags,
win_subsystem: 'windows',
install: true,

View File

@@ -28,7 +28,7 @@ help_plugin_lib = static_library('help_plugin',
plugin_sources,
include_directories: [ rootInclude, ],
dependencies: [
gtk3, gegl, cairo, gio, gdk_pixbuf,
libgimpui_dep, gio,
],
install: false,
)

View File

@@ -229,7 +229,7 @@ def export_ora(procedure, run_mode, image, file, options, metadata, config, data
tmp_img.set_palette(image.get_palette())
tmp_layer = Gimp.Layer.new_from_drawable (drawable, tmp_img)
tmp_layer.set_visible (False)
tmp_layer.set_offsets (0, 0)
tmp_img.insert_layer (tmp_layer, None, 0)
pdb_proc = Gimp.get_pdb().lookup_procedure('file-png-export')

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gimp-plug-ins\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gimp/issues\n"
"POT-Creation-Date: 2025-09-04 09:35+0000\n"
"PO-Revision-Date: 2025-09-04 19:10+0300\n"
"POT-Creation-Date: 2025-10-02 00:31+0000\n"
"PO-Revision-Date: 2025-10-02 11:21+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -42,7 +42,7 @@ msgstr "Приклад додатка мовою C"
#: plug-ins/common/qbist.c:254 plug-ins/common/sample-colorize.c:425
#: plug-ins/common/smooth-palette.c:193 plug-ins/common/sparkle.c:301
#: plug-ins/common/sphere-designer.c:3199 plug-ins/common/tile.c:222
#: plug-ins/common/tile-small.c:312 plug-ins/common/van-gogh-lic.c:242
#: plug-ins/common/tile-small.c:311 plug-ins/common/van-gogh-lic.c:242
#: plug-ins/common/warp.c:344 plug-ins/common/wavelet-decompose.c:179
#: plug-ins/flame/flame.c:297 plug-ins/fractal-explorer/fractal-explorer.c:427
#: plug-ins/gfig/gfig.c:213 plug-ins/gimpressionist/gimp.c:184
@@ -568,7 +568,7 @@ msgstr "_Кількість сегментів"
msgid "Number of segments in blinds"
msgstr "Кількість сегментів у жалюзі"
#: plug-ins/common/blinds.c:165 plug-ins/map-object/map-object-ui.c:408
#: plug-ins/common/blinds.c:165 plug-ins/map-object/map-object-ui.c:412
msgid "Orient_ation"
msgstr "_Орієнтація"
@@ -603,7 +603,7 @@ msgstr "Жалюзі"
#.
#. * Create the "background" layer to hold the image...
#.
#: plug-ins/common/blinds.c:260 plug-ins/common/compose.c:1230
#: plug-ins/common/blinds.c:260 plug-ins/common/compose.c:1234
#: plug-ins/common/decompose.c:642 plug-ins/common/file-cel.c:475
#: plug-ins/common/file-cel.c:480 plug-ins/common/file-dicom.c:765
#: plug-ins/common/file-farbfeld.c:307 plug-ins/common/file-gegl.c:446
@@ -1711,36 +1711,36 @@ msgstr "Не вдається отримати шари зображення %d"
msgid "Composing"
msgstr "Збирання"
#: plug-ins/common/compose.c:1075 plug-ins/common/compose.c:1475
#: plug-ins/common/compose.c:1079 plug-ins/common/compose.c:1479
msgid "At least one image is needed to compose"
msgstr "Для збирання треба принаймні одне зображення"
#: plug-ins/common/compose.c:1096
#: plug-ins/common/compose.c:1100
msgid "Drawables have different size"
msgstr "Малюнки мають різні розміри"
#: plug-ins/common/compose.c:1124
#: plug-ins/common/compose.c:1128
msgid "Images have different size"
msgstr "Зображення мають різний розмір"
#: plug-ins/common/compose.c:1142
#: plug-ins/common/compose.c:1146
msgid "Error in getting layer IDs"
msgstr "Помилка отримання ідентифікатора шару"
#: plug-ins/common/compose.c:1275
#: plug-ins/common/compose.c:1279
msgid "Compose"
msgstr "Зібрати"
#: plug-ins/common/compose.c:1290
#: plug-ins/common/compose.c:1294
msgid "Compose Channels"
msgstr "Зібрати канали"
#. Channel representation grid
#: plug-ins/common/compose.c:1305
#: plug-ins/common/compose.c:1309
msgid "Channel Representations"
msgstr "Представлення каналу"
#: plug-ins/common/compose.c:1365
#: plug-ins/common/compose.c:1369
msgid "Mask value"
msgstr "Значення маски"
@@ -2009,7 +2009,7 @@ msgstr "Неможливо виконувати дії з порожнім ви
#: plug-ins/common/file-pcx.c:490 plug-ins/common/file-pcx.c:533
#: plug-ins/common/file-png.c:800 plug-ins/common/file-png.c:1370
#: plug-ins/common/file-ps.c:1158 plug-ins/common/file-ps.c:3738
#: plug-ins/common/file-psp.c:2634 plug-ins/common/file-psp.c:2684
#: plug-ins/common/file-psp.c:2638 plug-ins/common/file-psp.c:2688
#: plug-ins/common/file-qoi.c:275 plug-ins/common/file-raw-data.c:608
#: plug-ins/common/file-raw-data.c:796 plug-ins/common/file-raw-data.c:1841
#: plug-ins/common/file-seattle-filmworks.c:232
@@ -2102,7 +2102,7 @@ msgstr "Переставити дві криві"
#. The Reset button
#: plug-ins/common/curve-bend.c:1232 plug-ins/common/sphere-designer.c:2654
#: plug-ins/common/tile-small.c:523 plug-ins/gimpressionist/preview.c:182
#: plug-ins/common/tile-small.c:522 plug-ins/gimpressionist/preview.c:182
#: plug-ins/ifs-compose/ifs-compose.c:912
msgid "_Reset"
msgstr "_Скинути"
@@ -2702,7 +2702,7 @@ msgstr "«%s»: Кінець файлу або помилка при читан
#. * Open the file for writing...
#.
#: plug-ins/common/file-cel.c:825 plug-ins/common/file-farbfeld.c:364
#: plug-ins/common/file-gif-export.c:939 plug-ins/common/file-html-table.c:360
#: plug-ins/common/file-gif-export.c:939 plug-ins/common/file-html-table.c:358
#: plug-ins/common/file-jp2.c:1804 plug-ins/common/file-jpegxl.c:1389
#: plug-ins/common/file-pcx.c:1083 plug-ins/common/file-pix.c:636
#: plug-ins/common/file-png.c:1915 plug-ins/common/file-pnm.c:1623
@@ -2723,116 +2723,194 @@ msgstr "Експортування «%s»"
msgid "C source code"
msgstr "Програма на C"
#: plug-ins/common/file-csource.c:125
#: plug-ins/common/file-csource.c:125 plug-ins/common/file-csource.c:127
msgid "Dump image data in RGB(A) format for C source"
msgstr ""
"Створити дамп даних зображення у форматі RGB(A) для початкового коду C"
#: plug-ins/common/file-csource.c:127
msgid "CSource cannot be run non-interactively."
msgstr "CSource не можна запускати у неінтерактивному режимі."
#: plug-ins/common/file-csource.c:135
#: plug-ins/common/file-csource.c:136
msgid "C-Source"
msgstr "Початковий код C"
#: plug-ins/common/file-csource.c:149
#: plug-ins/common/file-csource.c:150
msgid "_Prefixed name"
msgstr "Назва з преіксом"
#: plug-ins/common/file-csource.c:150
#: plug-ins/common/file-csource.c:151
msgid "Prefixed name"
msgstr "Назва з префіксом"
#: plug-ins/common/file-csource.c:155
#: plug-ins/common/file-csource.c:156
msgid "Comme_nt"
msgstr "Коентар"
#: plug-ins/common/file-csource.c:156
#: plug-ins/common/file-csource.c:157
msgid "Comment"
msgstr "Коментар"
#: plug-ins/common/file-csource.c:164
#: plug-ins/common/file-csource.c:165
msgid "Save comment to _file"
msgstr "Зберегти коментар у фа_йлі"
#: plug-ins/common/file-csource.c:165
#: plug-ins/common/file-csource.c:166
msgid "Save comment"
msgstr "Зберегти коментар"
#: plug-ins/common/file-csource.c:170
#: plug-ins/common/file-csource.c:171
msgid "Use GLib types (guint_8*)"
msgstr "Використовувати типи GLib (guint_8*)"
#: plug-ins/common/file-csource.c:171
#: plug-ins/common/file-csource.c:172
msgid "Use GLib types"
msgstr "Використовувати типи GLib"
#: plug-ins/common/file-csource.c:176
#: plug-ins/common/file-csource.c:177
msgid "Save alpha channel (RG_BA/RGB)"
msgstr "Зберегти а_льфа-канал (RGBA/RGB)"
#: plug-ins/common/file-csource.c:177
#: plug-ins/common/file-csource.c:178
msgid "Save the alpha channel"
msgstr "Зберегти альфа-канал"
#: plug-ins/common/file-csource.c:182
#: plug-ins/common/file-csource.c:183
msgid "Save as RGB565 (1_6-bit)"
msgstr "Зберегти як RGB565 (1_6 біт)"
#: plug-ins/common/file-csource.c:183
#: plug-ins/common/file-csource.c:184
msgid "Use RGB565 encoding"
msgstr "Використовувати кодування RGB565"
#: plug-ins/common/file-csource.c:188
#: plug-ins/common/file-csource.c:189
msgid "_Use macros instead of struct"
msgstr "Ви_користовувати макроси замість структур"
#: plug-ins/common/file-csource.c:189
#: plug-ins/common/file-csource.c:190
msgid "Use C macros"
msgstr "Використати макрос C"
#: plug-ins/common/file-csource.c:194
#: plug-ins/common/file-csource.c:195
msgid "Use _1 bit Run-Length-Encoding"
msgstr "Використовувати _1-бітове RLE"
#: plug-ins/common/file-csource.c:195
#: plug-ins/common/file-csource.c:196
msgid "Use run-length-encoding"
msgstr "Використовувати RLE"
#: plug-ins/common/file-csource.c:200 plug-ins/pagecurl/pagecurl.c:262
#: plug-ins/common/file-csource.c:201 plug-ins/pagecurl/pagecurl.c:262
msgid "Opaci_ty"
msgstr "Неп_розорість"
#: plug-ins/common/file-csource.c:201 plug-ins/pagecurl/pagecurl.c:263
#: plug-ins/common/file-csource.c:202 plug-ins/pagecurl/pagecurl.c:263
msgid "Opacity"
msgstr "Непрозорість"
#: plug-ins/common/file-compressor.c:216
#: plug-ins/common/file-compressor.c:221
msgid "gzip archive"
msgstr "архів gzip"
#: plug-ins/common/file-compressor.c:229
msgid "Loads files compressed with gzip"
msgstr "Завантажує файли, які стиснуто за допомогою gzip"
#: plug-ins/common/file-compressor.c:230
#| msgid ""
#| "This plug-in loads files in the various Netpbm portable file formats."
msgid "This procedure loads files in the gzip compressed format."
msgstr "Ця процедура завантажує файли у стисненому форматі gzip."
#: plug-ins/common/file-compressor.c:234
msgid "Exports files compressed with gzip"
msgstr "Експортує файли, які стиснуто за допомогою gzip"
#: plug-ins/common/file-compressor.c:235
#| msgid "Exports files in the PNM file format"
msgid "This procedure exports files in the gzip compressed format."
msgstr "Ця процедура експортує файли у стисненому форматі gzip."
#: plug-ins/common/file-compressor.c:240
msgid "bzip archive"
msgstr "архів bzip"
#: plug-ins/common/file-compressor.c:248
msgid "Loads files compressed with bzip2"
msgstr "Завантажує файли, які стиснуто за допомогою bzip2"
#: plug-ins/common/file-compressor.c:249
#| msgid ""
#| "This plug-in loads files in the various Netpbm portable file formats."
msgid "This procedure loads files in the bzip2 compressed format."
msgstr "Ця процедура завантажує файли у стисненому форматі bzip2."
#: plug-ins/common/file-compressor.c:253
msgid "Exports files compressed with bzip2"
msgstr "Експортує файли, які стиснуто за допомогою bzip2"
#: plug-ins/common/file-compressor.c:254
#| msgid ""
#| "This plug-in loads files in the various Netpbm portable file formats."
msgid "This procedure exports files in the bzip2 compressed format."
msgstr "Ця процедура експортує файли у стисненому форматі bzip2."
#: plug-ins/common/file-compressor.c:259
msgid "xz archive"
msgstr "архів xz"
#: plug-ins/common/file-compressor.c:447
#: plug-ins/common/file-compressor.c:267
msgid "Loads files compressed with xz"
msgstr "Завантажує файли, які стиснуто за допомогою xz"
#: plug-ins/common/file-compressor.c:268
#| msgid ""
#| "This plug-in loads files in the various Netpbm portable file formats."
msgid "This procedure loads files in the xz compressed format."
msgstr "Ця процедура завантажує файли у стисненому форматі xz."
#: plug-ins/common/file-compressor.c:272
#| msgid "Error reading compressed data. "
msgid "Exports files compressed with xz"
msgstr "Експортує файли, які стиснуто за допомогою xz"
#: plug-ins/common/file-compressor.c:273
#| msgid "Exports files in the PNM file format"
msgid "This procedure exports files in the xz compressed format."
msgstr "Ця процедура експортує файли у стисненому форматі xz."
#: plug-ins/common/file-compressor.c:278
msgid "zip archive"
msgstr "архів zip"
#: plug-ins/common/file-compressor.c:286
msgid "Loads files compressed with zip"
msgstr "Завантажує файли, які стиснуто за допомогою zip"
#: plug-ins/common/file-compressor.c:287
#| msgid ""
#| "This plug-in loads files in the various Netpbm portable file formats."
msgid "This procedure loads files in the zip compressed format."
msgstr "Ця процедура завантажує файли у стисненому форматі zip."
#: plug-ins/common/file-compressor.c:471
msgid "No sensible file extension, saving as compressed XCF."
msgstr "Немає потрібного розширення, зберігається як стиснутий XCF."
#: plug-ins/common/file-compressor.c:467
#: plug-ins/common/file-compressor.c:491
#, c-format
msgid "Compressing '%s'"
msgstr "Стиснення «%s»"
#: plug-ins/common/file-compressor.c:505
#: plug-ins/common/file-compressor.c:529
msgid "No sensible file extension, attempting to load with file magic."
msgstr "Немає потрібного розширення, спроба визначення типу за вмістом файлу."
#. Leave a chance for the load to succeed (in case the first
#. * file happens to be an image file), yet still warns. This
#. * procedure expects that the archive contains a single
#. * file.
#.
#: plug-ins/common/file-compressor.c:1110
msgid "This zip archive contains more than one file."
msgstr "В архіві zip міститься декілька файлів."
#: plug-ins/common/file-desktop-link.c:114
msgid "Desktop Link"
msgstr "Посилання .desktop"
@@ -2907,14 +2985,11 @@ msgstr ""
#, c-format
msgid "'%s' has a bpp of %d which GIMP cannot handle."
msgstr ""
"«%s» використовує кількість бітів на піксель %d, з якою не може працювати"
" GIMP."
"«%s» використовує кількість бітів на піксель %d, з якою не може працювати "
"GIMP."
#: plug-ins/common/file-dicom.c:719
#, c-format
#| msgid ""
#| "'%s':\n"
#| "Image width is larger than GIMP can handle"
msgid "'%s' has a larger image size (%d x %d) than GIMP can handle."
msgstr ""
"«%s» містить зображення більшого розміру (%d x %d), ніж може обробляти GIMP."
@@ -2923,16 +2998,15 @@ msgstr ""
#, c-format
msgid "'%s' has samples per pixel of %d which GIMP cannot handle."
msgstr ""
"«%s» використовує кількість семплів на піксель %d, з якою не може працювати"
" GIMP."
"«%s» використовує кількість семплів на піксель %d, з якою не може працювати "
"GIMP."
#: plug-ins/common/file-dicom.c:741
#, c-format
#| msgid "Overflow reading compressed data. Possibly corrupt file."
msgid "'%s' has not enough pixel data. Possibly corrupt image."
msgstr ""
"«%s» не має достатнього обсягу даних пікселів. Ймовірно, зображення"
" пошкоджено."
"«%s» не має достатнього обсягу даних пікселів. Ймовірно, зображення "
"пошкоджено."
#: plug-ins/common/file-dicom.c:1543
msgid "Cannot save images with alpha channel."
@@ -3499,20 +3573,20 @@ msgstr "Розмірість"
msgid "How many dimensions the animated brush has"
msgstr "Кількість розмірностей анімаційного пензля"
#: plug-ins/common/file-gih.c:521
#: plug-ins/common/file-gih.c:529
msgid "Width Mismatch!"
msgstr "Невідповідність ширини!"
#: plug-ins/common/file-gih.c:522
#: plug-ins/common/file-gih.c:530
msgid "Height Mismatch!"
msgstr "Невідповідність висоти!"
#: plug-ins/common/file-gih.c:569
#: plug-ins/common/file-gih.c:577
#, c-format
msgid "Displays as a %d × %d grid on each layer"
msgstr "Показує як ґратку %d × %d на кожному шарі"
#: plug-ins/common/file-gih.c:755
#: plug-ins/common/file-gih.c:763
msgid "Ranks:"
msgstr "Кількість кадрів:"
@@ -3877,7 +3951,7 @@ msgstr "_Інтервал між комірками"
msgid "The amount of cell spacing."
msgstr "Об'єм інтервалу між комірками."
#: plug-ins/common/file-html-table.c:610
#: plug-ins/common/file-html-table.c:608
msgid ""
"You are about to create a huge\n"
"HTML file which will most likely\n"
@@ -3887,19 +3961,19 @@ msgstr ""
"HTML-файл, який майже напевне\n"
"призведе до збою вашого переглядача."
#: plug-ins/common/file-html-table.c:628
#: plug-ins/common/file-html-table.c:626
msgid "Warning"
msgstr "Попередження"
#: plug-ins/common/file-html-table.c:642
#: plug-ins/common/file-html-table.c:640
msgid "HTML Page Options"
msgstr "Параметри HTML-сторінки"
#: plug-ins/common/file-html-table.c:653
#: plug-ins/common/file-html-table.c:651
msgid "Table Creation Options"
msgstr "Параметри створення таблиці"
#: plug-ins/common/file-html-table.c:673
#: plug-ins/common/file-html-table.c:671
msgid "Table Options"
msgstr "Параметри таблиці"
@@ -3922,9 +3996,6 @@ msgstr "В ILBM не міститься даних зображення — йм
#: plug-ins/common/file-iff.c:363
#, c-format
#| msgid ""
#| "'%s':\n"
#| "Invalid color map"
msgid "Invalid ILBM colormap size"
msgstr "Некоректний розмір карти кольорів ILBM"
@@ -4944,6 +5015,7 @@ msgstr ""
"Software: %s"
#: plug-ins/common/file-pix.c:582
#, c-format
msgid "Invalid Esm Software PIX file"
msgstr "Некоректний файл PIX Esm Software"
@@ -5528,7 +5600,7 @@ msgstr ""
"Якщо увімкнено, при експортуванні буде збережено пропорції. Якщо не буде "
"увімкнено, буде використано значення ширини і висоти."
#: plug-ins/common/file-ps.c:565 plug-ins/map-object/map-object-ui.c:719
#: plug-ins/common/file-ps.c:565 plug-ins/map-object/map-object-ui.c:723
msgid "Rotation"
msgstr "Обертання"
@@ -5797,97 +5869,97 @@ msgstr "Помилка читання фрагмента інформації к
msgid "Invalid channel type %d in channel information chunk"
msgstr "Хибний тип каналу %d у фрагменті інформації каналу"
#: plug-ins/common/file-psp.c:2281 plug-ins/common/file-psp.c:2298
#: plug-ins/common/file-psp.c:2283 plug-ins/common/file-psp.c:2300
#, c-format
msgid "Error reading tube data chunk"
msgstr "Помилка при читання фрагмента даних тюбика"
#: plug-ins/common/file-psp.c:2385 plug-ins/common/file-psp.c:2401
#: plug-ins/common/file-psp.c:2389 plug-ins/common/file-psp.c:2405
#, c-format
msgid "Error reading selection chunk"
msgstr "Помилка зчитування фрагмента позначеного"
#: plug-ins/common/file-psp.c:2394
#: plug-ins/common/file-psp.c:2398
#, c-format
msgid "Invalid selection chunk size"
msgstr "Некоректний розмір фрагмента позначеного"
#: plug-ins/common/file-psp.c:2418
#: plug-ins/common/file-psp.c:2422
#, c-format
msgid "Error reading end of selection chunk"
msgstr "Помилка зчитування кінця фрагмента позначеного"
#: plug-ins/common/file-psp.c:2443
#: plug-ins/common/file-psp.c:2447
#, c-format
msgid "Error reading extended block chunk header"
msgstr "Помилка при читанні заголовка фрагмента розширеного блока"
#: plug-ins/common/file-psp.c:2451
#: plug-ins/common/file-psp.c:2455
#, c-format
msgid "Invalid extended block chunk header"
msgstr "Некоректний заголовок фрагмента розширеного блоку"
#: plug-ins/common/file-psp.c:2462
#: plug-ins/common/file-psp.c:2466
#, c-format
msgid "Invalid extended block chunk size"
msgstr "Некоректний розмір фрагмента розширеного блоку"
#: plug-ins/common/file-psp.c:2483
#: plug-ins/common/file-psp.c:2487
#, c-format
msgid "Error reading extended chunk grid data"
msgstr "Помилка зчитування даних ґратки розширеного фрагмента"
#: plug-ins/common/file-psp.c:2511
#: plug-ins/common/file-psp.c:2515
#, c-format
msgid "Error reading extended chunk guide data"
msgstr "Помилка при читанні розширеного фрагмента даних напрямної"
#: plug-ins/common/file-psp.c:2529
#: plug-ins/common/file-psp.c:2533
#, c-format
msgid "Invalid guide orientation"
msgstr "Некоректна орієнтація напрямної"
#: plug-ins/common/file-psp.c:2543
#: plug-ins/common/file-psp.c:2547
#, c-format
msgid "Error reading extended block chunk"
msgstr "Помилка зчитування фрагмента розширеного блоку"
#: plug-ins/common/file-psp.c:2569 plug-ins/common/file-psp.c:2581
#: plug-ins/common/file-psp.c:2592
#: plug-ins/common/file-psp.c:2573 plug-ins/common/file-psp.c:2585
#: plug-ins/common/file-psp.c:2596
#, c-format
msgid "Error reading colorprofile chunk"
msgstr "Помилка під час читання фрагмента профілю кольорів"
#: plug-ins/common/file-psp.c:2645
#: plug-ins/common/file-psp.c:2649
#, c-format
msgid "Error reading file header."
msgstr "Помилка при читанні заголовка файлу."
#: plug-ins/common/file-psp.c:2652
#: plug-ins/common/file-psp.c:2656
#, c-format
msgid "Incorrect file signature."
msgstr "Хибна сигнатура файлу."
#: plug-ins/common/file-psp.c:2666
#: plug-ins/common/file-psp.c:2670
#, c-format
msgid "Unsupported PSP file format version %d.%d."
msgstr "Непідтримувана версія формату файлу PSP %d.%d."
#: plug-ins/common/file-psp.c:2686
#: plug-ins/common/file-psp.c:2690
msgid "invalid block size"
msgstr "хибний розмір блока"
#: plug-ins/common/file-psp.c:2695
#: plug-ins/common/file-psp.c:2699
#, c-format
msgid "Duplicate General Image Attributes block."
msgstr "Повторний блок загальних атрибутів зображення."
#: plug-ins/common/file-psp.c:2723
#: plug-ins/common/file-psp.c:2727
#, c-format
msgid "Missing General Image Attributes block."
msgstr "Відсутній блок загальних атрибутів зображення."
#: plug-ins/common/file-psp.c:2848
#: plug-ins/common/file-psp.c:2852
#, c-format
msgid "Exporting not implemented yet."
msgstr "Експорт ще не реалізовано."
@@ -6677,7 +6749,6 @@ msgstr "«%s»: некоректні розміри, %u x %u"
#: plug-ins/common/file-wbmp.c:517
#, c-format
#| msgid "Failed to read frame %d. Possibly corrupt animation.\n"
msgid "Read failure at position %u. Possibly corrupt image."
msgstr "Помилка читання на позиції %u. Ймовірно, зображення пошкоджено."
@@ -7271,7 +7342,6 @@ msgstr "Помилка позиціювання"
#: plug-ins/common/file-xwd.c:1692
#, c-format
#| msgid "Failed to read frame %d. Possibly corrupt animation.\n"
msgid "Invalid colormap offset. Possibly corrupt image."
msgstr "Некоректний зсув карти кольорів. Ймовірно, зображення пошкоджено."
@@ -7647,7 +7717,7 @@ msgstr "Надати зображенню вигляд головоломки-п
msgid "Jigsaw puzzle look"
msgstr "Вигляд складанки"
#: plug-ins/common/jigsaw.c:483 plug-ins/common/tile-small.c:503
#: plug-ins/common/jigsaw.c:483 plug-ins/common/tile-small.c:502
msgid "_Horizontal"
msgstr "Г_оризонтально"
@@ -7655,7 +7725,7 @@ msgstr "Г_оризонтально"
msgid "Number of pieces going across"
msgstr "Кількість частин вздовж горизонталі"
#: plug-ins/common/jigsaw.c:489 plug-ins/common/tile-small.c:513
#: plug-ins/common/jigsaw.c:489 plug-ins/common/tile-small.c:512
msgid "_Vertical"
msgstr "_Вертикально"
@@ -7700,6 +7770,7 @@ msgid "Assembling jigsaw"
msgstr "Складання головоломки"
#: plug-ins/common/jigsaw.c:791
#, c-format
msgid "draw_jigsaw: bad style\n"
msgstr "draw_jigsaw: помилковий стиль\n"
@@ -8598,7 +8669,7 @@ msgstr "Н_ове зображення"
msgid "Create a new image"
msgstr "Створення нового зображення"
#: plug-ins/common/tile.c:258 plug-ins/common/tile-small.c:375
#: plug-ins/common/tile.c:258 plug-ins/common/tile-small.c:374
msgid "Tiling"
msgstr "Укладання черепиці"
@@ -8610,57 +8681,57 @@ msgstr "Черепиця"
msgid "Tile to New Size"
msgstr "Розмір площі покриття"
#: plug-ins/common/tile-small.c:270
#: plug-ins/common/tile-small.c:269
msgid "_Small Tiles..."
msgstr "_Дрібна черепиця..."
#: plug-ins/common/tile-small.c:274
#: plug-ins/common/tile-small.c:273
msgid "Tile image into smaller versions of the original"
msgstr "Створити зображення з маленьких копій оригіналу"
#: plug-ins/common/tile-small.c:284
#: plug-ins/common/tile-small.c:283
msgid "_n²"
msgstr "_n²"
#: plug-ins/common/tile-small.c:285
#: plug-ins/common/tile-small.c:284
msgid "Number of tiles to make"
msgstr "Кількість створених плиток"
#: plug-ins/common/tile-small.c:330
#: plug-ins/common/tile-small.c:329
msgid "Region selected for filter is empty."
msgstr "Вибрана для фільтра область порожня."
#: plug-ins/common/tile-small.c:441
#: plug-ins/common/tile-small.c:440
msgid "Small Tiles"
msgstr "Дрібна черепиця"
#. Area for buttons etc
#. Flip
#: plug-ins/common/tile-small.c:490 plug-ins/ifs-compose/ifs-compose.c:724
#: plug-ins/common/tile-small.c:489 plug-ins/ifs-compose/ifs-compose.c:724
msgid "Flip"
msgstr "Віддзеркалення"
#: plug-ins/common/tile-small.c:539
#: plug-ins/common/tile-small.c:538
msgid "A_ll tiles"
msgstr "_Усіх секторів"
#: plug-ins/common/tile-small.c:552
#: plug-ins/common/tile-small.c:551
msgid "Al_ternate tiles"
msgstr "Кожного д_ругого сектору"
#: plug-ins/common/tile-small.c:565
#: plug-ins/common/tile-small.c:564
msgid "_Explicit tile"
msgstr "Вкааного сектору"
#: plug-ins/common/tile-small.c:570
#: plug-ins/common/tile-small.c:569
msgid "Ro_w:"
msgstr "_Рядок:"
#: plug-ins/common/tile-small.c:595
#: plug-ins/common/tile-small.c:594
msgid "Col_umn:"
msgstr "Ст_овпчик:"
#: plug-ins/common/tile-small.c:627
#: plug-ins/common/tile-small.c:626
#: plug-ins/fractal-explorer/fractal-explorer.c:1358
#: plug-ins/gimpressionist/orientmap.c:527
#: plug-ins/gimpressionist/presets.c:1064 plug-ins/gimpressionist/sizemap.c:400
@@ -8669,11 +8740,11 @@ msgid "_Apply"
msgstr "_Застосувати"
#. Widget for selecting the Opacity
#: plug-ins/common/tile-small.c:643
#: plug-ins/common/tile-small.c:642
msgid "O_pacity:"
msgstr "_Непрозорість:"
#: plug-ins/common/tile-small.c:654
#: plug-ins/common/tile-small.c:653
msgid "Number of Segments"
msgstr "Кількість сегментів"
@@ -15260,7 +15331,7 @@ msgstr "_Відстань"
msgid "Distance of observer from surface"
msgstr "Відстань спостерігача від поверхні"
#: plug-ins/lighting/lighting-ui.c:247 plug-ins/map-object/map-object-ui.c:363
#: plug-ins/lighting/lighting-ui.c:247 plug-ins/map-object/map-object-ui.c:367
msgid "Recompute preview image"
msgstr "Переобчислити перегляд зображення"
@@ -15280,7 +15351,7 @@ msgstr "_Параметри"
msgid "_Light"
msgstr "Сітло"
#: plug-ins/lighting/lighting-ui.c:272 plug-ins/map-object/map-object-ui.c:406
#: plug-ins/lighting/lighting-ui.c:272 plug-ins/map-object/map-object-ui.c:410
msgid "_Material"
msgstr "_Матеріал"
@@ -15292,16 +15363,16 @@ msgstr "Мапа _рельєфу"
msgid "_Environment Map"
msgstr "Мапа с_ередовища"
#: plug-ins/lighting/lighting-ui.c:281 plug-ins/map-object/map-object-ui.c:419
#: plug-ins/lighting/lighting-ui.c:281 plug-ins/map-object/map-object-ui.c:423
msgid "General Options"
msgstr "Загальні параметри"
#: plug-ins/lighting/lighting-ui.c:313 plug-ins/map-object/map-object-ui.c:455
#: plug-ins/lighting/lighting-ui.c:313 plug-ins/map-object/map-object-ui.c:459
msgid "Light Settings"
msgstr "Параметри світла"
#: plug-ins/lighting/lighting-ui.c:332 plug-ins/map-object/map-object-ui.c:487
#: plug-ins/map-object/map-object-ui.c:699
#: plug-ins/lighting/lighting-ui.c:332 plug-ins/map-object/map-object-ui.c:491
#: plug-ins/map-object/map-object-ui.c:703
#: plug-ins/print/print-page-layout.c:385
msgid "Position"
msgstr "Позиція"
@@ -15616,81 +15687,81 @@ msgstr "Дов_жина циліндра"
msgid "Cylinder length"
msgstr "Довжина циліндра"
#: plug-ins/map-object/map-object-ui.c:315
#: plug-ins/map-object/map-object-ui.c:319
msgid "Map to Object"
msgstr "Проекція"
#: plug-ins/map-object/map-object-ui.c:351
#: plug-ins/map-object/map-object-ui.c:355
msgid "_Preview!"
msgstr "_Перегляд"
#: plug-ins/map-object/map-object-ui.c:381
#: plug-ins/map-object/map-object-ui.c:385
msgid "Show _wireframe"
msgstr "Показати _каркас"
#: plug-ins/map-object/map-object-ui.c:390
#: plug-ins/map-object/map-object-ui.c:394
msgid "Update preview _live"
msgstr "Оновити перегляд _живих"
#: plug-ins/map-object/map-object-ui.c:400
#: plug-ins/map-object/map-object-ui.c:404
msgid "O_ptions"
msgstr "_Параметри"
#: plug-ins/map-object/map-object-ui.c:402
#: plug-ins/map-object/map-object-ui.c:406
msgid "Li_ght"
msgstr "Св_ітло"
#: plug-ins/map-object/map-object-ui.c:404
#: plug-ins/map-object/map-object-ui.c:408
msgid "_Viewpoint"
msgstr "_Точка перегляду"
#: plug-ins/map-object/map-object-ui.c:411
#: plug-ins/map-object/map-object-ui.c:415
msgid "Sp_here"
msgstr "Сера"
#: plug-ins/map-object/map-object-ui.c:413
#: plug-ins/map-object/map-object-ui.c:417
msgid "_Box"
msgstr "_Паралелепіпед"
#: plug-ins/map-object/map-object-ui.c:415
#: plug-ins/map-object/map-object-ui.c:419
msgid "C_ylinder"
msgstr "_Циліндр"
#: plug-ins/map-object/map-object-ui.c:473
#: plug-ins/map-object/map-object-ui.c:477
msgid "Direction Vector"
msgstr "Вектор напрямку"
#: plug-ins/map-object/map-object-ui.c:544
#: plug-ins/map-object/map-object-ui.c:547
msgid "Viewpoint Position"
msgstr "Позиція точки перегляду"
#: plug-ins/map-object/map-object-ui.c:566
#: plug-ins/map-object/map-object-ui.c:569
msgid "First Axis"
msgstr "Перша вісь"
#: plug-ins/map-object/map-object-ui.c:586
#: plug-ins/map-object/map-object-ui.c:589
msgid "Second Axis"
msgstr "Друга вісь"
#: plug-ins/map-object/map-object-ui.c:642
#: plug-ins/map-object/map-object-ui.c:646
msgid "Intensity Levels"
msgstr "Рівні інтенсивності"
#: plug-ins/map-object/map-object-ui.c:656
#: plug-ins/map-object/map-object-ui.c:660
msgid "Reflectivity"
msgstr "Коефіцієнт відбиття"
#: plug-ins/map-object/map-object-ui.c:759
#: plug-ins/map-object/map-object-ui.c:859
#: plug-ins/map-object/map-object-ui.c:763
#: plug-ins/map-object/map-object-ui.c:863
#: plug-ins/print/print-page-layout.c:254
msgid "Size"
msgstr "Розмір"
#: plug-ins/map-object/map-object-ui.c:772
#: plug-ins/map-object/map-object-ui.c:776
msgid "Map Images to Box Faces"
msgstr "Спроектувати на площину паралелепіпеда"
#: plug-ins/map-object/map-object-ui.c:840
#: plug-ins/map-object/map-object-ui.c:844
msgid "Images for the Cap Faces"
msgstr "Зображення для основного циліндра"
@@ -17013,6 +17084,9 @@ msgstr "Не знайдено драйвера TWAIN. Не можна скори
msgid "Transferring data from scanner/camera"
msgstr "Отримання даних зі сканера/камери"
#~ msgid "CSource cannot be run non-interactively."
#~ msgstr "CSource не можна запускати у неінтерактивному режимі."
#, c-format
#~ msgid "File size: %s"
#~ msgstr "Розмір файлу: %s"

1556
po/eu.po

File diff suppressed because it is too large Load Diff

146
po/it.po
View File

@@ -45,8 +45,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gimp 2.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 16:13+0200\n"
"PO-Revision-Date: 2025-09-23 16:09+0200\n"
"POT-Creation-Date: 2025-10-01 12:30+0200\n"
"PO-Revision-Date: 2025-10-01 12:37+0200\n"
"Last-Translator: Marco Ciampa <ciampix@posteo.net>\n"
"Language-Team: gimp@erlug.linux.it\n"
"Language: it\n"
@@ -124,7 +124,15 @@ msgstr ""
msgid "If you wanted to quit immediately instead, call GIMP with --quit."
msgstr "Se invece si desidera uscire immediatamente, chiamare GIMP con --quit."
#: ../app/gimp-update.c:444
#: ../app/gimp-update.c:424
msgid "Perhaps you are missing GIO backends and need to install GVFS?"
msgstr "Forse mancano i backend GIO e bisogna installare GVFS?"
#: ../app/gimp-update.c:429
msgid "Perhaps you are missing GIO backends."
msgstr "Forse mancano i backend GIO."
#: ../app/gimp-update.c:466
#, c-format
msgid ""
"A new version of GIMP (%s) was released.\n"
@@ -2535,8 +2543,8 @@ msgid "Enter a description for the marker"
msgstr "Inserire una descrizione per il marcatore"
#: ../app/actions/data-commands.c:90 ../app/actions/documents-commands.c:393
#: ../app/actions/file-commands.c:234 ../app/dialogs/file-open-dialog.c:253
#: ../app/dialogs/file-open-dialog.c:295
#: ../app/actions/file-commands.c:234 ../app/dialogs/file-open-dialog.c:254
#: ../app/dialogs/file-open-dialog.c:300
#: ../app/dialogs/file-open-location-dialog.c:217
#: ../app/dialogs/file-open-location-dialog.c:233
#: ../app/display/gimpdisplayshell-dnd.c:646
@@ -3053,134 +3061,124 @@ msgctxt "dialogs-action"
msgid "Open the dashboard"
msgstr "Apri il cruscotto"
#: ../app/actions/dialogs-actions.c:311 ../app/actions/dialogs-actions.c:312
msgctxt "dialogs-action"
msgid "_Settings..."
msgstr "Impo_stazioni..."
#: ../app/actions/dialogs-actions.c:314 ../app/actions/dialogs-actions.c:315
#: ../app/actions/dialogs-actions.c:310 ../app/actions/dialogs-actions.c:311
msgctxt "dialogs-action"
msgid "_Preferences"
msgstr "_Preferenze"
#: ../app/actions/dialogs-actions.c:318
#: ../app/actions/dialogs-actions.c:313
msgctxt "dialogs-action"
msgid "Open the preferences dialog"
msgstr "Apri la finestra delle preferenze"
#: ../app/actions/dialogs-actions.c:323
#: ../app/actions/dialogs-actions.c:318
msgctxt "dialogs-action"
msgid "_Input Devices Editor"
msgstr "Editor dispositivi di _ingresso"
#: ../app/actions/dialogs-actions.c:324
#: ../app/actions/dialogs-actions.c:319
msgctxt "dialogs-action"
msgid "_Input Devices"
msgstr "Dispositivi di _ingresso"
#: ../app/actions/dialogs-actions.c:326
#: ../app/actions/dialogs-actions.c:321
msgctxt "dialogs-action"
msgid "Open the input devices editor"
msgstr "Apri la modifica dei dispositivi d'ingresso"
#: ../app/actions/dialogs-actions.c:331
#: ../app/actions/dialogs-actions.c:326
msgctxt "dialogs-action"
msgid "_Keyboard Shortcuts Editor"
msgstr "Editor _tasti scorciatoia"
#: ../app/actions/dialogs-actions.c:332
#: ../app/actions/dialogs-actions.c:327
msgctxt "dialogs-action"
msgid "_Keyboard Shortcuts"
msgstr "_Tasti scorciatoia"
#: ../app/actions/dialogs-actions.c:334
#: ../app/actions/dialogs-actions.c:329
msgctxt "dialogs-action"
msgid "Open the keyboard shortcuts editor"
msgstr "Apri la modifica dei tasti scorciatoia"
#: ../app/actions/dialogs-actions.c:339
#: ../app/actions/dialogs-actions.c:334
msgctxt "dialogs-action"
msgid "_Modules Dialog"
msgstr "Finestra _moduli"
#: ../app/actions/dialogs-actions.c:340
#: ../app/actions/dialogs-actions.c:335
msgctxt "dialogs-action"
msgid "_Modules"
msgstr "_Moduli"
#: ../app/actions/dialogs-actions.c:342
#: ../app/actions/dialogs-actions.c:337
msgctxt "dialogs-action"
msgid "Open the module manager dialog"
msgstr "Apri finestra di gestione moduli"
#: ../app/actions/dialogs-actions.c:347
#: ../app/actions/dialogs-actions.c:342
msgctxt "dialogs-action"
msgid "_Tip of the Day"
msgstr "Suggerimenti del _giorno"
#: ../app/actions/dialogs-actions.c:349
#: ../app/actions/dialogs-actions.c:344
msgctxt "dialogs-action"
msgid "Show some helpful tips on using GIMP"
msgstr "Mostra alcuni utili suggerimenti sull'uso di GIMP"
#: ../app/actions/dialogs-actions.c:354
#: ../app/actions/dialogs-actions.c:349
msgctxt "dialogs-action"
msgid "Welcome Dialog"
msgstr "Finestra di benvenuto"
#: ../app/actions/dialogs-actions.c:356
#: ../app/actions/dialogs-actions.c:351
msgctxt "dialogs-action"
msgid "Show information on running GIMP release"
msgstr "Mostra informazioni sulla versione di GIMP in esecuzione"
#: ../app/actions/dialogs-actions.c:362 ../app/actions/dialogs-actions.c:369
#: ../app/actions/dialogs-actions.c:357 ../app/actions/dialogs-actions.c:362
msgctxt "dialogs-action"
msgid "About GIMP"
msgstr "Informazioni su GIMP"
#: ../app/actions/dialogs-actions.c:364
msgctxt "dialogs-action"
msgid "About"
msgstr "Informazioni"
#: ../app/actions/dialogs-actions.c:366
#: ../app/actions/dialogs-actions.c:359
msgctxt "dialogs-action"
msgid "_About"
msgstr "_Informazioni"
#: ../app/actions/dialogs-actions.c:374
#: ../app/actions/dialogs-actions.c:367
msgctxt "dialogs-action"
msgid "_Search and Run a Command"
msgstr "Cerca ed e_segui un comando"
#: ../app/actions/dialogs-actions.c:376
#: ../app/actions/dialogs-actions.c:369
msgctxt "dialogs-action"
msgid "Search commands by keyword, and run them"
msgstr "Cerca comandi per parola-chiave e li esegue"
#: ../app/actions/dialogs-actions.c:382
#: ../app/actions/dialogs-actions.c:375
msgctxt "dialogs-action"
msgid "Manage _Extensions"
msgstr "Gestione _estensioni"
#: ../app/actions/dialogs-actions.c:384
#: ../app/actions/dialogs-actions.c:377
msgctxt "dialogs-action"
msgid "Manage Extensions: search, install, uninstall, update."
msgstr "Gestione estensioni: cerca, installa, disinstalla, aggiorna."
#: ../app/actions/dialogs-actions.c:448
#: ../app/actions/dialogs-actions.c:441
msgid "Tool_box"
msgstr "Pannello strumenti"
#: ../app/actions/dialogs-actions.c:449
#: ../app/actions/dialogs-actions.c:442
msgid "Raise the toolbox"
msgstr "Alza il pannello strumenti"
#: ../app/actions/dialogs-actions.c:453
#: ../app/actions/dialogs-actions.c:446
msgid "New Tool_box"
msgstr "Nuovo pannello strum_enti"
#: ../app/actions/dialogs-actions.c:454
#: ../app/actions/dialogs-actions.c:447
msgid "Create a new toolbox"
msgstr "Crea un nuovo pennello strumenti"
@@ -12988,7 +12986,7 @@ msgstr ""
#: ../app/core/gimp-contexts.c:153 ../app/core/gimp-internal-data.c:338
#: ../app/core/gimptooloptions.c:361 ../app/gui/modifiers.c:191
#: ../app/gui/session.c:449 ../app/menus/menus.c:480
#: ../app/gui/session.c:449 ../app/menus/menus.c:488
#: ../app/widgets/gimpdevices.c:226
#, c-format
msgid "Deleting \"%s\" failed: %s"
@@ -14960,11 +14958,11 @@ msgstr "Lunghezza massima chiusura diritta"
msgid "Maximum straight length (in pixels) to close the line art"
msgstr "Lunghezza massima retta (in pixel) per chiudere il tratteggio"
#: ../app/core/gimplink.c:255
#: ../app/core/gimplink.c:256
msgid "The file got deleted"
msgstr "Il file è stato eliminato"
#: ../app/core/gimplink.c:349
#: ../app/core/gimplink.c:351
msgid "No file was set"
msgstr "Nessun file impostato"
@@ -16146,10 +16144,15 @@ msgid "Search extensions matching these keywords"
msgstr "Cerca le estensioni che corrispondono a queste parole chiave"
#: ../app/dialogs/file-open-dialog.c:142 ../app/dialogs/file-open-dialog.c:168
#: ../app/dialogs/file-open-dialog.c:286
#: ../app/dialogs/file-open-dialog.c:291
msgid "Open layers"
msgstr "Apri livelli"
#: ../app/dialogs/file-open-dialog.c:258
#, c-format
msgid "Opening '%s' failed."
msgstr "L'apertura di '%s' è fallita."
#: ../app/dialogs/file-open-location-dialog.c:74
msgid "Open Location"
msgstr "Apri posizione"
@@ -18867,13 +18870,13 @@ msgid "GIMP website"
msgstr "Il sito di GIMP"
#: ../app/dialogs/welcome-dialog.c:545
msgid "Tutorials"
msgstr "Guide"
#: ../app/dialogs/welcome-dialog.c:550
msgid "Documentation"
msgstr "Documentazione"
#: ../app/dialogs/welcome-dialog.c:550
msgid "Community Tutorials"
msgstr "Guide della comunità"
#. XXX: should we add API docs for plug-in developers once it's
#. * properly set up?
#. Welcome message: right
@@ -19920,26 +19923,26 @@ msgstr "Clic e trascina per spostare il punto cardine"
msgid "Click-Drag to shear"
msgstr "Clic e trascina per inclinare"
#: ../app/file/file-open.c:264
#: ../app/file/file-open.c:272
#, c-format
msgid "%s plug-in returned SUCCESS but did not return an image"
msgstr "Il plug-in %s ha risposto successo ma non ha restituito un'immagine"
#: ../app/file/file-open.c:275
#: ../app/file/file-open.c:283
#, c-format
msgid "%s plug-in could not open image"
msgstr "Il plug-in %s non poteva aprire l'immagine"
#: ../app/file/file-open.c:690
#: ../app/file/file-open.c:698
msgid "Image doesn't contain any layers"
msgstr "L'immagine non contiene nessun livello"
#: ../app/file/file-open.c:748
#: ../app/file/file-open.c:756
#, c-format
msgid "Opening '%s' failed: %s"
msgstr "L'apertura di \"%s\" è fallita: %s"
#: ../app/file/file-open.c:836
#: ../app/file/file-open.c:846
#, c-format
msgid ""
"Only platform-native file paths are supported: '%s' cannot be opened as link."
@@ -19947,11 +19950,11 @@ msgstr ""
"Sono supportati solo i percorsi file nativi della piattaforma: '%s' non può "
"essere aperto come collegamento."
#: ../app/file/file-open.c:978 ../app/file/file-save.c:132
#: ../app/file/file-open.c:985 ../app/file/file-save.c:132
msgid "Not a regular file"
msgstr "Non è un file normale"
#: ../app/file/file-open.c:987 ../app/file/file-save.c:141
#: ../app/file/file-open.c:994 ../app/file/file-save.c:141
msgid "Permission denied"
msgstr "Permesso negato"
@@ -21716,11 +21719,7 @@ msgstr "Ruota livello vettoriale"
msgid "Transform Vector Layer"
msgstr "Trasforma livello vettoriale"
#: ../app/path/gimpvectorlayer.c:526
msgid "Discard Vector Informations"
msgstr "Abbandona le informazioni vettoriali"
#: ../app/path/gimpvectorlayer.c:669
#: ../app/path/gimpvectorlayer.c:526 ../app/path/gimpvectorlayer.c:669
msgid "Discard Vector Information"
msgstr "Abbandona le informazioni vettoriali"
@@ -22277,7 +22276,7 @@ msgstr "Autoritaglio immagine"
msgid "Autocrop layer"
msgstr "Autoritaglio livello"
#: ../app/pdb/image-cmds.c:2556
#: ../app/pdb/image-cmds.c:2564
msgid ""
"Image resolution is out of bounds, using the default resolution instead."
msgstr ""
@@ -22306,43 +22305,48 @@ msgstr "Trasformazione 2D"
msgid "2D Transforming"
msgstr "Trasformazione 2D in corso"
#: ../app/pdb/link-layer-cmds.c:67 ../app/pdb/link-layer-cmds.c:89
#, c-format
msgid "Failed to create link layer"
msgstr "Impossibile creare livello collegato"
#: ../app/pdb/path-cmds.c:325
msgid "Remove path stroke"
msgstr "Rimuovi delineatura del tracciato"
#: ../app/pdb/path-cmds.c:362
msgid "Close path stroke"
msgstr "Chiudi la delineatura del tracciato"
msgstr "Chiudi delineatura tracciato"
#: ../app/pdb/path-cmds.c:401
msgid "Reverse path stroke"
msgstr "Inverti delineatura del tracciato"
msgstr "Inverti delineatura tracciato"
#: ../app/pdb/path-cmds.c:446
msgid "Translate path stroke"
msgstr "Trasla la delineatura del tracciato"
msgstr "Trasla delineatura tracciato"
#: ../app/pdb/path-cmds.c:491
msgid "Scale path stroke"
msgstr "Scala la delineatura del tracciato"
msgstr "Scala delineatura tracciato"
#: ../app/pdb/path-cmds.c:538
msgid "Rotate path stroke"
msgstr "Ruota la delineatura del tracciato"
msgstr "Ruota delineatura tracciato"
#: ../app/pdb/path-cmds.c:583 ../app/pdb/path-cmds.c:632
msgid "Flip path stroke"
msgstr "Rifletti la delineatura del tracciato"
msgstr "Rifletti delineatura tracciato"
#: ../app/pdb/path-cmds.c:761 ../app/pdb/path-cmds.c:884
#: ../app/pdb/path-cmds.c:1114
msgid "Add path stroke"
msgstr "Aggiungi la delineatura del tracciato"
msgstr "Aggiungi delineatura tracciato"
#: ../app/pdb/path-cmds.c:938 ../app/pdb/path-cmds.c:994
#: ../app/pdb/path-cmds.c:1058
msgid "Extend path stroke"
msgstr "Estendi la delineatura del tracciato"
msgstr "Estendi delineatura tracciato"
#: ../app/pdb/pdb-cmds.c:1185 ../app/pdb/pdb-cmds.c:1227
#, c-format
@@ -24333,7 +24337,7 @@ msgstr "Selezione sconosciuta"
#: ../app/tools/gimpforegroundselecttool.c:667
msgid "press Enter to preview."
msgstr "premere invio l'anteprima."
msgstr "premere invio per l'anteprima."
#: ../app/tools/gimpforegroundselecttool.c:669
msgid "press Escape to exit preview or Enter to apply."
@@ -27751,7 +27755,7 @@ msgstr "Informazioni varie"
msgid "Select fields"
msgstr "Seleziona campi"
#. Tranlators: "N/A" is an abbreviation for "not available"
#. Translators: "N/A" is an abbreviation for "not available"
#: ../app/widgets/gimpdashboard.c:3323
msgctxt "dashboard-value"
msgid "N/A"

144
po/ka.po
View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gimp\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gimp/issues\n"
"POT-Creation-Date: 2025-09-24 03:08+0000\n"
"PO-Revision-Date: 2025-09-24 07:08+0200\n"
"POT-Creation-Date: 2025-09-29 13:22+0000\n"
"PO-Revision-Date: 2025-09-29 16:50+0200\n"
"Last-Translator: Ekaterine Papava <papava.e@gtu.ge>\n"
"Language-Team: Georgian <(nothing)>\n"
"Language: ka\n"
@@ -160,7 +160,15 @@ msgstr ""
msgid "If you wanted to quit immediately instead, call GIMP with --quit."
msgstr "თუ გნებავთ გასვლა დაუყოვნებლივ, გამოიძახეთ GIMP პარამეტრით --quit."
#: app/gimp-update.c:444
#: app/gimp-update.c:421
msgid "Perhaps you are missing GIO backends and need to install GVFS?"
msgstr "ალბათ არ გაქვთ GIO-ის უკანაბოლოები და გჭირდებათ, დააყენოთ GVFS?"
#: app/gimp-update.c:426
msgid "Perhaps you are missing GIO backends."
msgstr "ალბათ არ გაქვთ GIO-ის უკანაბოლოები."
#: app/gimp-update.c:458
#, c-format
msgid ""
"A new version of GIMP (%s) was released.\n"
@@ -2533,8 +2541,8 @@ msgid "Enter a description for the marker"
msgstr "შეიყვანეთ სანიშნის აღწერა"
#: app/actions/data-commands.c:90 app/actions/documents-commands.c:393
#: app/actions/file-commands.c:234 app/dialogs/file-open-dialog.c:253
#: app/dialogs/file-open-dialog.c:295
#: app/actions/file-commands.c:234 app/dialogs/file-open-dialog.c:254
#: app/dialogs/file-open-dialog.c:300
#: app/dialogs/file-open-location-dialog.c:217
#: app/dialogs/file-open-location-dialog.c:233
#: app/display/gimpdisplayshell-dnd.c:646 app/widgets/gimplayertreeview.c:796
@@ -3047,134 +3055,124 @@ msgctxt "dialogs-action"
msgid "Open the dashboard"
msgstr "სამუშაო მაგიდის ფანჯრის გახსნა"
#: app/actions/dialogs-actions.c:311 app/actions/dialogs-actions.c:312
msgctxt "dialogs-action"
msgid "_Settings..."
msgstr "_მორგება..."
#: app/actions/dialogs-actions.c:314 app/actions/dialogs-actions.c:315
#: app/actions/dialogs-actions.c:310 app/actions/dialogs-actions.c:311
msgctxt "dialogs-action"
msgid "_Preferences"
msgstr "გამართვა"
#: app/actions/dialogs-actions.c:318
#: app/actions/dialogs-actions.c:313
msgctxt "dialogs-action"
msgid "Open the preferences dialog"
msgstr "გამართვის ფანჯრის გახსნა"
#: app/actions/dialogs-actions.c:323
#: app/actions/dialogs-actions.c:318
msgctxt "dialogs-action"
msgid "_Input Devices Editor"
msgstr "შემომტანი მოწობილობები_ს რედაქტორი"
#: app/actions/dialogs-actions.c:324
#: app/actions/dialogs-actions.c:319
msgctxt "dialogs-action"
msgid "_Input Devices"
msgstr "შემომტანი მოწყობილობები"
#: app/actions/dialogs-actions.c:326
#: app/actions/dialogs-actions.c:321
msgctxt "dialogs-action"
msgid "Open the input devices editor"
msgstr "შემომტანი მოწყობილობების ფანჯრის გახსნა"
#: app/actions/dialogs-actions.c:331
#: app/actions/dialogs-actions.c:326
msgctxt "dialogs-action"
msgid "_Keyboard Shortcuts Editor"
msgstr "კლავიატურის მალსახმობების _რედაქტორი"
#: app/actions/dialogs-actions.c:332
#: app/actions/dialogs-actions.c:327
msgctxt "dialogs-action"
msgid "_Keyboard Shortcuts"
msgstr "კლავიატურის მალსახმობები"
#: app/actions/dialogs-actions.c:334
#: app/actions/dialogs-actions.c:329
msgctxt "dialogs-action"
msgid "Open the keyboard shortcuts editor"
msgstr "კლავიატურის მალსახმობების ფანჯრის გახსნა"
#: app/actions/dialogs-actions.c:339
#: app/actions/dialogs-actions.c:334
msgctxt "dialogs-action"
msgid "_Modules Dialog"
msgstr "_მოდულების ფანჯარა"
#: app/actions/dialogs-actions.c:340
#: app/actions/dialogs-actions.c:335
msgctxt "dialogs-action"
msgid "_Modules"
msgstr "_მოდულები"
#: app/actions/dialogs-actions.c:342
#: app/actions/dialogs-actions.c:337
msgctxt "dialogs-action"
msgid "Open the module manager dialog"
msgstr "მოდულების ფანჯრის გახსნა"
#: app/actions/dialogs-actions.c:347
#: app/actions/dialogs-actions.c:342
msgctxt "dialogs-action"
msgid "_Tip of the Day"
msgstr "დღის მინიშნება"
#: app/actions/dialogs-actions.c:349
#: app/actions/dialogs-actions.c:344
msgctxt "dialogs-action"
msgid "Show some helpful tips on using GIMP"
msgstr "რამდენიმე გამოსადეგი რჩევა GIMP-ის მოხმარების შესახებ"
#: app/actions/dialogs-actions.c:354
#: app/actions/dialogs-actions.c:349
msgctxt "dialogs-action"
msgid "Welcome Dialog"
msgstr "პირველი ფანჯარა"
#: app/actions/dialogs-actions.c:356
#: app/actions/dialogs-actions.c:351
msgctxt "dialogs-action"
msgid "Show information on running GIMP release"
msgstr "GIMP-ის გაშვებული რელიზის შესახებ ინფორმაციის ჩვენება"
#: app/actions/dialogs-actions.c:362 app/actions/dialogs-actions.c:369
#: app/actions/dialogs-actions.c:357 app/actions/dialogs-actions.c:362
msgctxt "dialogs-action"
msgid "About GIMP"
msgstr "GIMP-ის შესახებ"
#: app/actions/dialogs-actions.c:364
msgctxt "dialogs-action"
msgid "About"
msgstr "შესახებ"
#: app/actions/dialogs-actions.c:366
#: app/actions/dialogs-actions.c:359
msgctxt "dialogs-action"
msgid "_About"
msgstr "_შესახებ"
#: app/actions/dialogs-actions.c:374
#: app/actions/dialogs-actions.c:367
msgctxt "dialogs-action"
msgid "_Search and Run a Command"
msgstr "მოძებნა და ბრძანების _გაშვება"
#: app/actions/dialogs-actions.c:376
#: app/actions/dialogs-actions.c:369
msgctxt "dialogs-action"
msgid "Search commands by keyword, and run them"
msgstr "ბრძანებების პირობით ძებნა და მათი გაშვება"
#: app/actions/dialogs-actions.c:382
#: app/actions/dialogs-actions.c:375
msgctxt "dialogs-action"
msgid "Manage _Extensions"
msgstr "გაფართოებების მართვა"
#: app/actions/dialogs-actions.c:384
#: app/actions/dialogs-actions.c:377
msgctxt "dialogs-action"
msgid "Manage Extensions: search, install, uninstall, update."
msgstr "გაფართოებების მართვა: მოძებნეთ, დააყენეთ, წაშალეთ, განაახლეთ."
#: app/actions/dialogs-actions.c:448
#: app/actions/dialogs-actions.c:441
msgid "Tool_box"
msgstr "ხელს_აწოები"
#: app/actions/dialogs-actions.c:449
#: app/actions/dialogs-actions.c:442
msgid "Raise the toolbox"
msgstr "ხელსაწყოების აწევა"
#: app/actions/dialogs-actions.c:453
#: app/actions/dialogs-actions.c:446
msgid "New Tool_box"
msgstr "ხელსაწყოების ა_ხალი პანელი"
#: app/actions/dialogs-actions.c:454
#: app/actions/dialogs-actions.c:447
msgid "Create a new toolbox"
msgstr "ხელსაწყოების ახალი პანელის შექმნა"
@@ -12706,7 +12704,7 @@ msgstr ""
#: app/core/gimp-contexts.c:153 app/core/gimp-internal-data.c:338
#: app/core/gimptooloptions.c:361 app/gui/modifiers.c:191 app/gui/session.c:449
#: app/menus/menus.c:480 app/widgets/gimpdevices.c:226
#: app/menus/menus.c:488 app/widgets/gimpdevices.c:226
#, c-format
msgid "Deleting \"%s\" failed: %s"
msgstr "\"%s\"-ის წაშლა ჩაიშალა: %s"
@@ -14617,11 +14615,11 @@ msgstr ""
msgid "Maximum straight length (in pixels) to close the line art"
msgstr ""
#: app/core/gimplink.c:255
#: app/core/gimplink.c:256
msgid "The file got deleted"
msgstr "ფაილი წაიშალა"
#: app/core/gimplink.c:349
#: app/core/gimplink.c:351
msgid "No file was set"
msgstr "ფაილი დაყენებული არ იყო"
@@ -15397,7 +15395,7 @@ msgstr "ბოლოს შემოწმების თარიღი %s %s"
#: app/dialogs/about-dialog.c:609
#, c-format
msgid "Up to date as of %s at %s"
msgstr ""
msgstr "განახლებულია %s %s თარიღი/დროისთვის"
#: app/dialogs/about-dialog.c:837
msgid "GIMP is brought to you by"
@@ -15788,10 +15786,15 @@ msgid "Search extensions matching these keywords"
msgstr "გაფართოებების საკვანძო სიტყვებით ძებნა"
#: app/dialogs/file-open-dialog.c:142 app/dialogs/file-open-dialog.c:168
#: app/dialogs/file-open-dialog.c:286
#: app/dialogs/file-open-dialog.c:291
msgid "Open layers"
msgstr "ფენების გახსნა"
#: app/dialogs/file-open-dialog.c:258
#, c-format
msgid "Opening '%s' failed."
msgstr "'%s'-ის გახსნის შეცდომა."
#: app/dialogs/file-open-location-dialog.c:74
msgid "Open Location"
msgstr "მდებარეობის გახსნა"
@@ -16067,7 +16070,7 @@ msgstr "ნიღბის ინვერსია"
#: app/dialogs/layer-add-mask-dialog.c:200
msgid "_Edit mask immediately"
msgstr ""
msgstr "ნიღბის დაუოვნ_ებლივი ჩასწორება"
#: app/dialogs/layer-add-mask-dialog.c:235
msgid "Please select a channel first"
@@ -16188,6 +16191,8 @@ msgstr "დონე: %s, სიცოცხლეები: %s"
#: app/dialogs/lebl-dialog.c:150
msgid "Left/Right to move, Space to fire, 'p' to pause, 'q' to quit"
msgstr ""
"მარცხნივ/მარჯვნივ გადასაადგილებლად, ჰარე სასროლად, 'p' დასაპაუზებლად, 'q' "
"გასასვლელად"
#: app/dialogs/lebl-dialog.c:816
msgid "Killer GEGLs from Outer Space"
@@ -16359,35 +16364,35 @@ msgstr "ყველა პალიტრის ფაილი (*.*)"
#: app/dialogs/palette-import-dialog.c:910
msgid "GIMP Palette (*.gpl)"
msgstr ""
msgstr "GIMP-ის პალიტრა (*.gpl)"
#: app/dialogs/palette-import-dialog.c:916
msgid "Adobe Color Table (*.act)"
msgstr ""
msgstr "Adobe-ის ფერების ცხრილი (*.act)"
#: app/dialogs/palette-import-dialog.c:922
msgid "Adobe Color Swatch (*.aco)"
msgstr ""
msgstr "Adobe Color Swatch (*.aco)"
#: app/dialogs/palette-import-dialog.c:928
msgid "Adobe Color Book (*.acb)"
msgstr ""
msgstr "Adobe Color Book (*.acb)"
#: app/dialogs/palette-import-dialog.c:934
msgid "Adobe Swatch Exchange (*.ase)"
msgstr ""
msgstr "Adobe Swatch Exchange (*.ase)"
#: app/dialogs/palette-import-dialog.c:940
msgid "Cascading Style Sheet (*.css)"
msgstr ""
msgstr "Cascading Style Sheet (*.css)"
#: app/dialogs/palette-import-dialog.c:946
msgid "JASC or RIFF Palette (*.pal)"
msgstr ""
msgstr "JASC or RIFF Palette (*.pal)"
#: app/dialogs/palette-import-dialog.c:952
msgid "SwatchBooker (*.sbz)"
msgstr ""
msgstr "SwatchBooker (*.sbz)"
#: app/dialogs/preferences-dialog.c:215
msgid "Reset All Preferences"
@@ -18436,13 +18441,13 @@ msgid "GIMP website"
msgstr "GIMP-ის ვებგვერდი"
#: app/dialogs/welcome-dialog.c:545
msgid "Tutorials"
msgstr "სახელმძღვანელოები"
#: app/dialogs/welcome-dialog.c:550
msgid "Documentation"
msgstr "დოკუმენტაცია"
#: app/dialogs/welcome-dialog.c:550
msgid "Community Tutorials"
msgstr "მომხმარებლების ნაწერი სახელმძღვანელოები"
#. XXX: should we add API docs for plug-in developers once it's
#. * properly set up?
#. Welcome message: right
@@ -20734,7 +20739,7 @@ msgstr "გაძლიერება"
#: app/paint/gimpmybrushoptions.c:129
msgid "Adjust strength of input pressure"
msgstr ""
msgstr "შეყვანის წნევის სიძლიერის გასწორება"
#: app/paint/gimpmybrushoptions.c:153
msgid "Erase with this brush"
@@ -20913,7 +20918,7 @@ msgstr "გამეორება"
#: app/paint/gimppaintoptions.c:381
msgid "How fade is repeated as you paint"
msgstr ""
msgstr "როგორ მეორდება მინავლება ხატვისას"
#: app/paint/gimppaintoptions.c:393 app/tools/gimpgradientoptions.c:282
#: app/tools/gimppaintoptions-gui.c:398
@@ -21187,11 +21192,7 @@ msgstr "ვექტორული ფენის შებრუნება"
msgid "Transform Vector Layer"
msgstr "ვექტორული ფენის ტრანსფორმირება"
#: app/path/gimpvectorlayer.c:526
msgid "Discard Vector Informations"
msgstr "ვექტორის ინფორმაციების მოცილება"
#: app/path/gimpvectorlayer.c:669
#: app/path/gimpvectorlayer.c:526 app/path/gimpvectorlayer.c:669
msgid "Discard Vector Information"
msgstr "ვექტორის ინფორმაციის მოცილება"
@@ -26963,7 +26964,7 @@ msgstr "სხვა ინფორმაცია"
msgid "Select fields"
msgstr "აირჩიეთ ველები"
#. Tranlators: "N/A" is an abbreviation for "not available"
#. Translators: "N/A" is an abbreviation for "not available"
#: app/widgets/gimpdashboard.c:3323
msgctxt "dashboard-value"
msgid "N/A"
@@ -29300,6 +29301,17 @@ msgctxt "edit-action"
msgid "Undo History Menu"
msgstr "დაბრუნების ისტორია"
#~ msgctxt "dialogs-action"
#~ msgid "_Settings..."
#~ msgstr "_მორგება..."
#~ msgctxt "dialogs-action"
#~ msgid "About"
#~ msgstr "შესახებ"
#~ msgid "Discard Vector Informations"
#~ msgstr "ვექტორის ინფორმაციების მოცილება"
#~ msgctxt "vector-mode"
#~ msgid "Edit"
#~ msgstr "ჩასწორება"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gimp 2.8\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gimp/issues\n"
"POT-Creation-Date: 2025-09-27 06:07+0000\n"
"PO-Revision-Date: 2025-09-27 13:43+0200\n"
"POT-Creation-Date: 2025-09-27 11:45+0000\n"
"PO-Revision-Date: 2025-09-28 13:19+0200\n"
"Last-Translator: Kolbjørn Stuestøl <kolbjoern@stuestoel.no>\n"
"Language-Team: Norwegian nynorsk <l10n-no@lister.huftis.org>\n"
"Language: nn\n"
@@ -119,8 +119,8 @@ msgid ""
"Copyright © 1995-%s\n"
"Spencer Kimball, Peter Mattis and the GIMP Development Team"
msgstr ""
"Copyright © 1995-%s\n"
"Spencer Kimball, Peter Mattis and the GIMP Development Team"
"Opphavsrett © 1995-%s\n"
"Spencer Kimball, Peter Mattis og GIMP-utviklingsteamet"
#. TRANSLATORS: do not end the license URL with a dot, because it would
#. * be in the link. Because of technical limitations, make sure the URL
@@ -269,7 +269,7 @@ msgstr "Prosedyren som vert brukt for å køyra batch kommandoane."
#: app/main.c:244
msgid "Quit immediately after performing requested actions"
msgstr "Avslutt straks etter å ha utført dei førespurde handlingane"
msgstr "Avslutt straks førespurde handlingane er utførte"
#: app/main.c:249
msgid "Send messages to console instead of using a dialog"

1127
po/ru.po

File diff suppressed because it is too large Load Diff

120
po/sl.po
View File

@@ -10,18 +10,18 @@ msgid ""
msgstr ""
"Project-Id-Version: GIMP master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gimp/issues\n"
"POT-Creation-Date: 2025-09-24 17:18+0000\n"
"PO-Revision-Date: 2025-09-24 19:51+0200\n"
"POT-Creation-Date: 2025-09-29 12:38+0000\n"
"PO-Revision-Date: 2025-09-29 15:20+0200\n"
"Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n"
"Language-Team: Martin Srebotnjak <miles@filmsi.net>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
"n%100==4 ? 3 : 0);\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 3.4.2\n"
"X-Generator: Poedit 2.2.1\n"
#: desktop/org.gimp.GIMP.appdata.xml.in.in:15
msgid "The GIMP team"
@@ -178,7 +178,15 @@ msgstr ""
msgid "If you wanted to quit immediately instead, call GIMP with --quit."
msgstr "Če želite namesto tega takoj prenehati, pokličite GIMP s --quit."
#: app/gimp-update.c:444
#: app/gimp-update.c:421
msgid "Perhaps you are missing GIO backends and need to install GVFS?"
msgstr "Morda vam manjka ogrodje GIO in morate namestiti GVFS?"
#: app/gimp-update.c:426
msgid "Perhaps you are missing GIO backends."
msgstr "Morda vam manjka ogrodje GIO."
#: app/gimp-update.c:458
#, c-format
msgid ""
"A new version of GIMP (%s) was released.\n"
@@ -3086,134 +3094,124 @@ msgctxt "dialogs-action"
msgid "Open the dashboard"
msgstr "Odpri nadzorno ploščo"
#: app/actions/dialogs-actions.c:311 app/actions/dialogs-actions.c:312
msgctxt "dialogs-action"
msgid "_Settings..."
msgstr "_Nastavitve …"
#: app/actions/dialogs-actions.c:314 app/actions/dialogs-actions.c:315
#: app/actions/dialogs-actions.c:310 app/actions/dialogs-actions.c:311
msgctxt "dialogs-action"
msgid "_Preferences"
msgstr "_Nastavitve"
#: app/actions/dialogs-actions.c:318
#: app/actions/dialogs-actions.c:313
msgctxt "dialogs-action"
msgid "Open the preferences dialog"
msgstr "Odpre pogovorno okno nastavitev"
#: app/actions/dialogs-actions.c:323
#: app/actions/dialogs-actions.c:318
msgctxt "dialogs-action"
msgid "_Input Devices Editor"
msgstr "V_hodne naprave (okno)"
#: app/actions/dialogs-actions.c:324
#: app/actions/dialogs-actions.c:319
msgctxt "dialogs-action"
msgid "_Input Devices"
msgstr "V_hodne naprave"
#: app/actions/dialogs-actions.c:326
#: app/actions/dialogs-actions.c:321
msgctxt "dialogs-action"
msgid "Open the input devices editor"
msgstr "Odpre urejevalnik vhodnih naprav"
#: app/actions/dialogs-actions.c:331
#: app/actions/dialogs-actions.c:326
msgctxt "dialogs-action"
msgid "_Keyboard Shortcuts Editor"
msgstr "_Tipke za bližnjico (okno)"
#: app/actions/dialogs-actions.c:332
#: app/actions/dialogs-actions.c:327
msgctxt "dialogs-action"
msgid "_Keyboard Shortcuts"
msgstr "_Tipke za bližnjico"
#: app/actions/dialogs-actions.c:334
#: app/actions/dialogs-actions.c:329
msgctxt "dialogs-action"
msgid "Open the keyboard shortcuts editor"
msgstr "Odpre urejevalnik tipk za bližnjice"
#: app/actions/dialogs-actions.c:339
#: app/actions/dialogs-actions.c:334
msgctxt "dialogs-action"
msgid "_Modules Dialog"
msgstr "_Gradniki (okno)"
#: app/actions/dialogs-actions.c:340
#: app/actions/dialogs-actions.c:335
msgctxt "dialogs-action"
msgid "_Modules"
msgstr "_Gradniki"
#: app/actions/dialogs-actions.c:342
#: app/actions/dialogs-actions.c:337
msgctxt "dialogs-action"
msgid "Open the module manager dialog"
msgstr "Odpri pogovorno okno upravitelja gradnikov"
#: app/actions/dialogs-actions.c:347
#: app/actions/dialogs-actions.c:342
msgctxt "dialogs-action"
msgid "_Tip of the Day"
msgstr "_Nasvet dneva"
#: app/actions/dialogs-actions.c:349
#: app/actions/dialogs-actions.c:344
msgctxt "dialogs-action"
msgid "Show some helpful tips on using GIMP"
msgstr "Pokaže priročne namige pri delu s programom GIMP"
#: app/actions/dialogs-actions.c:354
#: app/actions/dialogs-actions.c:349
msgctxt "dialogs-action"
msgid "Welcome Dialog"
msgstr "Pogovorno okno dobrodošlice"
#: app/actions/dialogs-actions.c:356
#: app/actions/dialogs-actions.c:351
msgctxt "dialogs-action"
msgid "Show information on running GIMP release"
msgstr "Pokaži informacije o zagonu izdaje GIMP"
#: app/actions/dialogs-actions.c:362 app/actions/dialogs-actions.c:369
#: app/actions/dialogs-actions.c:357 app/actions/dialogs-actions.c:362
msgctxt "dialogs-action"
msgid "About GIMP"
msgstr "O programu GIMP"
#: app/actions/dialogs-actions.c:364
msgctxt "dialogs-action"
msgid "About"
msgstr "O programu"
#: app/actions/dialogs-actions.c:366
#: app/actions/dialogs-actions.c:359
msgctxt "dialogs-action"
msgid "_About"
msgstr "_O programu"
#: app/actions/dialogs-actions.c:374
#: app/actions/dialogs-actions.c:367
msgctxt "dialogs-action"
msgid "_Search and Run a Command"
msgstr "_Najdi in zaženi ukaz"
#: app/actions/dialogs-actions.c:376
#: app/actions/dialogs-actions.c:369
msgctxt "dialogs-action"
msgid "Search commands by keyword, and run them"
msgstr "Poiščite ukaze po ključnih besedah in jih zaženite"
#: app/actions/dialogs-actions.c:382
#: app/actions/dialogs-actions.c:375
msgctxt "dialogs-action"
msgid "Manage _Extensions"
msgstr "Upravljaj _razširitve"
#: app/actions/dialogs-actions.c:384
#: app/actions/dialogs-actions.c:377
msgctxt "dialogs-action"
msgid "Manage Extensions: search, install, uninstall, update."
msgstr "Upravljanje razširitev: iskanje, namestitev, odstranitev, posodobitev."
#: app/actions/dialogs-actions.c:448
#: app/actions/dialogs-actions.c:441
msgid "Tool_box"
msgstr "O_rodjarna"
#: app/actions/dialogs-actions.c:449
#: app/actions/dialogs-actions.c:442
msgid "Raise the toolbox"
msgstr "Privzdigni orodjarno"
#: app/actions/dialogs-actions.c:453
#: app/actions/dialogs-actions.c:446
msgid "New Tool_box"
msgstr "Nova o_rodjarna"
#: app/actions/dialogs-actions.c:454
#: app/actions/dialogs-actions.c:447
msgid "Create a new toolbox"
msgstr "Ustvari novo orodjarno"
@@ -10618,8 +10616,8 @@ msgstr "Barva prosojnosti po meri 2"
#: app/config/gimprc-blurbs.h:11
msgid ""
"When enabled, an image will become the active image when its image window "
"receives the focus. This is useful for window managers using \"click to "
"focus\"."
"receives the focus. This is useful for window managers using \"click to focus"
"\"."
msgstr ""
"Če je omogočeno, bo slika postala aktivna, ko njeno okno dobi pozornost. To "
"je uporabno za upravljalnike oken, ki uporabljajo »klikni za "
@@ -12908,7 +12906,7 @@ msgstr ""
#: app/core/gimp-contexts.c:153 app/core/gimp-internal-data.c:338
#: app/core/gimptooloptions.c:361 app/gui/modifiers.c:191 app/gui/session.c:449
#: app/menus/menus.c:480 app/widgets/gimpdevices.c:226
#: app/menus/menus.c:488 app/widgets/gimpdevices.c:226
#, c-format
msgid "Deleting \"%s\" failed: %s"
msgstr "Brisanje »%s« ni uspelo: %s"
@@ -13831,11 +13829,11 @@ msgstr "Preoblikovanje"
#: app/core/gimpdrawablefilter.c:959
#, c-format
msgid ""
"GEGL operation '%s' has been called with a non-existent argument name "
"'%s' (#%d)."
"GEGL operation '%s' has been called with a non-existent argument name '%s' (#"
"%d)."
msgstr ""
"Operacija GEGL »%s« je bila klicana z neobstoječim imenom argumenta "
"»%s« (#%d)."
"Operacija GEGL »%s« je bila klicana z neobstoječim imenom argumenta »%s« (#"
"%d)."
#: app/core/gimpdrawablefilter.c:1023
#, c-format
@@ -18740,13 +18738,13 @@ msgid "GIMP website"
msgstr "Spletišče GIMP"
#: app/dialogs/welcome-dialog.c:545
msgid "Tutorials"
msgstr "Priročniki"
#: app/dialogs/welcome-dialog.c:550
msgid "Documentation"
msgstr "Dokumentacija"
#: app/dialogs/welcome-dialog.c:550
msgid "Community Tutorials"
msgstr "Vadnice iz skupnosti"
#. XXX: should we add API docs for plug-in developers once it's
#. * properly set up?
#. Welcome message: right
@@ -21539,11 +21537,7 @@ msgstr "Zasukaj vektorsko plast"
msgid "Transform Vector Layer"
msgstr "Preoblikuj vektorsko plast"
#: app/path/gimpvectorlayer.c:526
msgid "Discard Vector Informations"
msgstr "Zavrzi podatke o vektorju"
#: app/path/gimpvectorlayer.c:669
#: app/path/gimpvectorlayer.c:526 app/path/gimpvectorlayer.c:669
msgid "Discard Vector Information"
msgstr "Zavrzi podatke o vektorju"
@@ -21960,11 +21954,11 @@ msgstr ""
#: app/pdb/gimpprocedure.c:863
#, c-format
msgid ""
"Procedure '%s' has been called with a wrong value type for argument "
"'%s' (#%d). Expected %s, got %s."
"Procedure '%s' has been called with a wrong value type for argument '%s' (#"
"%d). Expected %s, got %s."
msgstr ""
"Procedura »%s« je bila priklicana z napačno vrsto vrednosti argumenta "
"»%s« (#%d). Pričakovano %s, prejeto %s."
"Procedura »%s« je bila priklicana z napačno vrsto vrednosti argumenta »%s« (#"
"%d). Pričakovano %s, prejeto %s."
#: app/pdb/gimpprocedure.c:900
#, c-format
@@ -22008,8 +22002,8 @@ msgid ""
"Procedure '%s' returned `gimp_unit_pixel()` as GimpUnit return value #%d "
"'%s'. This return value does not allow pixel unit."
msgstr ""
"Procedura »%s« je vrnila »gimp_unit_pixel()« kot vrnjeno vrednost GimpUnit "
"#%d '%s'. Ta vrnjena vrednost ne dovoli enot slikovnih točk."
"Procedura »%s« je vrnila »gimp_unit_pixel()« kot vrnjeno vrednost GimpUnit #"
"%d '%s'. Ta vrnjena vrednost ne dovoli enot slikovnih točk."
#: app/pdb/gimpprocedure.c:973
#, c-format

18194
po/th.po

File diff suppressed because it is too large Load Diff

131
po/uk.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gimp\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gimp/issues\n"
"POT-Creation-Date: 2025-09-24 14:14+0000\n"
"PO-Revision-Date: 2025-09-24 18:56+0300\n"
"POT-Creation-Date: 2025-09-29 19:28+0000\n"
"PO-Revision-Date: 2025-09-29 22:51+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -182,7 +182,15 @@ msgstr ""
"Якщо ви хочете негайно завершити роботу програми, запустіть GIMP з "
"параметром --quit."
#: app/gimp-update.c:444
#: app/gimp-update.c:424
msgid "Perhaps you are missing GIO backends and need to install GVFS?"
msgstr "Можливо, не вистачає механізму GIO, і треба встановити GVFS?"
#: app/gimp-update.c:429
msgid "Perhaps you are missing GIO backends."
msgstr "Можливо, у вас не вистачає модулів обробки GIO."
#: app/gimp-update.c:466
#, c-format
msgid ""
"A new version of GIMP (%s) was released.\n"
@@ -2574,8 +2582,8 @@ msgid "Enter a description for the marker"
msgstr "Введіть опис позначки"
#: app/actions/data-commands.c:90 app/actions/documents-commands.c:393
#: app/actions/file-commands.c:234 app/dialogs/file-open-dialog.c:253
#: app/dialogs/file-open-dialog.c:295
#: app/actions/file-commands.c:234 app/dialogs/file-open-dialog.c:254
#: app/dialogs/file-open-dialog.c:300
#: app/dialogs/file-open-location-dialog.c:217
#: app/dialogs/file-open-location-dialog.c:233
#: app/display/gimpdisplayshell-dnd.c:646 app/widgets/gimplayertreeview.c:796
@@ -3090,134 +3098,124 @@ msgctxt "dialogs-action"
msgid "Open the dashboard"
msgstr "Відкрити панель приладів"
#: app/actions/dialogs-actions.c:311 app/actions/dialogs-actions.c:312
msgctxt "dialogs-action"
msgid "_Settings..."
msgstr "_Параметри..."
#: app/actions/dialogs-actions.c:314 app/actions/dialogs-actions.c:315
#: app/actions/dialogs-actions.c:310 app/actions/dialogs-actions.c:311
msgctxt "dialogs-action"
msgid "_Preferences"
msgstr "_Параметри"
#: app/actions/dialogs-actions.c:318
#: app/actions/dialogs-actions.c:313
msgctxt "dialogs-action"
msgid "Open the preferences dialog"
msgstr "Відкрити діалог параметрів програми"
#: app/actions/dialogs-actions.c:323
#: app/actions/dialogs-actions.c:318
msgctxt "dialogs-action"
msgid "_Input Devices Editor"
msgstr "Редактор пристроїв _введення"
#: app/actions/dialogs-actions.c:324
#: app/actions/dialogs-actions.c:319
msgctxt "dialogs-action"
msgid "_Input Devices"
msgstr "Пристрої _вводу"
#: app/actions/dialogs-actions.c:326
#: app/actions/dialogs-actions.c:321
msgctxt "dialogs-action"
msgid "Open the input devices editor"
msgstr "Відкрити редактор пристроїв вводу"
#: app/actions/dialogs-actions.c:331
#: app/actions/dialogs-actions.c:326
msgctxt "dialogs-action"
msgid "_Keyboard Shortcuts Editor"
msgstr "Редактор _комбінацій клавіш"
#: app/actions/dialogs-actions.c:332
#: app/actions/dialogs-actions.c:327
msgctxt "dialogs-action"
msgid "_Keyboard Shortcuts"
msgstr "_Комбінації клавіш"
#: app/actions/dialogs-actions.c:334
#: app/actions/dialogs-actions.c:329
msgctxt "dialogs-action"
msgid "Open the keyboard shortcuts editor"
msgstr "Відкрити діалог налаштування комбінацій клавіш"
#: app/actions/dialogs-actions.c:339
#: app/actions/dialogs-actions.c:334
msgctxt "dialogs-action"
msgid "_Modules Dialog"
msgstr "Вікно _модулів"
#: app/actions/dialogs-actions.c:340
#: app/actions/dialogs-actions.c:335
msgctxt "dialogs-action"
msgid "_Modules"
msgstr "_Модулі"
#: app/actions/dialogs-actions.c:342
#: app/actions/dialogs-actions.c:337
msgctxt "dialogs-action"
msgid "Open the module manager dialog"
msgstr "Відкрити діалог керування модулями"
#: app/actions/dialogs-actions.c:347
#: app/actions/dialogs-actions.c:342
msgctxt "dialogs-action"
msgid "_Tip of the Day"
msgstr "По_рада дня"
#: app/actions/dialogs-actions.c:349
#: app/actions/dialogs-actions.c:344
msgctxt "dialogs-action"
msgid "Show some helpful tips on using GIMP"
msgstr "Показати збірку корисних порід з використання GIMP"
#: app/actions/dialogs-actions.c:354
#: app/actions/dialogs-actions.c:349
msgctxt "dialogs-action"
msgid "Welcome Dialog"
msgstr "Вікно вітання"
#: app/actions/dialogs-actions.c:356
#: app/actions/dialogs-actions.c:351
msgctxt "dialogs-action"
msgid "Show information on running GIMP release"
msgstr "Показати відомості щодо запущеного випуску GIMP"
#: app/actions/dialogs-actions.c:362 app/actions/dialogs-actions.c:369
#: app/actions/dialogs-actions.c:357 app/actions/dialogs-actions.c:362
msgctxt "dialogs-action"
msgid "About GIMP"
msgstr "Про програму GIMP"
#: app/actions/dialogs-actions.c:364
msgctxt "dialogs-action"
msgid "About"
msgstr "Про програму"
#: app/actions/dialogs-actions.c:366
#: app/actions/dialogs-actions.c:359
msgctxt "dialogs-action"
msgid "_About"
msgstr "_Про програму"
#: app/actions/dialogs-actions.c:374
#: app/actions/dialogs-actions.c:367
msgctxt "dialogs-action"
msgid "_Search and Run a Command"
msgstr "_Пошук і запуск команди"
#: app/actions/dialogs-actions.c:376
#: app/actions/dialogs-actions.c:369
msgctxt "dialogs-action"
msgid "Search commands by keyword, and run them"
msgstr "Пошук команд за ключовим словом та їх запуск"
#: app/actions/dialogs-actions.c:382
#: app/actions/dialogs-actions.c:375
msgctxt "dialogs-action"
msgid "Manage _Extensions"
msgstr "Керування _розширеннями"
#: app/actions/dialogs-actions.c:384
#: app/actions/dialogs-actions.c:377
msgctxt "dialogs-action"
msgid "Manage Extensions: search, install, uninstall, update."
msgstr "Керування розширеннями: пошук, встановлення, вилучення, оновлення."
#: app/actions/dialogs-actions.c:448
#: app/actions/dialogs-actions.c:441
msgid "Tool_box"
msgstr "Панель _інструментів"
#: app/actions/dialogs-actions.c:449
#: app/actions/dialogs-actions.c:442
msgid "Raise the toolbox"
msgstr "Підняти вгору панель інструментів"
#: app/actions/dialogs-actions.c:453
#: app/actions/dialogs-actions.c:446
msgid "New Tool_box"
msgstr "Додати п_анель інструментів"
#: app/actions/dialogs-actions.c:454
#: app/actions/dialogs-actions.c:447
msgid "Create a new toolbox"
msgstr "Створити нову панель інструментів"
@@ -12956,7 +12954,7 @@ msgstr ""
#: app/core/gimp-contexts.c:153 app/core/gimp-internal-data.c:338
#: app/core/gimptooloptions.c:361 app/gui/modifiers.c:191 app/gui/session.c:449
#: app/menus/menus.c:480 app/widgets/gimpdevices.c:226
#: app/menus/menus.c:488 app/widgets/gimpdevices.c:226
#, c-format
msgid "Deleting \"%s\" failed: %s"
msgstr "Не вдалось вилучити «%s»: %s"
@@ -16103,10 +16101,16 @@ msgid "Search extensions matching these keywords"
msgstr "Шукати розширення за цими ключовими словами"
#: app/dialogs/file-open-dialog.c:142 app/dialogs/file-open-dialog.c:168
#: app/dialogs/file-open-dialog.c:286
#: app/dialogs/file-open-dialog.c:291
msgid "Open layers"
msgstr "Відкрити шари"
#: app/dialogs/file-open-dialog.c:258
#, c-format
#| msgid "Opening '%s' failed: %s"
msgid "Opening '%s' failed."
msgstr "Не вдалося відкрити «%s»."
#: app/dialogs/file-open-location-dialog.c:74
msgid "Open Location"
msgstr "Відкривання адреси"
@@ -18800,13 +18804,14 @@ msgid "GIMP website"
msgstr "Сайт GIMP"
#: app/dialogs/welcome-dialog.c:545
msgid "Tutorials"
msgstr "Підручники"
#: app/dialogs/welcome-dialog.c:550
msgid "Documentation"
msgstr "Документація"
#: app/dialogs/welcome-dialog.c:550
#| msgid "Tutorials"
msgid "Community Tutorials"
msgstr "Підручники спільноти"
#. XXX: should we add API docs for plug-in developers once it's
#. * properly set up?
#. Welcome message: right
@@ -19860,26 +19865,26 @@ msgstr "Натисніть і перетягніть, щоб пересунут
msgid "Click-Drag to shear"
msgstr "Натисніть і перетягніть для перекошування"
#: app/file/file-open.c:264
#: app/file/file-open.c:272
#, c-format
msgid "%s plug-in returned SUCCESS but did not return an image"
msgstr "Доповнення %s успішно завершило роботу, але не повернуло зображення."
#: app/file/file-open.c:275
#: app/file/file-open.c:283
#, c-format
msgid "%s plug-in could not open image"
msgstr "Доповненню %s не вдалось відкрити зображення"
#: app/file/file-open.c:690
#: app/file/file-open.c:698
msgid "Image doesn't contain any layers"
msgstr "Зображення не містить шарів"
#: app/file/file-open.c:748
#: app/file/file-open.c:756
#, c-format
msgid "Opening '%s' failed: %s"
msgstr "Не вдалось відкрити «%s»: %s"
#: app/file/file-open.c:836
#: app/file/file-open.c:846
#, c-format
msgid ""
"Only platform-native file paths are supported: '%s' cannot be opened as link."
@@ -19887,11 +19892,11 @@ msgstr ""
"Передбачено підтримку лише рідних для платформи шляхів до файлів: «%s» не "
"можна відкривати як посилання."
#: app/file/file-open.c:978 app/file/file-save.c:132
#: app/file/file-open.c:985 app/file/file-save.c:132
msgid "Not a regular file"
msgstr "Не є звичайним файлом"
#: app/file/file-open.c:987 app/file/file-save.c:141
#: app/file/file-open.c:994 app/file/file-save.c:141
msgid "Permission denied"
msgstr "Доступ заборонений"
@@ -21621,11 +21626,7 @@ msgstr "Обертати векторний шар"
msgid "Transform Vector Layer"
msgstr "Перетворити векторний шар"
#: app/path/gimpvectorlayer.c:526
msgid "Discard Vector Informations"
msgstr "Відкинути дані щодо векторних елементів"
#: app/path/gimpvectorlayer.c:669
#: app/path/gimpvectorlayer.c:526 app/path/gimpvectorlayer.c:669
msgid "Discard Vector Information"
msgstr "Відкинути дані щодо векторних елементів"
@@ -22196,7 +22197,6 @@ msgstr "2D перетворення"
#: app/pdb/link-layer-cmds.c:67 app/pdb/link-layer-cmds.c:89
#, c-format
#| msgid "Failed to create text layer"
msgid "Failed to create link layer"
msgstr "Не вдалось створити шар посилання"
@@ -27559,7 +27559,7 @@ msgstr "Різноманітні відомості"
msgid "Select fields"
msgstr "Виберіть поля"
#. Tranlators: "N/A" is an abbreviation for "not available"
#. Translators: "N/A" is an abbreviation for "not available"
#: app/widgets/gimpdashboard.c:3323
msgctxt "dashboard-value"
msgid "N/A"
@@ -29937,6 +29937,17 @@ msgctxt "edit-action"
msgid "Undo History Menu"
msgstr "Меню журналу скасувань"
#~ msgctxt "dialogs-action"
#~ msgid "_Settings..."
#~ msgstr "_Параметри..."
#~ msgctxt "dialogs-action"
#~ msgid "About"
#~ msgstr "Про програму"
#~ msgid "Discard Vector Informations"
#~ msgstr "Відкинути дані щодо векторних елементів"
#~ msgctxt "vector-mode"
#~ msgid "Edit"
#~ msgstr "Редагувати"

View File

@@ -10,7 +10,7 @@ gimptool = executable('gimptool' + exec_ver,
'gimptool.c',
include_directories: rootInclude,
dependencies: [
gegl, gtk3,
gegl, gtk3, gexiv2
],
link_with: [
libgimpbase,
@@ -25,7 +25,7 @@ gimp_test_clipboard = executable('gimp-test-clipboard' + exec_ver,
'gimp-test-clipboard.c',
include_directories: rootInclude,
dependencies: [
gegl, gtk3,
gegl, gtk3, gexiv2
],
install: true,
)

View File

@@ -20,45 +20,77 @@
############################################
#### Usage ####
if [ "$#" -ne 2 -a "$#" -ne 1 ]; then
echo "Usage: $0 <GIMP_TAG_PREV> <GIMP_TAG_CUR>"
echo
echo " GIMP_TAG_PREV: last tag release or commit (non-included in stats)"
echo " ex: GIMP_2_9_6"
echo " GIMP_TAG_CUR: current tag release or commit (included in stats); ex: GIMP_2_9_8"
echo " ex: GIMP_2_9_8."
echo " Optional. If absent, statistics up to HEAD."
exit 1
fi
printf "GIMP version to release: "; read ver
PREV=$1
git --no-pager show $PREV >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "First tag is unknown: $PREV"
exit 2
fi
if [ -z "$ver" ]; then
TAG="HEAD"
PREV_TAG=$(git ls-remote --tags --exit-code --refs "https://gitlab.gnome.org/GNOME/gimp.git" |grep -o "GIMP_[0-9]*_[0-9]*_[0-9]*" | sort --version-sort | tail -1)
INTERMEDIATE_TAG=$PREV_TAG
if [ "$#" = 2 ]; then
CUR=$2
git --no-pager show $CUR >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Second tag is unknown: $CUR"
exit 2
fi
is_dev_release=1
else
CUR='HEAD'
major=$(echo "$ver" | cut -d'.' -f1)
minor=$(echo "$ver" | cut -d'.' -f2)
micro=$(echo "$ver" | cut -d'.' -f3)
TAG=GIMP_${major}_${minor}_${micro}
git --no-pager show $TAG >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Tag is unknown: $TAG"
exit 1
fi
is_dev_release=$((minor % 2))
if [ $((micro % 2)) -ne 0 ]; then
echo "Releases must have an even micro version."
exit 1
fi
# The previous tag will be in the same branch. For instance 3.0.4 is
# previous to 3.0.6 even if we may have released 3.1 versions
# in-between.
PREV_TAG=$(git ls-remote --tags --exit-code --refs "https://gitlab.gnome.org/GNOME/gimp.git" |grep -o "GIMP_[0-9]*_[0-9]*_[0-9]*" | sort --version-sort | grep -B1 $TAG | head -1)
# The intermediate tag is the actual version we released before.
INTERMEDIATE_TAG=$(git ls-remote --tags --sort=taggerdate --exit-code --refs "https://gitlab.gnome.org/GNOME/gimp.git" |grep -o "GIMP_[0-9]*_[0-9]*_[0-9]*" | grep -B1 $TAG | head -1)
fi
prev_date=`git log -1 --format=%ci $PREV`
cur_date=`git log -1 --format=%ci $CUR`
#if [ $is_dev_release -eq 0 ]; then
#read -p "Previous stable GIMP version:" ver
#elif [ $micro -eq 0 ];
#else
#read -p "Previous GIMP version:" ver
#fi
prevmajor=$(echo "$1" | cut -d'_' -f2)
prevminor=$(echo "$1" | cut -d'_' -f3)
prevmicro=$(echo "$1" | cut -d'_' -f4)
prevmajor=$(echo "$PREV_TAG" | cut -d'_' -f2)
prevminor=$(echo "$PREV_TAG" | cut -d'_' -f3)
prevmicro=$(echo "$PREV_TAG" | cut -d'_' -f4)
major=$(echo "$2" | cut -d'_' -f2)
minor=$(echo "$2" | cut -d'_' -f3)
micro=$(echo "$2" | cut -d'_' -f4)
intmajor=$(echo "$INTERMEDIATE_TAG" | cut -d'_' -f2)
intminor=$(echo "$INTERMEDIATE_TAG" | cut -d'_' -f3)
intmicro=$(echo "$INTERMEDIATE_TAG" | cut -d'_' -f4)
echo "Previous Release: $prevmajor.$prevminor.$prevmicro"
if [ "$PREV_TAG" != "$INTERMEDIATE_TAG" ]; then
echo "Intermediate Release: $intmajor.$intminor.$intmicro"
fi
#if [ $((prevmicro % 2)) -ne 0 ]; then
#echo "Releases must have an even micro version."
#exit 1
#fi
#if [ $is_dev_release -eq 0 ]; then
#if [ $((prevminor % 2)) -ne 0 ]; then
#echo "$ver is not a stable version."
#exit 1
#fi
#fi
prev_date=`git log -1 --format=%ci $PREV_TAG`
int_date=`git log -1 --format=%ci $INTERMEDIATE_TAG`
cur_date=`git log -1 --format=%ci $TAG`
get_issues_mrs()
{
@@ -116,7 +148,7 @@ count_contributors()
folders=$1
text=$2
contributors=`git --no-pager shortlog -sn $PREV..$CUR -- $folders`
contributors=`git --no-pager shortlog -sn $PREV_TAG..$TAG -- $folders`
if [ -n "$contributors" ]; then
contributors=`echo "$contributors" | cut -f2`
n_contributors=`echo "$contributors" | wc -l`
@@ -152,11 +184,16 @@ count_repo_contributors()
text=$3
prev_tag=$4
cur_tag=$5
since_date=$6
cd $repo
git fetch origin > /dev/null 2>&1
if [ -z "$cur_tag" ]; then
contributors=`git --no-pager shortlog -sn --since="$prev_date" --until="$cur_date" origin/$branch`
if [ -z "$since_date" ]; then
contributors=`git --no-pager shortlog -sn --since="$prev_date" --until="$cur_date" origin/$branch`
else
contributors=`git --no-pager shortlog -sn --since="$since_date" --until="$cur_date" origin/$branch`
fi
else
contributors=`git --no-pager shortlog -sn $prev_tag..$cur_tag`
fi
@@ -177,15 +214,20 @@ count_repo_contributors()
cd - > /dev/null
}
echo "Copy the below text into your release news:"
echo
echo "-------------------------------------------"
echo
echo "Since [GIMP $prevmajor.$prevminor.$prevmicro](/release/$prevmajor.$prevminor.$prevmicro/), in the main GIMP repository:"
echo
echo "* $closed_issues reports were closed as FIXED."
echo "* $merged_mrs merge requests were merged."
# Main stats:
contribs=`git --no-pager shortlog -s -n $PREV..$CUR`
contribs=`git --no-pager shortlog -s -n $PREV_TAG..$TAG`
contribs_n=`printf "$contribs" | wc -l`
commits_n=`git log --oneline $PREV..$CUR | wc -l`
commits_n=`git log --oneline $PREV_TAG..$TAG | wc -l`
echo "* $commits_n commits were pushed."
@@ -195,16 +237,16 @@ echo "* $commits_n commits were pushed."
#commits_rate=$(( $commits_n / $days_n ))
#echo "Start date: $prev_date - End date: $cur_date"
#echo "Between $PREV and $CUR, $contribs_n people contributed $commits_n commits to GIMP."
#echo "Between $PREV_TAG and $TAG, $contribs_n people contributed $commits_n commits to GIMP."
#echo "This is an average of $commits_rate commits a day."
#echo
#echo "Statistics on all files:" `git diff --shortstat $PREV..$CUR 2>/dev/null`
#echo "Statistics on all files:" `git diff --shortstat $PREV_TAG..$TAG 2>/dev/null`
#echo
#echo "Total contributor list:"
#printf "$contribs"
# Translation stats:
i18n=`git --no-pager log --stat $PREV..$CUR -- po* | grep "Updated\? .* \(translation\|language\)"`
i18n=`git --no-pager log --stat $PREV_TAG..$TAG -- po* | grep "Updated\? .* \(translation\|language\)"`
i18n=`printf "$i18n" | sed "s/ *Updated\? \(.*\) \(translation\|language\).*/\\1/" | sort | uniq`
i18n_n=`printf "$i18n" | wc -l`
# It seems that if the last line has no newline, wc does not count it.
@@ -214,7 +256,7 @@ i18n_comma=`printf "$i18n" | paste -s -d, | sed 's/,/, /g'`
echo "* $i18n_n translations were updated: $i18n_comma."
#echo "Statistics on C files:" `git diff --shortstat $PREV..$CUR -- "*.[ch]" 2>/dev/null`
#echo "Statistics on C files:" `git diff --shortstat $PREV_TAG..$TAG -- "*.[ch]" 2>/dev/null`
echo
echo "$contribs_n people contributed changes or fixes to GIMP $major.$minor.$micro codebase (order
@@ -229,7 +271,7 @@ count_contributors 'themes/*/*.css themes/*/*png' "%d theme designers: %s"
meson_builds=`find . -name meson.build -not -path gimp-data`
count_contributors "meson_options.txt $meson_builds .gitlab-ci.yml build" "%d build, packaging or CI contributors: %s"
count_contributors 'data/ etc/ desktop/ menus/ docs/ devel-docs/ NEWS INSTALL.in' "%d contributors on other types of resources: %s"
count_repo_contributors "gimp-data" main "The gimp-data submodule had %d commits by %d contributors: %s"
count_repo_contributors "gimp-data" main "The gimp-data submodule had %d commits by %d contributors: %s" "" "" $int_date
count_data_contributors 'images' "%d image creators: %s"
count_data_contributors 'icons/*.svg icons/*.png' "%d icon designers: %s"
count_data_contributors 'cursors' "%d cursor designers: %s"
@@ -251,23 +293,23 @@ echo "number of commits):"
echo
echo "* Our UX tracker had $ux_closed_issues reports closed as FIXED."
babl_ver=`get_latest_from_meson babl $CUR`
prev_babl_ver=`get_latest_from_meson babl $PREV`
babl_ver=`get_latest_from_meson babl $TAG`
prev_babl_ver=`get_latest_from_meson babl $PREV_TAG`
if [ "$babl_ver" != "$prev_babl_ver" ]; then
prev_tag=`get_tag_from_version BABL $prev_babl_ver`
cur_tag=`get_tag_from_version BABL $babl_ver`
count_repo_contributors "../babl" master "babl $babl_ver is made of %d commits by %d contributors: %s" $prev_tag $cur_tag
fi
gegl_ver=`get_latest_from_meson gegl $CUR`
prev_gegl_ver=`get_latest_from_meson gegl $PREV`
gegl_ver=`get_latest_from_meson gegl $TAG`
prev_gegl_ver=`get_latest_from_meson gegl $PREV_TAG`
if [ "$gegl_ver" != "$prev_gegl_ver" ]; then
prev_tag=`get_tag_from_version GEGL $prev_gegl_ver`
cur_tag=`get_tag_from_version GEGL $gegl_ver`
count_repo_contributors "../gegl" master "GEGL $gegl_ver is made of %d commits by %d contributors: %s" $prev_tag $cur_tag
fi
count_repo_contributors "../ctx.graphics" dev "[ctx](https://ctx.graphics/) had %d commits since $prevmajor.$prevminor.$prevmicro release by %d contributors: %s"
count_repo_contributors "../ctx.graphics" dev "[ctx](https://ctx.graphics/) had %d commits since $intmajor.$intminor.$intmicro release by %d contributors: %s"
count_repo_contributors "../gimp-test-images" main "The \`gimp-test-images\` (unit testing repository) repository had %d commits by %d contributors: %s"
count_repo_contributors "../gimp-macos-build" master "The \`gimp-macos-build\` (macOS packaging scripts) release had %d commits by %d contributors: %s"
# TODO: