mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-10-05 21:02:42 +02:00
Compare commits
22 Commits
62821736fb
...
cb5d8ac8a3
Author | SHA1 | Date | |
---|---|---|---|
|
cb5d8ac8a3 | ||
|
d8d73266bc | ||
|
356c2baec5 | ||
|
aea7042aa1 | ||
|
97944a5415 | ||
|
a5182a010f | ||
|
9c2c5ff183 | ||
|
f09007507f | ||
|
2b91551f4e | ||
|
cbe56ff388 | ||
|
7cec3f52b9 | ||
|
81c67e5614 | ||
|
67fa72a94e | ||
|
6587256c3a | ||
|
ad9dbf2c8b | ||
|
2f0bfc569b | ||
|
36330a271a | ||
|
baa4825880 | ||
|
8c910c2b6b | ||
|
a025cfe41b | ||
|
41035c7589 | ||
|
9d64379b1c |
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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 -->
|
||||
|
@@ -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,
|
||||
],
|
||||
)
|
||||
|
@@ -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,
|
||||
],
|
||||
)
|
||||
|
||||
|
@@ -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"));
|
||||
|
@@ -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
|
||||
],
|
||||
)
|
||||
|
@@ -16,6 +16,7 @@ libappfiledata = static_library('appfiledata',
|
||||
cairo,
|
||||
gdk_pixbuf,
|
||||
gegl,
|
||||
gexiv2,
|
||||
libarchive,
|
||||
],
|
||||
)
|
||||
|
@@ -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
|
||||
],
|
||||
)
|
||||
|
@@ -56,5 +56,6 @@ libappgegl = static_library('appgegl',
|
||||
cairo,
|
||||
gegl,
|
||||
gdk_pixbuf,
|
||||
gexiv2
|
||||
],
|
||||
)
|
||||
|
@@ -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,
|
||||
)
|
||||
|
@@ -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
|
||||
],
|
||||
)
|
||||
|
@@ -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
|
||||
],
|
||||
)
|
||||
|
@@ -50,5 +50,6 @@ libapplayermodes = static_library('applayermodes',
|
||||
cairo,
|
||||
gegl,
|
||||
gdk_pixbuf,
|
||||
gexiv2
|
||||
],
|
||||
)
|
||||
|
@@ -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
|
||||
],
|
||||
)
|
||||
|
||||
|
@@ -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,
|
||||
],
|
||||
)
|
||||
|
@@ -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
|
||||
],
|
||||
)
|
||||
|
@@ -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
|
||||
|
@@ -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,
|
||||
],
|
||||
)
|
||||
|
@@ -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
|
||||
],
|
||||
)
|
||||
|
@@ -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,
|
||||
|
@@ -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,
|
||||
],
|
||||
)
|
||||
|
@@ -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."));
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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,
|
||||
],
|
||||
)
|
||||
|
@@ -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,
|
||||
],
|
||||
)
|
||||
|
@@ -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
|
||||
],
|
||||
)
|
||||
|
@@ -245,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,
|
||||
|
@@ -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 '- ','')
|
||||
|
||||
|
@@ -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'),
|
||||
|
@@ -421,6 +421,7 @@ libgimp_dep = declare_dependency(
|
||||
cairo,
|
||||
gdk_pixbuf,
|
||||
gegl,
|
||||
gexiv2,
|
||||
],
|
||||
link_with: [
|
||||
libgimp,
|
||||
@@ -438,7 +439,6 @@ libgimpui = library('gimpui-'+ gimp_api_version,
|
||||
libgimpui_sources,
|
||||
dependencies: [
|
||||
libgimp_dep,
|
||||
gexiv2,
|
||||
gtk3,
|
||||
],
|
||||
sources: [
|
||||
|
@@ -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]
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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, ],
|
||||
|
@@ -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: [
|
||||
|
@@ -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: [
|
||||
|
@@ -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: [
|
||||
|
@@ -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));
|
||||
|
@@ -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);
|
||||
|
@@ -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: [
|
||||
|
11
meson.build
11
meson.build
@@ -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
|
||||
|
@@ -1,6 +1,6 @@
|
||||
|
||||
modules_deps = [
|
||||
gtk3, babl, gegl, math,
|
||||
gtk3, babl, gegl, gexiv2, math,
|
||||
]
|
||||
|
||||
color_selector_libs = [
|
||||
|
@@ -1083,6 +1083,7 @@ zip_load (GFile *infile,
|
||||
if (r != ARCHIVE_OK)
|
||||
{
|
||||
archive_read_close (a);
|
||||
archive_read_free (a);
|
||||
|
||||
goto out;
|
||||
}
|
||||
@@ -1094,13 +1095,22 @@ zip_load (GFile *infile,
|
||||
if (r != ARCHIVE_OK)
|
||||
{
|
||||
archive_read_close (a);
|
||||
archive_read_free (a);
|
||||
|
||||
goto out;
|
||||
}
|
||||
archive_entry_free (entry);
|
||||
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:
|
||||
|
@@ -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, libarchive, 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,
|
||||
|
@@ -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,
|
||||
)
|
||||
|
700
po-libgimp/da.po
700
po-libgimp/da.po
File diff suppressed because it is too large
Load Diff
@@ -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-29 19:54+0000\n"
|
||||
"PO-Revision-Date: 2025-09-29 22:59+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"
|
||||
@@ -2808,19 +2808,87 @@ msgstr "Непрозорість"
|
||||
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: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 "gzip archive"
|
||||
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."
|
||||
@@ -2834,6 +2902,15 @@ msgstr "Стиснення «%s»"
|
||||
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"
|
||||
|
146
po/it.po
146
po/it.po
@@ -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"
|
||||
|
@@ -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,
|
||||
)
|
||||
|
@@ -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:
|
||||
|
Reference in New Issue
Block a user