mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-10-06 01:12:40 +02:00
Compare commits
2613 Commits
wip/Jehan/
...
d1aad9d41b
Author | SHA1 | Date | |
---|---|---|---|
|
d1aad9d41b | ||
|
d8d73266bc | ||
|
356c2baec5 | ||
|
aea7042aa1 | ||
|
97944a5415 | ||
|
a5182a010f | ||
|
9c2c5ff183 | ||
|
f09007507f | ||
|
2b91551f4e | ||
|
cbe56ff388 | ||
|
7cec3f52b9 | ||
|
81c67e5614 | ||
|
67fa72a94e | ||
|
6587256c3a | ||
|
ad9dbf2c8b | ||
|
2f0bfc569b | ||
|
36330a271a | ||
|
baa4825880 | ||
|
8c910c2b6b | ||
|
a025cfe41b | ||
|
41035c7589 | ||
|
7275569079 | ||
|
dfafb7c6f2 | ||
|
25d1b7f8c3 | ||
|
0edf615333 | ||
|
daf23e1a50 | ||
|
b633b4b9c7 | ||
|
cfa3fd6bb7 | ||
|
669685d1d8 | ||
|
f032153596 | ||
|
13639b1d3d | ||
|
eb0bfe7bdb | ||
|
393ca59e79 | ||
|
3a698a05a1 | ||
|
f4a7da1ee3 | ||
|
bb9d8df855 | ||
|
78e68efd06 | ||
|
2fa82d51ee | ||
|
f223dae9fe | ||
|
9daf5d2e5d | ||
|
789af76a32 | ||
|
f9ba343558 | ||
|
014aa5ae6f | ||
|
47eac319b1 | ||
|
3bde6195f6 | ||
|
b0689f565b | ||
|
1e46438ced | ||
|
2b32496195 | ||
|
de62139894 | ||
|
f774ad7f16 | ||
|
f53a843c3d | ||
|
46d9a09698 | ||
|
355d695607 | ||
|
714e9041d8 | ||
|
24c8f86c85 | ||
|
f50145c155 | ||
|
7f8298467b | ||
|
23a9758a7b | ||
|
0af9261980 | ||
|
77d25750a7 | ||
|
155e951fa6 | ||
|
5a22a9b931 | ||
|
2187f0a49c | ||
|
91418131a0 | ||
|
645d23cd37 | ||
|
28fa2e5fc7 | ||
|
c13bf1af19 | ||
|
9337c55599 | ||
|
947995248a | ||
|
abcfbfbca5 | ||
|
b121ddd6f8 | ||
|
ba1de3b68e | ||
|
6552e3200d | ||
|
4d97212cf9 | ||
|
54b64252df | ||
|
c79db4c15a | ||
|
cecb937a0b | ||
|
fe4dbeb911 | ||
|
fdb4111e3f | ||
|
72533aaf8e | ||
|
ccc4eacac3 | ||
|
8e9b7bfce6 | ||
|
17552c0e11 | ||
|
f428089947 | ||
|
6260590cf4 | ||
|
c5e77fb8bb | ||
|
b50781730c | ||
|
2b669917c2 | ||
|
7d22110cfb | ||
|
86cc15cbf0 | ||
|
865e6363e1 | ||
|
789d82355c | ||
|
82cb3ae6fe | ||
|
1a7f673b7d | ||
|
8f57d4bdff | ||
|
aa9e437d42 | ||
|
ec4daa643e | ||
|
308963c271 | ||
|
4d0fef9482 | ||
|
d5f3fa77db | ||
|
dbf0c39bb3 | ||
|
56f72c24ba | ||
|
a0676125a1 | ||
|
c472800eae | ||
|
63b4d69e48 | ||
|
70bf795dfb | ||
|
a7c4320312 | ||
|
5bc2f26cb0 | ||
|
cacb8d2035 | ||
|
c8ed51bb52 | ||
|
264a65e0b3 | ||
|
e27353216c | ||
|
49fc3ad0bd | ||
|
5b71d1a10d | ||
|
06bcef3273 | ||
|
17b23b6f26 | ||
|
413114f9d0 | ||
|
c2f0afb4bd | ||
|
b945d77ed7 | ||
|
7c04605d14 | ||
|
25edb3cc64 | ||
|
b773c3ac48 | ||
|
9551519f23 | ||
|
a9d2700631 | ||
|
5375ca63d5 | ||
|
78acdd8882 | ||
|
b5dda733dc | ||
|
e17567d001 | ||
|
4a0ea33bc5 | ||
|
a2d106e3fa | ||
|
4ebd340688 | ||
|
15f047f6c0 | ||
|
484d0fbcf4 | ||
|
b70186bc99 | ||
|
4a656a1db0 | ||
|
cb565344e9 | ||
|
c8971ac2ae | ||
|
3ec63979d8 | ||
|
c72e36c6a2 | ||
|
5ccc525281 | ||
|
84eaa94842 | ||
|
bc7cc0b698 | ||
|
602300ec8e | ||
|
64e276c3b5 | ||
|
96394377e6 | ||
|
a926e013da | ||
|
2d74278860 | ||
|
e1e4c0f400 | ||
|
5fc3c29f5c | ||
|
de4fb3470c | ||
|
ddfce634a8 | ||
|
527f4964fe | ||
|
be2e47114d | ||
|
11b81e25a4 | ||
|
4ca05cb38d | ||
|
bb9aad1e87 | ||
|
4dceeb174a | ||
|
9819457f31 | ||
|
7c947ef1af | ||
|
03beda6e2a | ||
|
a7d867c8bc | ||
|
6584f92748 | ||
|
593f0abf09 | ||
|
a734b4a3a4 | ||
|
0fd280db5c | ||
|
443d0a2f7b | ||
|
ed01c1b7f4 | ||
|
904f283932 | ||
|
9026d18039 | ||
|
8a5825b66f | ||
|
71caf7eb05 | ||
|
bf6092c728 | ||
|
6d74a880f9 | ||
|
1a953c5c73 | ||
|
1564efb519 | ||
|
3e96397770 | ||
|
c8cf2219ce | ||
|
2865aa7f03 | ||
|
013f9c7f0c | ||
|
8ea6e4031e | ||
|
69359a16c1 | ||
|
4d84ac748b | ||
|
1dcc8585ef | ||
|
8a3fb8c08e | ||
|
4509ec92f5 | ||
|
ee43316839 | ||
|
0782b9166b | ||
|
5a34856e38 | ||
|
9ec28cec54 | ||
|
d6d959c6c9 | ||
|
83c18ee0f2 | ||
|
5a5e0b6fee | ||
|
acf0920d82 | ||
|
58efcf6312 | ||
|
e3c8910da7 | ||
|
01c1949dd5 | ||
|
599a6c7afe | ||
|
16bb162894 | ||
|
65258d6183 | ||
|
6e80f98390 | ||
|
e18eaff1dc | ||
|
a4c780f6c9 | ||
|
0665e3fb5c | ||
|
9f9bf1003d | ||
|
8b560f835e | ||
|
2a9eb5aa66 | ||
|
002b22c150 | ||
|
d27c580144 | ||
|
4738472fcd | ||
|
4eb106f2bf | ||
|
53b18653bc | ||
|
2012eef75c | ||
|
fb31ddf322 | ||
|
0f309f9a8d | ||
|
05e90b1cde | ||
|
e4cb1e485e | ||
|
03f7cf58b8 | ||
|
5f4329d324 | ||
|
1a144f35a6 | ||
|
8287302b50 | ||
|
98dbff1e99 | ||
|
53a1d07ffd | ||
|
0191e0a485 | ||
|
fc4eb6730c | ||
|
459090836a | ||
|
81c844d2ca | ||
|
51ba945eb1 | ||
|
87def70e1e | ||
|
35257782ca | ||
|
238718b667 | ||
|
95cbadd277 | ||
|
88d6dfea04 | ||
|
6b1834ec9e | ||
|
10319fc883 | ||
|
624f049e66 | ||
|
0c5e5c0094 | ||
|
50978f18b6 | ||
|
cb4316d07a | ||
|
a530892fb5 | ||
|
ad3ec69183 | ||
|
6c1c497ce0 | ||
|
b1e52381f5 | ||
|
27a89a0c8a | ||
|
a636aea98d | ||
|
62727a654c | ||
|
2e05a4b1d9 | ||
|
0faa10ddd6 | ||
|
d16fe453b6 | ||
|
e5c04e449e | ||
|
8a3603828b | ||
|
4b252bddec | ||
|
b42ba20657 | ||
|
c5ddbf5732 | ||
|
1e5be02d8c | ||
|
cf9d39c3d7 | ||
|
1365b8a08b | ||
|
51ffd78d2a | ||
|
d985b9b377 | ||
|
760ef381fe | ||
|
19e230e9cb | ||
|
04622852fa | ||
|
2f6b75913b | ||
|
883498916a | ||
|
8e2a0381d7 | ||
|
c732dfd4ca | ||
|
38c379cd92 | ||
|
9a780bc7d4 | ||
|
db18d739e5 | ||
|
2c44689fe2 | ||
|
cc4821ffcb | ||
|
35b972c854 | ||
|
2a3d54bee9 | ||
|
c0d2a7fadd | ||
|
a5aaed7929 | ||
|
4ed035affd | ||
|
44d90a389e | ||
|
4f3aee5e83 | ||
|
9519901150 | ||
|
d8712a525b | ||
|
640fb89f13 | ||
|
24ca35625b | ||
|
769b911018 | ||
|
84b450b7bd | ||
|
4ec1368af9 | ||
|
520aeacd8c | ||
|
0fb3c8bb67 | ||
|
1f0f8d1a2c | ||
|
be667ac007 | ||
|
16a1283f07 | ||
|
1f79e4314e | ||
|
55627934c5 | ||
|
61c67d012b | ||
|
faf0fd7401 | ||
|
eeeaca928b | ||
|
73979309ab | ||
|
97bf7e1bfa | ||
|
95f1d768c3 | ||
|
66cdecb0fa | ||
|
8280058c5a | ||
|
2821dbab58 | ||
|
7c7587bb2d | ||
|
3e5fce27cb | ||
|
4128c789f9 | ||
|
0b8397ff56 | ||
|
9b0f426fbd | ||
|
674939e225 | ||
|
a60487aedd | ||
|
2dac66d979 | ||
|
f4a2158458 | ||
|
28bf061f4d | ||
|
0b5aa01bb9 | ||
|
f45244f991 | ||
|
39185d43ba | ||
|
6c86e80019 | ||
|
3e6fed839a | ||
|
6e91826865 | ||
|
20083bcabe | ||
|
ac63b1d8fb | ||
|
d1dca0a881 | ||
|
8a771a2a51 | ||
|
33f6117539 | ||
|
b80a2341cf | ||
|
3ad4b063b0 | ||
|
de2b54faa6 | ||
|
30d31ac709 | ||
|
5d308e9ed9 | ||
|
e52b49e0a3 | ||
|
565804f26e | ||
|
c734c0f33f | ||
|
1a96fb55f9 | ||
|
922e409045 | ||
|
3211ab1408 | ||
|
2c91604509 | ||
|
f02910d00f | ||
|
2346acbfc2 | ||
|
7764eab3f6 | ||
|
ca43c6f20c | ||
|
05cde48a3e | ||
|
4bf7ed4265 | ||
|
0aa7af0f11 | ||
|
d2beafd0e9 | ||
|
fa683ca0ce | ||
|
4fa0a63ca4 | ||
|
d2720dca0c | ||
|
d72bc4704e | ||
|
eb30705545 | ||
|
807e263b87 | ||
|
fae39c792d | ||
|
3290dd9b8f | ||
|
137bf01928 | ||
|
8f895aaa8c | ||
|
b4952addb9 | ||
|
5856941814 | ||
|
1e5639a47d | ||
|
e8b6f05659 | ||
|
6eaf357af9 | ||
|
da16988ee0 | ||
|
f9809354d5 | ||
|
ad03d6c94a | ||
|
f6704a84fa | ||
|
5c35946c51 | ||
|
6245e4ee70 | ||
|
0c6d7c15bc | ||
|
0d7cea41ad | ||
|
c63d7bc226 | ||
|
3d14a2652d | ||
|
8993939008 | ||
|
3c85dfe6e9 | ||
|
96be4a79d3 | ||
|
381bee5dbb | ||
|
0f12dcc772 | ||
|
293300cafd | ||
|
898ab7c9c6 | ||
|
f3a8e0c041 | ||
|
2b779c6a11 | ||
|
735ae9f123 | ||
|
09203bb93e | ||
|
1d5a1c9972 | ||
|
fb04b7cb8f | ||
|
6fe919c6e2 | ||
|
1c7a43a021 | ||
|
4b67eb9cd0 | ||
|
baa5e0690e | ||
|
ffa2946b18 | ||
|
8710127641 | ||
|
cfb1b539f2 | ||
|
11b35908fa | ||
|
6ddb33135c | ||
|
125e355c44 | ||
|
edc6f5a4b1 | ||
|
246d73de04 | ||
|
c2195a24ca | ||
|
977bcae71e | ||
|
31293376ee | ||
|
42e72b29c1 | ||
|
31a267a8f1 | ||
|
193cf720c6 | ||
|
94dcb39659 | ||
|
af6bb31f89 | ||
|
fe10197298 | ||
|
e67068d92f | ||
|
54f39cef6d | ||
|
ada86282de | ||
|
afb8867bce | ||
|
9f17f97198 | ||
|
41a464cb9a | ||
|
4a93a04a6b | ||
|
a1cd2a2588 | ||
|
60ed90e10a | ||
|
03443ffcc1 | ||
|
4f6036e3e6 | ||
|
20d37cbe45 | ||
|
949f9b586b | ||
|
ee50e5f1c7 | ||
|
4fb5857123 | ||
|
53f714f8bc | ||
|
52ffd75330 | ||
|
6a7911655b | ||
|
522d73a922 | ||
|
a5d282fc80 | ||
|
87f670b5d1 | ||
|
0022e9738e | ||
|
634dd304d7 | ||
|
d0af548894 | ||
|
a8934067a9 | ||
|
3b11006eed | ||
|
f333aa354b | ||
|
9a118dd887 | ||
|
f5518cd69a | ||
|
0570ea2b0b | ||
|
891e55829c | ||
|
b43e4df63f | ||
|
a6545f3511 | ||
|
b4eda82a93 | ||
|
3f13511015 | ||
|
d261d466e9 | ||
|
162725bd8c | ||
|
3d91452507 | ||
|
d8a264283b | ||
|
bb1d96528d | ||
|
ede124ff85 | ||
|
aa9aa9e489 | ||
|
f890c5ab68 | ||
|
9eee96328b | ||
|
634ebf97e7 | ||
|
79a92ce439 | ||
|
eefc2bea1a | ||
|
f7cfd4ef39 | ||
|
0c1963ca7c | ||
|
0868cf3cd3 | ||
|
bb26b9f81d | ||
|
052eb474cc | ||
|
abf026fc54 | ||
|
9bf03bc8f6 | ||
|
202ae26c80 | ||
|
973ae3eef2 | ||
|
b04841d993 | ||
|
437ba0aa46 | ||
|
caa0df8e22 | ||
|
5b765fc665 | ||
|
f5fa753dc2 | ||
|
d59c230560 | ||
|
3e9585839e | ||
|
a6b09d8029 | ||
|
56a5dea720 | ||
|
c3079a7ad4 | ||
|
50e96b181f | ||
|
c35abbe090 | ||
|
6211ec8d2c | ||
|
1730c62187 | ||
|
ff157df094 | ||
|
03172b7196 | ||
|
e5260cd60f | ||
|
56838c1194 | ||
|
841b5ddfb9 | ||
|
0d50753cca | ||
|
6cc054ee4e | ||
|
bbb0be8413 | ||
|
92c096d699 | ||
|
9308de3137 | ||
|
946a362d9b | ||
|
decc8dec6c | ||
|
048c86ffcf | ||
|
8470ec8b10 | ||
|
f35cc4693c | ||
|
632cbd9ed3 | ||
|
5b97d96349 | ||
|
b24fc1b74b | ||
|
ebec92aec7 | ||
|
861e406393 | ||
|
b65bd2bd4c | ||
|
2e12de6747 | ||
|
9f789e68d5 | ||
|
6124b56b3e | ||
|
839064a6c6 | ||
|
56cc7e363b | ||
|
aee3bd23d6 | ||
|
c3d01854b3 | ||
|
d932d02fbe | ||
|
4255227fff | ||
|
a87ee3c241 | ||
|
124993d770 | ||
|
ff9a14b7d0 | ||
|
f96a7192cd | ||
|
d4aac4a3e5 | ||
|
5da4b89002 | ||
|
b960be9735 | ||
|
2d57b1764d | ||
|
6651d4eb7f | ||
|
795cf081cc | ||
|
7fad4ad323 | ||
|
9e2b378414 | ||
|
92e68453df | ||
|
c114e96096 | ||
|
b4e27fbf83 | ||
|
33dfccde51 | ||
|
2f87f8e51e | ||
|
6574f6ff30 | ||
|
92150e07ba | ||
|
37ff61d0ac | ||
|
d0d4c769e3 | ||
|
aa0a25d82a | ||
|
cb13ce0da3 | ||
|
f520df6f4a | ||
|
3a2d9c477e | ||
|
261f407008 | ||
|
d9b9a7f8bd | ||
|
4514e61fd1 | ||
|
e3b58d5180 | ||
|
67dcac45ef | ||
|
2a106339c5 | ||
|
27fead082a | ||
|
2265f823fd | ||
|
8d598c1c52 | ||
|
c72fe4ef11 | ||
|
3bf6aaa0fa | ||
|
1b49b83078 | ||
|
35383741f1 | ||
|
b49f4a3631 | ||
|
d5d6b5e726 | ||
|
771fcb576f | ||
|
0f91efa3d5 | ||
|
bf03d71ad2 | ||
|
943e418055 | ||
|
228a0f9e72 | ||
|
855d07193b | ||
|
bca8540d40 | ||
|
3969c002ee | ||
|
6645f245cb | ||
|
d22ae667e0 | ||
|
4a9b98fc05 | ||
|
19e83a0eb5 | ||
|
877d5b0c1a | ||
|
8e11b1bfb4 | ||
|
780e848120 | ||
|
f0ff4a9098 | ||
|
e9b2b1ad7b | ||
|
7e280c9b58 | ||
|
007e8e6615 | ||
|
d65d55d64a | ||
|
b85f517c22 | ||
|
7f70656c05 | ||
|
b89ae68d07 | ||
|
e1b2b44f3b | ||
|
34285d4459 | ||
|
0f09167e50 | ||
|
fa19794d74 | ||
|
bf096c5174 | ||
|
1ec86c7d6a | ||
|
bd33d8dd7e | ||
|
170bd79572 | ||
|
b7163f0715 | ||
|
1a9bea59f1 | ||
|
3c02c8bcb7 | ||
|
a65440478c | ||
|
211d415f1c | ||
|
a960e8f4d1 | ||
|
56e8275690 | ||
|
c25418f38a | ||
|
effedb9248 | ||
|
f157206146 | ||
|
59ab053ab9 | ||
|
04fa596dd1 | ||
|
f767cdb771 | ||
|
8766a228af | ||
|
d58b17cb10 | ||
|
4e0dd10341 | ||
|
494f3a1452 | ||
|
2e5ac18d78 | ||
|
c860ffe2a8 | ||
|
9a1984a707 | ||
|
d2a7586b67 | ||
|
863152f1af | ||
|
d6766cc374 | ||
|
629d9ebe67 | ||
|
687382b98d | ||
|
a2c6667c69 | ||
|
e9090f9b55 | ||
|
f989b4f50c | ||
|
7e68ad6ffd | ||
|
836cabe0a6 | ||
|
a65d7a64a2 | ||
|
ba31ef35d4 | ||
|
778f81984f | ||
|
ba60cab0a6 | ||
|
cdcdda4060 | ||
|
98a1009c4a | ||
|
3b6bb46d36 | ||
|
33bfd5a12b | ||
|
bf4cfd9932 | ||
|
f85f9e6497 | ||
|
6c6253223d | ||
|
40adbff456 | ||
|
8277817b62 | ||
|
3d9e95a2f4 | ||
|
a269410d6b | ||
|
6ab5402195 | ||
|
74617fc63a | ||
|
c8be1d9817 | ||
|
867dd017fb | ||
|
4a9b772689 | ||
|
7ea10c6475 | ||
|
78186c7a16 | ||
|
05f85e79d1 | ||
|
7f7ee96717 | ||
|
a9f5694906 | ||
|
893f268e60 | ||
|
a3aca3c171 | ||
|
69e9efe534 | ||
|
43de81fb25 | ||
|
ce5efe29d6 | ||
|
74d79ba0c6 | ||
|
4694c9178a | ||
|
faca688dba | ||
|
00c08e81d4 | ||
|
caa61e5925 | ||
|
5a68c4b9b6 | ||
|
09e8e45d07 | ||
|
bbe5c16862 | ||
|
4022a123e9 | ||
|
88d6c95ef4 | ||
|
27f0594ef6 | ||
|
df880e3da9 | ||
|
5c9a950752 | ||
|
caf460177a | ||
|
ed1d4a37a0 | ||
|
6b69fca88d | ||
|
4985991552 | ||
|
db10cdab26 | ||
|
4ae861f5ac | ||
|
6c44745861 | ||
|
c35dbcfc3b | ||
|
84186a932b | ||
|
e1184f8d58 | ||
|
2e390fee01 | ||
|
c1c5c82683 | ||
|
d0455ffda3 | ||
|
07ef945646 | ||
|
e9ea400eee | ||
|
34ab2099bb | ||
|
a221a7006c | ||
|
dbdc9bc43c | ||
|
3b6a2138a7 | ||
|
bcad28a5d1 | ||
|
aebbbd1142 | ||
|
374c94434b | ||
|
5f80a4ee9b | ||
|
029cd0ea5e | ||
|
0794087a67 | ||
|
bd6218a12f | ||
|
bc095d5c83 | ||
|
d731a8fc0d | ||
|
b416994ed0 | ||
|
a7be8ec6cd | ||
|
c5427bec21 | ||
|
8a2dd28082 | ||
|
4faa5a6153 | ||
|
70eb95bff8 | ||
|
e0b2bcba27 | ||
|
901d1cd9d9 | ||
|
f7ef01f44a | ||
|
79374e0bc1 | ||
|
75aa40f3cb | ||
|
ed896b069d | ||
|
fc68405c45 | ||
|
74e0f1d87e | ||
|
f78475b594 | ||
|
ea61460c6f | ||
|
80f9caf418 | ||
|
cc76f4d459 | ||
|
96c78dcf9c | ||
|
9bb39b7cf4 | ||
|
d7687ee7e6 | ||
|
9e1c1e314a | ||
|
2aee80b77f | ||
|
215fcc9652 | ||
|
df0edc982a | ||
|
7c949960a4 | ||
|
df8063c861 | ||
|
f99415c281 | ||
|
db8ead54f8 | ||
|
0551b4be1d | ||
|
a066a27f86 | ||
|
83dcd00794 | ||
|
180736f772 | ||
|
3c7dd6db3b | ||
|
94aa995711 | ||
|
f4bdd69f73 | ||
|
7b03ca6fd1 | ||
|
b3d7d9b8df | ||
|
2a55604e6f | ||
|
619b321141 | ||
|
5af0758994 | ||
|
ae076dd584 | ||
|
b4efde182d | ||
|
4c76ea387a | ||
|
963dde2b08 | ||
|
fe4cbb6512 | ||
|
40e147af11 | ||
|
0f79d3e850 | ||
|
daea3c2298 | ||
|
1376d25453 | ||
|
65949e731c | ||
|
3a2ca2b6ff | ||
|
ab6569168a | ||
|
8e85e98b1c | ||
|
d40b2552c7 | ||
|
8cb4c382eb | ||
|
99ce27af43 | ||
|
d7ec15ce75 | ||
|
0de80db0d0 | ||
|
373dab8ee1 | ||
|
6eae69d2a4 | ||
|
d4e8ab0234 | ||
|
77bb857046 | ||
|
e00afd9d54 | ||
|
83dc066b3c | ||
|
bb9d36d8ae | ||
|
1b72774969 | ||
|
ae482fff97 | ||
|
0a54dd48a0 | ||
|
739633fb0c | ||
|
f99610cc85 | ||
|
b839f66b48 | ||
|
b06da4ba24 | ||
|
2d877525e0 | ||
|
f1373373e6 | ||
|
df497b5ca6 | ||
|
b32ab62822 | ||
|
c31b2a31cf | ||
|
d51cdee779 | ||
|
03b9292d59 | ||
|
bfaf6c5ce0 | ||
|
0682a19213 | ||
|
a91cfe07ac | ||
|
39228512ad | ||
|
6be5c0d794 | ||
|
dabe921ba1 | ||
|
3dd6272a1d | ||
|
57f21db59e | ||
|
572b160ff9 | ||
|
06cd254954 | ||
|
47a8ab5a66 | ||
|
74bf171611 | ||
|
c71661bf24 | ||
|
0a804cb06a | ||
|
be3597e3c7 | ||
|
14fb14effc | ||
|
246f9d284f | ||
|
17363c56e6 | ||
|
6ce1fd0595 | ||
|
181672aa75 | ||
|
46143342b4 | ||
|
5a66ceda13 | ||
|
d2ca61d5e2 | ||
|
9359839e84 | ||
|
453e3a1004 | ||
|
7e43c448ae | ||
|
a7881b6708 | ||
|
42e070521c | ||
|
4220657930 | ||
|
4e1c6e918b | ||
|
7887862b29 | ||
|
bd6cf4a58e | ||
|
c880e5ac17 | ||
|
529db388c2 | ||
|
c5c503cd59 | ||
|
af20371f6b | ||
|
b690e59dca | ||
|
71bb54cb9a | ||
|
e85d696cd9 | ||
|
af95e96963 | ||
|
905ccf2ea9 | ||
|
e39650d47c | ||
|
dd87749d21 | ||
|
af3007afbf | ||
|
3eb129c73a | ||
|
8c86b2ba58 | ||
|
03427c4600 | ||
|
24e6aaea30 | ||
|
270a834598 | ||
|
a402d98f3c | ||
|
43784d6d68 | ||
|
5060cc06dd | ||
|
a4a5b2e300 | ||
|
b61b3362ff | ||
|
50ce759eca | ||
|
734610c8f6 | ||
|
b44d267986 | ||
|
b144929476 | ||
|
8013d1c013 | ||
|
b410dcdc03 | ||
|
2449d2f3ad | ||
|
3e781dde6b | ||
|
fcca547dd6 | ||
|
ea8b9dc13c | ||
|
4dd729ba42 | ||
|
0dbc19d303 | ||
|
ca3706cadf | ||
|
39b28cd98c | ||
|
f0357800bc | ||
|
5f65133e20 | ||
|
53750e2699 | ||
|
441590ade1 | ||
|
fcdbd74071 | ||
|
977a02b702 | ||
|
5559a1d487 | ||
|
89ea91df96 | ||
|
38a00aca7c | ||
|
199eecfb66 | ||
|
2bbe19589d | ||
|
74271cd834 | ||
|
a0ca190ca9 | ||
|
082a88d02d | ||
|
aaa659c011 | ||
|
421995ae35 | ||
|
906a07fc12 | ||
|
5eec8c1c72 | ||
|
62384ac915 | ||
|
1e5792449c | ||
|
5378402d69 | ||
|
337c2bbde0 | ||
|
76caac9481 | ||
|
1e502371d8 | ||
|
6a3256ad69 | ||
|
4ce5181cc5 | ||
|
8a55eec2a9 | ||
|
a79d58989e | ||
|
e6d11e350e | ||
|
69f84942fa | ||
|
e3a940ffae | ||
|
97dfa4ea65 | ||
|
73352992e3 | ||
|
d88a3b9345 | ||
|
bf405d3d93 | ||
|
775c7ef825 | ||
|
a15fa05d4c | ||
|
f5900020d3 | ||
|
6d2c71591d | ||
|
bee7b8713b | ||
|
aff70406c0 | ||
|
12716a9377 | ||
|
5360264ca8 | ||
|
6074587094 | ||
|
72ea198032 | ||
|
1e9979349a | ||
|
96fb97d3fa | ||
|
853b0ece14 | ||
|
bc25103e89 | ||
|
8a08fd1c12 | ||
|
8a6e9a4a3b | ||
|
7f527d8c72 | ||
|
06915ec881 | ||
|
f016b61ebc | ||
|
8db521d059 | ||
|
fd3852af31 | ||
|
6221bdb503 | ||
|
7eac33fba3 | ||
|
2c767fdb51 | ||
|
b6fee8dc1b | ||
|
47f94bc6a3 | ||
|
dbe5bc7d5d | ||
|
d54e2749eb | ||
|
1ec2641941 | ||
|
a989cec59c | ||
|
d4581baf25 | ||
|
7d8ff8eb48 | ||
|
6f36667ab8 | ||
|
204ddaae56 | ||
|
4b549c61f2 | ||
|
428d76962b | ||
|
488a3180a4 | ||
|
1de46ae757 | ||
|
adc9e7cfd3 | ||
|
0ebbfaa3c1 | ||
|
2a00ccf018 | ||
|
d5e3aca09e | ||
|
83dca4d9be | ||
|
d055c0fbd1 | ||
|
51547d427a | ||
|
718487ee5d | ||
|
f8d54fe65a | ||
|
c0892fd7a5 | ||
|
283b6954e4 | ||
|
e896e15144 | ||
|
013135505e | ||
|
ca38e4f7f8 | ||
|
54811fea34 | ||
|
6e262db1c4 | ||
|
e8e845e6fa | ||
|
1746f4e352 | ||
|
b4020be31c | ||
|
47f2a591f8 | ||
|
a8339021f8 | ||
|
1c71e30cd0 | ||
|
5baabdb4b2 | ||
|
b2ae719c41 | ||
|
f1c781936c | ||
|
e38ea2d866 | ||
|
fc06a435fa | ||
|
f3b676f9cf | ||
|
d5e07db771 | ||
|
14e44cf961 | ||
|
b4e2570461 | ||
|
88aba102a7 | ||
|
9666d28ed5 | ||
|
dc26f99521 | ||
|
1656fdeaf6 | ||
|
ecfceffe6c | ||
|
2a05ee6a44 | ||
|
464b1fb32f | ||
|
1632e24dbd | ||
|
2f5b2b5bca | ||
|
7b14c5b9fa | ||
|
c5b52a5ad3 | ||
|
48934e4eb4 | ||
|
1b012548c9 | ||
|
9c49e276e0 | ||
|
afc904c5cc | ||
|
b35b0cad0a | ||
|
0b47045bb1 | ||
|
365c4d4c6a | ||
|
97b8ddbdff | ||
|
c1422a9008 | ||
|
fc5c59a643 | ||
|
23f9d8748c | ||
|
ccf592d28b | ||
|
d495994082 | ||
|
b462371b2e | ||
|
0e35ebf282 | ||
|
afecf9f6c6 | ||
|
fbf58140eb | ||
|
8dbedcf723 | ||
|
a188a8db93 | ||
|
63e3a2436d | ||
|
35b3cdf31c | ||
|
c854ca5f45 | ||
|
59fd0d02ee | ||
|
ff1bd20577 | ||
|
36b660e2b2 | ||
|
9039e35b01 | ||
|
c17b324910 | ||
|
693a6c5938 | ||
|
56c83101e9 | ||
|
7262faed16 | ||
|
e41776ef39 | ||
|
40845e1961 | ||
|
cf817b96a3 | ||
|
aac4e49a47 | ||
|
6c5401b9da | ||
|
f59b83ed6c | ||
|
a39355ca4d | ||
|
2defc3d07b | ||
|
aa10583576 | ||
|
073a7a208f | ||
|
58a0c1d31e | ||
|
fe19572cd1 | ||
|
f4b2c99a5d | ||
|
c6655c2eac | ||
|
879aa8e89f | ||
|
078abb5f93 | ||
|
877e500d0f | ||
|
09720123d3 | ||
|
fd47161215 | ||
|
b9d30cb3a2 | ||
|
1352857579 | ||
|
f94b43ecbf | ||
|
1b9c78dc12 | ||
|
8628ad77c1 | ||
|
bd79df9858 | ||
|
55bad480b8 | ||
|
c6c00ddccc | ||
|
423b1d027f | ||
|
cc21e6d70b | ||
|
22a14d6248 | ||
|
16cbcb828c | ||
|
05aeba9740 | ||
|
0acc8ffba3 | ||
|
26c2fe9e3d | ||
|
c10d5c1138 | ||
|
088dd8aa9f | ||
|
c3bf6ae3ba | ||
|
e44a6db7a5 | ||
|
681e92ee7a | ||
|
ea69356e52 | ||
|
c0bc06f7ea | ||
|
d178d741b0 | ||
|
ac320fb6a6 | ||
|
be1496a91e | ||
|
d028b96654 | ||
|
427904a636 | ||
|
3799d66ecf | ||
|
bcb736db61 | ||
|
d56676a2fa | ||
|
a2bd03a471 | ||
|
67f505009a | ||
|
934c4a90cd | ||
|
35fbb10d43 | ||
|
b57744ceba | ||
|
745bf31cd7 | ||
|
fa8a12a29e | ||
|
472123181d | ||
|
c2b9c21b5b | ||
|
50df422969 | ||
|
9a349e812b | ||
|
03bf117110 | ||
|
e98fc3dbf6 | ||
|
80fe32dfc6 | ||
|
bf14d3db20 | ||
|
2d2f1d048d | ||
|
d86b26dc4b | ||
|
2244d70a94 | ||
|
aede2709b0 | ||
|
0370aed02d | ||
|
1f8f17cd9a | ||
|
54c95577df | ||
|
7ba36e83a3 | ||
|
82c9a80de3 | ||
|
427cc49074 | ||
|
a349db4c72 | ||
|
679d9a8952 | ||
|
78915f28f0 | ||
|
fca4fd1bcc | ||
|
933a12335c | ||
|
82eb34503f | ||
|
963830fd91 | ||
|
c1a56ff0b3 | ||
|
dd5379662b | ||
|
51a64babca | ||
|
fbee943213 | ||
|
ea238e4e5a | ||
|
6dfd27b271 | ||
|
2d1ab85214 | ||
|
529914250e | ||
|
6386cfe561 | ||
|
ffc5836e48 | ||
|
32404df8f6 | ||
|
6e58d05a56 | ||
|
9464e571ed | ||
|
050a2094bc | ||
|
69894d8bbf | ||
|
7fd2489985 | ||
|
f2bd9fcd7f | ||
|
0286ff4149 | ||
|
3e46549880 | ||
|
38f8aec0df | ||
|
1f1404dc93 | ||
|
12f643329a | ||
|
330ebe90b6 | ||
|
1bfd5ebf20 | ||
|
c49d7ab36f | ||
|
eb5fe2325e | ||
|
9ab17bf034 | ||
|
ede910abce | ||
|
592a17a1b0 | ||
|
6395c37425 | ||
|
992b7c40c6 | ||
|
be9ad294bc | ||
|
c55f4b104c | ||
|
9873ea97de | ||
|
be2d71607a | ||
|
b633658ccb | ||
|
bb9c43102f | ||
|
4e1967bf70 | ||
|
4ba74177ea | ||
|
08c93a5478 | ||
|
d0abb78db3 | ||
|
2056fb1dd3 | ||
|
5556a6708e | ||
|
d45ff5b5cd | ||
|
2f19042feb | ||
|
0f900d2946 | ||
|
7f0815a67a | ||
|
ab9e63ebeb | ||
|
f579324696 | ||
|
b16d427d75 | ||
|
6192b79d89 | ||
|
20fb40f7d7 | ||
|
1724e3cd9d | ||
|
a05b4a1d60 | ||
|
e8c29f818e | ||
|
979e0bfd0f | ||
|
d1f002464a | ||
|
80fe0e541a | ||
|
adbed2c9e9 | ||
|
19c57a9765 | ||
|
d6a961c2af | ||
|
348b86e2f7 | ||
|
d896d60a5c | ||
|
b98fe0c3d0 | ||
|
6151deaff9 | ||
|
7121109655 | ||
|
f21aaf3416 | ||
|
76e82d5572 | ||
|
0d08a3c532 | ||
|
03366ae77c | ||
|
9e64535c22 | ||
|
40ace1016d | ||
|
8119591049 | ||
|
fc0c089208 | ||
|
ae02db90a3 | ||
|
2baab5aa74 | ||
|
ac01289824 | ||
|
4e2e1adce6 | ||
|
56083f3928 | ||
|
9210cf0be3 | ||
|
ea5cd6a5f7 | ||
|
d60d9757a9 | ||
|
2ce3c604e2 | ||
|
3693f90aca | ||
|
9e072b2ea0 | ||
|
c560c952b3 | ||
|
90db039270 | ||
|
27b09025be | ||
|
6b4e346c24 | ||
|
f72b3f0a4d | ||
|
edb55421fb | ||
|
18a9d267a0 | ||
|
9b2fc547ef | ||
|
371620b0af | ||
|
2b82907967 | ||
|
624a62d489 | ||
|
3b60a1e01d | ||
|
c49f5e3e2b | ||
|
a790dc3253 | ||
|
fb199fba34 | ||
|
679c7a35c5 | ||
|
2bf2f0e34f | ||
|
a60c1097ab | ||
|
3b775abc90 | ||
|
65feecd32d | ||
|
5805b96095 | ||
|
bf877a8aa3 | ||
|
4bb4811e77 | ||
|
81a3c729d5 | ||
|
c9f77c7228 | ||
|
868d566c7f | ||
|
2bb6b6b970 | ||
|
c460450b4a | ||
|
1f37f92667 | ||
|
2c0e7fdb76 | ||
|
6ca8945d49 | ||
|
b1eba99e46 | ||
|
db6e72e6a2 | ||
|
d63c4deb68 | ||
|
1697e4575f | ||
|
4cccc52622 | ||
|
04e3bdc790 | ||
|
60cb583a52 | ||
|
ef142caec8 | ||
|
b383b86364 | ||
|
7298e2b9d0 | ||
|
0fed482ae7 | ||
|
528b9b4d69 | ||
|
6e82489225 | ||
|
2f4b8782fa | ||
|
d5fb67f827 | ||
|
cd2a7b360d | ||
|
2aff687e18 | ||
|
befacfd0d4 | ||
|
d5cdeb96e8 | ||
|
7d802efa27 | ||
|
0790d1340d | ||
|
0108b6b415 | ||
|
2da8c80997 | ||
|
e019f1cce3 | ||
|
5918e2b4d3 | ||
|
3edafcc7bc | ||
|
073adebd0a | ||
|
8168142c0c | ||
|
42e804f5f3 | ||
|
c1d14710e3 | ||
|
0f1145253d | ||
|
b45cb600fe | ||
|
e8ffb8ff0e | ||
|
3038c751bc | ||
|
55658facb4 | ||
|
9bef3b2edd | ||
|
80fca449a4 | ||
|
59685ce621 | ||
|
7add94f868 | ||
|
3879520cc2 | ||
|
f3afd91a95 | ||
|
f17c6262f2 | ||
|
abfd6cd6dc | ||
|
06a0bafe79 | ||
|
d74943b69e | ||
|
181b18f843 | ||
|
756700a02a | ||
|
b8a39a4911 | ||
|
3f9b05fb61 | ||
|
bc887fbbb2 | ||
|
96d09108d5 | ||
|
b065425ee6 | ||
|
1685c86af5 | ||
|
b25e489f6b | ||
|
6268eb5ed4 | ||
|
a0b08da0b4 | ||
|
fc2e395d72 | ||
|
abcc0b1f07 | ||
|
b78cd8d59d | ||
|
6809c2ade7 | ||
|
b341fe6102 | ||
|
e5b305c66a | ||
|
9e5c582fb4 | ||
|
c1901c5be6 | ||
|
81c0c7a98b | ||
|
f5d02dfb03 | ||
|
148746c6a6 | ||
|
ddb6dbcc0d | ||
|
568afe809d | ||
|
7a8a147ce3 | ||
|
a4fba54c1b | ||
|
ebd5e1966e | ||
|
95e32ebb34 | ||
|
672703eb60 | ||
|
286b80ac36 | ||
|
caa03fd2e4 | ||
|
b31e08012f | ||
|
c346731e1b | ||
|
a1621427d6 | ||
|
4b9e96f703 | ||
|
f8d87fc293 | ||
|
27f6d25677 | ||
|
a826e35a3e | ||
|
bd6745ab40 | ||
|
be4b8a3ae3 | ||
|
840519cb91 | ||
|
1aef6f2c37 | ||
|
4eb462a7a4 | ||
|
6475f0a6dc | ||
|
51d69fa44b | ||
|
02fd84394c | ||
|
8328dfb25b | ||
|
f63e8afe60 | ||
|
2702a47c9e | ||
|
84c4e0b639 | ||
|
f0dc96caf1 | ||
|
9d43b2cfc2 | ||
|
12806b2830 | ||
|
60891765a5 | ||
|
e68cc824c1 | ||
|
fb2167c8ad | ||
|
478ec9014f | ||
|
35bde24daa | ||
|
db040ce9e0 | ||
|
a6d7bf1a8a | ||
|
2db5875e28 | ||
|
0c10e6cb98 | ||
|
c4e9af88bb | ||
|
c92071fd28 | ||
|
cb0f8a0282 | ||
|
4290f3dc7b | ||
|
53f5a3dfd6 | ||
|
258344031c | ||
|
2f7209482b | ||
|
f9de30fd6d | ||
|
d917aef7c4 | ||
|
63d2e1f871 | ||
|
1d5c3cbd43 | ||
|
41e8f49720 | ||
|
ddf9d57ab6 | ||
|
60fb3baa1a | ||
|
e1efba413d | ||
|
2d8fe8dbed | ||
|
25022abfe1 | ||
|
1c28093e58 | ||
|
eeed283da2 | ||
|
3988b76e33 | ||
|
0b6fd06e19 | ||
|
548bc3a46d | ||
|
d7901a8890 | ||
|
7ead87df1e | ||
|
47e69fd4b5 | ||
|
ae14e623a6 | ||
|
fb577f1833 | ||
|
85bdad2b2c | ||
|
16fe79a45f | ||
|
7125d2c52d | ||
|
01ffbd064b | ||
|
15d2e25404 | ||
|
2d7a1a5d6d | ||
|
3f36a16f6d | ||
|
cbd013d7b2 | ||
|
b56c59c92e | ||
|
2fa5967f21 | ||
|
83e213d770 | ||
|
07f9402f82 | ||
|
fedb647cb4 | ||
|
2fc1fdd400 | ||
|
1c696ae646 | ||
|
b0562cf0a5 | ||
|
8a6a651688 | ||
|
b24d10cfe0 | ||
|
0f9c47ae10 | ||
|
05cf8fbb2d | ||
|
9d9265f099 | ||
|
ba9a6d0dce | ||
|
2c31c0e34d | ||
|
373e46f871 | ||
|
eff825c1a7 | ||
|
7af987d31b | ||
|
afc1fa5250 | ||
|
9ebc1f2126 | ||
|
c855d1df60 | ||
|
ec03ef1a41 | ||
|
61e5721067 | ||
|
a937a229c2 | ||
|
dc873c18c4 | ||
|
81c416e3d5 | ||
|
c90cc40735 | ||
|
a6103b677d | ||
|
4ec3268c78 | ||
|
7a961cf4a4 | ||
|
8fb6d64415 | ||
|
9d78ba0845 | ||
|
afd8d7c73e | ||
|
33485d7e6d | ||
|
e6bef93d73 | ||
|
7849f8cedb | ||
|
5dbfc48872 | ||
|
d83d5929ad | ||
|
8c14e432b7 | ||
|
a2aedc789b | ||
|
a89d7aeccc | ||
|
e8e32375d4 | ||
|
10979fb031 | ||
|
00ff3831e4 | ||
|
72f80d5331 | ||
|
c2771753db | ||
|
d59bb64ffa | ||
|
1d640b3e47 | ||
|
2ccc4be050 | ||
|
fa6854a896 | ||
|
1d2add6606 | ||
|
806694f04d | ||
|
2371c04758 | ||
|
d164d713d7 | ||
|
8ef096373f | ||
|
7ba10e73d9 | ||
|
aa94975003 | ||
|
3dca11596b | ||
|
89dfd0161a | ||
|
73b57a9914 | ||
|
3e439868fa | ||
|
ae514268b5 | ||
|
8e81ed9572 | ||
|
0fe938939c | ||
|
f158cc2b6e | ||
|
54697c1d3c | ||
|
41660fcf7d | ||
|
8a3e0cfcee | ||
|
e8a9f5bab0 | ||
|
49249d35bd | ||
|
cc50ef99a6 | ||
|
d46b6e4e0e | ||
|
994cb2b21f | ||
|
278946f767 | ||
|
1fe8db7a94 | ||
|
23b8867115 | ||
|
8ef7bf3553 | ||
|
941fc0000b | ||
|
72cb81f6a7 | ||
|
5281804a5c | ||
|
f88ca87ca9 | ||
|
a683495b09 | ||
|
00ab5e3a19 | ||
|
9989dfe933 | ||
|
4e00c87ff5 | ||
|
ddcc51204b | ||
|
547abb038e | ||
|
30f1a34750 | ||
|
d88966b272 | ||
|
49065eb635 | ||
|
cbad5f4bb7 | ||
|
160ec3d0d7 | ||
|
42049493cb | ||
|
c7308335a5 | ||
|
455dc1faa6 | ||
|
b95c78fdbd | ||
|
dea5e2414a | ||
|
99bf8defe7 | ||
|
f5ee454098 | ||
|
231b89537e | ||
|
9abc42933a | ||
|
c4309ee0ce | ||
|
63f5ea9dc5 | ||
|
19bb4a5251 | ||
|
c3814125e3 | ||
|
ea89353fd7 | ||
|
2ed959ed7c | ||
|
2cedc9fc96 | ||
|
f58ac5f6cd | ||
|
a5de79e3b2 | ||
|
7d3d041bae | ||
|
a331caa9f2 | ||
|
44e3655536 | ||
|
23d4c6fda9 | ||
|
93c3d83dd0 | ||
|
5273f26ef0 | ||
|
e67a99b275 | ||
|
822981d209 | ||
|
d3501ffc35 | ||
|
4070cfb9ee | ||
|
5b822032c8 | ||
|
f2bdf03b9a | ||
|
6d9a9d3d7b | ||
|
884353ed3d | ||
|
64d63cd937 | ||
|
cef5ab3992 | ||
|
14b1c11273 | ||
|
8b0185ba8f | ||
|
43ae9fced5 | ||
|
e4bf961cbb | ||
|
7a242913fd | ||
|
abeac94e8e | ||
|
b2493f4273 | ||
|
b303b6e20b | ||
|
87cfc65ab6 | ||
|
c893a96298 | ||
|
9d6f80c9dc | ||
|
afa152ea54 | ||
|
b2bf83a6bd | ||
|
e5c2791378 | ||
|
30d7631d34 | ||
|
b514fa3338 | ||
|
5c9e28634e | ||
|
257ac87e9f | ||
|
9a3209844e | ||
|
20cf6d553a | ||
|
4dfa4924ff | ||
|
d66e58265d | ||
|
5201d194fa | ||
|
5a43663f09 | ||
|
e447b1244b | ||
|
0486b11d5c | ||
|
e975c1625a | ||
|
b2b0ad7536 | ||
|
812d43b278 | ||
|
d960c6c29c | ||
|
ab847e6577 | ||
|
8acff211c6 | ||
|
e494538393 | ||
|
089f98f795 | ||
|
76dccc32b1 | ||
|
78b1377488 | ||
|
68c7329988 | ||
|
8636aa4ec6 | ||
|
c791360b8c | ||
|
2966dbe547 | ||
|
83c78c3275 | ||
|
238d0b3d31 | ||
|
1918259ef6 | ||
|
f6b87826d6 | ||
|
031a80a981 | ||
|
d9b4e4d3e8 | ||
|
a09405d0ae | ||
|
c29be7ba5f | ||
|
73c7d46829 | ||
|
8719e231fd | ||
|
ad155fd545 | ||
|
d138453795 | ||
|
0ab3037e78 | ||
|
6f50061eff | ||
|
d17684734f | ||
|
083cd67c87 | ||
|
befc8ed444 | ||
|
d3645edfdf | ||
|
f6c8c29553 | ||
|
fa6e880e20 | ||
|
eb9f9794b9 | ||
|
8b5ddf53aa | ||
|
3a476aa62b | ||
|
e7a7a7974c | ||
|
772caae144 | ||
|
f38e0a51bc | ||
|
5614f04f9a | ||
|
2dee263016 | ||
|
eab5e0615d | ||
|
cbe2f6bec2 | ||
|
423b1b567c | ||
|
eebc40ebb6 | ||
|
24a1dea3e3 | ||
|
1a70759309 | ||
|
e9b6ef67ab | ||
|
3d4503e82c | ||
|
67067f9ffa | ||
|
ea5fff1b3f | ||
|
20138edff8 | ||
|
22e3ae24c7 | ||
|
292220ff97 | ||
|
cb79353b96 | ||
|
7d8b8c113d | ||
|
5f7a136685 | ||
|
b3e3241c6f | ||
|
0e7c4fec14 | ||
|
bb6b2e395f | ||
|
41ba9b315c | ||
|
a5c35fb244 | ||
|
47224ba1a6 | ||
|
aac8656039 | ||
|
d58e69119a | ||
|
7cfb94b1d5 | ||
|
7a1add73ef | ||
|
aa773e618b | ||
|
093f31dc40 | ||
|
73341ebdbd | ||
|
a705e0fec3 | ||
|
916f282d30 | ||
|
c997349eec | ||
|
61d38cf9c1 | ||
|
b1d1699f14 | ||
|
25b423d094 | ||
|
484b9cfe62 | ||
|
af754df863 | ||
|
b6691e5394 | ||
|
b6069baa04 | ||
|
72964efb29 | ||
|
b0d9fb80cd | ||
|
cfb30a4e94 | ||
|
187bb014d7 | ||
|
d79122d5ef | ||
|
0d327aa3eb | ||
|
4de439d1b1 | ||
|
c62323e6aa | ||
|
3cd3fe93c8 | ||
|
9b708c3f7f | ||
|
6af4c13139 | ||
|
02ec393b2c | ||
|
fa068d08c9 | ||
|
36d8a63004 | ||
|
5efb09fb2c | ||
|
2983c0ac61 | ||
|
bfad4aba8e | ||
|
07e0345b5f | ||
|
fb10438965 | ||
|
a0876355ff | ||
|
8cecce1081 | ||
|
1282293b18 | ||
|
9785099e5a | ||
|
8cb3f0ff66 | ||
|
4e073a6788 | ||
|
599f209238 | ||
|
60119602be | ||
|
8ae4c9d066 | ||
|
4c8c64aa46 | ||
|
492e429881 | ||
|
958e82d5e9 | ||
|
ba4dae9cd9 | ||
|
8c077d50d1 | ||
|
34e35f3fd5 | ||
|
fc35864880 | ||
|
dc53786acd | ||
|
b0b4c513ff | ||
|
d4f51fdd77 | ||
|
ce33dab5f1 | ||
|
5b3ffcb64e | ||
|
206273c6b5 | ||
|
a723fe27b3 | ||
|
a034283cb0 | ||
|
36e788abec | ||
|
133bd2d432 | ||
|
4cd3360d53 | ||
|
a091b6b2d8 | ||
|
26caad3f3b | ||
|
df9f812b59 | ||
|
c381390615 | ||
|
6adc6aa23f | ||
|
5272618512 | ||
|
3ee85e422b | ||
|
4d8073a3a0 | ||
|
e139e016a5 | ||
|
bf144eba1b | ||
|
8bf314f47a | ||
|
40fe4fc62f | ||
|
f576531bec | ||
|
acead5642e | ||
|
731766e9bc | ||
|
8fd1d229dc | ||
|
4497c906c1 | ||
|
f628b1715f | ||
|
388e346a5c | ||
|
7013fad34d | ||
|
f3eb02b2f0 | ||
|
db8be0c28c | ||
|
6484c7ed11 | ||
|
412e33a638 | ||
|
6fcf3c954b | ||
|
ca0afabbf9 | ||
|
142de1c41b | ||
|
9f73ecaa6d | ||
|
87ff181a3a | ||
|
b7b2516350 | ||
|
0806bc76ca | ||
|
121a997af5 | ||
|
7aac6507ad | ||
|
dbe4aa0e37 | ||
|
9fc83f03c6 | ||
|
5782643b5c | ||
|
2392709d06 | ||
|
06d2af7b35 | ||
|
1609197792 | ||
|
13e821bba5 | ||
|
975d1a4aa3 | ||
|
f63dfe8ec0 | ||
|
2ad8aa8a56 | ||
|
96514d51a8 | ||
|
691a3d2478 | ||
|
7d153bcc6d | ||
|
fd0ccfa16c | ||
|
4075add5b4 | ||
|
fb1ff560c8 | ||
|
49f0a1d408 | ||
|
69e57b6dc3 | ||
|
68422e3c70 | ||
|
d86d1f8d9e | ||
|
b74c7d1b8a | ||
|
a988a3cbf6 | ||
|
de41deb5c9 | ||
|
2f4c9adf1c | ||
|
15be032786 | ||
|
7bec0168f5 | ||
|
8c209f05a2 | ||
|
d2889d5a00 | ||
|
4012f93e62 | ||
|
5d6e1ec889 | ||
|
38f0527ebc | ||
|
cd1aa23ede | ||
|
c63419ee7f | ||
|
b7e9634de3 | ||
|
b72c289413 | ||
|
71aff49750 | ||
|
a1e5049f9f | ||
|
78d1e517d4 | ||
|
af96e64d9c | ||
|
a74287c5cc | ||
|
9e03e45f8f | ||
|
2e39e3dae1 | ||
|
c1813e2d03 | ||
|
5a8694d742 | ||
|
ad0b5d128f | ||
|
a7a390f82a | ||
|
57a51994a3 | ||
|
ee2a479f7d | ||
|
2bf25d8487 | ||
|
99b2ef9564 | ||
|
37f49e1a27 | ||
|
6279d7b70b | ||
|
414c0132e3 | ||
|
09ebc2042a | ||
|
b3acda1839 | ||
|
39d0925b86 | ||
|
ada2bbeb57 | ||
|
8f6c6867c8 | ||
|
d7cfc441e0 | ||
|
f87ecbe0db | ||
|
321e0a545f | ||
|
eae1d5f9b6 | ||
|
63e6065197 | ||
|
ad136c1ab9 | ||
|
61c1014ba6 | ||
|
7a72a30e3a | ||
|
1df9dc5751 | ||
|
6a5fe88e29 | ||
|
711be6db8c | ||
|
1e869b9ce0 | ||
|
269463389e | ||
|
ad0b02d2b7 | ||
|
d774ba8d1a | ||
|
77d296f95b | ||
|
58a7fd09cb | ||
|
8c0e979808 | ||
|
0d98500984 | ||
|
c3bc4e5336 | ||
|
0ec94aef5b | ||
|
4aac3c8362 | ||
|
c4ff1b47eb | ||
|
c597d016d7 | ||
|
ac81284376 | ||
|
b285cfd310 | ||
|
f1c51c1169 | ||
|
333499265d | ||
|
f69dd75a17 | ||
|
13d2751446 | ||
|
9042486dac | ||
|
ff5e3fdab6 | ||
|
3a9dbbd4b0 | ||
|
70843915d3 | ||
|
9b59e54457 | ||
|
ca6ea27c3e | ||
|
6076c4d4a6 | ||
|
29ba885985 | ||
|
b146b6255e | ||
|
614fdfcd70 | ||
|
a435bc98e7 | ||
|
543bb374a8 | ||
|
b36787894f | ||
|
cbfd1152ad | ||
|
ca70bce088 | ||
|
8c0fdb9cf0 | ||
|
424ef17bac | ||
|
f2d47e910b | ||
|
87a22a7401 | ||
|
67827f8597 | ||
|
d27828c00f | ||
|
693f95a25c | ||
|
128b0b81cc | ||
|
9e8f1b3a38 | ||
|
127cd67118 | ||
|
535d0183be | ||
|
3a01b90c2d | ||
|
421186ecee | ||
|
4a1dee4651 | ||
|
9d7bfb4669 | ||
|
7a2537de9a | ||
|
9ef88f3c88 | ||
|
f7b0a82cf3 | ||
|
5861be8d2b | ||
|
4f44ef6ed1 | ||
|
57e914507d | ||
|
62bd4b30cb | ||
|
79568e3094 | ||
|
27a01b5ca8 | ||
|
5e287e8bbe | ||
|
322002e389 | ||
|
1473a52704 | ||
|
0fa421d874 | ||
|
fd3fcf68a5 | ||
|
10e6642786 | ||
|
626af9990f | ||
|
29209fa219 | ||
|
f6fb61f5fe | ||
|
61f380789e | ||
|
1a794ad77c | ||
|
c548ca5dfd | ||
|
f1f529ce5d | ||
|
e589b8a3da | ||
|
173ece82a8 | ||
|
2f850dd9e3 | ||
|
cd220944b3 | ||
|
e74759184c | ||
|
059e9344a1 | ||
|
c4c3a2f25d | ||
|
2c3e56a6aa | ||
|
f1c1a869a9 | ||
|
7e7281b888 | ||
|
0b7123ed2b | ||
|
38b18de709 | ||
|
4b15d3d667 | ||
|
55b05ec32e | ||
|
332b07f414 | ||
|
d2b80f7c3e | ||
|
8d53675d9f | ||
|
3d6a27570f | ||
|
f5088b8915 | ||
|
74a05bc967 | ||
|
131834d34f | ||
|
0c1d11dc86 | ||
|
095727b074 | ||
|
0b4eb271d1 | ||
|
75a3bde06f | ||
|
395ef3c8cb | ||
|
3253d88b8d | ||
|
e43d547755 | ||
|
4c63f41517 | ||
|
ed243e3829 | ||
|
c69f050d2c | ||
|
180ec6ad4b | ||
|
490c8e7dc4 | ||
|
9130eb8152 | ||
|
3970300e9e | ||
|
e496a1ce4f | ||
|
bffe766fc3 | ||
|
b01ecf80e6 | ||
|
d7b6647647 | ||
|
3c21b768c5 | ||
|
9e2d8e4e16 | ||
|
d5f730d589 | ||
|
3540cb73c1 | ||
|
0e8bbd6463 | ||
|
827961cae3 | ||
|
b32ce25526 | ||
|
a6d269d94f | ||
|
ca3880b205 | ||
|
e58527b8bb | ||
|
9eec33ba13 | ||
|
95d47b9390 | ||
|
ac0a722bf6 | ||
|
9a2709213d | ||
|
0b301f2fd0 | ||
|
18719a5e90 | ||
|
f69e98d44f | ||
|
3ae90906d9 | ||
|
57169f32df | ||
|
85a14735c8 | ||
|
6c879b8cb8 | ||
|
2e41fde7b1 | ||
|
5b84d17ec1 | ||
|
c62bf0ff69 | ||
|
56f05c85d9 | ||
|
cdf7a58dd1 | ||
|
5ea45737e5 | ||
|
c31ca5cd4c | ||
|
e1294fecc1 | ||
|
f384280962 | ||
|
df12f06a9e | ||
|
3ee7ca9d56 | ||
|
af5fc77a24 | ||
|
bcbdf970a6 | ||
|
dd59ee088c | ||
|
ccb4d81ea2 | ||
|
efe839447b | ||
|
419ed163ab | ||
|
9353e5f1c4 | ||
|
eaa703b8c8 | ||
|
dd1653e0ff | ||
|
4b71ca6e44 | ||
|
fee4b3f8bb | ||
|
f715b54015 | ||
|
dd8da1e26f | ||
|
c293704aad | ||
|
e004841f01 | ||
|
33c7325712 | ||
|
eb08ca2f38 | ||
|
ecf33b8113 | ||
|
dccc473eb4 | ||
|
7d363d125f | ||
|
553aacbb19 | ||
|
70a065eada | ||
|
ebc4a245e4 | ||
|
f8cc2ff416 | ||
|
e154267462 | ||
|
255e942087 | ||
|
29c9747222 | ||
|
1bbf9518de | ||
|
5d241d39e0 | ||
|
3ae4db9e71 | ||
|
5b791691f5 | ||
|
b197cc08f2 | ||
|
7c9d1ac6e5 | ||
|
f1ee6bf1ab | ||
|
b504ed47ac | ||
|
ccdb73d804 | ||
|
50a248d54e | ||
|
1b34a13535 | ||
|
68947df3f1 | ||
|
1980dcd0bc | ||
|
679220d8f5 | ||
|
79b200335c | ||
|
952da49058 | ||
|
af4bf60477 | ||
|
a353618d53 | ||
|
dd15b6a9a3 | ||
|
995329ac25 | ||
|
4464537a38 | ||
|
f61b98dd98 | ||
|
188deedb98 | ||
|
10808f2830 | ||
|
db2d3cffa2 | ||
|
ed0d528bdc | ||
|
ec4fee282a | ||
|
94938affe6 | ||
|
c45a4eed48 | ||
|
1c00380f56 | ||
|
8e6e3546a2 | ||
|
4065d92972 | ||
|
7b11fe8dba | ||
|
c0cd664fdd | ||
|
0097d34a8f | ||
|
fa16da8ef0 | ||
|
094414186b | ||
|
ae6ab8bc57 | ||
|
0fbfc16da2 | ||
|
6a57853f7c | ||
|
edbbb60ea3 | ||
|
b1acb256e1 | ||
|
080b09bb96 | ||
|
f09d97b9a5 | ||
|
b51f2b5252 | ||
|
6e777c861b | ||
|
40aa78ac10 | ||
|
23c9503bfa | ||
|
af53dfab75 | ||
|
4ceec875c9 | ||
|
eb8076526d | ||
|
bb2181b194 | ||
|
6cc7d90744 | ||
|
cb9227a6a1 | ||
|
3115d97248 | ||
|
f4f68c686f | ||
|
2e2c672544 | ||
|
a2cb96c250 | ||
|
042d3051c6 | ||
|
f9203916c0 | ||
|
7f3741957e | ||
|
7ad02976c4 | ||
|
38277a1fee | ||
|
55d0745bc0 | ||
|
c57b10aff4 | ||
|
26a079bd57 | ||
|
9821d91745 | ||
|
d25c97e7c9 | ||
|
8db404516e | ||
|
e752687321 | ||
|
c975c1d19b | ||
|
915be5ce33 | ||
|
8b50f186b9 | ||
|
4203761708 | ||
|
50b6ba6366 | ||
|
161b3c5331 | ||
|
b6d6ccecc7 | ||
|
a64c46b830 | ||
|
f58d36a942 | ||
|
6dfc9f96c5 | ||
|
66aacf9633 | ||
|
f4582d97dd | ||
|
602e8f71c7 | ||
|
f98c9a851b | ||
|
a2a6bda810 | ||
|
adef456236 | ||
|
6726372464 | ||
|
9f204e7441 | ||
|
efdd0b76ef | ||
|
2b8c4ff0de | ||
|
18d88c207c | ||
|
957d76fd14 | ||
|
92330f7b3c | ||
|
250932caa4 | ||
|
65635e8a0c | ||
|
e125c30cfd | ||
|
305303330c | ||
|
d8df72869f | ||
|
54c92db299 | ||
|
6e3c60dd66 | ||
|
d511efb822 | ||
|
beecc7b723 | ||
|
f17a42be75 | ||
|
6a85288723 | ||
|
f92f7d425c | ||
|
751665a7bd | ||
|
45af19e917 | ||
|
b53d88a6ac | ||
|
2e69cbb980 | ||
|
99fa22939a | ||
|
6b13a9fff2 | ||
|
0a94d27bef | ||
|
44c0fc2bfd | ||
|
744c022791 | ||
|
c39600fcf0 | ||
|
046d79c227 | ||
|
ef8dedd109 | ||
|
d479eab25e | ||
|
14cb6451dd | ||
|
6b10cce682 | ||
|
4ff4ce2870 | ||
|
f373186dfd | ||
|
a00fee46af | ||
|
b931f177d3 | ||
|
de0c08ace8 | ||
|
c237b12d12 | ||
|
0c7168bf32 | ||
|
41b3dfb70f | ||
|
135935c448 | ||
|
b6fb472ae2 | ||
|
728b9cdd28 | ||
|
f75f585ed3 | ||
|
9600f3cc68 | ||
|
493fdce6ce | ||
|
150f3a3274 | ||
|
84e58c5704 | ||
|
4448b1054a | ||
|
d42c76cf09 | ||
|
e51b84e77b | ||
|
51e719191d | ||
|
40d38b0f9f | ||
|
210ec64283 | ||
|
a3a7fb0983 | ||
|
2c066afff9 | ||
|
bd4530e580 | ||
|
54405ddd0f | ||
|
2dd55d117c | ||
|
d4a7175a0f | ||
|
b78f3dadc6 | ||
|
73f30b0dc6 | ||
|
994aa79724 | ||
|
c9ccb77287 | ||
|
8953232359 | ||
|
04e1f830a7 | ||
|
d8a8d2f138 | ||
|
bc3b6e5927 | ||
|
c3ef79b3ef | ||
|
496b390724 | ||
|
6f197416ec | ||
|
49e2abd9ad | ||
|
df6d9b63f7 | ||
|
473d07d364 | ||
|
565ead32b8 | ||
|
373f4821c3 | ||
|
71205f5b4e | ||
|
b702a8b5c5 | ||
|
8ffa8d1c98 | ||
|
d48ce04291 | ||
|
5db4955d4d | ||
|
1164b0baf8 | ||
|
c3b391a319 | ||
|
df4d741275 | ||
|
8f1be83840 | ||
|
b14b17fa53 | ||
|
54a53ae8b7 | ||
|
ff192d25d3 | ||
|
d41ab22493 | ||
|
967e099026 | ||
|
6a36278ad3 | ||
|
6def179174 | ||
|
fc2c768f66 | ||
|
9df18cb217 | ||
|
6447add47b | ||
|
a427dcdf4d | ||
|
be83d5aed5 | ||
|
e5b35622d6 | ||
|
f3d6c9326f | ||
|
43639e99fd | ||
|
efbf084e3a | ||
|
fb3f8e7fe6 | ||
|
caf007b22c | ||
|
3c197d9578 | ||
|
1beb1f7464 | ||
|
a1e346b3a3 | ||
|
5b07268c24 | ||
|
3362b52e0c | ||
|
4e57e7b4ea | ||
|
33ab56f554 | ||
|
8556db2759 | ||
|
9cdf8f4eb2 | ||
|
c434fe8be8 | ||
|
7694b1dc04 | ||
|
d58fe9e329 | ||
|
59953205f8 | ||
|
485e6811f5 | ||
|
382bdb0a26 | ||
|
47f4f78212 | ||
|
68fad1e04b | ||
|
5aeb38b521 | ||
|
84a501f516 | ||
|
841a30bed1 | ||
|
dfd4563e25 | ||
|
f881408e5f | ||
|
f4ba4d97d5 | ||
|
00deb38ef8 | ||
|
fb8f16d68e | ||
|
29b2195751 | ||
|
5e3047c70d | ||
|
65d4ec7ea4 | ||
|
36d6217a56 | ||
|
4c6ca3ef1a | ||
|
2b89dfd3ac | ||
|
d2babbcfaf | ||
|
1c1b110b14 | ||
|
994137a82e | ||
|
1a1c52d0ba | ||
|
f0598e34e6 | ||
|
10ccaf0743 | ||
|
e268e18c50 | ||
|
4f00c0621f | ||
|
5cc9a389cd | ||
|
86861952aa | ||
|
3da281c468 | ||
|
4ec84dd157 | ||
|
d661c23eb2 | ||
|
0243cf5c08 | ||
|
8fbd6727ac | ||
|
5e606bb580 | ||
|
3c97048b3a | ||
|
d80ccb08d8 | ||
|
01ce43d94b | ||
|
3fc06f06b6 | ||
|
03b6e5fe16 | ||
|
31218e69da | ||
|
306c01328e | ||
|
42fc499992 | ||
|
d04bfe964f | ||
|
37b7b8f7a4 | ||
|
e32cf624a4 | ||
|
de37e08109 | ||
|
89cc350348 | ||
|
f8436b67cf | ||
|
64481569c0 | ||
|
1e37822533 | ||
|
d62dfc052b | ||
|
61fb345ab6 | ||
|
afd3d53f66 | ||
|
00a0caf14a | ||
|
739c613fe2 | ||
|
91f7331125 | ||
|
7177268d44 | ||
|
4cbb93609d | ||
|
3d4ca10ba2 | ||
|
e61be5de64 | ||
|
b150a4ea27 | ||
|
c6d38fa551 | ||
|
5434fb6e30 | ||
|
541e7446ce | ||
|
cdac2cd1fe | ||
|
03e9fbbd92 | ||
|
d52117a7f7 | ||
|
921f8a0676 | ||
|
e7149ab200 | ||
|
f9cb8ba69f | ||
|
eb3455ff2c | ||
|
d1cb6a7eff | ||
|
e1fbc0a787 | ||
|
201ab6ff7a | ||
|
bfe842cd1d | ||
|
a6fdc51178 | ||
|
bc6062c75a | ||
|
6f03dd47aa | ||
|
8780834442 | ||
|
46f716a0a3 | ||
|
461d5db07e | ||
|
61abcd7412 | ||
|
d46607f281 | ||
|
08019d95df | ||
|
d20cfa1124 | ||
|
59d65818ce | ||
|
aad2a5967e | ||
|
4b582bdba8 | ||
|
dd4b687d36 | ||
|
12db54cded | ||
|
9d9d7226db | ||
|
312ffad4c8 | ||
|
aa2f3b84c4 | ||
|
fdd4eabbe0 | ||
|
c346838043 | ||
|
45b0b64036 | ||
|
623400447b | ||
|
350c24cc8a | ||
|
d493e36cb0 | ||
|
454b7ef64f | ||
|
9697c5fcb5 | ||
|
34dfd6773e | ||
|
a3b52c3d4b | ||
|
d791ff0539 | ||
|
0a47c59a26 | ||
|
3f3b29ba12 | ||
|
c380d289eb | ||
|
10ac1d1edb | ||
|
5a6998d350 | ||
|
7bcc23ec05 | ||
|
5ea569e208 | ||
|
2952039ea7 | ||
|
a8c59a6926 | ||
|
70db83ee33 | ||
|
13fca65ca0 | ||
|
277d49235f | ||
|
f2cf2bfd04 | ||
|
e81a6bfdc3 | ||
|
363f37d866 | ||
|
70da73ee0d | ||
|
9588132849 | ||
|
3284e9a487 | ||
|
aa2d35c5fc | ||
|
e2d7cc163e | ||
|
c663c8cd2d | ||
|
a6392ed84a | ||
|
6480ba2ad6 | ||
|
1fbd2acc84 | ||
|
c26b2cd08f | ||
|
dc4daa8396 | ||
|
cba5b2c4c6 | ||
|
1c4a00de78 | ||
|
b0ac59b421 | ||
|
082ba3bb1f | ||
|
c70ffcec91 | ||
|
3c0c4db614 | ||
|
5af02d292a | ||
|
093b09ccc6 | ||
|
dfeab826ce | ||
|
39c2b83746 | ||
|
7e81bdfa14 | ||
|
4cc50c6701 | ||
|
f539f8fb62 | ||
|
e5134e67aa | ||
|
39df978c2c | ||
|
dc91fe6ccd | ||
|
3da53852df | ||
|
4c07529553 | ||
|
58b11d9d98 | ||
|
0223694583 | ||
|
57a8449646 | ||
|
a6187fc2a8 | ||
|
b07a6986e0 | ||
|
c310573021 | ||
|
1587a8ec54 | ||
|
7715a875e0 | ||
|
4d9d17504c | ||
|
2cf6b637e7 | ||
|
c49dec3416 | ||
|
0c1da8f328 | ||
|
08362d1e7b | ||
|
1d7d3ab621 | ||
|
e56f2b1c54 | ||
|
078e283f4b | ||
|
5ae61a890d | ||
|
ff9ac6c83c | ||
|
b450bf922c | ||
|
b8ac9da4db | ||
|
8a0c294a32 | ||
|
3b6d9b1662 | ||
|
8466d53bdc | ||
|
500ef62cc4 | ||
|
059a6990e9 | ||
|
52f52a4607 | ||
|
c8605e0c93 | ||
|
1309e98fb9 | ||
|
5577ae851e | ||
|
36232bf442 | ||
|
9059e64e7c | ||
|
50262800ca | ||
|
514dc70c72 | ||
|
75cb93933a | ||
|
cc5129a562 | ||
|
5018cba5cc | ||
|
2ef1126e6b | ||
|
d1e12c795f | ||
|
696752eefd | ||
|
a3968ddf70 | ||
|
61cef720f3 | ||
|
7720cd6324 | ||
|
45e9b140f1 | ||
|
a18d347bf5 | ||
|
e6ad3ad0cd | ||
|
522b9cedf2 | ||
|
23f9ef1d96 | ||
|
de78cd2485 | ||
|
75a19577e5 | ||
|
bec457d126 | ||
|
6a747a355f | ||
|
62c7658f38 | ||
|
0d0a656b88 | ||
|
3e5166f4cf | ||
|
a261fdb91b | ||
|
b6be63eae3 | ||
|
5eb9b6ac4b | ||
|
dd8e47caa3 | ||
|
b7fcccf4c9 | ||
|
27e4c10e81 | ||
|
7b4211b24e | ||
|
8dd13d85fc | ||
|
d471ba45c7 | ||
|
d1e20e5e31 | ||
|
91203b76cb | ||
|
b61455e35f | ||
|
7d2c04d80f | ||
|
e38dae1bb1 | ||
|
058d62c308 | ||
|
5948f8176b | ||
|
fda5981c52 | ||
|
2770cce833 | ||
|
626c1ff781 | ||
|
2aaeb55ac0 | ||
|
54c46ea175 | ||
|
e409a74ec2 | ||
|
9149fd0727 | ||
|
3bbcdbd325 | ||
|
72f2c0066c | ||
|
f8423e5e00 | ||
|
444518da5d | ||
|
8fe7ddf36c | ||
|
10dc081c05 | ||
|
4fcf9f7130 | ||
|
10b32c35b6 | ||
|
6a820e946f | ||
|
7c275c96ed | ||
|
3a75022cf4 | ||
|
325074fec5 | ||
|
c24ac78afd | ||
|
4730ec4eb0 | ||
|
08fa28d6f9 | ||
|
5b077a9232 | ||
|
b9bee21683 | ||
|
64f45df6ce | ||
|
e7523ed412 | ||
|
3b90d0b845 | ||
|
52296cd3eb | ||
|
986736f57f | ||
|
b9f81e1c0f | ||
|
74eb242587 | ||
|
58038990dc | ||
|
7f09826d23 | ||
|
cd2d3bef85 | ||
|
19ab03e69f | ||
|
e682027b4b | ||
|
01d8d2680f | ||
|
121762d9b3 | ||
|
bc89a8b046 | ||
|
a6afbcbfe1 | ||
|
2d9e8ef7bb | ||
|
0b792c22a4 | ||
|
054821b172 | ||
|
889c1f9896 | ||
|
7b596bedbd | ||
|
f5ca6e0151 | ||
|
02199755ab | ||
|
fcf524fbc3 | ||
|
b5e356265d | ||
|
6c62856915 | ||
|
0a9ba4491e | ||
|
4ec072ed3a | ||
|
34d47f1cb0 | ||
|
9d444038a5 | ||
|
f8bd874a6f | ||
|
9e1d0d7642 | ||
|
c65cf25805 | ||
|
da5dc1e303 | ||
|
f11784b8b2 | ||
|
de3cf104e3 | ||
|
a7a10be70f | ||
|
c08d2ecd40 | ||
|
f0fb443553 | ||
|
a9056419ce | ||
|
8021b46414 | ||
|
21d834ec9b | ||
|
73bbb31242 | ||
|
00dfe03904 | ||
|
b26d4972b1 | ||
|
3e324e6a7d | ||
|
32aeb4f630 | ||
|
67c842b705 | ||
|
c15d9367b8 | ||
|
027013c7a0 | ||
|
9f876f06ad | ||
|
6c846c14dd | ||
|
b13d4d9d17 | ||
|
89fc9c6606 | ||
|
1ead14f6ed | ||
|
743c4ed67d | ||
|
8249151299 | ||
|
f40f9bcff1 | ||
|
ffee5cc98e | ||
|
45d0d4bef2 | ||
|
a24d95d9cb | ||
|
444695cc1f | ||
|
0cd0206917 | ||
|
56d207e98d | ||
|
c0395d1d4b | ||
|
7fc13e398d | ||
|
db0a12463c | ||
|
e22fb67dba | ||
|
428eeb8190 | ||
|
014cda5dd9 | ||
|
711ed64f38 | ||
|
ce2a9dc3eb | ||
|
abd863579b | ||
|
ab5b4718df | ||
|
ae134c75b6 | ||
|
b028694373 | ||
|
7da4bb0656 | ||
|
10f8b5a1c1 | ||
|
a4671d721b | ||
|
9fa2461ecc | ||
|
19b392048f | ||
|
9525d67057 | ||
|
6ff3e80d0b | ||
|
817e19ee38 | ||
|
a38295c17e | ||
|
9f0bcb7bbc | ||
|
aed9eabaa3 | ||
|
799beb0f5d | ||
|
c7c243d2e5 | ||
|
677b517615 | ||
|
deaee3568d | ||
|
8e8a940a1f | ||
|
8b72211e38 | ||
|
a4d2fbc922 | ||
|
a065b097eb | ||
|
1aefa4075c | ||
|
7b8c09ae3c | ||
|
0fc459ce6d | ||
|
72ebbcf827 | ||
|
c503eea378 | ||
|
15f5b15e69 | ||
|
01a15f113b | ||
|
76036f4833 | ||
|
5274f0a147 | ||
|
aad76c6189 | ||
|
0b19f8c9ce | ||
|
ce77f50dda | ||
|
92bff66e1c | ||
|
1380b899bf | ||
|
c408d44e03 | ||
|
fe6e1d77c8 | ||
|
7faf646790 | ||
|
2a80218455 | ||
|
e2614019b6 | ||
|
380d60da86 | ||
|
c1c38228a2 | ||
|
9c226d5e77 | ||
|
cac4c094e6 | ||
|
efe14ec0ff | ||
|
42a3dacb61 | ||
|
2559138931 | ||
|
6ac920542e | ||
|
b9db9cc865 | ||
|
e9e7afa14f | ||
|
a7064a18c3 | ||
|
6541e4d8da | ||
|
3c56c90763 | ||
|
fb5e72fbbf | ||
|
9d8e20f432 | ||
|
5284b5258f | ||
|
d5c7c9304c | ||
|
1182d7606c | ||
|
975a462dc2 | ||
|
5ed3bc33e0 | ||
|
6327d1b3ef | ||
|
9b23c35c30 | ||
|
3c1c4e7326 | ||
|
dc3e815ff0 | ||
|
cec189bd40 | ||
|
1013bacc44 | ||
|
6402753692 | ||
|
da8821169f | ||
|
0249c1c136 | ||
|
519f0bf817 | ||
|
8075474fda | ||
|
a0fa9cc191 | ||
|
6934fd20e0 | ||
|
222fd3bb32 | ||
|
5b0a1d2934 | ||
|
5f4464445f | ||
|
05795c404b | ||
|
dbefe66b9c | ||
|
7ba6fb80bf | ||
|
3dc1458f5b | ||
|
724e317272 | ||
|
173d7640b7 | ||
|
9d5ece437d | ||
|
f57b831eaf | ||
|
39e1b409a3 | ||
|
2076541011 | ||
|
08ddc9fe96 | ||
|
a38d4d2222 | ||
|
b57fae7873 | ||
|
d9710697d6 | ||
|
496c799e2e | ||
|
366ba98efe | ||
|
7d6a7552ec | ||
|
86f588224b | ||
|
a42142d5a0 | ||
|
b01b2e2683 | ||
|
8900967a81 | ||
|
ea5824ebd7 | ||
|
a350efeeb1 | ||
|
a254fb7710 | ||
|
a58a094504 | ||
|
c093837bda | ||
|
00753ef4fe | ||
|
e02b8819e5 | ||
|
4ee549b4eb | ||
|
69ebc25feb | ||
|
752dd40592 | ||
|
c229e43744 | ||
|
d018dd47fb | ||
|
92ae145e0d | ||
|
8addfb1ec0 | ||
|
abbbd3ad3a | ||
|
008e756a34 | ||
|
0b4d104c15 | ||
|
3a8825cf06 | ||
|
d6f015a6df | ||
|
846a8f6e98 | ||
|
97fb23e5b3 | ||
|
8cf1aaf40f | ||
|
2db868ab50 | ||
|
9ab481647c | ||
|
a01dc47983 | ||
|
428763591f | ||
|
bdcf1ba22f | ||
|
da98eabc8a | ||
|
71d2a1415f | ||
|
d054a87d2c | ||
|
b3f1cb47a3 | ||
|
f490a8eb63 | ||
|
e3bdce7c5d | ||
|
b992057b22 | ||
|
48cb7e76d3 | ||
|
253db343a6 | ||
|
ac2bef4410 | ||
|
3a2cbb4162 | ||
|
096c45599d | ||
|
f2b9babfb4 | ||
|
60eb27ab18 | ||
|
87d3d921da | ||
|
4137dce97b | ||
|
e97572af98 | ||
|
e1e2941d9e | ||
|
08fd3a3f0d | ||
|
64f9c71ad5 | ||
|
59c040323c | ||
|
255cda73c1 | ||
|
d484b591d9 | ||
|
318f7451cd | ||
|
38c2cd3b15 | ||
|
cb4687633c | ||
|
0db5f7dd72 | ||
|
b70fad8c94 | ||
|
b4a67b661f | ||
|
ffa972f9a8 | ||
|
da84d3361d | ||
|
0e570f8db1 | ||
|
861f88ccf1 | ||
|
598fb4834b | ||
|
c8740e8ab6 | ||
|
fd7b029471 | ||
|
0c5a716fe8 | ||
|
e4372897fa | ||
|
55c0774e39 | ||
|
38220ec9eb | ||
|
563e9c7220 | ||
|
07ac91e5a1 | ||
|
bced3c5e04 | ||
|
37d94f3fd6 | ||
|
1a70e911b1 | ||
|
542d2af2a5 | ||
|
d87c728f0d | ||
|
b05c32e6ea | ||
|
7c7831a3dd | ||
|
344be9337a | ||
|
5a3d7f1005 | ||
|
bd23d5a926 | ||
|
0b72b028e8 | ||
|
6a0844b59a | ||
|
f1372acbdc | ||
|
d2d4d65acb | ||
|
39480776ed | ||
|
9db757690d | ||
|
2cf77b1565 | ||
|
b06b7e47c1 | ||
|
65460fc240 | ||
|
f965b659eb | ||
|
32034901d2 | ||
|
33efebae79 | ||
|
6f84a76e7a | ||
|
e92212d02a | ||
|
863bc2b3ed | ||
|
732adc1f23 | ||
|
47470880b2 | ||
|
ac1bf4a64e | ||
|
f6edf596bf | ||
|
8ff2682a3c | ||
|
cd71f9ff00 | ||
|
4a02c08bfa | ||
|
9ff663ccb2 | ||
|
8822ca71a2 | ||
|
95b1963723 | ||
|
426caf7132 | ||
|
555ce20248 | ||
|
85c989da1e | ||
|
ba3f0c73a4 | ||
|
925faf83ac | ||
|
03b88d8ac0 | ||
|
3728e37553 | ||
|
0a9020bb0a | ||
|
af8cc019e3 | ||
|
c19f6509ea | ||
|
e5f217b3d0 | ||
|
3cc3688f21 | ||
|
3ee7a922af | ||
|
56add53473 | ||
|
ab6f4e9a34 | ||
|
5778d9353a | ||
|
dc08645614 | ||
|
47852ef90f | ||
|
dffefa1b67 | ||
|
1889f554d7 | ||
|
ff1ad6d605 | ||
|
1384bf8c28 | ||
|
95518b6ba3 | ||
|
9a6b93c4a5 | ||
|
e1f31247e2 | ||
|
0b7c2d39f4 | ||
|
3cfadbf078 | ||
|
0a7119028f | ||
|
9ea4120f78 | ||
|
d28525e141 | ||
|
41d417530e | ||
|
d3dbcb1907 | ||
|
4698c67290 | ||
|
0f0b3a65be | ||
|
6b13a097ab | ||
|
70cd0c7b77 | ||
|
eddaa13ad5 | ||
|
ec80baf414 |
@@ -9,15 +9,22 @@ BasedOnStyle: GNU
|
||||
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignArrayOfStructures: Left
|
||||
AlignConsecutiveAssignments: Consecutive
|
||||
AlignConsecutiveDeclarations: Consecutive
|
||||
AlignConsecutiveMacros: Consecutive
|
||||
AlignConsecutiveAssignments: AcrossComments
|
||||
AlignConsecutiveDeclarations: AcrossComments
|
||||
AlignConsecutiveBitFields: AcrossComments
|
||||
AlignConsecutiveMacros: AcrossComments
|
||||
AlignEscapedNewlines: Left
|
||||
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AlwaysBreakAfterReturnType: AllDefinitions
|
||||
BinPackParameters: false
|
||||
BinPackArguments: true
|
||||
# Uncomment when our CI uses LLVM 20.
|
||||
# See: https://github.com/llvm/llvm-project/issues/117830
|
||||
# BinPackParameters: AlwaysOnePerLine
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: GNU
|
||||
BreakBeforeTernaryOperators: false
|
||||
IndentWidth: 2
|
||||
PointerAlignment: Right
|
||||
UseTab: Never
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,2 +0,0 @@
|
||||
# Meson
|
||||
/compile_commands.json
|
1018
.gitlab-ci.yml
1018
.gitlab-ci.yml
File diff suppressed because it is too large
Load Diff
42
.gitlab/check_dead_branches.sh
Normal file
42
.gitlab/check_dead_branches.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
|
||||
printf "\e[0Ksection_start:`date +%s`:branch_check[collapsed=false]\r\e[0KChecking for dead branches\n"
|
||||
git branch -r | grep -v 'origin/HEAD' | grep -v "origin/$CI_DEFAULT_BRANCH" | while IFS= read remote_branch; do
|
||||
remote_branch=$(printf "%s\n" "$remote_branch" | sed 's/^ *//;s/ *$//')
|
||||
branch_name=$(printf "%s\n" "$remote_branch" | sed 's|origin/||')
|
||||
|
||||
# NOT CHECKING
|
||||
## Skip old stable branches
|
||||
if echo "$branch_name" | grep -q "^gimp-[0-9]-" || [ "$branch_name" = "gnome-2-2" ] || [ "$branch_name" = "gnome-2-4" ]; then
|
||||
printf "\033[33m(SKIP)\033[0m: $branch_name is a snapshot of $CI_DEFAULT_BRANCH but no problem\n"
|
||||
continue
|
||||
fi
|
||||
## Skip recently created branches
|
||||
if [ "$(git rev-parse "$remote_branch")" = "$(git rev-parse "$CI_COMMIT_SHA")" ]; then
|
||||
printf "\033[33m(SKIP)\033[0m: $branch_name is identical to $CI_DEFAULT_BRANCH but no problem\n"
|
||||
continue
|
||||
fi
|
||||
|
||||
# CHECKING
|
||||
## Check: merge-base
|
||||
if git merge-base --is-ancestor "$remote_branch" "$CI_COMMIT_SHA"; then
|
||||
printf "\033[31m(ERROR)\033[0m: $branch_name is fully merged into $CI_DEFAULT_BRANCH (via git merge-base)\n"
|
||||
touch 'dead_branch'
|
||||
continue
|
||||
fi
|
||||
## Fallback check: cherry
|
||||
cherry_output=$(git cherry "$CI_COMMIT_SHA" "$remote_branch")
|
||||
if [ -z "$(printf "%s\n" "$cherry_output" | grep '^+')" ]; then
|
||||
printf "\033[31m(ERROR)\033[0m: $branch_name is fully merged into $CI_DEFAULT_BRANCH (via git cherry)\n"
|
||||
touch 'dead_branch'
|
||||
continue
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -f "dead_branch" ]; then
|
||||
printf " Please delete the merged branches\n"
|
||||
exit 1
|
||||
else
|
||||
printf '(INFO): All branches are organized.\n'
|
||||
fi
|
||||
printf "\e[0Ksection_end:`date +%s`:branch_check\r\e[0K\n"
|
@@ -1,27 +1,31 @@
|
||||
<!-- ⚠️ IMPORTANT: READ ME! ⚠️
|
||||
This is the default template for bug reports.
|
||||
For feature requests or performance issues, please switch instead to the appropriate template in the "Choose a template" list.
|
||||
For feature requests, performance issues and security reports, please switch instead to the appropriate template in the "Choose a template" list.
|
||||
|
||||
It is important that you fill all the fields of the template.
|
||||
|
||||
There are a few issues we get reports about quite frequently. If you want to check if what you have encountered is among these, please see:
|
||||
https://gitlab.gnome.org/GNOME/gimp/-/issues/?sort=updated_desc&state=all&label_name%5B%5D=Duplication%20target&first_page_size=100
|
||||
-->
|
||||
It is important that you fill all the fields of the template. -->
|
||||
|
||||
### Environment/Versions
|
||||
|
||||
- GIMP version:
|
||||
- GIMP version number:
|
||||
- Package: <!--[flatpak? Installer from gimp.org? If another installer, tell us where from] (write it after the > symbol)-->
|
||||
- Operating System: <!--[Windows? macOS? Linux? All?] (write it after the > symbol) -->
|
||||
- Operating System: <!--[Windows? macOS? Linux? All? Add OS versions too] (write it after the > symbol) -->
|
||||
- (if Linux) Display system: <!--[X11? Wayland? Which compositor and version?] (write it after the > symbol) -->
|
||||
|
||||
<!--Note: bug reporters are expected to have verified the bug still exists
|
||||
<!-- Note: you are expected to have verified the bug still exists
|
||||
either in the last stable version of GIMP or on updated development code
|
||||
(master branch).-->
|
||||
(master branch).
|
||||
|
||||
There are a few issues we get reports about quite frequently. If you want to check if what you have encountered is among these, please see:
|
||||
https://gitlab.gnome.org/GNOME/gimp/-/issues/?sort=updated_desc&state=all&label_name%5B%5D=Duplication%20target&first_page_size=100 -->
|
||||
|
||||
### Description of the bug
|
||||
|
||||
<!--Please describe your issue with details.
|
||||
Add screenshot or other files if needed.(write it after the > symbol)-->
|
||||
<!-- Please describe your issue with details. By "details" we mean:
|
||||
- "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 writing only one bug per report created.
|
||||
- Add full (not cropped) screenshots or other files using the clip button on GitLab. -->
|
||||
|
||||
### Reproduction
|
||||
|
||||
|
@@ -1,10 +1,17 @@
|
||||
**Operating System:** <!--[Windows? macOS? Linux? All?] (write it after the > symbol) -->
|
||||
<!-- ⚠️ IMPORTANT: READ ME! ⚠️
|
||||
This is the template for feature requests.
|
||||
For bug reports, performance issues and security reports, please switch instead to the appropriate template in the "Choose a template" list.
|
||||
|
||||
It is important that you fill all the fields of the template. -->
|
||||
|
||||
### Description of the feature
|
||||
|
||||
<!-- Please describe your feature with details. Also:
|
||||
- If the feature is UI-related, add screenshots, mockups or videos;
|
||||
- If the feature is about some standard or API, link relevant resources;
|
||||
- If the feature is UI-related, please DO NOT REPORT HERE but on
|
||||
gimp-ux: https://gitlab.gnome.org/Teams/GIMP/Design/gimp-ux/-/issues;
|
||||
- If the feature is about some image file format on GIMP, first check if it
|
||||
is not already listed on https://developer.gimp.org/core/standards/images,
|
||||
then you can make the request, ideally linking relevant resources (e.g. specs);
|
||||
- If you have a patch, see: https://developer.gimp.org/core/submit-patch/ -->
|
||||
|
||||
### Use cases
|
||||
@@ -12,3 +19,5 @@
|
||||
<!-- Explain the use cases or problems to solve.
|
||||
If you are unsure, you should first discuss with the community in the forums
|
||||
or talk with the developers on IRC: https://www.gimp.org/discuss.html -->
|
||||
|
||||
/label ~"1. Feature"
|
||||
|
@@ -1,14 +1,21 @@
|
||||
<!-- ⚠️ IMPORTANT: READ ME! ⚠️
|
||||
This is the template for performance issues.
|
||||
For bug reports, feature requests and security reports, please switch instead to the appropriate template in the "Choose a template" list.
|
||||
|
||||
It is important that you fill all the fields of the template. -->
|
||||
|
||||
### Environment/Versions
|
||||
|
||||
- GIMP Version:
|
||||
- GIMP version number:
|
||||
- Package: <!--[flatpak? Installer from gimp.org? If another installer, tell us where from] (write it after the > symbol)-->
|
||||
- Operating System: <!--[Windows? macOS? Linux? All?] (write it after the > symbol) -->
|
||||
- Operating System: <!--[Windows? macOS? Linux? All? Add OS versions too] (write it after the > symbol) -->
|
||||
- (if Linux) Display system: <!--[X11? Wayland? Which compositor and version?] (write it after the > symbol) -->
|
||||
|
||||
<!-- Note: bug reporters are expected to have verified the bug still exists
|
||||
<!-- Note: you are expected to have verified the performance issue still exists
|
||||
either in the last stable version of GIMP or on updated development code
|
||||
(master branch). -->
|
||||
|
||||
### Issue Description
|
||||
### Description of the performance issue
|
||||
|
||||
<!-- Please provide a general description of the issue. -->
|
||||
|
||||
@@ -25,9 +32,9 @@ For more information, see
|
||||
|
||||
<!-- Please describe in detail the actions performed in the performance log.
|
||||
If you added empty event markers to the log, please provide a description for them here.
|
||||
If you recorded a screencast while recording the log, please attach it here. -->
|
||||
If you recorded a screencast while recording the log, please attach it here. -->
|
||||
|
||||
### Additional Information
|
||||
### Additional information
|
||||
|
||||
<!-- If there is any additional information, please provide it here. -->
|
||||
|
||||
|
31
.gitlab/issue_templates/security.md
Normal file
31
.gitlab/issue_templates/security.md
Normal file
@@ -0,0 +1,31 @@
|
||||
<!-- ⚠️ IMPORTANT: READ ME! ⚠️
|
||||
This is the template for security reports.
|
||||
For bug reports, feature requests and performance issues, please switch instead to the appropriate template in the "Choose a template" list.
|
||||
|
||||
It is important that you fill all the fields of the template. -->
|
||||
|
||||
### Environment/Versions
|
||||
|
||||
- GIMP version number:
|
||||
- Package: <!--[flatpak? Installer from gimp.org? If another installer, tell us where from] (write it after the > symbol)-->
|
||||
- Operating System: <!--[Windows? macOS? Linux? All? Add OS versions too] (write it after the > symbol) -->
|
||||
- (if Linux) Display system: <!--[X11? Wayland? Which compositor and version?] (write it after the > symbol) -->
|
||||
|
||||
<!-- Note: you are expected to have verified the security issue still exists
|
||||
either in the last stable version of GIMP or on updated development code
|
||||
(master branch). -->
|
||||
|
||||
### Description of the security report
|
||||
|
||||
<!-- Please provide a general description of the security issue (with CVE code if possible). -->
|
||||
|
||||
### Antivirus Log
|
||||
|
||||
<!-- Please attach a antivirus log or other file detailing the issue, and attach it to the report.
|
||||
If you have none, at least report GIMP as false positive to the antivirus before continuing. -->
|
||||
|
||||
### Additional information
|
||||
|
||||
<!-- If there you know the culprit code, please link it here. -->
|
||||
|
||||
/label ~"1. Security"
|
@@ -8,8 +8,8 @@
|
||||
- Check the following option when making your request:
|
||||
"*Allow commits from members who can merge to the target branch.*"
|
||||
|
||||
- Enable the container registry for your repository by following this
|
||||
documentation, but enabling the feature instead of disabling it
|
||||
(unlike what the docs says, Container Registry is disabled by default
|
||||
on our Gitlab instance):
|
||||
https://docs.gitlab.com/ee/user/packages/container_registry/#disable-the-container-registry-for-a-project -->
|
||||
- No AI-generated contents allowed (neither code nor text, images…).
|
||||
Only human created works please!
|
||||
|
||||
- You can request the devs to allow installable packages to be
|
||||
generated from this MR by writing ~Package: in the comments -->
|
||||
|
218
.gitlab/run_meson_health_diff.sh
Normal file
218
.gitlab/run_meson_health_diff.sh
Normal file
@@ -0,0 +1,218 @@
|
||||
#!/bin/sh
|
||||
|
||||
. .gitlab/search-common-ancestor.sh
|
||||
|
||||
|
||||
# CHECK SCRIPTS RUNNED BY MESON (ALL OSes)
|
||||
printf "\e[0Ksection_start:`date +%s`:nonunix_test[collapsed=false]\r\e[0KChecking for non-Unix compatibility\n"
|
||||
diff=$(git diff -U0 --no-color --submodule=diff "${newest_common_ancestor_sha}" \
|
||||
| awk '
|
||||
/^diff --git a\/.*\.(build|py)/ {
|
||||
sub(/^diff --git a\//, "", $0)
|
||||
sub(/ b\/.*$/, "", $0)
|
||||
file = $0
|
||||
next
|
||||
}
|
||||
/^\+[^+]/ && file != "" {
|
||||
print file ":" substr($0, 2)
|
||||
}
|
||||
')
|
||||
|
||||
## List of commonly used utilities on Unix world
|
||||
## See the context: https://gitlab.gnome.org/GNOME/gimp/-/issues/11385
|
||||
coreutils_list="
|
||||
\.sh \
|
||||
'sh' \
|
||||
'bash' \
|
||||
'\[' \
|
||||
'arch' \
|
||||
'awk' \
|
||||
'b2sum' \
|
||||
'base32' \
|
||||
'base64' \
|
||||
'basename' \
|
||||
'basenc' \
|
||||
'cat' \
|
||||
'chcon' \
|
||||
'chgrp' \
|
||||
'chmod' \
|
||||
'chown' \
|
||||
'chroot' \
|
||||
'cksum' \
|
||||
'cmp' \
|
||||
'comm' \
|
||||
'cp' \
|
||||
'csplit' \
|
||||
'cut' \
|
||||
'date' \
|
||||
'dd' \
|
||||
'df' \
|
||||
'diff' \
|
||||
'dir' \
|
||||
'dircolors' \
|
||||
'dirname' \
|
||||
'du' \
|
||||
'echo' \
|
||||
'env' \
|
||||
'expand' \
|
||||
'expr' \
|
||||
'factor' \
|
||||
'false' \
|
||||
'find' \
|
||||
'fmt' \
|
||||
'fold' \
|
||||
'gkill' \
|
||||
'grep' \
|
||||
'groups' \
|
||||
'head' \
|
||||
'hostid' \
|
||||
'hostname' \
|
||||
'id' \
|
||||
'install' \
|
||||
'join' \
|
||||
'link' \
|
||||
'ln' \
|
||||
'logname' \
|
||||
'ls' \
|
||||
'md5sum' \
|
||||
'mkdir' \
|
||||
'mkfifo' \
|
||||
'mknod' \
|
||||
'mktemp' \
|
||||
'mv' \
|
||||
'nice' \
|
||||
'nl' \
|
||||
'nohup' \
|
||||
'nproc' \
|
||||
'numfmt' \
|
||||
'od' \
|
||||
'paste' \
|
||||
'pathchk' \
|
||||
'pinky' \
|
||||
'pr' \
|
||||
'printenv' \
|
||||
'printf' \
|
||||
'ptx' \
|
||||
'pwd' \
|
||||
'readlink' \
|
||||
'realpath' \
|
||||
'rm' \
|
||||
'rmdir' \
|
||||
'runcon' \
|
||||
'sed' \
|
||||
'seq' \
|
||||
'sha1sum' \
|
||||
'sha224sum' \
|
||||
'sha256sum' \
|
||||
'sha384sum' \
|
||||
'sha512sum' \
|
||||
'shred' \
|
||||
'shuf' \
|
||||
'sleep' \
|
||||
'sort' \
|
||||
'split' \
|
||||
'stat' \
|
||||
'stdbuf' \
|
||||
'stty' \
|
||||
'sum' \
|
||||
'sync' \
|
||||
'tac' \
|
||||
'tail' \
|
||||
'tee' \
|
||||
'test' \
|
||||
'timeout' \
|
||||
'touch' \
|
||||
'tr' \
|
||||
'true' \
|
||||
'truncate' \
|
||||
'tsort' \
|
||||
'tty' \
|
||||
'uname' \
|
||||
'unexpand' \
|
||||
'uniq' \
|
||||
'unlink' \
|
||||
'users' \
|
||||
'vdir' \
|
||||
'wc' \
|
||||
'who' \
|
||||
'whoami' \
|
||||
'yes'
|
||||
"
|
||||
for coreutil in $coreutils_list; do
|
||||
if echo "$diff" | grep -q "$coreutil"; then
|
||||
found_coreutils="$(echo "$found_coreutils $coreutil" | sed 's|\\||g')"
|
||||
fi
|
||||
done
|
||||
if [ "$found_coreutils" ]; then
|
||||
printf "$diff\n"
|
||||
printf '\033[31m(ERROR)\033[0m: Seems that you are trying to add an Unix-specific dependency to be called by Meson.\n'
|
||||
printf " Please, port to Python (which is crossplatform), your use of:${found_coreutils}.\n"
|
||||
fi
|
||||
|
||||
## Limited list of commonly used utilities on Windows world
|
||||
ntutils_list="
|
||||
\.bat \
|
||||
\.cmd \
|
||||
\.ps1 \
|
||||
'cmd' \
|
||||
'powershell'
|
||||
"
|
||||
for ntutil in $ntutils_list; do
|
||||
if echo "$diff" | grep -q "$ntutil"; then
|
||||
found_ntutils="$(echo "$found_ntutils $ntutil" | sed 's|\\||g')"
|
||||
fi
|
||||
done
|
||||
if [ "$found_ntutils" ]; then
|
||||
printf "$diff\n"
|
||||
printf '\033[31m(ERROR)\033[0m: Seems that you are trying to add a NT-specific dependency to be called by Meson.\n'
|
||||
printf " Please, port to Python (which is crossplatform), your use of:${found_ntutils}.\n"
|
||||
fi
|
||||
|
||||
if [ -z "$found_coreutils" ] && [ -z "$found_ntutils" ]; then
|
||||
printf '(INFO): Meson .build and .py files are alright regarding being crossplatform.\n'
|
||||
fi
|
||||
printf "\e[0Ksection_end:`date +%s`:nonunix_test\r\e[0K\n"
|
||||
|
||||
|
||||
# CHECK SCRIPTS NOT RUN BY MESON (UNIX ONLY)
|
||||
# Shell scripts have potential portability issues if:
|
||||
# 1) contain bash shebang or are called by bash;
|
||||
# 2) contain bashisms.
|
||||
printf "\e[0Ksection_start:`date +%s`:unix_test[collapsed=false]\r\e[0KChecking for Unix portability (optional)\n"
|
||||
diff=$(git diff -U0 --no-color --submodule=diff "${newest_common_ancestor_sha}" \
|
||||
| awk '
|
||||
/^diff --git a\// {
|
||||
sub(/^diff --git a\//, "", $0)
|
||||
sub(/ b\/.*$/, "", $0)
|
||||
file = $0
|
||||
next
|
||||
}
|
||||
/^\+[^+]/ && file != "" {
|
||||
print file ":" substr($0, 2)
|
||||
}
|
||||
')
|
||||
|
||||
## Check shebang and external call (1)
|
||||
echo "$diff" | grep -E '#!\s*/usr/bin/env\s+bash|#!\s*/(usr/bin|bin)/bash(\s|$)' && found_bashism='extrinsic_bashism'
|
||||
echo "$diff" | grep -E "bash\s+.*\.sh" && found_bashism='extrinsic_bashism'
|
||||
|
||||
## Check content with shellcheck and checkbashisms (2)
|
||||
for sh_script in $(find "$CI_PROJECT_DIR" -type d -name .git -prune -o -type f \( ! -name '*.ps1' ! -name '*.c' -exec grep -lE '^#!\s*/usr/bin/env\s+(sh|bash)|^#!\s*/(usr/bin|bin)/(sh|bash)(\s|$)' {} \; -o -name '*.sh' ! -exec grep -q '^#!' {} \; -print \)); do
|
||||
shellcheck --severity=warning --shell=sh -x "$sh_script" | grep -v 'set option posix is' | grep -vE '.*http.*SC[0-9]+.*POSIX' | grep --color=always -B 2 -E 'SC[0-9]+.*POSIX' && found_bashism='intrinsic_bashism'
|
||||
checkbashisms -f $sh_script || found_bashism='intrinsic_bashism'
|
||||
done
|
||||
|
||||
if [ "$found_bashism" ]; then
|
||||
printf '\033[33m(WARNING)\033[0m: Seems that you added a Bash-specific code (aka "bashism").\n'
|
||||
printf " It is recommended to make it POSIX-compliant (which is portable).\n"
|
||||
else
|
||||
printf '(INFO): Shell .sh files are alright regarding being portable.\n'
|
||||
fi
|
||||
printf "\e[0Ksection_end:`date +%s`:unix_test\r\e[0K\n"
|
||||
|
||||
|
||||
if [ "$found_coreutils" ] || [ "$found_ntutils" ] || [ "$found_bashism" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
@@ -1,27 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
#!/bin/sh
|
||||
|
||||
ancestor_horizon=28 # days (4 weeks)
|
||||
|
||||
echo ""
|
||||
echo "This script may be wrong. You may disregard it if it conflicts with"
|
||||
echo "https://gitlab.gnome.org/GNOME/gimp/-/blob/master/CODING_STYLE.md"
|
||||
echo "https://developer.gimp.org/core/coding_style/"
|
||||
|
||||
clang-format --version
|
||||
|
||||
# Wrap everything in a subshell so we can propagate the exit status.
|
||||
(
|
||||
|
||||
source .gitlab/search-common-ancestor.sh
|
||||
. .gitlab/search-common-ancestor.sh
|
||||
|
||||
git diff -U0 --no-color "${newest_common_ancestor_sha}" | clang-format-diff -p1 > format-diff.log
|
||||
)
|
||||
exit_status=$?
|
||||
|
||||
[ ${exit_status} == 0 ] || exit ${exit_status}
|
||||
[ ${exit_status} = 0 ] || exit ${exit_status}
|
||||
|
||||
format_diff="$(<format-diff.log)"
|
||||
format_diff="$(cat format-diff.log)"
|
||||
|
||||
if [ -n "${format_diff}" ]; then
|
||||
cat format-diff.log
|
||||
|
@@ -1,6 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
#!/bin/sh
|
||||
|
||||
ancestor_horizon=28 # days (4 weeks)
|
||||
|
||||
@@ -14,7 +12,7 @@ ancestor_horizon=28 # days (4 weeks)
|
||||
if ! git ls-remote --exit-code upstream >/dev/null 2>&1 ; then
|
||||
git remote add upstream https://gitlab.gnome.org/GNOME/gimp.git
|
||||
fi
|
||||
git fetch --shallow-since="$(date --date="${ancestor_horizon} days ago" +%Y-%m-%d)" upstream &> ./fetch_upstream.log
|
||||
git fetch --shallow-since="$(date --date="${ancestor_horizon} days ago" +%Y-%m-%d)" upstream > ./fetch_upstream.log 2>&1
|
||||
|
||||
# Work out the newest common ancestor between the detached HEAD that this CI job
|
||||
# has checked out, and the upstream target branch (which will typically be
|
||||
@@ -24,14 +22,16 @@ git fetch --shallow-since="$(date --date="${ancestor_horizon} days ago" +%Y-%m-%
|
||||
# fall back to `${CI_DEFAULT_BRANCH}` or `${CI_COMMIT_BRANCH}` respectively
|
||||
# otherwise.
|
||||
|
||||
# add mr-origin
|
||||
git remote add mr-origin ${CI_MERGE_REQUEST_SOURCE_PROJECT_URL}
|
||||
# add patch-origin
|
||||
git remote add patch-origin ${CI_MERGE_REQUEST_SOURCE_PROJECT_URL:-${CI_PROJECT_URL}}
|
||||
|
||||
source_branch="${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-${CI_COMMIT_BRANCH}}"
|
||||
git fetch --shallow-since="$(date --date="${ancestor_horizon} days ago" +%Y-%m-%d)" mr-origin "${source_branch}" &> ./fetch_origin.log
|
||||
git fetch --shallow-since="$(date --date="${ancestor_horizon} days ago" +%Y-%m-%d)" patch-origin "${source_branch}" > ./fetch_origin.log 2>&1
|
||||
|
||||
newest_common_ancestor_sha=$(diff --old-line-format='' --new-line-format='' <(git rev-list --first-parent "upstream/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:-${CI_DEFAULT_BRANCH}}") <(git rev-list --first-parent "mr-origin/${source_branch}") | head -1)
|
||||
if [ -z "${newest_common_ancestor_sha}" ]; then
|
||||
git rev-list --first-parent "upstream/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:-${CI_DEFAULT_BRANCH}}" > "temp_upstream" 2>&1
|
||||
git rev-list --first-parent "patch-origin/${source_branch}" > "temp_patch-origin" 2>&1
|
||||
newest_common_ancestor_sha=$(diff --old-line-format='' --new-line-format='' "temp_upstream" "temp_patch-origin" | head -n 1)
|
||||
if [ -z "${newest_common_ancestor_sha}" ] || [ "${newest_common_ancestor_sha}" = '' ]; then
|
||||
echo "Couldn’t find common ancestor with upstream main branch. This typically"
|
||||
echo "happens if you branched from main a long time ago. Please update"
|
||||
echo "your clone, rebase, and re-push your branch."
|
||||
|
7
AUTHORS
7
AUTHORS
@@ -23,6 +23,7 @@ The following people have contributed code to GIMP:
|
||||
Rob Antonishen
|
||||
Nicola Archibald
|
||||
Timm Bäder
|
||||
Gabriele Barbero
|
||||
Luis Barrancos
|
||||
Jerry Baker
|
||||
John Beale
|
||||
@@ -61,6 +62,7 @@ The following people have contributed code to GIMP:
|
||||
Jay Cox
|
||||
Kevin Cozens
|
||||
Jeremiah Darais
|
||||
Shubham Daule
|
||||
Michael Deal
|
||||
Alexia Death
|
||||
Brian Degenhardt
|
||||
@@ -81,6 +83,7 @@ The following people have contributed code to GIMP:
|
||||
Morton Eriksen
|
||||
Larry Ewing
|
||||
Dirk Farin
|
||||
Idriss Fekir
|
||||
Pedro Alonso Ferrer
|
||||
Nick Fetchak
|
||||
Piotr Filiciak
|
||||
@@ -170,6 +173,7 @@ The following people have contributed code to GIMP:
|
||||
Tobias Lenz
|
||||
Frederic Leroy
|
||||
Raph Levien
|
||||
Bruno Lopes
|
||||
Wing Tung Leung
|
||||
Dave Lichterman
|
||||
Adrian Likins
|
||||
@@ -201,6 +205,7 @@ The following people have contributed code to GIMP:
|
||||
Federico Mena Quintero
|
||||
Loren Merritt
|
||||
Jim Meyer
|
||||
Ondřej Míchal
|
||||
James Mitchell
|
||||
Hirotsuna Mizuno
|
||||
Chris Mohler
|
||||
@@ -352,7 +357,9 @@ The following people have contributed art to GIMP:
|
||||
Karl La Rocca
|
||||
Andreas Nilsson
|
||||
Ville Pätsi
|
||||
Denis Rangelov
|
||||
Mike Schaeffer
|
||||
Sevenix
|
||||
Carol Spears
|
||||
Klaus Staedtler
|
||||
Jakub Steiner
|
||||
|
185
INSTALL.in
185
INSTALL.in
@@ -1,17 +1,18 @@
|
||||
---------------------------------------
|
||||
--------------------------------------
|
||||
Installation instructions for GIMP @GIMP_APP_VERSION@
|
||||
---------------------------------------
|
||||
--------------------------------------
|
||||
|
||||
There are some basic steps to building and installing GIMP.
|
||||
|
||||
GIMP @GIMP_APP_VERSION@ replaces earlier GIMP 2.99.x versions. It is advised to
|
||||
uninstall them before installing GIMP @GIMP_APP_VERSION@. Since libgimp* libraries
|
||||
and data are all versionned anyway, it is possible to keep your older
|
||||
GIMP 2.x installation in parallel to GIMP @GIMP_APP_VERSION@ on a same prefix.
|
||||
GIMP @GIMP_APP_VERSION@ replaces earlier GIMP versions. It is advised to uninstall
|
||||
them before installing GIMP @GIMP_APP_VERSION@. Since libgimp* libraries and data
|
||||
are all versioned anyway, it is possible to keep your older GIMP 2.x
|
||||
or 3.x installations in parallel to GIMP @GIMP_APP_VERSION@ on a same prefix.
|
||||
|
||||
GIMP @GIMP_APP_VERSION@ is not backward compatible with GIMP 2.10 and earlier
|
||||
versions. Plug-ins and scripts written for GIMP 2.10, 2.8, 2.6 or
|
||||
earlier GIMP 2.x versions will not work because the API changed.
|
||||
earlier GIMP 2.x versions will not work because the API changed in
|
||||
GIMP 3.0.
|
||||
|
||||
The most important part is to make sure the requirements for a build
|
||||
are fulfilled. We depend on a number of tools and libraries which are
|
||||
@@ -37,8 +38,10 @@ help in that regard:
|
||||
******************************************************************
|
||||
|
||||
|
||||
1. You need to have installed a recent version of pkg-config (>= @GIMP_PKGCONFIG_VERSION@) available
|
||||
from https://www.freedesktop.org/software/pkgconfig/.
|
||||
1. You need to have installed a recent version of pkg-config available from:
|
||||
|
||||
https://www.freedesktop.org/software/pkgconfig/
|
||||
|
||||
The compatible pkgconf utility would also work.
|
||||
|
||||
2. You need gettext version 0.19.8 or newer. Older versions did not have support yet
|
||||
@@ -101,7 +104,7 @@ help in that regard:
|
||||
be installed. All these libraries are required dependencies.
|
||||
|
||||
8. For metadata access GIMP requires the gexiv2 @GEXIV2_REQUIRED_VERSION@ or newer library.
|
||||
It is hosted at: https://wiki.gnome.org/Projects/gexiv2
|
||||
It is hosted at: https://gitlab.gnome.org/GNOME/gexiv2/
|
||||
|
||||
9. libpng, libjpeg, libtiff, librsvg and lcms are hard dependencies
|
||||
that can not be disabled. poppler is also a hard dependency because
|
||||
@@ -144,18 +147,11 @@ help in that regard:
|
||||
incompatible with the version 2 (which is still experimental anyway
|
||||
and has no stable release at time of writing).
|
||||
|
||||
11. We also need the mypaint-brushes data package:
|
||||
11. We also need the mypaint-brushes v2 data package:
|
||||
|
||||
https://github.com/mypaint/mypaint-brushes
|
||||
|
||||
If installing from repository, install from branch "v1.3.x" or the
|
||||
last tag "v1.y.z" (e.g. "v1.3.1" at time of writing).
|
||||
In particular do NOT install from `master` branch which installs
|
||||
brushes incompatible with GIMP (the `master` branch and v2 brushes
|
||||
are targeted to software using recent libmypaint which GIMP wasn't
|
||||
ported to yet).
|
||||
|
||||
Also this is a data packages and therefore it will install the
|
||||
Note that this is a data packages and therefore it will install the
|
||||
pkg-config file inside `$PREFIX/share/pkgconfig/`. If you install
|
||||
mypaint-brushes from repository in a non-standard prefix, you will
|
||||
have to make sure your $PKG_CONFIG_PATH environment variable also
|
||||
@@ -173,7 +169,7 @@ help in that regard:
|
||||
For HTTP support (and many other schemes), on Linux at least, you
|
||||
should install `gvfs`:
|
||||
|
||||
https://wiki.gnome.org/Projects/gvfs
|
||||
https://gitlab.gnome.org/GNOME/gvfs/
|
||||
|
||||
It is unclear whether `gvfs` can be built and installed on other
|
||||
platforms such as Windows and macOS.
|
||||
@@ -198,10 +194,22 @@ help in that regard:
|
||||
|
||||
https://github.com/strukturag/libheif
|
||||
|
||||
Make sure you build libheif with libde265 and libx265 support (for
|
||||
respectively decoding and encoding of HEVC, i.e. HEIC files), and
|
||||
libaom decoder and encoder (for AV1, i.e. AVIF files), otherwise
|
||||
the plug-in is mostly useless.
|
||||
GIMP supports several HEIF variants (different coding formats in
|
||||
the HEIF container), so you should make sure you build libheif with
|
||||
proper encoders and decoders for these:
|
||||
|
||||
* HEIC: e.g. libde265 and libx265 support (for
|
||||
respectively decoding and encoding of HEVC).
|
||||
* AVIF: e.g. libaom decoder and encoder (for AV1 encoding and
|
||||
decoding), preferred over rav1e.
|
||||
* HEJ2: OpenJPEG (for JPEG2000 inside HEIF).
|
||||
|
||||
If you don't compile libheif with the correct flags (see libheif
|
||||
README which has a table of supported codecs), the plug-in is
|
||||
mostly useless.
|
||||
If HEIF support doesn't look like it works on relocatable
|
||||
environments, the environment variable LIBHEIF_PLUGIN_PATH may be
|
||||
what you are looking for.
|
||||
|
||||
15. GObject Introspection requires the following dependencies to be
|
||||
built and installed with introspection as well: babl, cairo,
|
||||
@@ -230,7 +238,7 @@ help in that regard:
|
||||
|
||||
Package Name Version
|
||||
|
||||
appstream-glib @APPSTREAM_GLIB_REQUIRED_VERSION@
|
||||
appstream @APPSTREAM_REQUIRED_VERSION@
|
||||
ATK @ATK_REQUIRED_VERSION@
|
||||
babl @BABL_REQUIRED_VERSION@
|
||||
cairo @CAIRO_REQUIRED_VERSION@
|
||||
@@ -245,6 +253,8 @@ help in that regard:
|
||||
GTK @GTK_REQUIRED_VERSION@
|
||||
gvfs (on Linux)
|
||||
HarfBuzz @HARFBUZZ_REQUIRED_VERSION@
|
||||
json-glib @JSON_GLIB_REQUIRED_VERSION@
|
||||
libarchive
|
||||
libbzip2
|
||||
libjpeg
|
||||
liblzma @LIBLZMA_REQUIRED_VERSION@
|
||||
@@ -254,7 +264,7 @@ help in that regard:
|
||||
librsvg @RSVG_REQUIRED_VERSION@
|
||||
libtiff @LIBTIFF_REQUIRED_VERSION@
|
||||
Little CMS @LCMS_REQUIRED_VERSION@
|
||||
mypaint-brushes-1.0
|
||||
mypaint-brushes-2.0
|
||||
pangocairo @PANGO_REQUIRED_VERSION@
|
||||
poppler-data @POPPLER_DATA_REQUIRED_VERSION@
|
||||
PyGObject
|
||||
@@ -265,10 +275,12 @@ help in that regard:
|
||||
|
||||
Package Name Version Feature
|
||||
|
||||
bison - Image Map plug-in
|
||||
cairo-pdf @CAIRO_PDF_REQUIRED_VERSION@ PDF export
|
||||
cfitsio - FITS
|
||||
iso-codes - Language selection
|
||||
ExcHndl - Crash logs on Windows with Dr. MinGW
|
||||
flex - Image Map plug-in
|
||||
gs - ghostscript
|
||||
libaa - ASCII art
|
||||
libheif @LIBHEIF_REQUIRED_VERSION@ HEIF (HEIC, AVIF)
|
||||
@@ -315,9 +327,9 @@ compilation and installation output is not shown.
|
||||
|
||||
% tar xvf gimp-@GIMP_VERSION@.tar.xz # unpack the sources
|
||||
% cd gimp-@GIMP_VERSION@ # change to the toplevel directory
|
||||
% meson _build # `configure' step
|
||||
% ninja -C _build # build GIMP
|
||||
% ninja -C _build install # install GIMP
|
||||
% meson setup _build # `configure' step
|
||||
% ninja -C _build # build GIMP
|
||||
% ninja -C _build install # install GIMP
|
||||
|
||||
|
||||
The `configure' step examines your system, and adapts GIMP to run on
|
||||
@@ -341,9 +353,10 @@ These are:
|
||||
a convenience for developers.
|
||||
|
||||
-Dgimpdir=DIR. This option changes the default directory GIMP uses to
|
||||
search for its configuration files from ~/.config/GIMP/@GIMP_APP_VERSION@ (the
|
||||
directory .config/GIMP/@GIMP_APP_VERSION@ in the user's home directory) to
|
||||
~/.config/DIR/@GIMP_APP_VERSION@.
|
||||
search for its configuration files from $XDG_CONFIG_HOME/GIMP/@GIMP_APP_VERSION@/
|
||||
(per XDG Base Directory Specification, $XDG_CONFIG_HOME defaults to
|
||||
the directory .config/ in the user's home directory) to
|
||||
$XDG_CONFIG_HOME/DIR/@GIMP_APP_VERSION@/.
|
||||
If DIR is an absolute path, the directory will be changed to DIR.
|
||||
|
||||
-Dshmem-type=[none|sysv|posix|win32|auto]. This option allows you to
|
||||
@@ -382,10 +395,6 @@ These are:
|
||||
-Dgi-docgen=enabled|disabled This option controls whether the libgimp
|
||||
C API references will be created using gi-docgen.
|
||||
|
||||
-Dg-ir-doc=true This option controls whether the libgimp API
|
||||
references for some binding languages will be created using
|
||||
g-ir-doc-tool and yelp-build.
|
||||
|
||||
-Denable-multiproc=false This option allows you to disable support for
|
||||
multiple processors. It is enabled by default.
|
||||
|
||||
@@ -402,7 +411,7 @@ These are:
|
||||
gimp-console binary to be built in addition to the standard binary.
|
||||
gimp-console is useful for command-line batch mode or as a server.
|
||||
|
||||
-Djavascript=false If for some reason you don't want to install the
|
||||
-Djavascript=disabled If for some reason you don't want to install the
|
||||
JavaScript plug-ins, you can use -Djavascript=false.
|
||||
|
||||
-Dlua=true Lua binding is experimental because of stability issues.
|
||||
@@ -432,73 +441,53 @@ was successful you should be able to run `gimp'.
|
||||
When configure fails
|
||||
======================
|
||||
|
||||
The configuration step uses pkg-config, a tool that replaces the old foo-config
|
||||
scripts. The most recent version is available from
|
||||
https://www.freedesktop.org/software/pkgconfig/
|
||||
|
||||
'configure' tries to compile and run a short GTK program. There are
|
||||
several reasons why this might fail:
|
||||
|
||||
* pkg-config could not find the file 'gtk+-3.0.pc' that gets installed
|
||||
with GTK. (This file is used to get information about where GTK+ is
|
||||
installed.)
|
||||
|
||||
Fix: Either make sure that this file is in the path where pkg-config
|
||||
looks for it (try 'pkg-config --debug' or add the location of
|
||||
gtk+-3.0.pc to the environment variable PKG_CONFIG_PATH before running
|
||||
configure.
|
||||
|
||||
* Libraries you installed are not found when you attempt to start GIMP.
|
||||
The details of how to fix this problem will depend on the system:
|
||||
|
||||
On Linux and other systems using ELF libraries, add the directory to
|
||||
holding the library to /etc/ld.so.conf or to the environment variable
|
||||
LD_LIBRARY_PATH, and run 'ldconfig'.
|
||||
|
||||
On other systems, it may be necessary to encode this path
|
||||
into the executable, by setting the LDFLAGS environment variable
|
||||
before running configure. For example:
|
||||
|
||||
LDFLAGS="-R/home/joe/lib" ./configure
|
||||
or
|
||||
LDFLAGS="-Wl,-rpath -Wl,/home/joe/lib" ./configure
|
||||
|
||||
* An old version of the GTK libraries was found instead of
|
||||
your newly installed version. This commonly happens if a
|
||||
binary package of GTK was previously installed on your system,
|
||||
and you later compiled GTK from source.
|
||||
|
||||
Fix: Remove the old libraries and include files. If you are afraid
|
||||
that removing the old libraries may break other packages supplied by
|
||||
your distributor, you can try installing GLib, GTK and other
|
||||
libraries in a different prefix after setting the environment
|
||||
variable PKG_CONFIG_LIBDIR to point to lib/pkgconfig/ in that new
|
||||
prefix so that it does not try to read the *.pc files from the
|
||||
default directory (/usr/lib/pkgconfig). However, removing the old
|
||||
packages is often the easier solution.
|
||||
The most important is to read the error output displayed by meson, as it
|
||||
will very likely tell you the exact problem.
|
||||
|
||||
A detailed log of the meson output is written to the file meson-logs/meson-log.txt.
|
||||
This may help diagnose problems.
|
||||
|
||||
The configuration step verify that various tools are installed, such as:
|
||||
C and C++ compilers, pkg-config or pkgconf (tools that replaces the old
|
||||
foo-config scripts), and more. Make sure these are installed.
|
||||
|
||||
When meson configure fails on plug-ins
|
||||
======================================
|
||||
Then it will try to search for various libraries, by looking up a `.pc`
|
||||
file (used to get information on installation details). For instance if
|
||||
pkg-config could not find the file 'gtk+-3.0.pc' that gets installed
|
||||
with GTK, verify that the development package of GTK+3 is installed or
|
||||
that you have a version equal or higher than the required version.
|
||||
|
||||
There are some GIMP plug-ins that need additional third-party libraries
|
||||
installed on your system. For example to compile the plug-ins that load
|
||||
and save JPEG, PNG or TIFF files you need the related libraries and header
|
||||
files installed, otherwise you'll get a message that plug-in xyz will not
|
||||
be built.
|
||||
If you installed a supported version of a dependency but the configure
|
||||
step still cannot find it, you may need to add the location of the .pc
|
||||
file to the environment variable PKG_CONFIG_PATH before running meson
|
||||
setup.
|
||||
|
||||
If you are sure that those libraries are correctly installed, but configure
|
||||
fails to detect them, the following might help:
|
||||
When you use custom installation prefixes for dependencies, you will
|
||||
likely need to set more environment variables, such as LD_LIBRARY_PATH
|
||||
or GI_TYPELIB_PATH, either for the configuration to succeed, the build
|
||||
itself or to start GIMP at all.
|
||||
Please check out our building tutorial for more in-depth details:
|
||||
|
||||
Set your LDFLAGS environment variable to look for the library in a certain
|
||||
place, e.g. if you are working in a bash shell you would say:
|
||||
export LDFLAGS="-L<path_to_library> -L<path_to_another_one>"
|
||||
before you run configure.
|
||||
https://developer.gimp.org/core/setup/build/
|
||||
|
||||
Set your CPPFLAGS environment variable to look for the header file in a
|
||||
certain place, e.g. if you are working in a bash shell you would say:
|
||||
export CPPFLAGS="-I<path_to_header_file> -I<path_to_another_one>"
|
||||
before you run meson.
|
||||
|
||||
About optional features
|
||||
=======================
|
||||
|
||||
When the configure step succeeds, it will display a summary of which
|
||||
optional features or plug-ins will be installed.
|
||||
|
||||
There are some GIMP features, in particular for the support of more
|
||||
recent or less used image formats, that need additional third-party
|
||||
libraries installed on your system. You need the related libraries and
|
||||
header files installed for these, otherwise the compiled GIMP will be a
|
||||
minimal version without these features.
|
||||
|
||||
Once you installed them, run the following command to trigger a
|
||||
reconfiguration:
|
||||
|
||||
% ninja reconfigure
|
||||
|
||||
Verify that the optional features you wanted are now shown as `true`,
|
||||
otherwise follow similar advice as above to make sure they are
|
||||
visible to your setup.
|
||||
|
3519
NEWS.pre-3-0
Normal file
3519
NEWS.pre-3-0
Normal file
File diff suppressed because it is too large
Load Diff
16
README
16
README
@@ -1,16 +1,14 @@
|
||||
------------------------------
|
||||
GNU Image Manipulation Program
|
||||
2.99 Development Branch
|
||||
3.1 Development Branch
|
||||
------------------------------
|
||||
|
||||
This is an unstable development release, an intermediate state on the
|
||||
way to the next stable release: GIMP 3.0. GIMP 2.99 may or may not do
|
||||
what you expect. Save your work early and often. If you want a stable
|
||||
version, please use GIMP 2.10 instead.
|
||||
This is an unstable development release in the GIMP 3.1 series.
|
||||
|
||||
If you think you found a bug in this version, please make sure that it
|
||||
hasn't been reported earlier and that it is not just new stuff that is
|
||||
still being worked on and obviously not quite finished yet.
|
||||
still being worked on and obviously not quite finished yet. If neither
|
||||
of these, please report it!
|
||||
|
||||
If you want to hack on GIMP, please read the file devel-docs/README.md.
|
||||
For detailed installation instructions, see the file INSTALL.
|
||||
@@ -24,7 +22,7 @@ GIMP's home page is at:
|
||||
https://www.gimp.org/
|
||||
|
||||
Please be sure to visit this site for information, documentation,
|
||||
tutorials, news, etc. All things GIMP-ish are available from there.
|
||||
tutorials, news, etc. All things GIMP-ish are available from there.
|
||||
|
||||
The latest version of GIMP can be found at:
|
||||
|
||||
@@ -81,11 +79,11 @@ also included in that page.
|
||||
The look of GIMP's interface can be customized like any other GTK+ app
|
||||
by editing files in `${XDG_CONFIG_HOME}/gtk-3.0/` (settings.ini and
|
||||
gtk.css in particular) or by using "themes" (ready-made customizations).
|
||||
Additionally, GIMP reads `${XDG_CONFIG_HOME}/GIMP/2.99/gimp.css` so you
|
||||
Additionally, GIMP reads `${XDG_CONFIG_HOME}/GIMP/3.0/gimp.css` so you
|
||||
can have settings that only apply to GIMP.
|
||||
|
||||
You can also manually change the keybindings to any of your choice by
|
||||
editing: `${XDG_CONFIG_HOME}/GIMP/2.99/shortcutsrc`.
|
||||
editing: `${XDG_CONFIG_HOME}/GIMP/3.0/shortcutsrc`.
|
||||
|
||||
|
||||
Have fun,
|
||||
|
@@ -26,11 +26,15 @@ gimp_debug_tool = executable('gimp-debug-tool' + exec_ver,
|
||||
if enable_default_bin
|
||||
if not platform_windows
|
||||
install_symlink(fs.name(gimp_debug_tool.full_path()).replace(exec_ver, ''),
|
||||
pointing_to: fs.name(gimp_debug_tool.full_path()),
|
||||
install_dir: gimp_debug_tool_dir
|
||||
)
|
||||
pointing_to: fs.name(gimp_debug_tool.full_path()),
|
||||
install_dir: gimp_debug_tool_dir)
|
||||
install_symlink(fs.name(gimp_debug_tool.full_path()).replace(exec_ver, '-@0@'.format(api_version_major)),
|
||||
pointing_to: fs.name(gimp_debug_tool.full_path()),
|
||||
install_dir: gimp_debug_tool_dir)
|
||||
else
|
||||
meson.add_install_script('sh', '-c',
|
||||
'cp -f "@0@" "$MESON_INSTALL_DESTDIR_PREFIX/bin/@1@"'.format((gimp_debug_tool.full_path()), fs.name(gimp_debug_tool.name()).replace(exec_ver, '.exe')))
|
||||
meson.add_install_script(python, '-c', 'from shutil import copy2; from pathlib import Path; from sys import argv; import os; copy2(argv[1], str(Path(os.environ.get("MESON_INSTALL_DESTDIR_PREFIX")) / "bin" / argv[2]))',
|
||||
gimp_debug_tool.full_path(), fs.name(gimp_debug_tool.name()).replace(exec_ver, '.exe'))
|
||||
meson.add_install_script(python, '-c', 'from shutil import copy2; from pathlib import Path; from sys import argv; import os; copy2(argv[1], str(Path(os.environ.get("MESON_INSTALL_DESTDIR_PREFIX")) / "bin" / argv[2].replace("@0@", argv[3])))',
|
||||
gimp_debug_tool.full_path(), fs.name(gimp_debug_tool.name()).replace(exec_ver, '-@0@.exe'), api_version_major.to_string())
|
||||
endif
|
||||
endif
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __ABOUT_H__
|
||||
#define __ABOUT_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
#define GIMP_ACRONYM \
|
||||
@@ -48,6 +47,3 @@
|
||||
"\n\n" \
|
||||
"You should have received a copy of the GNU General Public License " \
|
||||
"along with GIMP. If not, see: https://www.gnu.org/licenses/")
|
||||
|
||||
|
||||
#endif /* __ABOUT_H__ */
|
||||
|
@@ -15,9 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __ACTIONS_TYPES_H__
|
||||
#define __ACTIONS_TYPES_H__
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "dialogs/dialogs-types.h"
|
||||
#include "tools/tools-types.h"
|
||||
@@ -51,6 +49,3 @@ typedef enum
|
||||
GIMP_SAVE_MODE_EXPORT_AS,
|
||||
GIMP_SAVE_MODE_OVERWRITE
|
||||
} GimpSaveMode;
|
||||
|
||||
|
||||
#endif /* __ACTIONS_TYPES_H__ */
|
||||
|
@@ -91,10 +91,10 @@
|
||||
#include "text-editor-actions.h"
|
||||
#include "text-tool-actions.h"
|
||||
#include "tool-options-actions.h"
|
||||
#include "tool-path-actions.h"
|
||||
#include "tool-presets-actions.h"
|
||||
#include "tool-preset-editor-actions.h"
|
||||
#include "tools-actions.h"
|
||||
#include "vector-toolpath-actions.h"
|
||||
#include "view-actions.h"
|
||||
#include "windows-actions.h"
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
/* global variables */
|
||||
|
||||
GimpActionFactory *global_action_factory = NULL;
|
||||
GHashTable *aux_filter_hash_table = NULL;
|
||||
|
||||
|
||||
/* private variables */
|
||||
@@ -233,12 +234,12 @@ static const GimpActionFactoryEntry action_groups[] =
|
||||
{ "tool-options", N_("Tool Options"), GIMP_ICON_DIALOG_TOOL_OPTIONS,
|
||||
tool_options_actions_setup,
|
||||
tool_options_actions_update },
|
||||
{ "tool-path", N_("Tool Path"), GIMP_ICON_PATH,
|
||||
tool_path_actions_setup,
|
||||
tool_path_actions_update },
|
||||
{ "tools", N_("Tools"), GIMP_ICON_DIALOG_TOOLS,
|
||||
tools_actions_setup,
|
||||
tools_actions_update },
|
||||
{ "vector-toolpath", N_("Path Toolpath"), GIMP_ICON_PATH,
|
||||
vector_toolpath_actions_setup,
|
||||
vector_toolpath_actions_update },
|
||||
{ "paths", N_("Paths"), GIMP_ICON_PATH,
|
||||
paths_actions_setup,
|
||||
paths_actions_update },
|
||||
@@ -270,6 +271,8 @@ actions_init (Gimp *gimp)
|
||||
action_groups[i].icon_name,
|
||||
action_groups[i].setup_func,
|
||||
action_groups[i].update_func);
|
||||
|
||||
aux_filter_hash_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -280,6 +283,23 @@ actions_exit (Gimp *gimp)
|
||||
g_return_if_fail (global_action_factory->gimp == gimp);
|
||||
|
||||
g_clear_object (&global_action_factory);
|
||||
g_hash_table_unref (aux_filter_hash_table);
|
||||
}
|
||||
|
||||
/* XXX Temporary code to store the list of filter operations with an
|
||||
* "aux" input. This won't be necessary anymore once these filters can
|
||||
* be applied non-destructively too in the future.
|
||||
*/
|
||||
void
|
||||
actions_filter_set_aux (const gchar *action_name)
|
||||
{
|
||||
g_hash_table_add (aux_filter_hash_table, (gpointer) g_strdup (action_name));
|
||||
}
|
||||
|
||||
gboolean
|
||||
actions_filter_get_aux (const gchar *action_name)
|
||||
{
|
||||
return g_hash_table_lookup (aux_filter_hash_table, action_name) != NULL;
|
||||
}
|
||||
|
||||
Gimp *
|
||||
@@ -490,10 +510,9 @@ action_data_sel_count (gpointer data)
|
||||
{
|
||||
if (GIMP_IS_CONTAINER_EDITOR (data))
|
||||
{
|
||||
GimpContainerEditor *editor;
|
||||
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data);
|
||||
|
||||
editor = GIMP_CONTAINER_EDITOR (data);
|
||||
return gimp_container_view_get_selected (editor->view, NULL, NULL);
|
||||
return gimp_container_view_get_selected (editor->view, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __ACTIONS_H__
|
||||
#define __ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
extern GimpActionFactory *global_action_factory;
|
||||
@@ -25,6 +24,9 @@ extern GimpActionFactory *global_action_factory;
|
||||
void actions_init (Gimp *gimp);
|
||||
void actions_exit (Gimp *gimp);
|
||||
|
||||
void actions_filter_set_aux (const gchar *action_name);
|
||||
gboolean actions_filter_get_aux (const gchar *action_name);
|
||||
|
||||
Gimp * action_data_get_gimp (gpointer data);
|
||||
GimpContext * action_data_get_context (gpointer data);
|
||||
GimpImage * action_data_get_image (gpointer data);
|
||||
@@ -114,6 +116,3 @@ void action_message (GimpDisplay *display,
|
||||
paths = gimp_image_get_selected_paths (image); \
|
||||
if (! paths) \
|
||||
return
|
||||
|
||||
|
||||
#endif /* __ACTIONS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __BRUSH_EDITOR_ACTIONS_H__
|
||||
#define __BRUSH_EDITOR_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void brush_editor_actions_setup (GimpActionGroup *group);
|
||||
void brush_editor_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __BRUSH_EDITOR_ACTIONS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __BRUSHES_ACTIONS_H__
|
||||
#define __BRUSHES_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void brushes_actions_setup (GimpActionGroup *group);
|
||||
void brushes_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __BRUSHES_ACTIONS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __BUFFERS_ACTIONS_H__
|
||||
#define __BUFFERS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void buffers_actions_setup (GimpActionGroup *group);
|
||||
void buffers_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __BUFFERS_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __BUFFERS_COMMANDS_H__
|
||||
#define __BUFFERS_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void buffers_paste_cmd_callback (GimpAction *action,
|
||||
@@ -28,6 +27,3 @@ void buffers_paste_as_new_image_cmd_callback (GimpAction *action,
|
||||
void buffers_delete_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __BUFFERS_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __CHANNELS_ACTIONS_H__
|
||||
#define __CHANNELS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void channels_actions_setup (GimpActionGroup *group);
|
||||
void channels_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __CHANNELS_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __CHANNELS_COMMANDS_H__
|
||||
#define __CHANNELS_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void channels_edit_attributes_cmd_callback (GimpAction *action,
|
||||
@@ -69,6 +68,3 @@ void channels_color_tag_cmd_callback (GimpAction *action,
|
||||
void channels_select_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __CHANNELS_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __COLORMAP_ACTIONS_H__
|
||||
#define __COLORMAP_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void colormap_actions_setup (GimpActionGroup *group);
|
||||
void colormap_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __COLORMAP_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __COLORMAP_COMMANDS_H__
|
||||
#define __COLORMAP_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void colormap_edit_color_cmd_callback (GimpAction *action,
|
||||
@@ -31,6 +30,3 @@ void colormap_add_color_cmd_callback (GimpAction *action,
|
||||
void colormap_to_selection_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __COLORMAP_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __CONTEXT_ACTIONS_H__
|
||||
#define __CONTEXT_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void context_actions_setup (GimpActionGroup *group);
|
||||
void context_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __CONTEXT_ACTIONS_H__ */
|
||||
|
@@ -719,7 +719,7 @@ context_brush_radius_cmd_callback (GimpAction *action,
|
||||
|
||||
radius = action_select_value (select_type,
|
||||
radius,
|
||||
min_radius, 4000.0, min_radius,
|
||||
min_radius, GIMP_BRUSH_GENERATED_MAX_RADIUS, min_radius,
|
||||
0.1, 1.0, 10.0, 0.05, FALSE);
|
||||
gimp_brush_generated_set_radius (generated, radius);
|
||||
|
||||
@@ -895,17 +895,16 @@ context_select_object (GimpActionSelectType select_type,
|
||||
GimpContainer *container)
|
||||
{
|
||||
GimpObject *current;
|
||||
GType child_type;
|
||||
|
||||
current =
|
||||
gimp_context_get_by_type (context,
|
||||
gimp_container_get_children_type (container));
|
||||
child_type = gimp_container_get_child_type (container);
|
||||
|
||||
current = gimp_context_get_by_type (context, child_type);
|
||||
|
||||
current = action_select_object (select_type, container, current);
|
||||
|
||||
if (current)
|
||||
gimp_context_set_by_type (context,
|
||||
gimp_container_get_children_type (container),
|
||||
current);
|
||||
gimp_context_set_by_type (context, child_type, current);
|
||||
}
|
||||
|
||||
static gint
|
||||
|
@@ -15,9 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __CONTEXT_COMMANDS_H__
|
||||
#define __CONTEXT_COMMANDS_H__
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
void context_colors_default_cmd_callback (GimpAction *action,
|
||||
@@ -139,6 +137,3 @@ void context_brush_angle_cmd_callback (GimpAction *action,
|
||||
void context_toggle_dynamics_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __CONTEXT_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __CURSOR_INFO_ACIONS_H__
|
||||
#define __CURSOR_INFO_ACIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void cursor_info_actions_setup (GimpActionGroup *group);
|
||||
void cursor_info_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __CURSOR_INFO_ACTIONS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __CURSOR_INFO_COMMANDS_H__
|
||||
#define __CURSOR_INFO_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void cursor_info_sample_merged_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __CURSOR_INFO_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DASHBOARD_ACTIONS_H__
|
||||
#define __DASHBOARD_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dashboard_actions_setup (GimpActionGroup *group);
|
||||
void dashboard_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DASHBOARD_ACTIONS_H__ */
|
||||
|
@@ -111,6 +111,9 @@ dashboard_log_record_cmd_callback (GimpAction *action,
|
||||
GtkWidget *label;
|
||||
GtkWidget *spinbutton;
|
||||
GtkWidget *toggle;
|
||||
GDateTime *datetime;
|
||||
gchar *timestamp;
|
||||
gchar *default_filename;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new (
|
||||
"Record Performance Log", NULL, GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||
@@ -168,8 +171,19 @@ dashboard_log_record_cmd_callback (GimpAction *action,
|
||||
GTK_FILE_CHOOSER (dialog), info->folder, NULL);
|
||||
}
|
||||
|
||||
datetime = g_date_time_new_now_local ();
|
||||
|
||||
/* Since Windows doesn't allow colons in filenames,
|
||||
* we use ISO 8601 basic format for the timestamp */
|
||||
timestamp = g_date_time_format (datetime, "%Y%m%dT%H%M%SZ");
|
||||
default_filename = g_strdup_printf ("gimp-performance-%s.log",
|
||||
timestamp);
|
||||
g_date_time_unref (datetime);
|
||||
g_free (timestamp);
|
||||
|
||||
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog),
|
||||
"gimp-performance.log");
|
||||
default_filename);
|
||||
g_free (default_filename);
|
||||
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
|
||||
gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dialog), hbox);
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DASHBOARD_COMMANDS_H__
|
||||
#define __DASHBOARD_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dashboard_update_interval_cmd_callback (GimpAction *action,
|
||||
@@ -43,6 +42,3 @@ void dashboard_reset_cmd_callback (GimpAction *action,
|
||||
void dashboard_low_swap_space_warning_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DASHBOARD_COMMANDS_H__ */
|
||||
|
@@ -68,7 +68,7 @@ data_open_as_image_cmd_callback (GimpAction *action,
|
||||
|
||||
data = (GimpData *)
|
||||
gimp_context_get_by_type (context,
|
||||
gimp_data_factory_view_get_children_type (view));
|
||||
gimp_data_factory_view_get_child_type (view));
|
||||
|
||||
if (data && gimp_data_get_file (data))
|
||||
{
|
||||
@@ -119,7 +119,7 @@ data_new_cmd_callback (GimpAction *action,
|
||||
GtkWidget *edit_button;
|
||||
|
||||
gimp_context_set_by_type (context,
|
||||
gimp_data_factory_view_get_children_type (view),
|
||||
gimp_data_factory_view_get_child_type (view),
|
||||
GIMP_OBJECT (data));
|
||||
|
||||
edit_button = gimp_data_factory_view_get_edit_button (view);
|
||||
@@ -142,7 +142,7 @@ data_duplicate_cmd_callback (GimpAction *action,
|
||||
|
||||
data = (GimpData *)
|
||||
gimp_context_get_by_type (context,
|
||||
gimp_data_factory_view_get_children_type (view));
|
||||
gimp_data_factory_view_get_child_type (view));
|
||||
|
||||
if (data && gimp_data_factory_view_have (view, GIMP_OBJECT (data)))
|
||||
{
|
||||
@@ -155,7 +155,7 @@ data_duplicate_cmd_callback (GimpAction *action,
|
||||
GtkWidget *edit_button;
|
||||
|
||||
gimp_context_set_by_type (context,
|
||||
gimp_data_factory_view_get_children_type (view),
|
||||
gimp_data_factory_view_get_child_type (view),
|
||||
GIMP_OBJECT (new_data));
|
||||
|
||||
edit_button = gimp_data_factory_view_get_edit_button (view);
|
||||
@@ -178,7 +178,7 @@ data_copy_location_cmd_callback (GimpAction *action,
|
||||
|
||||
data = (GimpData *)
|
||||
gimp_context_get_by_type (context,
|
||||
gimp_data_factory_view_get_children_type (view));
|
||||
gimp_data_factory_view_get_child_type (view));
|
||||
|
||||
if (data)
|
||||
{
|
||||
@@ -207,7 +207,7 @@ data_show_in_file_manager_cmd_callback (GimpAction *action,
|
||||
|
||||
data = (GimpData *)
|
||||
gimp_context_get_by_type (context,
|
||||
gimp_data_factory_view_get_children_type (view));
|
||||
gimp_data_factory_view_get_child_type (view));
|
||||
|
||||
if (data)
|
||||
{
|
||||
@@ -243,7 +243,7 @@ data_delete_cmd_callback (GimpAction *action,
|
||||
|
||||
data = (GimpData *)
|
||||
gimp_context_get_by_type (context,
|
||||
gimp_data_factory_view_get_children_type (view));
|
||||
gimp_data_factory_view_get_child_type (view));
|
||||
|
||||
if (data &&
|
||||
gimp_data_is_deletable (data) &&
|
||||
@@ -288,7 +288,7 @@ data_edit_cmd_callback (GimpAction *action,
|
||||
|
||||
data = (GimpData *)
|
||||
gimp_context_get_by_type (context,
|
||||
gimp_data_factory_view_get_children_type (view));
|
||||
gimp_data_factory_view_get_child_type (view));
|
||||
|
||||
if (data && gimp_data_factory_view_have (view, GIMP_OBJECT (data)))
|
||||
{
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DATA_COMMANDS_H__
|
||||
#define __DATA_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void data_open_as_image_cmd_callback (GimpAction *action,
|
||||
@@ -43,6 +42,3 @@ void data_refresh_cmd_callback (GimpAction *action,
|
||||
void data_edit_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DATA_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DATA_EDITOR_COMMANDS_H__
|
||||
#define __DATA_EDITOR_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void data_editor_edit_active_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DATA_EDITOR_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DEBUG_ACTIONS_H__
|
||||
#define __DEBUG_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void debug_actions_setup (GimpActionGroup *group);
|
||||
void debug_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DEBUG_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DEBUG_COMMANDS_H__
|
||||
#define __DEBUG_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void debug_gtk_inspector_cmd_callback (GimpAction *action,
|
||||
@@ -40,6 +39,3 @@ void debug_dump_keyboard_shortcuts_cmd_callback (GimpAction *action,
|
||||
void debug_dump_attached_data_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DEBUG_COMMANDS_H__ */
|
||||
|
@@ -89,12 +89,12 @@ const GimpStringActionEntry dialogs_dockable_actions[] =
|
||||
"gimp-channel-list",
|
||||
GIMP_HELP_CHANNEL_DIALOG },
|
||||
|
||||
{ "dialogs-vectors", GIMP_ICON_DIALOG_PATHS,
|
||||
{ "dialogs-paths", GIMP_ICON_DIALOG_PATHS,
|
||||
NC_("dialogs-action", "_Paths Dialog"),
|
||||
NC_("dialogs-action", "_Paths"),
|
||||
{ NULL },
|
||||
NC_("dialogs-action", "Open the paths dialog"),
|
||||
"gimp-vectors-list",
|
||||
"gimp-path-list",
|
||||
GIMP_HELP_PATH_DIALOG },
|
||||
|
||||
{ "dialogs-indexed-palette", GIMP_ICON_COLORMAP,
|
||||
@@ -307,13 +307,8 @@ gint n_dialogs_dockable_actions = G_N_ELEMENTS (dialogs_dockable_actions);
|
||||
static const GimpStringActionEntry dialogs_toplevel_actions[] =
|
||||
{
|
||||
{ "dialogs-preferences", GIMP_ICON_PREFERENCES_SYSTEM,
|
||||
#if defined(PLATFORM_OSX)
|
||||
NC_("dialogs-action", "_Settings..."),
|
||||
NC_("dialogs-action", "_Settings..."),
|
||||
#else
|
||||
NC_("dialogs-action", "_Preferences"),
|
||||
NC_("dialogs-action", "_Preferences"),
|
||||
#endif
|
||||
{ NULL },
|
||||
NC_("dialogs-action", "Open the preferences dialog"),
|
||||
"gimp-preferences-dialog",
|
||||
@@ -360,8 +355,6 @@ static const GimpStringActionEntry dialogs_toplevel_actions[] =
|
||||
{ "dialogs-about", GIMP_ICON_HELP_ABOUT,
|
||||
#if defined(G_OS_WIN32)
|
||||
NC_("dialogs-action", "About GIMP"),
|
||||
#elif defined(PLATFORM_OSX)
|
||||
NC_("dialogs-action", "About"),
|
||||
#else /* UNIX: use GNOME HIG */
|
||||
NC_("dialogs-action", "_About"),
|
||||
#endif
|
||||
|
@@ -15,9 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DIALOGS_ACTIONS_H__
|
||||
#define __DIALOGS_ACTIONS_H__
|
||||
|
||||
#pragma once
|
||||
|
||||
/* this check is needed for the extern declaration below to be correct */
|
||||
#ifndef __GIMP_ACTION_GROUP_H__
|
||||
@@ -33,6 +31,3 @@ void dialogs_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
gboolean dialogs_actions_toolbox_exists (Gimp *gimp);
|
||||
|
||||
|
||||
#endif /* __DIALOGS_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DIALOGS_COMMANDS_H__
|
||||
#define __DIALOGS_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dialogs_create_toplevel_cmd_callback (GimpAction *action,
|
||||
@@ -25,6 +24,3 @@ void dialogs_create_toplevel_cmd_callback (GimpAction *action,
|
||||
void dialogs_create_dockable_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DIALOGS_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DOCK_ACTIONS_H__
|
||||
#define __DOCK_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dock_actions_setup (GimpActionGroup *group);
|
||||
void dock_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DOCK_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DOCK_COMMANDS_H__
|
||||
#define __DOCK_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dock_toggle_image_menu_cmd_callback (GimpAction *action,
|
||||
@@ -25,6 +24,3 @@ void dock_toggle_image_menu_cmd_callback (GimpAction *action,
|
||||
void dock_toggle_auto_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DOCK_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DOCKABLE_ACTIONS_H__
|
||||
#define __DOCKABLE_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dockable_actions_setup (GimpActionGroup *group);
|
||||
void dockable_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DOCKABLE_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DOCKABLE_COMMANDS_H__
|
||||
#define __DOCKABLE_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dockable_add_tab_cmd_callback (GimpAction *action,
|
||||
@@ -44,6 +43,3 @@ void dockable_tab_style_cmd_callback (GimpAction *action,
|
||||
void dockable_show_button_bar_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DOCKABLE_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DOCUMENTS_ACTIONS_H__
|
||||
#define __DOCUMENTS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void documents_actions_setup (GimpActionGroup *group);
|
||||
void documents_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DOCUMENTS_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DOCUMENTS_COMMANDS_H__
|
||||
#define __DOCUMENTS_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void documents_open_cmd_callback (GimpAction *action,
|
||||
@@ -49,6 +48,3 @@ void documents_reload_previews_cmd_callback (GimpAction *action,
|
||||
void documents_remove_dangling_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DOCUMENTS_COMMANDS_H__ */
|
||||
|
@@ -174,34 +174,34 @@ drawable_actions_update (GimpActionGroup *group,
|
||||
{
|
||||
GimpItem *item;
|
||||
|
||||
if (gimp_item_get_visible (iter->data))
|
||||
has_visible = TRUE;
|
||||
|
||||
if (gimp_item_can_lock_content (iter->data))
|
||||
{
|
||||
if (! gimp_item_get_lock_content (iter->data))
|
||||
locked = FALSE;
|
||||
can_lock = TRUE;
|
||||
}
|
||||
|
||||
if (gimp_item_can_lock_position (iter->data))
|
||||
{
|
||||
if (! gimp_item_get_lock_position (iter->data))
|
||||
locked_pos = FALSE;
|
||||
can_lock_pos = TRUE;
|
||||
}
|
||||
|
||||
if (gimp_viewable_get_children (GIMP_VIEWABLE (iter->data)))
|
||||
none_children = FALSE;
|
||||
|
||||
if (! gimp_drawable_is_rgb (iter->data))
|
||||
all_rgb = FALSE;
|
||||
|
||||
if (GIMP_IS_LAYER_MASK (iter->data))
|
||||
item = GIMP_ITEM (gimp_layer_mask_get_layer (GIMP_LAYER_MASK (iter->data)));
|
||||
else
|
||||
item = GIMP_ITEM (iter->data);
|
||||
|
||||
if (gimp_item_get_visible (item))
|
||||
has_visible = TRUE;
|
||||
|
||||
if (gimp_item_can_lock_content (item))
|
||||
{
|
||||
if (! gimp_item_get_lock_content (item))
|
||||
locked = FALSE;
|
||||
can_lock = TRUE;
|
||||
}
|
||||
|
||||
if (gimp_item_can_lock_position (item))
|
||||
{
|
||||
if (! gimp_item_get_lock_position (item))
|
||||
locked_pos = FALSE;
|
||||
can_lock_pos = TRUE;
|
||||
}
|
||||
|
||||
if (gimp_viewable_get_children (GIMP_VIEWABLE (item)))
|
||||
none_children = FALSE;
|
||||
|
||||
if (! gimp_drawable_is_rgb (iter->data))
|
||||
all_rgb = FALSE;
|
||||
|
||||
if (gimp_item_is_content_locked (item, NULL))
|
||||
all_writable = FALSE;
|
||||
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DRAWABLE_ACTIONS_H__
|
||||
#define __DRAWABLE_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void drawable_actions_setup (GimpActionGroup *group);
|
||||
void drawable_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DRAWABLE_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DRAWABLE_COMMANDS_H__
|
||||
#define __DRAWABLE_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void drawable_equalize_cmd_callback (GimpAction *action,
|
||||
@@ -42,6 +41,3 @@ void drawable_flip_cmd_callback (GimpAction *action,
|
||||
void drawable_rotate_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DRAWABLE_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DYNAMICS_ACTIONS_H__
|
||||
#define __DYNAMICS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dynamics_actions_setup (GimpActionGroup *group);
|
||||
void dynamics_actions_update (GimpActionGroup *group,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
#endif /* __DYNAMICS_ACTIONS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __DYNAMICS_EDITOR_ACTIONS_H__
|
||||
#define __DYNAMICS_EDITOR_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void dynamics_editor_actions_setup (GimpActionGroup *group);
|
||||
void dynamics_editor_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __DYNAMICS_EDITOR_ACTIONS_H__ */
|
||||
|
@@ -198,13 +198,13 @@ static const GimpEnumActionEntry edit_paste_actions[] =
|
||||
NC_("edit-action", "Paste as _Floating Data"), NULL, { NULL },
|
||||
NC_("edit-action", "Paste the content of the clipboard as Floating Data"),
|
||||
GIMP_PASTE_TYPE_FLOATING, FALSE,
|
||||
GIMP_HELP_EDIT_PASTE },
|
||||
GIMP_HELP_EDIT_PASTE_FLOAT },
|
||||
|
||||
{ "edit-paste-float-in-place", GIMP_ICON_EDIT_PASTE,
|
||||
NC_("edit-action", "Paste as Floa_ting Data In Place"), NULL, { NULL },
|
||||
NC_("edit-action", "Paste the content of the clipboard as Floating Data at its original position"),
|
||||
GIMP_PASTE_TYPE_FLOATING_IN_PLACE, FALSE,
|
||||
GIMP_HELP_EDIT_PASTE }
|
||||
GIMP_HELP_EDIT_PASTE_FLOAT_IN_PLACE }
|
||||
};
|
||||
|
||||
static const GimpEnumActionEntry edit_fill_actions[] =
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __EDIT_ACTIONS_H__
|
||||
#define __EDIT_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void edit_actions_setup (GimpActionGroup *group);
|
||||
void edit_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __EDIT_ACTIONS_H__ */
|
||||
|
@@ -41,7 +41,7 @@
|
||||
#include "core/gimpimage.h"
|
||||
#include "core/gimpimage-undo.h"
|
||||
|
||||
#include "vectors/gimppath-import.h"
|
||||
#include "path/gimppath-import.h"
|
||||
|
||||
#include "widgets/gimpclipboard.h"
|
||||
#include "widgets/gimphelp-ids.h"
|
||||
@@ -403,7 +403,7 @@ edit_paste_cmd_callback (GimpAction *action,
|
||||
GIMP_PASTE_TYPE_NEW_LAYER :
|
||||
GIMP_PASTE_TYPE_NEW_LAYER_IN_PLACE;
|
||||
|
||||
edit_paste (display, converted_type, merged, FALSE);
|
||||
edit_paste (display, converted_type, merged, TRUE);
|
||||
}
|
||||
g_list_free (drawables);
|
||||
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __EDIT_COMMANDS_H__
|
||||
#define __EDIT_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void edit_undo_cmd_callback (GimpAction *action,
|
||||
@@ -71,6 +70,3 @@ void edit_clear_cmd_callback (GimpAction *action,
|
||||
void edit_fill_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __EDIT_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __ERROR_CONSOLE_ACIONS_H__
|
||||
#define __ERROR_CONSOLE_ACIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void error_console_actions_setup (GimpActionGroup *group);
|
||||
void error_console_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __ERROR_CONSOLE_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __ERROR_CONSOLE_COMMANDS_H__
|
||||
#define __ERROR_CONSOLE_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void error_console_clear_cmd_callback (GimpAction *action,
|
||||
@@ -38,6 +37,3 @@ void error_console_highlight_warning_cmd_callback (GimpAction *action,
|
||||
void error_console_highlight_info_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __ERROR_CONSOLE_COMMANDS_H__ */
|
||||
|
@@ -59,6 +59,7 @@ static void file_actions_last_opened_update (GimpContainer *container,
|
||||
static void file_actions_last_opened_reorder (GimpContainer *container,
|
||||
GimpImagefile *unused1,
|
||||
gint unused2,
|
||||
gint unused3,
|
||||
GimpActionGroup *group);
|
||||
static void file_actions_close_all_update (GimpContainer *images,
|
||||
GimpObject *unused,
|
||||
@@ -81,6 +82,12 @@ static const GimpActionEntry file_actions[] =
|
||||
file_open_as_layers_cmd_callback,
|
||||
GIMP_HELP_FILE_OPEN_AS_LAYER },
|
||||
|
||||
{ "file-open-as-link-layers", GIMP_ICON_LAYER,
|
||||
NC_("file-action", "Op_en as Link Layer..."), NULL, { "<primary><alt><shift>O", NULL },
|
||||
NC_("file-action", "Open an image file as Link layer"),
|
||||
file_open_as_link_layer_cmd_callback,
|
||||
GIMP_HELP_FILE_OPEN_AS_LINK_LAYER },
|
||||
|
||||
{ "file-open-location", GIMP_ICON_WEB,
|
||||
NC_("file-action", "Open _Location..."), NULL, { NULL },
|
||||
NC_("file-action", "Open an image file from a specified location"),
|
||||
@@ -309,14 +316,34 @@ file_actions_update (GimpActionGroup *group,
|
||||
|
||||
if (export)
|
||||
{
|
||||
gchar *label = file_actions_create_label (_("Export to %s"), export);
|
||||
GimpAction *action;
|
||||
gchar *label = file_actions_create_label (_("Export to %s"),
|
||||
export);
|
||||
|
||||
gimp_action_group_set_action_label (group, "file-export", label);
|
||||
|
||||
action = gimp_action_group_get_action (group, "file-export");
|
||||
g_object_set (action,
|
||||
"ellipsize", PANGO_ELLIPSIZE_MIDDLE,
|
||||
"max-width-chars", 40,
|
||||
NULL);
|
||||
|
||||
g_free (label);
|
||||
}
|
||||
else if (show_overwrite)
|
||||
{
|
||||
gchar *label = file_actions_create_label (_("Over_write %s"), source);
|
||||
GimpAction *action;
|
||||
gchar *label = file_actions_create_label (_("Over_write %s"),
|
||||
source);
|
||||
|
||||
gimp_action_group_set_action_label (group, "file-overwrite", label);
|
||||
|
||||
action = gimp_action_group_get_action (group, "file-overwrite");
|
||||
g_object_set (action,
|
||||
"ellipsize", PANGO_ELLIPSIZE_MIDDLE,
|
||||
"max-width-chars", 40,
|
||||
NULL);
|
||||
|
||||
g_free (label);
|
||||
}
|
||||
else
|
||||
@@ -381,11 +408,13 @@ file_actions_last_opened_update (GimpContainer *container,
|
||||
label = g_strdup_printf (_("Open \"%s\""), escaped);
|
||||
|
||||
g_object_set (action,
|
||||
"label", label,
|
||||
"short-label", escaped,
|
||||
"tooltip", name,
|
||||
"visible", TRUE,
|
||||
"viewable", imagefile,
|
||||
"label", label,
|
||||
"short-label", escaped,
|
||||
"tooltip", name,
|
||||
"visible", TRUE,
|
||||
"viewable", imagefile,
|
||||
"ellipsize", PANGO_ELLIPSIZE_MIDDLE,
|
||||
"max-width-chars", 40,
|
||||
NULL);
|
||||
|
||||
g_free (label);
|
||||
@@ -395,10 +424,12 @@ file_actions_last_opened_update (GimpContainer *container,
|
||||
else
|
||||
{
|
||||
g_object_set (action,
|
||||
"label", name,
|
||||
"tooltip", NULL,
|
||||
"visible", FALSE,
|
||||
"viewable", NULL,
|
||||
"label", name,
|
||||
"tooltip", NULL,
|
||||
"visible", FALSE,
|
||||
"viewable", NULL,
|
||||
"ellipsize", PANGO_ELLIPSIZE_MIDDLE,
|
||||
"max-width-chars", 40,
|
||||
NULL);
|
||||
}
|
||||
|
||||
@@ -410,6 +441,7 @@ static void
|
||||
file_actions_last_opened_reorder (GimpContainer *container,
|
||||
GimpImagefile *unused1,
|
||||
gint unused2,
|
||||
gint unused3,
|
||||
GimpActionGroup *group)
|
||||
{
|
||||
file_actions_last_opened_update (container, unused1, group);
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __FILE_ACTIONS_H__
|
||||
#define __FILE_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void file_actions_setup (GimpActionGroup *group);
|
||||
void file_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __FILE_ACTIONS_H__ */
|
||||
|
@@ -73,7 +73,8 @@ static void file_open_dialog_show (Gimp *gimp,
|
||||
const gchar *title,
|
||||
GimpImage *image,
|
||||
GFile *file,
|
||||
gboolean open_as_layers);
|
||||
gboolean open_as_layers,
|
||||
gboolean open_as_link);
|
||||
static GtkWidget * file_save_dialog_show (Gimp *gimp,
|
||||
GimpImage *image,
|
||||
GtkWidget *parent,
|
||||
@@ -118,7 +119,7 @@ file_open_cmd_callback (GimpAction *action,
|
||||
|
||||
file_open_dialog_show (gimp, widget,
|
||||
_("Open Image"),
|
||||
image, NULL, FALSE);
|
||||
image, NULL, FALSE, FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -140,7 +141,29 @@ file_open_as_layers_cmd_callback (GimpAction *action,
|
||||
|
||||
file_open_dialog_show (gimp, widget,
|
||||
_("Open Image as Layers"),
|
||||
image, NULL, TRUE);
|
||||
image, NULL, TRUE, FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
file_open_as_link_layer_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
{
|
||||
Gimp *gimp;
|
||||
GtkWidget *widget;
|
||||
GimpDisplay *display;
|
||||
GimpImage *image = NULL;
|
||||
return_if_no_gimp (gimp, data);
|
||||
return_if_no_widget (widget, data);
|
||||
|
||||
display = action_data_get_display (data);
|
||||
|
||||
if (display)
|
||||
image = gimp_display_get_image (display);
|
||||
|
||||
file_open_dialog_show (gimp, widget,
|
||||
_("Open Image as Link Layer"),
|
||||
image, NULL, TRUE, TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -577,7 +600,7 @@ file_file_open_dialog (Gimp *gimp,
|
||||
{
|
||||
file_open_dialog_show (gimp, parent,
|
||||
_("Open Image"),
|
||||
NULL, file, FALSE);
|
||||
NULL, file, FALSE, FALSE);
|
||||
}
|
||||
|
||||
|
||||
@@ -589,7 +612,8 @@ file_open_dialog_show (Gimp *gimp,
|
||||
const gchar *title,
|
||||
GimpImage *image,
|
||||
GFile *file,
|
||||
gboolean open_as_layers)
|
||||
gboolean open_as_layers,
|
||||
gboolean open_as_link)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
@@ -621,7 +645,7 @@ file_open_dialog_show (Gimp *gimp,
|
||||
gtk_window_set_title (GTK_WINDOW (dialog), title);
|
||||
|
||||
gimp_open_dialog_set_image (GIMP_OPEN_DIALOG (dialog),
|
||||
image, open_as_layers);
|
||||
image, open_as_layers, open_as_link);
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW (dialog),
|
||||
GTK_WINDOW (gtk_widget_get_toplevel (parent)));
|
||||
@@ -841,9 +865,9 @@ file_revert_confirm_response (GtkWidget *dialog,
|
||||
|
||||
new_image = file_open_image (gimp, gimp_get_user_context (gimp),
|
||||
GIMP_PROGRESS (display),
|
||||
file, 0, 0, FALSE, NULL,
|
||||
file, 0, 0, TRUE, FALSE, NULL,
|
||||
GIMP_RUN_INTERACTIVE,
|
||||
&status, NULL, &error);
|
||||
NULL, &status, NULL, &error);
|
||||
|
||||
if (new_image)
|
||||
{
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __FILE_COMMANDS_H__
|
||||
#define __FILE_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void file_open_cmd_callback (GimpAction *action,
|
||||
@@ -25,6 +24,9 @@ void file_open_cmd_callback (GimpAction *action,
|
||||
void file_open_as_layers_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void file_open_as_link_layer_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void file_open_location_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
@@ -58,6 +60,3 @@ void file_quit_cmd_callback (GimpAction *action,
|
||||
void file_file_open_dialog (Gimp *gimp,
|
||||
GFile *file,
|
||||
GtkWidget *parent);
|
||||
|
||||
|
||||
#endif /* __FILE_COMMANDS_H__ */
|
||||
|
@@ -29,13 +29,18 @@
|
||||
|
||||
#include "core/gimp-filter-history.h"
|
||||
#include "core/gimpimage.h"
|
||||
#include "core/gimpgrouplayer.h"
|
||||
#include "core/gimplinklayer.h"
|
||||
#include "core/gimplayermask.h"
|
||||
|
||||
#include "path/gimpvectorlayer.h"
|
||||
|
||||
#include "pdb/gimpprocedure.h"
|
||||
|
||||
#include "widgets/gimpaction.h"
|
||||
#include "widgets/gimpactiongroup.h"
|
||||
#include "widgets/gimphelp-ids.h"
|
||||
#include "widgets/gimpstringaction.h"
|
||||
#include "widgets/gimpuimanager.h"
|
||||
#include "widgets/gimpwidgets-utils.h"
|
||||
|
||||
@@ -48,11 +53,12 @@
|
||||
|
||||
/* local function prototypes */
|
||||
|
||||
static void filters_actions_set_tooltips (GimpActionGroup *group,
|
||||
const GimpStringActionEntry *entries,
|
||||
gint n_entries);
|
||||
static void filters_actions_history_changed (Gimp *gimp,
|
||||
GimpActionGroup *group);
|
||||
static void filters_actions_set_tooltips (GimpActionGroup *group,
|
||||
const GimpStringActionEntry *entries,
|
||||
gint n_entries);
|
||||
static void filters_actions_history_changed (Gimp *gimp,
|
||||
GimpActionGroup *group);
|
||||
static gboolean filters_is_non_interactive (const gchar *action_name);
|
||||
|
||||
|
||||
/* private variables */
|
||||
@@ -748,6 +754,7 @@ static const GimpEnumActionEntry filters_repeat_actions[] =
|
||||
void
|
||||
filters_actions_setup (GimpActionGroup *group)
|
||||
{
|
||||
static gboolean first_setup = TRUE;
|
||||
GimpProcedureActionEntry *entries;
|
||||
gint n_entries;
|
||||
gint i;
|
||||
@@ -776,8 +783,23 @@ filters_actions_setup (GimpActionGroup *group)
|
||||
filters_actions_set_tooltips (group, filters_interactive_actions,
|
||||
G_N_ELEMENTS (filters_interactive_actions));
|
||||
|
||||
/* XXX Hardcoded list to prevent expensive node/graph creation of a
|
||||
* well-known list of operations.
|
||||
* This whole code will disappear when we'll support filters with aux
|
||||
* input non-destructively anyway.
|
||||
*/
|
||||
if (first_setup)
|
||||
{
|
||||
actions_filter_set_aux ("filters-variable-blur");
|
||||
actions_filter_set_aux ("filters-oilify");
|
||||
actions_filter_set_aux ("filters-lens-blur");
|
||||
actions_filter_set_aux ("filters-gaussian-blur-selective");
|
||||
actions_filter_set_aux ("filters-displace");
|
||||
actions_filter_set_aux ("filters-bump-map");
|
||||
}
|
||||
|
||||
gegl_actions = g_strv_builder_new ();
|
||||
op_classes = gimp_gegl_get_op_classes ();
|
||||
op_classes = gimp_gegl_get_op_classes (TRUE);
|
||||
|
||||
for (iter = op_classes; iter; iter = iter->next)
|
||||
{
|
||||
@@ -789,6 +811,9 @@ filters_actions_setup (GimpActionGroup *group)
|
||||
const gchar *op_name;
|
||||
gchar *label;
|
||||
|
||||
if (filters_actions_gegl_op_blocklisted (op_class->name))
|
||||
continue;
|
||||
|
||||
formatted_op_name = g_strdup (op_class->name);
|
||||
gimp_make_valid_action_name (formatted_op_name);
|
||||
action_name = g_strdup_printf ("filters-%s", formatted_op_name);
|
||||
@@ -799,12 +824,11 @@ filters_actions_setup (GimpActionGroup *group)
|
||||
* operations end up generating the same action name. Typically we
|
||||
* don't want a third-party operation called "my-op" to have the same
|
||||
* action name than "my_op" (which is to say that one will be
|
||||
* overrided by the other).
|
||||
* overridden by the other).
|
||||
*/
|
||||
g_free (action_name);
|
||||
action_name = g_strdup_printf ("filters-%s-%d", formatted_op_name, i++);
|
||||
}
|
||||
g_free (formatted_op_name);
|
||||
|
||||
title = gegl_operation_class_get_key (op_class, "title");
|
||||
op_name = op_class->name;
|
||||
@@ -824,6 +848,13 @@ filters_actions_setup (GimpActionGroup *group)
|
||||
entry.value = op_class->name;
|
||||
entry.help_id = GIMP_HELP_TOOL_GEGL;
|
||||
|
||||
if (gegl_operation_class_get_key (op_class, "gimp:menu-path") &&
|
||||
g_str_has_prefix (op_class->name, "gegl:"))
|
||||
/* We automatically create an help ID from the operation name
|
||||
* for all core GEGL operations with a menu path key.
|
||||
*/
|
||||
entry.help_id = formatted_op_name;
|
||||
|
||||
gimp_action_group_add_string_actions (group, "filters-action",
|
||||
&entry, 1,
|
||||
filters_apply_interactive_cmd_callback);
|
||||
@@ -852,10 +883,28 @@ filters_actions_setup (GimpActionGroup *group)
|
||||
g_free (short_label);
|
||||
}
|
||||
|
||||
/* Identify third-party filters based on operations with an
|
||||
* auxiliary pad in first setup because of slowness on Windows.
|
||||
* See #14781.
|
||||
*/
|
||||
if (first_setup)
|
||||
{
|
||||
GeglNode *node = gegl_node_new ();
|
||||
|
||||
gegl_node_set (node,
|
||||
"operation", op_class->name,
|
||||
NULL);
|
||||
|
||||
if (gegl_node_has_pad (node, "aux"))
|
||||
actions_filter_set_aux (action_name);
|
||||
|
||||
g_clear_object (&node);
|
||||
}
|
||||
g_strv_builder_add (gegl_actions, action_name);
|
||||
|
||||
g_free (label);
|
||||
g_free (action_name);
|
||||
g_free (formatted_op_name);
|
||||
}
|
||||
|
||||
g_object_set_data_full (G_OBJECT (group),
|
||||
@@ -900,6 +949,8 @@ filters_actions_setup (GimpActionGroup *group)
|
||||
group, 0);
|
||||
|
||||
filters_actions_history_changed (group->gimp, group);
|
||||
|
||||
first_setup = FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -907,11 +958,14 @@ filters_actions_update (GimpActionGroup *group,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *image;
|
||||
GList *actions;
|
||||
GList *iter;
|
||||
gboolean writable = FALSE;
|
||||
gboolean gray = FALSE;
|
||||
gboolean alpha = FALSE;
|
||||
gboolean supports_alpha = FALSE;
|
||||
gboolean is_group = FALSE;
|
||||
gboolean force_nde = FALSE;
|
||||
|
||||
image = action_data_get_image (data);
|
||||
|
||||
@@ -939,6 +993,11 @@ filters_actions_update (GimpActionGroup *group,
|
||||
|
||||
if (gimp_viewable_get_children (GIMP_VIEWABLE (drawable)))
|
||||
is_group = TRUE;
|
||||
|
||||
if (GIMP_IS_GROUP_LAYER (drawable) ||
|
||||
gimp_item_is_vector_layer (GIMP_ITEM (drawable)) ||
|
||||
gimp_item_is_link_layer (GIMP_ITEM (drawable)))
|
||||
force_nde = TRUE;
|
||||
}
|
||||
|
||||
g_list_free (drawables);
|
||||
@@ -947,134 +1006,82 @@ filters_actions_update (GimpActionGroup *group,
|
||||
#define SET_SENSITIVE(action,condition) \
|
||||
gimp_action_group_set_action_sensitive (group, action, (condition) != 0, NULL)
|
||||
|
||||
SET_SENSITIVE ("filters-alien-map", writable);
|
||||
SET_SENSITIVE ("filters-antialias", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-apply-canvas", writable);
|
||||
SET_SENSITIVE ("filters-apply-lens", writable);
|
||||
SET_SENSITIVE ("filters-bayer-matrix", writable);
|
||||
SET_SENSITIVE ("filters-bloom", writable);
|
||||
SET_SENSITIVE ("filters-brightness-contrast", writable);
|
||||
SET_SENSITIVE ("filters-bump-map", writable);
|
||||
actions = gimp_action_group_list_actions (group);
|
||||
for (iter = actions; iter; iter = iter->next)
|
||||
{
|
||||
GimpAction *action = iter->data;
|
||||
const gchar *action_name;
|
||||
|
||||
action_name = gimp_action_get_name (action);
|
||||
|
||||
if (filters_is_non_interactive (action_name))
|
||||
{
|
||||
/* Even I'm not sure they should, right now non-interactive
|
||||
* actions are always applied destructively. So these filters
|
||||
* are incompatible with layers where non-destructivity is
|
||||
* mandatory.
|
||||
*/
|
||||
SET_SENSITIVE (action_name, writable && ! force_nde);
|
||||
}
|
||||
else if (GIMP_IS_STRING_ACTION (action))
|
||||
{
|
||||
const gchar *opname;
|
||||
|
||||
opname = GIMP_STRING_ACTION (action)->value;
|
||||
|
||||
if (opname == NULL)
|
||||
/* These are the filters-recent-*, repeat and reshow handled
|
||||
* below.
|
||||
*/
|
||||
continue;
|
||||
|
||||
if (g_strcmp0 (opname, "gegl:gegl") == 0)
|
||||
{
|
||||
/* GEGL graph filter can only be run destructively, unless
|
||||
* the GIMP_ALLOW_GEGL_GRAPH_LAYER_EFFECT environment
|
||||
* variable is set.
|
||||
*/
|
||||
SET_SENSITIVE (gimp_action_get_name (action), writable &&
|
||||
(g_getenv ("GIMP_ALLOW_GEGL_GRAPH_LAYER_EFFECT") != NULL || ! force_nde));
|
||||
}
|
||||
else if (gegl_has_operation (opname))
|
||||
{
|
||||
gboolean sensitive = writable;
|
||||
|
||||
if (sensitive && force_nde)
|
||||
/* Operations with auxiliary inputs can only be applied
|
||||
* destructively. Therefore they must be deactivated on
|
||||
* types of layers where filters can only be applied
|
||||
* non-destructively.
|
||||
*/
|
||||
sensitive = ! actions_filter_get_aux (action_name);
|
||||
|
||||
SET_SENSITIVE (gimp_action_get_name (action), sensitive);
|
||||
}
|
||||
}
|
||||
}
|
||||
g_list_free (actions);
|
||||
|
||||
/* Special-cased filters */
|
||||
SET_SENSITIVE ("filters-c2g", writable && !gray);
|
||||
SET_SENSITIVE ("filters-cartoon", writable);
|
||||
SET_SENSITIVE ("filters-channel-mixer", writable);
|
||||
SET_SENSITIVE ("filters-checkerboard", writable);
|
||||
SET_SENSITIVE ("filters-color-balance", writable && !gray);
|
||||
SET_SENSITIVE ("filters-color-enhance", writable && !gray);
|
||||
SET_SENSITIVE ("filters-color-exchange", writable);
|
||||
SET_SENSITIVE ("filters-color-enhance", writable && !force_nde && !gray);
|
||||
SET_SENSITIVE ("filters-colorize", writable && !gray);
|
||||
SET_SENSITIVE ("filters-dither", writable);
|
||||
SET_SENSITIVE ("filters-color-rotate", writable);
|
||||
SET_SENSITIVE ("filters-color-temperature", writable && !gray);
|
||||
SET_SENSITIVE ("filters-color-to-alpha", writable && supports_alpha);
|
||||
SET_SENSITIVE ("filters-component-extract", writable);
|
||||
SET_SENSITIVE ("filters-convolution-matrix", writable);
|
||||
SET_SENSITIVE ("filters-cubism", writable);
|
||||
SET_SENSITIVE ("filters-curves", writable);
|
||||
SET_SENSITIVE ("filters-deinterlace", writable);
|
||||
SET_SENSITIVE ("filters-desaturate", writable && !gray);
|
||||
SET_SENSITIVE ("filters-difference-of-gaussians", writable);
|
||||
SET_SENSITIVE ("filters-diffraction-patterns", writable);
|
||||
SET_SENSITIVE ("filters-dilate", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-displace", writable);
|
||||
SET_SENSITIVE ("filters-distance-map", writable);
|
||||
|
||||
SET_SENSITIVE ("filters-dropshadow", writable && alpha);
|
||||
SET_SENSITIVE ("filters-edge", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-edge-laplace", writable);
|
||||
SET_SENSITIVE ("filters-edge-neon", writable);
|
||||
SET_SENSITIVE ("filters-edge-sobel", writable);
|
||||
SET_SENSITIVE ("filters-emboss", writable);
|
||||
SET_SENSITIVE ("filters-engrave", writable);
|
||||
SET_SENSITIVE ("filters-erode", writable);
|
||||
SET_SENSITIVE ("filters-exposure", writable);
|
||||
SET_SENSITIVE ("filters-fattal-2002", writable);
|
||||
SET_SENSITIVE ("filters-focus-blur", writable);
|
||||
SET_SENSITIVE ("filters-fractal-trace", writable);
|
||||
SET_SENSITIVE ("filters-gaussian-blur", writable);
|
||||
SET_SENSITIVE ("filters-gaussian-blur-selective", writable);
|
||||
SET_SENSITIVE ("filters-gegl-graph", writable);
|
||||
SET_SENSITIVE ("filters-grid", writable);
|
||||
SET_SENSITIVE ("filters-high-pass", writable);
|
||||
SET_SENSITIVE ("filters-hue-chroma", writable);
|
||||
SET_SENSITIVE ("filters-hue-saturation", writable && !gray);
|
||||
SET_SENSITIVE ("filters-illusion", writable);
|
||||
SET_SENSITIVE ("filters-invert-linear", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-invert-perceptual", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-invert-value", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-image-gradient", writable);
|
||||
SET_SENSITIVE ("filters-kaleidoscope", writable);
|
||||
SET_SENSITIVE ("filters-lens-blur", writable);
|
||||
SET_SENSITIVE ("filters-lens-distortion", writable);
|
||||
SET_SENSITIVE ("filters-lens-flare", writable);
|
||||
SET_SENSITIVE ("filters-levels", writable);
|
||||
SET_SENSITIVE ("filters-linear-sinusoid", writable);
|
||||
SET_SENSITIVE ("filters-little-planet", writable);
|
||||
SET_SENSITIVE ("filters-long-shadow", writable && alpha);
|
||||
SET_SENSITIVE ("filters-mantiuk-2006", writable);
|
||||
SET_SENSITIVE ("filters-maze", writable);
|
||||
SET_SENSITIVE ("filters-mean-curvature-blur", writable);
|
||||
SET_SENSITIVE ("filters-median-blur", writable);
|
||||
SET_SENSITIVE ("filters-mono-mixer", writable && !gray);
|
||||
SET_SENSITIVE ("filters-mosaic", writable);
|
||||
SET_SENSITIVE ("filters-motion-blur-circular", writable);
|
||||
SET_SENSITIVE ("filters-motion-blur-linear", writable);
|
||||
SET_SENSITIVE ("filters-motion-blur-zoom", writable);
|
||||
SET_SENSITIVE ("filters-newsprint", writable);
|
||||
SET_SENSITIVE ("filters-noise-cell", writable);
|
||||
SET_SENSITIVE ("filters-noise-cie-lch", writable);
|
||||
SET_SENSITIVE ("filters-noise-hsv", writable && !gray);
|
||||
SET_SENSITIVE ("filters-noise-hurl", writable);
|
||||
SET_SENSITIVE ("filters-noise-perlin", writable);
|
||||
SET_SENSITIVE ("filters-noise-pick", writable);
|
||||
SET_SENSITIVE ("filters-noise-reduction", writable);
|
||||
SET_SENSITIVE ("filters-noise-rgb", writable);
|
||||
SET_SENSITIVE ("filters-noise-simplex", writable);
|
||||
SET_SENSITIVE ("filters-noise-slur", writable);
|
||||
SET_SENSITIVE ("filters-noise-solid", writable);
|
||||
SET_SENSITIVE ("filters-noise-spread", writable);
|
||||
SET_SENSITIVE ("filters-normal-map", writable);
|
||||
SET_SENSITIVE ("filters-offset", writable);
|
||||
SET_SENSITIVE ("filters-oilify", writable);
|
||||
SET_SENSITIVE ("filters-panorama-projection", writable);
|
||||
SET_SENSITIVE ("filters-photocopy", writable);
|
||||
SET_SENSITIVE ("filters-pixelize", writable);
|
||||
SET_SENSITIVE ("filters-plasma", writable);
|
||||
SET_SENSITIVE ("filters-polar-coordinates", writable);
|
||||
SET_SENSITIVE ("filters-posterize", writable);
|
||||
SET_SENSITIVE ("filters-recursive-transform", writable);
|
||||
SET_SENSITIVE ("filters-red-eye-removal", writable && !gray);
|
||||
SET_SENSITIVE ("filters-reinhard-2005", writable);
|
||||
SET_SENSITIVE ("filters-rgb-clip", writable);
|
||||
SET_SENSITIVE ("filters-ripple", writable);
|
||||
SET_SENSITIVE ("filters-saturation", writable && !gray);
|
||||
SET_SENSITIVE ("filters-semi-flatten", writable && alpha);
|
||||
SET_SENSITIVE ("filters-sepia", writable && !gray);
|
||||
SET_SENSITIVE ("filters-shadows-highlights", writable);
|
||||
SET_SENSITIVE ("filters-shift", writable);
|
||||
SET_SENSITIVE ("filters-sinus", writable);
|
||||
SET_SENSITIVE ("filters-slic", writable);
|
||||
SET_SENSITIVE ("filters-snn-mean", writable);
|
||||
SET_SENSITIVE ("filters-softglow", writable);
|
||||
SET_SENSITIVE ("filters-spherize", writable);
|
||||
SET_SENSITIVE ("filters-spiral", writable);
|
||||
SET_SENSITIVE ("filters-stretch-contrast", writable);
|
||||
SET_SENSITIVE ("filters-stretch-contrast-hsv", writable);
|
||||
SET_SENSITIVE ("filters-stress", writable);
|
||||
SET_SENSITIVE ("filters-supernova", writable);
|
||||
SET_SENSITIVE ("filters-threshold", writable);
|
||||
SET_SENSITIVE ("filters-threshold-alpha", writable && alpha);
|
||||
SET_SENSITIVE ("filters-tile-glass", writable);
|
||||
SET_SENSITIVE ("filters-tile-paper", writable);
|
||||
SET_SENSITIVE ("filters-tile-seamless", writable);
|
||||
SET_SENSITIVE ("filters-unsharp-mask", writable);
|
||||
SET_SENSITIVE ("filters-value-propagate", writable);
|
||||
SET_SENSITIVE ("filters-variable-blur", writable);
|
||||
SET_SENSITIVE ("filters-video-degradation", writable);
|
||||
SET_SENSITIVE ("filters-vignette", writable);
|
||||
SET_SENSITIVE ("filters-waterpixels", writable);
|
||||
SET_SENSITIVE ("filters-waves", writable);
|
||||
SET_SENSITIVE ("filters-whirl-pinch", writable);
|
||||
SET_SENSITIVE ("filters-wind", writable);
|
||||
|
||||
#undef SET_SENSITIVE
|
||||
|
||||
@@ -1113,6 +1120,36 @@ filters_actions_update (GimpActionGroup *group,
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
filters_actions_gegl_op_blocklisted (const gchar *operation_name)
|
||||
{
|
||||
for (gint i = 0; i < G_N_ELEMENTS (filters_actions); i++)
|
||||
{
|
||||
const GimpStringActionEntry *action_entry = &filters_actions[i];
|
||||
|
||||
if (g_strcmp0 (operation_name, action_entry->value) == 0)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
for (gint i = 0; i < G_N_ELEMENTS (filters_settings_actions); i++)
|
||||
{
|
||||
const GimpStringActionEntry *action_entry = &filters_settings_actions[i];
|
||||
|
||||
if (g_strcmp0 (operation_name, action_entry->value) == 0)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
for (gint i = 0; i < G_N_ELEMENTS (filters_interactive_actions); i++)
|
||||
{
|
||||
const GimpStringActionEntry *action_entry = &filters_interactive_actions[i];
|
||||
|
||||
if (g_strcmp0 (operation_name, action_entry->value) == 0)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
filters_actions_set_tooltips (GimpActionGroup *group,
|
||||
const GimpStringActionEntry *entries,
|
||||
@@ -1259,12 +1296,26 @@ filters_actions_history_changed (Gimp *gimp,
|
||||
sensitive = gimp_action_get_sensitive (actual_action, NULL);
|
||||
|
||||
g_object_set (action,
|
||||
"visible", TRUE,
|
||||
"sensitive", sensitive,
|
||||
"procedure", proc,
|
||||
"label", label,
|
||||
"icon-name", gimp_viewable_get_icon_name (GIMP_VIEWABLE (proc)),
|
||||
"tooltip", gimp_procedure_get_blurb (proc),
|
||||
/* It is very important that "visible" is set at the
|
||||
* end, because the docs says that:
|
||||
*
|
||||
* > "notify" signals are queued and only emitted (in reverse order) after all properties have been set.
|
||||
*
|
||||
* If "visible" is set before "label" in particular,
|
||||
* we end up in the inconsistent situation where the
|
||||
* "visible" callbacks have not been run yet, so
|
||||
* menus don't have the corresponding item whereas
|
||||
* the action already shows as visible. In
|
||||
* particular, g_menu_model_items_changed() may
|
||||
* crash on an empty item list in GIMP_GTK_MENUBAR
|
||||
* codepath.
|
||||
*/
|
||||
"visible", TRUE,
|
||||
NULL);
|
||||
}
|
||||
|
||||
@@ -1282,3 +1333,19 @@ filters_actions_history_changed (Gimp *gimp,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
filters_is_non_interactive (const gchar *action_name)
|
||||
{
|
||||
gint i;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (filters_actions); i++)
|
||||
if (g_strcmp0 (filters_actions[i].name, action_name) == 0)
|
||||
return TRUE;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (filters_settings_actions); i++)
|
||||
if (g_strcmp0 (filters_settings_actions[i].name, action_name) == 0)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __FILTERS_ACTIONS_H__
|
||||
#define __FILTERS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void filters_actions_setup (GimpActionGroup *group);
|
||||
void filters_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __FILTERS_ACTIONS_H__ */
|
||||
void filters_actions_setup (GimpActionGroup *group);
|
||||
void filters_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
gboolean filters_actions_gegl_op_blocklisted (const gchar *operation_name);
|
||||
|
@@ -277,7 +277,17 @@ filters_run_procedure (Gimp *gimp,
|
||||
display);
|
||||
}
|
||||
|
||||
if (success)
|
||||
if (success &&
|
||||
(! GIMP_IS_GEGL_PROCEDURE (procedure) ||
|
||||
/* XXX GimpGeglProcedure made for filter-editing are
|
||||
* short-lived and should not be added to history. I'm not
|
||||
* sure it makes sense UX-wise anyway ("used" filters are for
|
||||
* first calls, not edits).
|
||||
* If ever we decide to change this UX logic, some code logic
|
||||
* changes are needed too. Cf. crash report #12576 and my
|
||||
* (Jehan's) technical comment in there..
|
||||
*/
|
||||
! gimp_gegl_procedure_is_editing_filter (GIMP_GEGL_PROCEDURE (procedure))))
|
||||
gimp_filter_history_add (gimp, procedure);
|
||||
|
||||
gimp_value_array_unref (args);
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __FILTERS_COMMANDS_H__
|
||||
#define __FILTERS_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void filters_apply_cmd_callback (GimpAction *action,
|
||||
@@ -37,6 +36,3 @@ void filters_run_procedure (Gimp *gimp,
|
||||
GimpDisplay *display,
|
||||
GimpProcedure *procedure,
|
||||
GimpRunMode run_mode);
|
||||
|
||||
|
||||
#endif /* __FILTERS_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __FONTS_ACTIONS_H__
|
||||
#define __FONTS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void fonts_actions_setup (GimpActionGroup *group);
|
||||
void fonts_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __FONTS_ACTIONS_H__ */
|
||||
|
@@ -48,6 +48,12 @@
|
||||
#include "core/gimpsettings.h"
|
||||
#include "core/gimptoolinfo.h"
|
||||
|
||||
#include "widgets/gimpaction.h"
|
||||
#include "widgets/gimpactiongroup.h"
|
||||
#include "widgets/gimphelp-ids.h"
|
||||
#include "widgets/gimpstringaction.h"
|
||||
#include "widgets/gimpuimanager.h"
|
||||
|
||||
#include "tools/gimpoperationtool.h"
|
||||
#include "tools/tool_manager.h"
|
||||
|
||||
@@ -64,6 +70,7 @@ static gint64 gimp_gegl_procedure_get_memsize (GimpObject *object,
|
||||
static gchar * gimp_gegl_procedure_get_description (GimpViewable *viewable,
|
||||
gchar **tooltip);
|
||||
|
||||
static const gchar * gimp_gegl_procedure_get_help_id (GimpProcedure *procedure);
|
||||
static const gchar * gimp_gegl_procedure_get_menu_label (GimpProcedure *procedure);
|
||||
static gboolean gimp_gegl_procedure_get_sensitive (GimpProcedure *procedure,
|
||||
GimpObject *object,
|
||||
@@ -103,6 +110,7 @@ gimp_gegl_procedure_class_init (GimpGeglProcedureClass *klass)
|
||||
viewable_class->default_icon_name = "gimp-gegl";
|
||||
viewable_class->get_description = gimp_gegl_procedure_get_description;
|
||||
|
||||
proc_class->get_help_id = gimp_gegl_procedure_get_help_id;
|
||||
proc_class->get_menu_label = gimp_gegl_procedure_get_menu_label;
|
||||
proc_class->get_sensitive = gimp_gegl_procedure_get_sensitive;
|
||||
proc_class->execute = gimp_gegl_procedure_execute;
|
||||
@@ -153,6 +161,41 @@ gimp_gegl_procedure_get_description (GimpViewable *viewable,
|
||||
return g_strdup (gimp_procedure_get_label (procedure));
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
gimp_gegl_procedure_get_help_id (GimpProcedure *procedure)
|
||||
{
|
||||
GimpGeglProcedure *proc = GIMP_GEGL_PROCEDURE (procedure);
|
||||
GList *managers;
|
||||
GimpActionGroup *group;
|
||||
const gchar *help_id = NULL;
|
||||
|
||||
managers = gimp_ui_managers_from_name ("<Image>");
|
||||
group = gimp_ui_manager_get_action_group (managers->data, "filters");
|
||||
|
||||
if (procedure->help_id)
|
||||
{
|
||||
return procedure->help_id;
|
||||
}
|
||||
else if (group)
|
||||
{
|
||||
GList *actions;
|
||||
GList *iter;
|
||||
|
||||
actions = gimp_action_group_list_actions (group);
|
||||
for (iter = actions; iter; iter = iter->next)
|
||||
if (GIMP_IS_STRING_ACTION (iter->data) &&
|
||||
g_strcmp0 (GIMP_STRING_ACTION (iter->data)->value, proc->operation) == 0)
|
||||
{
|
||||
help_id = gimp_action_get_help_id (iter->data);
|
||||
break;
|
||||
}
|
||||
|
||||
g_list_free (actions);
|
||||
}
|
||||
|
||||
return help_id == NULL ? GIMP_HELP_TOOL_GEGL : help_id;
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
gimp_gegl_procedure_get_menu_label (GimpProcedure *procedure)
|
||||
{
|
||||
@@ -210,10 +253,11 @@ gimp_gegl_procedure_execute (GimpProcedure *procedure,
|
||||
GObject **drawables;
|
||||
GObject *config;
|
||||
|
||||
image = g_value_get_object (gimp_value_array_index (args, 1));
|
||||
n_drawables = g_value_get_int (gimp_value_array_index (args, 2));
|
||||
drawables = gimp_value_get_object_array (gimp_value_array_index (args, 3));
|
||||
config = g_value_get_object (gimp_value_array_index (args, 4));
|
||||
image = g_value_get_object (gimp_value_array_index (args, 1));
|
||||
drawables = g_value_get_boxed (gimp_value_array_index (args, 2));
|
||||
config = g_value_get_object (gimp_value_array_index (args, 3));
|
||||
|
||||
n_drawables = gimp_core_object_array_get_length ((GObject **) drawables);
|
||||
|
||||
if (n_drawables == 1)
|
||||
{
|
||||
@@ -254,7 +298,7 @@ gimp_gegl_procedure_execute_async (GimpProcedure *procedure,
|
||||
const gchar *tool_name;
|
||||
|
||||
run_mode = g_value_get_enum (gimp_value_array_index (args, 0));
|
||||
settings = g_value_get_object (gimp_value_array_index (args, 4));
|
||||
settings = g_value_get_object (gimp_value_array_index (args, 3));
|
||||
|
||||
if (! settings &&
|
||||
(run_mode != GIMP_RUN_INTERACTIVE ||
|
||||
@@ -265,7 +309,7 @@ gimp_gegl_procedure_execute_async (GimpProcedure *procedure,
|
||||
GType config_type;
|
||||
GimpContainer *container;
|
||||
|
||||
config_type = G_VALUE_TYPE (gimp_value_array_index (args, 4));
|
||||
config_type = G_VALUE_TYPE (gimp_value_array_index (args, 3));
|
||||
|
||||
container = gimp_operation_config_get_container (gimp, config_type,
|
||||
(GCompareFunc)
|
||||
@@ -292,7 +336,7 @@ gimp_gegl_procedure_execute_async (GimpProcedure *procedure,
|
||||
{
|
||||
GimpValueArray *return_vals;
|
||||
|
||||
g_value_set_object (gimp_value_array_index (args, 4), settings);
|
||||
g_value_set_object (gimp_value_array_index (args, 3), settings);
|
||||
return_vals = gimp_procedure_execute (procedure, gimp, context, progress,
|
||||
args, NULL);
|
||||
gimp_value_array_unref (return_vals);
|
||||
@@ -376,6 +420,11 @@ gimp_gegl_procedure_execute_async (GimpProcedure *procedure,
|
||||
gimp_procedure_get_help_id (procedure));
|
||||
}
|
||||
|
||||
/* For custom GIMP operations, we need to set the existing filter to edit
|
||||
* before initializing so it doesn't create a separate filter. */
|
||||
if (gegl_procedure->filter)
|
||||
GIMP_FILTER_TOOL (active_tool)->existing_filter = gegl_procedure->filter;
|
||||
|
||||
tool_manager_initialize_active (gimp, display);
|
||||
|
||||
/* For GIMP-specific GEGL operations, we need to copy over the
|
||||
@@ -384,7 +433,6 @@ gimp_gegl_procedure_execute_async (GimpProcedure *procedure,
|
||||
{
|
||||
GeglNode *node;
|
||||
|
||||
GIMP_FILTER_TOOL (active_tool)->existing_filter = gegl_procedure->filter;
|
||||
gimp_filter_set_active (GIMP_FILTER (gegl_procedure->filter), FALSE);
|
||||
|
||||
node = gimp_drawable_filter_get_operation (gegl_procedure->filter);
|
||||
@@ -457,7 +505,7 @@ gimp_gegl_procedure_execute_async (GimpProcedure *procedure,
|
||||
|
||||
GimpProcedure *
|
||||
gimp_gegl_procedure_new (Gimp *gimp,
|
||||
GimpDrawableFilter *filter,
|
||||
GimpDrawableFilter *filter_to_edit,
|
||||
GimpRunMode default_run_mode,
|
||||
GimpObject *default_settings,
|
||||
const gchar *operation,
|
||||
@@ -483,7 +531,7 @@ gimp_gegl_procedure_new (Gimp *gimp,
|
||||
|
||||
gegl_procedure = GIMP_GEGL_PROCEDURE (procedure);
|
||||
|
||||
gegl_procedure->filter = filter;
|
||||
gegl_procedure->filter = filter_to_edit;
|
||||
gegl_procedure->operation = g_strdup (operation);
|
||||
gegl_procedure->default_run_mode = default_run_mode;
|
||||
gegl_procedure->menu_label = g_strdup (menu_label);
|
||||
@@ -514,17 +562,11 @@ gimp_gegl_procedure_new (Gimp *gimp,
|
||||
FALSE,
|
||||
GIMP_PARAM_READWRITE));
|
||||
gimp_procedure_add_argument (procedure,
|
||||
g_param_spec_int ("num-drawables",
|
||||
"N drawables",
|
||||
"The number of drawables",
|
||||
0, G_MAXINT32, 0,
|
||||
GIMP_PARAM_READWRITE));
|
||||
gimp_procedure_add_argument (procedure,
|
||||
gimp_param_spec_object_array ("drawables",
|
||||
"Drawables",
|
||||
"Input drawables",
|
||||
GIMP_TYPE_DRAWABLE,
|
||||
GIMP_PARAM_READWRITE));
|
||||
gimp_param_spec_core_object_array ("drawables",
|
||||
"Drawables",
|
||||
"Input drawables",
|
||||
GIMP_TYPE_DRAWABLE,
|
||||
GIMP_PARAM_READWRITE));
|
||||
gimp_procedure_add_argument (procedure,
|
||||
g_param_spec_object ("settings",
|
||||
"Settings",
|
||||
@@ -534,3 +576,11 @@ gimp_gegl_procedure_new (Gimp *gimp,
|
||||
|
||||
return procedure;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_gegl_procedure_is_editing_filter (GimpGeglProcedure *procedure)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_GEGL_PROCEDURE (procedure), FALSE);
|
||||
|
||||
return (procedure->filter != NULL);
|
||||
}
|
||||
|
@@ -18,9 +18,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __GIMP_GEGL_PROCEDURE_H__
|
||||
#define __GIMP_GEGL_PROCEDURE_H__
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "pdb/gimpprocedure.h"
|
||||
|
||||
@@ -57,15 +55,14 @@ struct _GimpGeglProcedureClass
|
||||
|
||||
GType gimp_gegl_procedure_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GimpProcedure * gimp_gegl_procedure_new (Gimp *gimp,
|
||||
GimpDrawableFilter *filter,
|
||||
GimpRunMode default_run_mode,
|
||||
GimpObject *default_settings,
|
||||
const gchar *operation,
|
||||
const gchar *name,
|
||||
const gchar *menu_label,
|
||||
const gchar *tooltip,
|
||||
const gchar *icon_name,
|
||||
const gchar *help_id);
|
||||
|
||||
#endif /* __GIMP_GEGL_PROCEDURE_H__ */
|
||||
GimpProcedure * gimp_gegl_procedure_new (Gimp *gimp,
|
||||
GimpDrawableFilter *filter_to_edit,
|
||||
GimpRunMode default_run_mode,
|
||||
GimpObject *default_settings,
|
||||
const gchar *operation,
|
||||
const gchar *name,
|
||||
const gchar *menu_label,
|
||||
const gchar *tooltip,
|
||||
const gchar *icon_name,
|
||||
const gchar *help_id);
|
||||
gboolean gimp_gegl_procedure_is_editing_filter (GimpGeglProcedure *procedure);
|
||||
|
@@ -630,26 +630,16 @@ gradient_editor_actions_update (GimpActionGroup *group,
|
||||
SET_SENSITIVE ("gradient-editor-load-left-09", left_editable);
|
||||
SET_SENSITIVE ("gradient-editor-load-left-10", left_editable);
|
||||
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[0]);
|
||||
SET_COLOR ("gradient-editor-load-left-01", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[1]);
|
||||
SET_COLOR ("gradient-editor-load-left-02", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[2]);
|
||||
SET_COLOR ("gradient-editor-load-left-03", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[3]);
|
||||
SET_COLOR ("gradient-editor-load-left-04", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[4]);
|
||||
SET_COLOR ("gradient-editor-load-left-05", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[5]);
|
||||
SET_COLOR ("gradient-editor-load-left-06", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[6]);
|
||||
SET_COLOR ("gradient-editor-load-left-07", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[7]);
|
||||
SET_COLOR ("gradient-editor-load-left-08", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[8]);
|
||||
SET_COLOR ("gradient-editor-load-left-09", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[9]);
|
||||
SET_COLOR ("gradient-editor-load-left-10", color, TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-01", editor->saved_colors[0], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-02", editor->saved_colors[1], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-03", editor->saved_colors[2], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-04", editor->saved_colors[3], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-05", editor->saved_colors[4], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-06", editor->saved_colors[5], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-07", editor->saved_colors[6], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-08", editor->saved_colors[7], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-09", editor->saved_colors[8], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-left-10", editor->saved_colors[9], TRUE);
|
||||
|
||||
SET_SENSITIVE ("gradient-editor-save-left-01", gradient);
|
||||
SET_SENSITIVE ("gradient-editor-save-left-02", gradient);
|
||||
@@ -662,26 +652,16 @@ gradient_editor_actions_update (GimpActionGroup *group,
|
||||
SET_SENSITIVE ("gradient-editor-save-left-09", gradient);
|
||||
SET_SENSITIVE ("gradient-editor-save-left-10", gradient);
|
||||
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[0]);
|
||||
SET_COLOR ("gradient-editor-save-left-01", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[1]);
|
||||
SET_COLOR ("gradient-editor-save-left-02", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[2]);
|
||||
SET_COLOR ("gradient-editor-save-left-03", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[3]);
|
||||
SET_COLOR ("gradient-editor-save-left-04", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[4]);
|
||||
SET_COLOR ("gradient-editor-save-left-05", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[5]);
|
||||
SET_COLOR ("gradient-editor-save-left-06", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[6]);
|
||||
SET_COLOR ("gradient-editor-save-left-07", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[7]);
|
||||
SET_COLOR ("gradient-editor-save-left-08", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[8]);
|
||||
SET_COLOR ("gradient-editor-save-left-09", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[9]);
|
||||
SET_COLOR ("gradient-editor-save-left-10", color, TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-01", editor->saved_colors[0], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-02", editor->saved_colors[1], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-03", editor->saved_colors[2], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-04", editor->saved_colors[3], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-05", editor->saved_colors[4], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-06", editor->saved_colors[5], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-07", editor->saved_colors[6], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-08", editor->saved_colors[7], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-09", editor->saved_colors[8], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-left-10", editor->saved_colors[9], TRUE);
|
||||
|
||||
SET_SENSITIVE ("gradient-editor-right-color-fixed", editable);
|
||||
SET_SENSITIVE ("gradient-editor-right-color-foreground", editable);
|
||||
@@ -741,26 +721,16 @@ gradient_editor_actions_update (GimpActionGroup *group,
|
||||
SET_SENSITIVE ("gradient-editor-load-right-09", right_editable);
|
||||
SET_SENSITIVE ("gradient-editor-load-right-10", right_editable);
|
||||
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[0]);
|
||||
SET_COLOR ("gradient-editor-load-right-01", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[1]);
|
||||
SET_COLOR ("gradient-editor-load-right-02", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[2]);
|
||||
SET_COLOR ("gradient-editor-load-right-03", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[3]);
|
||||
SET_COLOR ("gradient-editor-load-right-04", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[4]);
|
||||
SET_COLOR ("gradient-editor-load-right-05", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[5]);
|
||||
SET_COLOR ("gradient-editor-load-right-06", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[6]);
|
||||
SET_COLOR ("gradient-editor-load-right-07", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[7]);
|
||||
SET_COLOR ("gradient-editor-load-right-08", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[8]);
|
||||
SET_COLOR ("gradient-editor-load-right-09", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[9]);
|
||||
SET_COLOR ("gradient-editor-load-right-10", color, TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-01", editor->saved_colors[0], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-02", editor->saved_colors[1], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-03", editor->saved_colors[2], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-04", editor->saved_colors[3], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-05", editor->saved_colors[4], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-06", editor->saved_colors[5], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-07", editor->saved_colors[6], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-08", editor->saved_colors[7], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-09", editor->saved_colors[8], TRUE);
|
||||
SET_COLOR ("gradient-editor-load-right-10", editor->saved_colors[9], TRUE);
|
||||
|
||||
SET_SENSITIVE ("gradient-editor-save-right-01", gradient);
|
||||
SET_SENSITIVE ("gradient-editor-save-right-02", gradient);
|
||||
@@ -773,26 +743,16 @@ gradient_editor_actions_update (GimpActionGroup *group,
|
||||
SET_SENSITIVE ("gradient-editor-save-right-09", gradient);
|
||||
SET_SENSITIVE ("gradient-editor-save-right-10", gradient);
|
||||
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[0]);
|
||||
SET_COLOR ("gradient-editor-save-right-01", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[1]);
|
||||
SET_COLOR ("gradient-editor-save-right-02", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[2]);
|
||||
SET_COLOR ("gradient-editor-save-right-03", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[3]);
|
||||
SET_COLOR ("gradient-editor-save-right-04", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[4]);
|
||||
SET_COLOR ("gradient-editor-save-right-05", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[5]);
|
||||
SET_COLOR ("gradient-editor-save-right-06", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[6]);
|
||||
SET_COLOR ("gradient-editor-save-right-07", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[7]);
|
||||
SET_COLOR ("gradient-editor-save-right-08", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[8]);
|
||||
SET_COLOR ("gradient-editor-save-right-09", color, TRUE);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &editor->saved_colors[9]);
|
||||
SET_COLOR ("gradient-editor-save-right-10", color, TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-01", editor->saved_colors[0], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-02", editor->saved_colors[1], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-03", editor->saved_colors[2], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-04", editor->saved_colors[3], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-05", editor->saved_colors[4], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-06", editor->saved_colors[5], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-07", editor->saved_colors[6], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-08", editor->saved_colors[7], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-09", editor->saved_colors[8], TRUE);
|
||||
SET_COLOR ("gradient-editor-save-right-10", editor->saved_colors[9], TRUE);
|
||||
|
||||
SET_SENSITIVE ("gradient-editor-flip", editable);
|
||||
SET_SENSITIVE ("gradient-editor-replicate", editable);
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __GRADIENT_EDITOR_ACTIONS_H__
|
||||
#define __GRADIENT_EDITOR_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void gradient_editor_actions_setup (GimpActionGroup *group);
|
||||
void gradient_editor_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __GRADIENT_EDITOR_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __GRADIENT_EDITOR_COMMANDS_H__
|
||||
#define __GRADIENT_EDITOR_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
enum
|
||||
@@ -94,6 +93,3 @@ void gradient_editor_blend_opacity_cmd_callback (GimpAction *action,
|
||||
void gradient_editor_zoom_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __GRADIENT_EDITOR_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __GRADIENTS_ACTIONS_H__
|
||||
#define __GRADIENTS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void gradients_actions_setup (GimpActionGroup *group);
|
||||
void gradients_actions_update (GimpActionGroup *group,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
#endif /* __GRADIENT_ACTIONS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __GRADIENTS_COMMANDS_H__
|
||||
#define __GRADIENTS_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void gradients_save_as_pov_ray_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __GRADIENTS_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __HELP_ACTIONS_H__
|
||||
#define __HELP_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void help_actions_setup (GimpActionGroup *group);
|
||||
void help_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __HELP_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __HELP_COMMANDS_H__
|
||||
#define __HELP_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void help_help_cmd_callback (GimpAction *action,
|
||||
@@ -25,6 +24,3 @@ void help_help_cmd_callback (GimpAction *action,
|
||||
void help_context_help_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __HELP_COMMANDS_H__ */
|
||||
|
@@ -85,7 +85,7 @@ static const GimpActionEntry image_actions[] =
|
||||
NC_("image-action", "_Soft-proof Profile..."), NULL, { NULL },
|
||||
NC_("image-action", "Set the soft-proofing profile"),
|
||||
image_softproof_profile_cmd_callback,
|
||||
GIMP_HELP_VIEW_COLOR_MANAGEMENT },
|
||||
GIMP_HELP_IMAGE_SOFT_PROOF_PROFILE_ASSIGN },
|
||||
|
||||
{ "image-color-profile-save", NULL,
|
||||
NC_("image-action", "_Save Color Profile to File..."), NULL, { NULL },
|
||||
@@ -176,7 +176,7 @@ static const GimpToggleActionEntry image_toggle_actions[] =
|
||||
NC_("image-action", "Use black point compensation for soft-proofing"),
|
||||
image_softproof_bpc_cmd_callback,
|
||||
TRUE,
|
||||
GIMP_HELP_VIEW_COLOR_MANAGEMENT }
|
||||
GIMP_HELP_IMAGE_SOFT_PROOF_BLACK_POINT }
|
||||
};
|
||||
|
||||
static const GimpRadioActionEntry image_convert_base_type_actions[] =
|
||||
@@ -299,25 +299,25 @@ static const GimpRadioActionEntry image_softproof_intent_actions[] =
|
||||
NC_("image-action", "_Perceptual"), NULL, { NULL },
|
||||
NC_("image-action", "Soft-proofing rendering intent is perceptual"),
|
||||
GIMP_COLOR_RENDERING_INTENT_PERCEPTUAL,
|
||||
GIMP_HELP_VIEW_COLOR_MANAGEMENT },
|
||||
GIMP_HELP_IMAGE_SOFT_PROOF_RENDERING_INTENT },
|
||||
|
||||
{ "image-softproof-intent-relative-colorimetric", NULL,
|
||||
NC_("image-action", "_Relative Colorimetric"), NULL, { NULL },
|
||||
NC_("image-action", "Soft-proofing rendering intent is relative colorimetric"),
|
||||
GIMP_COLOR_RENDERING_INTENT_RELATIVE_COLORIMETRIC,
|
||||
GIMP_HELP_VIEW_COLOR_MANAGEMENT },
|
||||
GIMP_HELP_IMAGE_SOFT_PROOF_RENDERING_INTENT },
|
||||
|
||||
{ "image-softproof-intent-saturation", NULL,
|
||||
NC_("image-action", "_Saturation"), NULL, { NULL },
|
||||
NC_("image-action", "Soft-proofing rendering intent is saturation"),
|
||||
GIMP_COLOR_RENDERING_INTENT_SATURATION,
|
||||
GIMP_HELP_VIEW_COLOR_MANAGEMENT },
|
||||
GIMP_HELP_IMAGE_SOFT_PROOF_RENDERING_INTENT },
|
||||
|
||||
{ "image-softproof-intent-absolute-colorimetric", NULL,
|
||||
NC_("image-action", "_Absolute Colorimetric"), NULL, { NULL },
|
||||
NC_("image-action", "Soft-proofing rendering intent is absolute colorimetric"),
|
||||
GIMP_COLOR_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC,
|
||||
GIMP_HELP_VIEW_COLOR_MANAGEMENT }
|
||||
GIMP_HELP_IMAGE_SOFT_PROOF_RENDERING_INTENT }
|
||||
};
|
||||
|
||||
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __IMAGE_ACTIONS_H__
|
||||
#define __IMAGE_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void image_actions_setup (GimpActionGroup *group);
|
||||
void image_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __IMAGE_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __IMAGE_COMMANDS_H__
|
||||
#define __IMAGE_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void image_new_cmd_callback (GimpAction *action,
|
||||
@@ -106,5 +105,3 @@ void image_softproof_intent_cmd_callback (GimpAction *action,
|
||||
void image_softproof_bpc_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
#endif /* __IMAGE_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __IMAGES_ACTIONS_H__
|
||||
#define __IMAGES_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void images_actions_setup (GimpActionGroup *group);
|
||||
void images_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __IMAGES_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __IMAGES_COMMANDS_H__
|
||||
#define __IMAGES_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void images_raise_views_cmd_callback (GimpAction *action,
|
||||
@@ -28,6 +27,3 @@ void images_new_view_cmd_callback (GimpAction *action,
|
||||
void images_delete_image_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __IMAGES_COMMANDS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __ITEMS_ACTIONS_H__
|
||||
#define __ITEMS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void items_actions_setup (GimpActionGroup *group,
|
||||
@@ -24,6 +23,3 @@ void items_actions_setup (GimpActionGroup *group,
|
||||
void items_actions_update (GimpActionGroup *group,
|
||||
const gchar *prefix,
|
||||
GList *items);
|
||||
|
||||
|
||||
#endif /* __ITEMS_ACTIONS_H__ */
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __ITEMS_COMMANDS_H__
|
||||
#define __ITEMS_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void items_visible_cmd_callback (GimpAction *action,
|
||||
@@ -60,7 +59,3 @@ void items_stroke_last_vals_cmd_callback (GimpAction *action,
|
||||
GimpImage *image,
|
||||
GList *items,
|
||||
gpointer data);
|
||||
|
||||
|
||||
|
||||
#endif /* __ITEMS_COMMANDS_H__ */
|
||||
|
@@ -30,9 +30,12 @@
|
||||
#include "core/gimpimage.h"
|
||||
#include "core/gimplayer.h"
|
||||
#include "core/gimplayer-floating-selection.h"
|
||||
#include "core/gimplinklayer.h"
|
||||
|
||||
#include "text/gimptextlayer.h"
|
||||
|
||||
#include "path/gimpvectorlayer.h"
|
||||
|
||||
#include "widgets/gimphelp-ids.h"
|
||||
#include "widgets/gimpactiongroup.h"
|
||||
#include "widgets/gimpwidgets-utils.h"
|
||||
@@ -60,6 +63,12 @@ static const GimpActionEntry layers_actions[] =
|
||||
layers_edit_text_cmd_callback,
|
||||
GIMP_HELP_LAYER_EDIT },
|
||||
|
||||
{ "layers-edit-vector", GIMP_ICON_TOOL_PATH,
|
||||
NC_("layers-action", "Path Tool"), NULL, { NULL },
|
||||
NC_("layers-action", "Activate the path tool on this vector layer's path"),
|
||||
layers_edit_vector_cmd_callback,
|
||||
GIMP_HELP_TOOL_PATH },
|
||||
|
||||
{ "layers-edit-attributes", GIMP_ICON_EDIT,
|
||||
NC_("layers-action", "_Edit Layer Attributes..."), NULL, { NULL },
|
||||
NC_("layers-action", "Edit the layer's name"),
|
||||
@@ -173,24 +182,48 @@ static const GimpActionEntry layers_actions[] =
|
||||
image_flatten_image_cmd_callback,
|
||||
GIMP_HELP_IMAGE_FLATTEN },
|
||||
|
||||
{ "layers-link-discard", GIMP_ICON_TOOL_TEXT,
|
||||
NC_("layers-action", "_Discard Link Information"), NULL, { NULL },
|
||||
NC_("layers-action", "Turn this link layer into a normal layer"),
|
||||
layers_link_discard_cmd_callback,
|
||||
GIMP_HELP_LAYER_TEXT_DISCARD },
|
||||
|
||||
{ "layers-link-monitor", GIMP_ICON_TOOL_TEXT,
|
||||
NC_("layers-action", "_Monitor Linked Image"), NULL, { NULL },
|
||||
NC_("layers-action", "Discard any transformation and monitor the linked file again"),
|
||||
layers_link_monitor_cmd_callback,
|
||||
GIMP_HELP_LAYER_TEXT_DISCARD },
|
||||
|
||||
{ "layers-text-discard", GIMP_ICON_TOOL_TEXT,
|
||||
NC_("layers-action", "_Discard Text Information"), NULL, { NULL },
|
||||
NC_("layers-action", "Turn these text layers into normal layers"),
|
||||
layers_text_discard_cmd_callback,
|
||||
GIMP_HELP_LAYER_TEXT_DISCARD },
|
||||
|
||||
{ "layers-text-to-vectors", GIMP_ICON_TOOL_TEXT,
|
||||
{ "layers-text-to-path", GIMP_ICON_TOOL_TEXT,
|
||||
NC_("layers-action", "Text to _Path"), NULL, { NULL },
|
||||
NC_("layers-action", "Create paths from text layers"),
|
||||
layers_text_to_vectors_cmd_callback,
|
||||
layers_text_to_path_cmd_callback,
|
||||
GIMP_HELP_LAYER_TEXT_TO_PATH },
|
||||
|
||||
{ "layers-text-along-vectors", GIMP_ICON_TOOL_TEXT,
|
||||
{ "layers-text-along-path", GIMP_ICON_TOOL_TEXT,
|
||||
NC_("layers-action", "Text alon_g Path"), NULL, { NULL },
|
||||
NC_("layers-action", "Warp this layer's text along the current path"),
|
||||
layers_text_along_vectors_cmd_callback,
|
||||
layers_text_along_path_cmd_callback,
|
||||
GIMP_HELP_LAYER_TEXT_ALONG_PATH },
|
||||
|
||||
{ "layers-vector-fill-stroke", NULL,
|
||||
NC_("layers-action", "Fill / Stroke..."), NULL, { NULL },
|
||||
NC_("layers-action", "Edit the fill and stroke of this vector layer"),
|
||||
layers_vector_fill_stroke_cmd_callback,
|
||||
GIMP_HELP_LAYER_VECTOR_FILL_STROKE },
|
||||
|
||||
{ "layers-vector-discard", NULL,
|
||||
NC_("layers-action", "Discard Vector Information"), NULL, { NULL },
|
||||
NC_("layers-action", "Turn this vector layer into a normal layer"),
|
||||
layers_vector_discard_cmd_callback,
|
||||
GIMP_HELP_LAYER_VECTOR_DISCARD },
|
||||
|
||||
{ "layers-resize", GIMP_ICON_OBJECT_RESIZE,
|
||||
NC_("layers-action", "Layer B_oundary Size..."), NULL, { NULL },
|
||||
NC_("layers-action", "Adjust the layer dimensions"),
|
||||
@@ -321,6 +354,12 @@ static const GimpRadioActionEntry layers_blend_space_actions[] =
|
||||
GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
|
||||
NULL },
|
||||
|
||||
{ "layers-blend-space-rgb-non-linear", NULL,
|
||||
NC_("layers-action", "RGB (from color profile)"), NULL, { NULL },
|
||||
NC_("layers-action", "Layer Blend Space: RGB (from color profile)"),
|
||||
GIMP_LAYER_COLOR_SPACE_RGB_NON_LINEAR,
|
||||
NULL },
|
||||
|
||||
{ "layers-blend-space-rgb-perceptual", NULL,
|
||||
NC_("layers-action", "RGB (perceptual)"), NULL, { NULL },
|
||||
NC_("layers-action", "Layer Blend Space: RGB (perceptual)"),
|
||||
@@ -342,6 +381,12 @@ static const GimpRadioActionEntry layers_composite_space_actions[] =
|
||||
GIMP_LAYER_COLOR_SPACE_RGB_LINEAR,
|
||||
NULL },
|
||||
|
||||
{ "layers-composite-space-rgb-non-linear", NULL,
|
||||
NC_("layers-action", "RGB (from color profile)"), NULL, { NULL },
|
||||
NC_("layers-action", "Layer Composite Space: RGB (from color profile)"),
|
||||
GIMP_LAYER_COLOR_SPACE_RGB_NON_LINEAR,
|
||||
NULL },
|
||||
|
||||
{ "layers-composite-space-rgb-perceptual", NULL,
|
||||
NC_("layers-action", "RGB (perceptual)"), NULL, { NULL },
|
||||
NC_("layers-action", "Layer Composite Space: RGB (perceptual)"),
|
||||
@@ -745,6 +790,8 @@ layers_actions_update (GimpActionGroup *group,
|
||||
gboolean lock_alpha = TRUE;
|
||||
gboolean can_lock_alpha = FALSE;
|
||||
gboolean text_layer = FALSE;
|
||||
gboolean vector_layer = FALSE;
|
||||
gboolean link_layer = FALSE;
|
||||
gboolean bs_mutable = FALSE; /* At least 1 selected layers' blend space is mutable. */
|
||||
gboolean cs_mutable = FALSE; /* At least 1 selected layers' composite space is mutable. */
|
||||
gboolean cm_mutable = FALSE; /* At least 1 selected layers' composite mode is mutable. */
|
||||
@@ -768,8 +815,8 @@ layers_actions_update (GimpActionGroup *group,
|
||||
|
||||
gboolean all_visible = TRUE;
|
||||
gboolean all_next_visible = TRUE;
|
||||
gboolean all_masks_shown = TRUE;
|
||||
gboolean all_masks_disabled = TRUE;
|
||||
gboolean any_mask_shown = FALSE;
|
||||
gboolean any_mask_disabled = FALSE;
|
||||
gboolean all_writable = TRUE;
|
||||
gboolean all_movable = TRUE;
|
||||
|
||||
@@ -804,10 +851,11 @@ layers_actions_update (GimpActionGroup *group,
|
||||
if (gimp_layer_get_mask (iter->data))
|
||||
{
|
||||
have_masks = TRUE;
|
||||
if (! gimp_layer_get_show_mask (iter->data))
|
||||
all_masks_shown = FALSE;
|
||||
if (gimp_layer_get_apply_mask (iter->data))
|
||||
all_masks_disabled = FALSE;
|
||||
|
||||
if (gimp_layer_get_show_mask (iter->data))
|
||||
any_mask_shown = TRUE;
|
||||
if (! gimp_layer_get_apply_mask (iter->data))
|
||||
any_mask_disabled = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -920,6 +968,8 @@ layers_actions_update (GimpActionGroup *group,
|
||||
action = "layers-blend-space-auto"; break;
|
||||
case GIMP_LAYER_COLOR_SPACE_RGB_LINEAR:
|
||||
action = "layers-blend-space-rgb-linear"; break;
|
||||
case GIMP_LAYER_COLOR_SPACE_RGB_NON_LINEAR:
|
||||
action = "layers-blend-space-rgb-non-linear"; break;
|
||||
case GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL:
|
||||
action = "layers-blend-space-rgb-perceptual"; break;
|
||||
default:
|
||||
@@ -935,6 +985,8 @@ layers_actions_update (GimpActionGroup *group,
|
||||
action = "layers-composite-space-auto"; break;
|
||||
case GIMP_LAYER_COLOR_SPACE_RGB_LINEAR:
|
||||
action = "layers-composite-space-rgb-linear"; break;
|
||||
case GIMP_LAYER_COLOR_SPACE_RGB_NON_LINEAR:
|
||||
action = "layers-composite-space-rgb-non-linear"; break;
|
||||
case GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL:
|
||||
action = "layers-composite-space-rgb-perceptual"; break;
|
||||
default:
|
||||
@@ -960,7 +1012,10 @@ layers_actions_update (GimpActionGroup *group,
|
||||
|
||||
gimp_action_group_set_action_active (group, action, TRUE);
|
||||
|
||||
text_layer = gimp_item_is_text_layer (GIMP_ITEM (layer));
|
||||
text_layer = gimp_item_is_text_layer (GIMP_ITEM (layer));
|
||||
vector_layer = gimp_item_is_vector_layer (GIMP_ITEM (layer));
|
||||
if (GIMP_IS_LINK_LAYER (layer))
|
||||
link_layer = gimp_link_layer_is_monitored (GIMP_LINK_LAYER (layer));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -976,6 +1031,7 @@ layers_actions_update (GimpActionGroup *group,
|
||||
SET_SENSITIVE ("layers-edit", !ac && ((layer && !fs) || text_layer));
|
||||
SET_VISIBLE ("layers-edit-text", text_layer && !ac);
|
||||
SET_SENSITIVE ("layers-edit-text", text_layer && !ac);
|
||||
SET_VISIBLE ("layers-edit-vector", vector_layer && !ac);
|
||||
SET_SENSITIVE ("layers-edit-attributes", layer && !fs && !ac);
|
||||
|
||||
if (layer && gimp_layer_is_floating_sel (layer))
|
||||
@@ -1021,9 +1077,15 @@ layers_actions_update (GimpActionGroup *group,
|
||||
SET_SENSITIVE ("layers-merge-layers", n_selected_layers > 0 && !fs && !ac);
|
||||
SET_SENSITIVE ("layers-flatten-image", !fs && !ac);
|
||||
|
||||
SET_VISIBLE ("layers-text-discard", n_text_layers > 0 && !ac);
|
||||
SET_VISIBLE ("layers-text-to-vectors", n_text_layers > 0 && !ac);
|
||||
SET_VISIBLE ("layers-text-along-vectors", text_layer && !ac);
|
||||
SET_VISIBLE ("layers-text-discard", n_text_layers > 0 && !ac);
|
||||
SET_VISIBLE ("layers-text-to-path", n_text_layers > 0 && !ac);
|
||||
SET_VISIBLE ("layers-text-along-path", text_layer && !ac);
|
||||
|
||||
SET_VISIBLE ("layers-vector-fill-stroke", vector_layer && !ac);
|
||||
SET_VISIBLE ("layers-vector-discard", vector_layer && !ac);
|
||||
|
||||
SET_VISIBLE ("layers-link-discard", link_layer && !ac);
|
||||
SET_VISIBLE ("layers-link-monitor", GIMP_IS_LINK_LAYER (layer) && ! link_layer && !ac);
|
||||
|
||||
SET_SENSITIVE ("layers-resize", n_selected_layers == 1 && all_writable && all_movable && !ac);
|
||||
SET_SENSITIVE ("layers-resize-to-image", all_writable && all_movable && !ac);
|
||||
@@ -1040,10 +1102,12 @@ layers_actions_update (GimpActionGroup *group,
|
||||
|
||||
SET_SENSITIVE ("layers-blend-space-auto", n_selected_layers && bs_mutable);
|
||||
SET_SENSITIVE ("layers-blend-space-rgb-linear", n_selected_layers && bs_mutable);
|
||||
SET_SENSITIVE ("layers-blend-space-rgb-non-linear", n_selected_layers && bs_mutable);
|
||||
SET_SENSITIVE ("layers-blend-space-rgb-perceptual", n_selected_layers && bs_mutable);
|
||||
|
||||
SET_SENSITIVE ("layers-composite-space-auto", n_selected_layers && cs_mutable);
|
||||
SET_SENSITIVE ("layers-composite-space-rgb-linear", n_selected_layers && cs_mutable);
|
||||
SET_SENSITIVE ("layers-composite-space-rgb-non-linear", n_selected_layers && cs_mutable);
|
||||
SET_SENSITIVE ("layers-composite-space-rgb-perceptual", n_selected_layers && cs_mutable);
|
||||
|
||||
SET_SENSITIVE ("layers-composite-mode-auto", n_selected_layers && cm_mutable);
|
||||
@@ -1064,8 +1128,8 @@ layers_actions_update (GimpActionGroup *group,
|
||||
SET_SENSITIVE ("layers-mask-disable", n_selected_layers > 0 && !fs && !ac && have_masks);
|
||||
|
||||
SET_ACTIVE ("layers-mask-edit", n_selected_layers == 1 && have_masks && gimp_layer_get_edit_mask (layers->data));
|
||||
SET_ACTIVE ("layers-mask-show", all_masks_shown);
|
||||
SET_ACTIVE ("layers-mask-disable", all_masks_disabled);
|
||||
SET_ACTIVE ("layers-mask-show", any_mask_shown);
|
||||
SET_ACTIVE ("layers-mask-disable", any_mask_disabled);
|
||||
|
||||
SET_SENSITIVE ("layers-mask-selection-replace", n_selected_layers && !fs && !ac && have_masks);
|
||||
SET_SENSITIVE ("layers-mask-selection-add", n_selected_layers && !fs && !ac && have_masks);
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __LAYERS_ACTIONS_H__
|
||||
#define __LAYERS_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void layers_actions_setup (GimpActionGroup *group);
|
||||
void layers_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __LAYERS_ACTIONS_H__ */
|
||||
|
@@ -39,8 +39,6 @@
|
||||
#include "core/gimpcontainer.h"
|
||||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpdrawable-fill.h"
|
||||
#include "core/gimpdrawable-filters.h"
|
||||
#include "core/gimpdrawablefilter.h"
|
||||
#include "core/gimpgrouplayer.h"
|
||||
#include "core/gimpimage.h"
|
||||
#include "core/gimpimage-merge.h"
|
||||
@@ -50,6 +48,8 @@
|
||||
#include "core/gimplayerpropundo.h"
|
||||
#include "core/gimplayer-floating-selection.h"
|
||||
#include "core/gimplayer-new.h"
|
||||
#include "core/gimplink.h"
|
||||
#include "core/gimplinklayer.h"
|
||||
#include "core/gimplist.h"
|
||||
#include "core/gimppickable.h"
|
||||
#include "core/gimppickable-auto-shrink.h"
|
||||
@@ -57,23 +57,27 @@
|
||||
#include "core/gimpundostack.h"
|
||||
#include "core/gimpprogress.h"
|
||||
|
||||
#include "path/gimppath.h"
|
||||
#include "path/gimppath-warp.h"
|
||||
#include "path/gimpstroke.h"
|
||||
#include "path/gimpvectorlayer.h"
|
||||
#include "path/gimpvectorlayeroptions.h"
|
||||
|
||||
#include "text/gimptext.h"
|
||||
#include "text/gimptext-path.h"
|
||||
#include "text/gimptextlayer.h"
|
||||
|
||||
#include "vectors/gimppath.h"
|
||||
#include "vectors/gimppath-warp.h"
|
||||
#include "vectors/gimpstroke.h"
|
||||
|
||||
#include "widgets/gimpaction.h"
|
||||
#include "widgets/gimpdock.h"
|
||||
#include "widgets/gimphelp-ids.h"
|
||||
#include "widgets/gimpopendialog.h"
|
||||
#include "widgets/gimpprogressdialog.h"
|
||||
|
||||
#include "display/gimpdisplay.h"
|
||||
#include "display/gimpdisplayshell.h"
|
||||
#include "display/gimpimagewindow.h"
|
||||
|
||||
#include "tools/gimppathtool.h"
|
||||
#include "tools/gimptexttool.h"
|
||||
#include "tools/tool_manager.h"
|
||||
|
||||
@@ -82,6 +86,7 @@
|
||||
#include "dialogs/layer-options-dialog.h"
|
||||
#include "dialogs/resize-dialog.h"
|
||||
#include "dialogs/scale-dialog.h"
|
||||
#include "dialogs/vector-layer-options-dialog.h"
|
||||
|
||||
#include "actions.h"
|
||||
#include "items-commands.h"
|
||||
@@ -103,6 +108,7 @@ static void layers_new_callback (GtkWidget *dialog,
|
||||
GimpLayerCompositeMode layer_composite_mode,
|
||||
gdouble layer_opacity,
|
||||
GimpFillType layer_fill_type,
|
||||
GimpLink *link,
|
||||
gint layer_width,
|
||||
gint layer_height,
|
||||
gint layer_offset_x,
|
||||
@@ -126,6 +132,7 @@ static void layers_edit_attributes_callback (GtkWidget *dialog,
|
||||
GimpLayerCompositeMode layer_composite_mode,
|
||||
gdouble layer_opacity,
|
||||
GimpFillType layer_fill_type,
|
||||
GimpLink *link,
|
||||
gint layer_width,
|
||||
gint layer_height,
|
||||
gint layer_offset_x,
|
||||
@@ -143,6 +150,7 @@ static void layers_add_mask_callback (GtkWidget *dialog,
|
||||
GimpAddMaskType add_mask_type,
|
||||
GimpChannel *channel,
|
||||
gboolean invert,
|
||||
gboolean edit_mask,
|
||||
gpointer user_data);
|
||||
static void layers_scale_callback (GtkWidget *dialog,
|
||||
GimpViewable *viewable,
|
||||
@@ -202,6 +210,10 @@ layers_edit_cmd_callback (GimpAction *action,
|
||||
{
|
||||
layers_edit_text_cmd_callback (action, value, data);
|
||||
}
|
||||
else if (gimp_item_is_vector_layer (GIMP_ITEM (layers->data)))
|
||||
{
|
||||
layers_vector_fill_stroke_cmd_callback (action, value, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
layers_edit_attributes_cmd_callback (action, value, data);
|
||||
@@ -253,6 +265,52 @@ layers_edit_text_cmd_callback (GimpAction *action,
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
layers_edit_vector_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *image;
|
||||
GimpLayer *layer;
|
||||
GList *layers;
|
||||
GtkWidget *widget;
|
||||
GimpTool *active_tool;
|
||||
return_if_no_layers (image, layers, data);
|
||||
return_if_no_widget (widget, data);
|
||||
|
||||
if (g_list_length (layers) != 1)
|
||||
return;
|
||||
|
||||
layer = layers->data;
|
||||
|
||||
if (! gimp_item_is_vector_layer (GIMP_ITEM (layer)))
|
||||
{
|
||||
layers_edit_attributes_cmd_callback (action, value, data);
|
||||
return;
|
||||
}
|
||||
|
||||
active_tool = tool_manager_get_active (image->gimp);
|
||||
|
||||
if (! GIMP_IS_PATH_TOOL (active_tool))
|
||||
{
|
||||
GimpToolInfo *tool_info;
|
||||
|
||||
tool_info = (GimpToolInfo *)
|
||||
gimp_container_get_child_by_name (image->gimp->tool_info_list,
|
||||
"gimp-path-tool");
|
||||
|
||||
if (GIMP_IS_TOOL_INFO (tool_info))
|
||||
{
|
||||
gimp_context_set_tool (action_data_get_context (data), tool_info);
|
||||
active_tool = tool_manager_get_active (image->gimp);
|
||||
}
|
||||
}
|
||||
|
||||
if (GIMP_IS_PATH_TOOL (active_tool))
|
||||
gimp_path_tool_set_path (GIMP_PATH_TOOL (active_tool),
|
||||
GIMP_VECTOR_LAYER (layer)->options->path);
|
||||
}
|
||||
|
||||
void
|
||||
layers_edit_attributes_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
@@ -271,6 +329,9 @@ layers_edit_attributes_cmd_callback (GimpAction *action,
|
||||
|
||||
layer = layers->data;
|
||||
|
||||
if (gimp_layer_is_floating_sel (layer))
|
||||
return;
|
||||
|
||||
#define EDIT_DIALOG_KEY "gimp-layer-edit-attributes-dialog"
|
||||
|
||||
dialog = dialogs_get_dialog (G_OBJECT (layer), EDIT_DIALOG_KEY);
|
||||
@@ -444,6 +505,7 @@ layers_new_last_vals_cmd_callback (GimpAction *action,
|
||||
ngettext ("New layer",
|
||||
"New layers",
|
||||
n_layers > 0 ? n_layers : 1));
|
||||
|
||||
for (iter = layers; iter || run_once ; iter = iter ? iter->next : NULL)
|
||||
{
|
||||
GimpLayer *parent;
|
||||
@@ -489,11 +551,13 @@ layers_new_last_vals_cmd_callback (GimpAction *action,
|
||||
gimp_image_add_layer (image, layer, parent, position, TRUE);
|
||||
new_layers = g_list_prepend (new_layers, layer);
|
||||
}
|
||||
|
||||
gimp_image_set_selected_layers (image, new_layers);
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (layers);
|
||||
g_list_free (new_layers);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
@@ -547,6 +611,7 @@ layers_new_group_cmd_callback (GimpAction *action,
|
||||
layers = g_list_copy (layers);
|
||||
n_layers = g_list_length (layers);
|
||||
run_once = (n_layers == 0);
|
||||
|
||||
gimp_image_undo_group_start (image,
|
||||
GIMP_UNDO_GROUP_LAYER_ADD,
|
||||
ngettext ("New layer group",
|
||||
@@ -585,11 +650,13 @@ layers_new_group_cmd_callback (GimpAction *action,
|
||||
}
|
||||
|
||||
gimp_image_set_selected_layers (image, new_layers);
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
|
||||
g_list_free (layers);
|
||||
g_list_free (new_layers);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
@@ -662,7 +729,6 @@ layers_raise_cmd_callback (GimpAction *action,
|
||||
}
|
||||
else
|
||||
{
|
||||
gimp_image_flush (image);
|
||||
g_list_free (raised_layers);
|
||||
return;
|
||||
}
|
||||
@@ -677,11 +743,10 @@ layers_raise_cmd_callback (GimpAction *action,
|
||||
raised_layers = g_list_reverse (raised_layers);
|
||||
for (iter = raised_layers; iter; iter = iter->next)
|
||||
gimp_image_raise_item (image, iter->data, NULL);
|
||||
|
||||
gimp_image_flush (image);
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (raised_layers);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -713,10 +778,10 @@ layers_raise_to_top_cmd_callback (GimpAction *action,
|
||||
for (iter = raised_layers; iter; iter = iter->next)
|
||||
gimp_image_raise_item_to_top (image, iter->data);
|
||||
|
||||
gimp_image_flush (image);
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (raised_layers);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -743,7 +808,6 @@ layers_lower_cmd_callback (GimpAction *action,
|
||||
}
|
||||
else
|
||||
{
|
||||
gimp_image_flush (image);
|
||||
g_list_free (lowered_layers);
|
||||
return;
|
||||
}
|
||||
@@ -758,10 +822,10 @@ layers_lower_cmd_callback (GimpAction *action,
|
||||
for (iter = lowered_layers; iter; iter = iter->next)
|
||||
gimp_image_lower_item (image, iter->data, NULL);
|
||||
|
||||
gimp_image_flush (image);
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (lowered_layers);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -795,10 +859,10 @@ layers_lower_to_bottom_cmd_callback (GimpAction *action,
|
||||
for (iter = lowered_layers; iter; iter = iter->next)
|
||||
gimp_image_lower_item_to_bottom (image, iter->data);
|
||||
|
||||
gimp_image_flush (image);
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (lowered_layers);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -818,8 +882,7 @@ layers_duplicate_cmd_callback (GimpAction *action,
|
||||
_("Duplicate layers"));
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
{
|
||||
GimpLayer *new_layer;
|
||||
GimpContainer *filters;
|
||||
GimpLayer *new_layer;
|
||||
|
||||
new_layer = GIMP_LAYER (gimp_item_duplicate (GIMP_ITEM (iter->data),
|
||||
G_TYPE_FROM_INSTANCE (iter->data)));
|
||||
@@ -832,40 +895,8 @@ layers_duplicate_cmd_callback (GimpAction *action,
|
||||
gimp_layer_get_parent (iter->data),
|
||||
gimp_item_get_index (iter->data),
|
||||
TRUE);
|
||||
gimp_drawable_enable_resize_undo (GIMP_DRAWABLE (new_layer));
|
||||
new_layers = g_list_prepend (new_layers, new_layer);
|
||||
|
||||
/* Import any attached layer effects */
|
||||
filters = gimp_drawable_get_filters (GIMP_DRAWABLE (iter->data));
|
||||
if (gimp_container_get_n_children (filters) > 0)
|
||||
{
|
||||
GList *filter_list;
|
||||
GimpContainer *filters;
|
||||
|
||||
filters = gimp_drawable_get_filters (GIMP_DRAWABLE (iter->data));
|
||||
|
||||
for (filter_list = GIMP_LIST (filters)->queue->tail; filter_list;
|
||||
filter_list = g_list_previous (filter_list))
|
||||
{
|
||||
if (GIMP_IS_DRAWABLE_FILTER (filter_list->data))
|
||||
{
|
||||
GimpDrawableFilter *old_filter = filter_list->data;
|
||||
GimpDrawableFilter *filter;
|
||||
|
||||
filter =
|
||||
gimp_drawable_filter_duplicate (GIMP_DRAWABLE (new_layer),
|
||||
old_filter);
|
||||
|
||||
if (filter != NULL)
|
||||
{
|
||||
gimp_drawable_filter_apply (filter, NULL);
|
||||
gimp_drawable_filter_commit (filter, TRUE, NULL, FALSE);
|
||||
|
||||
gimp_drawable_filter_layer_mask_freeze (filter);
|
||||
g_object_unref (filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gimp_image_set_selected_layers (image, new_layers);
|
||||
@@ -918,6 +949,7 @@ layers_merge_down_cmd_callback (GimpAction *action,
|
||||
g_clear_error (&error);
|
||||
return;
|
||||
}
|
||||
|
||||
gimp_image_set_selected_layers (image, layers);
|
||||
g_list_free (layers);
|
||||
|
||||
@@ -943,11 +975,47 @@ layers_merge_group_cmd_callback (GimpAction *action,
|
||||
|
||||
for (iter2 = layers; iter2; iter2 = iter2->next)
|
||||
{
|
||||
if (iter->data == iter2->data)
|
||||
continue;
|
||||
|
||||
/* Do not merge a layer when we already merge one of its
|
||||
* ancestors.
|
||||
*/
|
||||
if (gimp_viewable_is_ancestor (iter2->data, iter->data))
|
||||
break;
|
||||
|
||||
/* Do not merge a layer which has a little sister (same
|
||||
* parent and smaller index) or a little cousin (one of
|
||||
* its ancestors is a little sister) of a pass-through
|
||||
* group layer.
|
||||
* These will be rendered and merged through the
|
||||
* pass-through by definition.
|
||||
*/
|
||||
if (gimp_viewable_get_children (GIMP_VIEWABLE (iter2->data)) &&
|
||||
gimp_layer_get_mode (iter2->data) == GIMP_LAYER_MODE_PASS_THROUGH)
|
||||
{
|
||||
GimpLayer *pass_through_parent = gimp_layer_get_parent (iter2->data);
|
||||
GimpLayer *cousin = iter->data;
|
||||
gboolean ignore = FALSE;
|
||||
|
||||
do
|
||||
{
|
||||
GimpLayer *cousin_parent = gimp_layer_get_parent (cousin);
|
||||
|
||||
if (pass_through_parent == cousin_parent &&
|
||||
gimp_item_get_index (GIMP_ITEM (iter2->data)) < gimp_item_get_index (GIMP_ITEM (cousin)))
|
||||
{
|
||||
ignore = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
cousin = cousin_parent;
|
||||
}
|
||||
while (cousin != NULL);
|
||||
|
||||
if (ignore)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (iter2 == NULL)
|
||||
@@ -973,6 +1041,7 @@ layers_merge_group_cmd_callback (GimpAction *action,
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (merge_layers);
|
||||
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
@@ -999,7 +1068,7 @@ layers_delete_cmd_callback (GimpAction *action,
|
||||
removed_layers = g_list_copy (layers);
|
||||
|
||||
/* Removing children layers (they will be removed anyway by removing
|
||||
* the parent.
|
||||
* the parent).
|
||||
*/
|
||||
for (iter = removed_layers; iter; iter = iter->next)
|
||||
{
|
||||
@@ -1032,9 +1101,46 @@ layers_delete_cmd_callback (GimpAction *action,
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (removed_layers);
|
||||
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
void
|
||||
layers_link_discard_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *image;
|
||||
GList *layers;
|
||||
GList *iter;
|
||||
return_if_no_layers (image, layers, data);
|
||||
|
||||
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_PROPERTIES,
|
||||
_("Discard Links"));
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
if (GIMP_IS_LINK_LAYER (iter->data))
|
||||
gimp_link_layer_discard (GIMP_LINK_LAYER (iter->data));
|
||||
gimp_image_undo_group_end (image);
|
||||
}
|
||||
|
||||
void
|
||||
layers_link_monitor_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *image;
|
||||
GList *layers;
|
||||
GList *iter;
|
||||
return_if_no_layers (image, layers, data);
|
||||
|
||||
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_PROPERTIES,
|
||||
_("Monitor Links"));
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
if (GIMP_IS_LINK_LAYER (iter->data))
|
||||
gimp_link_layer_monitor (GIMP_LINK_LAYER (iter->data));
|
||||
gimp_image_undo_group_end (image);
|
||||
}
|
||||
|
||||
void
|
||||
layers_text_discard_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
@@ -1054,18 +1160,20 @@ layers_text_discard_cmd_callback (GimpAction *action,
|
||||
}
|
||||
|
||||
void
|
||||
layers_text_to_vectors_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
layers_text_to_path_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *image;
|
||||
GList *layers;
|
||||
GList *iter;
|
||||
gboolean path_added = FALSE;
|
||||
return_if_no_layers (image, layers, data);
|
||||
|
||||
/* TODO: have the proper undo group. */
|
||||
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_PATHS_IMPORT,
|
||||
_("Add Paths"));
|
||||
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
{
|
||||
GimpLayer *layer = iter->data;
|
||||
@@ -1082,16 +1190,20 @@ layers_text_to_vectors_cmd_callback (GimpAction *action,
|
||||
|
||||
gimp_image_add_path (image, path,
|
||||
GIMP_IMAGE_ACTIVE_PARENT, -1, TRUE);
|
||||
gimp_image_flush (image);
|
||||
path_added = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
if (path_added)
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
void
|
||||
layers_text_along_vectors_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
layers_text_along_path_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *image;
|
||||
GList *layers;
|
||||
@@ -1220,6 +1332,7 @@ layers_resize_to_image_cmd_callback (GimpAction *action,
|
||||
if (g_list_length (layers) > 1)
|
||||
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_RESIZE,
|
||||
_("Layers to Image Size"));
|
||||
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
gimp_layer_resize_to_image (iter->data,
|
||||
action_data_get_context (data),
|
||||
@@ -1405,8 +1518,9 @@ layers_crop_to_content_cmd_callback (GimpAction *action,
|
||||
break;
|
||||
}
|
||||
}
|
||||
gimp_image_flush (image);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1455,6 +1569,7 @@ layers_mask_add_cmd_callback (GimpAction *action,
|
||||
widget,
|
||||
config->layer_add_mask_type,
|
||||
config->layer_add_mask_invert,
|
||||
config->layer_add_mask_edit_mask,
|
||||
layers_add_mask_callback,
|
||||
NULL);
|
||||
|
||||
@@ -1530,11 +1645,12 @@ layers_mask_add_last_vals_cmd_callback (GimpAction *action,
|
||||
if (config->layer_add_mask_invert)
|
||||
gimp_channel_invert (GIMP_CHANNEL (mask), FALSE);
|
||||
|
||||
gimp_layer_add_mask (iter->data, mask, TRUE, NULL);
|
||||
gimp_layer_add_mask (iter->data, mask,
|
||||
config->layer_add_mask_edit_mask,
|
||||
TRUE, NULL);
|
||||
}
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
@@ -1561,6 +1677,7 @@ layers_mask_apply_cmd_callback (GimpAction *action,
|
||||
! gimp_item_is_content_locked (GIMP_ITEM (iter->data), NULL))))
|
||||
break;
|
||||
}
|
||||
|
||||
if (iter == NULL)
|
||||
/* No layers or none have applicable masks. */
|
||||
return;
|
||||
@@ -1635,43 +1752,47 @@ layers_mask_show_cmd_callback (GimpAction *action,
|
||||
GimpImage *image;
|
||||
GList *layers;
|
||||
GList *iter;
|
||||
gboolean active = g_variant_get_boolean (value);
|
||||
gboolean have_masks = FALSE;
|
||||
gboolean active = g_variant_get_boolean (value);
|
||||
gint n_masks = 0;
|
||||
return_if_no_layers (image, layers, data);
|
||||
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
{
|
||||
if (gimp_layer_get_mask (iter->data))
|
||||
{
|
||||
have_masks = TRUE;
|
||||
/* A bit of tricky to handle multiple and diverse layers with
|
||||
* a toggle action (with only binary state).
|
||||
* In non-active state, we will consider sets of both shown
|
||||
* and hidden masks as ok and exits. This allows us to switch
|
||||
* the action "active" state without actually changing
|
||||
* individual masks state without explicit user request.
|
||||
*/
|
||||
if (! active && ! gimp_layer_get_show_mask (iter->data))
|
||||
return;
|
||||
if (active && gimp_layer_get_show_mask (iter->data))
|
||||
{
|
||||
/* if switching "show mask" on, and any selected layer's
|
||||
* mask is already visible, bail out because that's
|
||||
* exactly the logic we use in the ui for multiple
|
||||
* visible layer masks.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
if (gimp_layer_get_show_mask (iter->data) != active)
|
||||
n_masks++;
|
||||
}
|
||||
}
|
||||
if (! have_masks)
|
||||
|
||||
if (n_masks == 0)
|
||||
return;
|
||||
|
||||
gimp_image_undo_group_start (image,
|
||||
GIMP_UNDO_GROUP_LAYER_ADD,
|
||||
_("Show Layer Masks"));
|
||||
if (n_masks > 1)
|
||||
gimp_image_undo_group_start (image,
|
||||
GIMP_UNDO_GROUP_LAYER_ADD,
|
||||
_("Show Layer Masks"));
|
||||
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
{
|
||||
if (gimp_layer_get_mask (iter->data))
|
||||
{
|
||||
gimp_layer_set_show_mask (iter->data, active, TRUE);
|
||||
}
|
||||
gimp_layer_set_show_mask (iter->data, active, TRUE);
|
||||
}
|
||||
|
||||
if (n_masks > 1)
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
gimp_image_flush (image);
|
||||
gimp_image_undo_group_end (image);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1682,43 +1803,47 @@ layers_mask_disable_cmd_callback (GimpAction *action,
|
||||
GimpImage *image;
|
||||
GList *layers;
|
||||
GList *iter;
|
||||
gboolean active = g_variant_get_boolean (value);
|
||||
gboolean have_masks = FALSE;
|
||||
gboolean active = g_variant_get_boolean (value);
|
||||
gint n_masks = 0;
|
||||
return_if_no_layers (image, layers, data);
|
||||
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
{
|
||||
if (gimp_layer_get_mask (iter->data))
|
||||
{
|
||||
have_masks = TRUE;
|
||||
/* A bit of tricky to handle multiple and diverse layers with
|
||||
* a toggle action (with only binary state).
|
||||
* In non-active state, we will consider sets of both enabled
|
||||
* and disabled masks as ok and exits. This allows us to
|
||||
* switch the action "active" state without actually changing
|
||||
* individual masks state without explicit user request.
|
||||
*/
|
||||
if (! active && gimp_layer_get_apply_mask (iter->data))
|
||||
return;
|
||||
if (active && ! gimp_layer_get_apply_mask (iter->data))
|
||||
{
|
||||
/* if switching "disable mask" on, and any selected
|
||||
* layer's mask is already disabled, bail out because
|
||||
* that's exactly the logic we use in the ui for multiple
|
||||
* disabled layer masks.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
if ((! gimp_layer_get_apply_mask (iter->data)) != active)
|
||||
n_masks++;
|
||||
}
|
||||
}
|
||||
if (! have_masks)
|
||||
|
||||
if (n_masks == 0)
|
||||
return;
|
||||
|
||||
gimp_image_undo_group_start (image,
|
||||
GIMP_UNDO_GROUP_LAYER_ADD,
|
||||
_("Disable Layer Masks"));
|
||||
if (n_masks > 1)
|
||||
gimp_image_undo_group_start (image,
|
||||
GIMP_UNDO_GROUP_LAYER_ADD,
|
||||
_("Disable Layer Masks"));
|
||||
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
{
|
||||
if (gimp_layer_get_mask (iter->data))
|
||||
{
|
||||
gimp_layer_set_apply_mask (iter->data, ! active, TRUE);
|
||||
}
|
||||
gimp_layer_set_apply_mask (iter->data, ! active, TRUE);
|
||||
}
|
||||
|
||||
if (n_masks > 1)
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
gimp_image_flush (image);
|
||||
gimp_image_undo_group_end (image);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1761,10 +1886,12 @@ layers_mask_to_selection_cmd_callback (GimpAction *action,
|
||||
C_("undo-type", "Intersect Masks with Selection"));
|
||||
break;
|
||||
}
|
||||
|
||||
gimp_channel_combine_items (gimp_image_get_mask (image),
|
||||
masks, operation);
|
||||
gimp_image_flush (image);
|
||||
g_list_free (masks);
|
||||
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1843,8 +1970,10 @@ layers_alpha_to_selection_cmd_callback (GimpAction *action,
|
||||
C_("undo-type", "Intersect Alpha with Selection"));
|
||||
break;
|
||||
}
|
||||
|
||||
gimp_channel_combine_items (gimp_image_get_mask (image),
|
||||
layers, operation);
|
||||
|
||||
gimp_image_flush (image);
|
||||
|
||||
if (gimp_channel_is_empty (gimp_image_get_mask (image)))
|
||||
@@ -2004,6 +2133,7 @@ layers_blend_space_cmd_callback (GimpAction *action,
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (update_layers);
|
||||
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
}
|
||||
@@ -2057,6 +2187,7 @@ layers_composite_space_cmd_callback (GimpAction *action,
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (update_layers);
|
||||
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
}
|
||||
@@ -2110,6 +2241,7 @@ layers_composite_mode_cmd_callback (GimpAction *action,
|
||||
gimp_image_undo_group_end (image);
|
||||
|
||||
g_list_free (update_layers);
|
||||
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
}
|
||||
@@ -2186,6 +2318,7 @@ layers_lock_alpha_cmd_callback (GimpAction *action,
|
||||
gimp_image_undo_group_start (image,
|
||||
GIMP_UNDO_GROUP_LAYER_LOCK_ALPHA,
|
||||
lock_alpha ? _("Lock alpha channels") : _("Unlock alpha channels"));
|
||||
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
{
|
||||
if (gimp_layer_can_lock_alpha (iter->data))
|
||||
@@ -2194,6 +2327,7 @@ layers_lock_alpha_cmd_callback (GimpAction *action,
|
||||
gimp_layer_set_lock_alpha (iter->data, lock_alpha, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
@@ -2228,6 +2362,7 @@ layers_new_callback (GtkWidget *dialog,
|
||||
GimpLayerCompositeMode layer_composite_mode,
|
||||
gdouble layer_opacity,
|
||||
GimpFillType layer_fill_type,
|
||||
GimpLink *link,
|
||||
gint layer_width,
|
||||
gint layer_height,
|
||||
gint layer_offset_x,
|
||||
@@ -2248,6 +2383,8 @@ layers_new_callback (GtkWidget *dialog,
|
||||
gint n_layers = g_list_length (layers);
|
||||
gboolean run_once = (n_layers == 0);
|
||||
|
||||
g_return_if_fail (link == NULL);
|
||||
|
||||
g_object_set (config,
|
||||
"layer-new-name", layer_name,
|
||||
"layer-new-mode", layer_mode,
|
||||
@@ -2344,6 +2481,7 @@ layers_edit_attributes_callback (GtkWidget *dialog,
|
||||
GimpLayerCompositeMode layer_composite_mode,
|
||||
gdouble layer_opacity,
|
||||
GimpFillType unused1,
|
||||
GimpLink *link,
|
||||
gint unused2,
|
||||
gint unused3,
|
||||
gint layer_offset_x,
|
||||
@@ -2372,7 +2510,8 @@ layers_edit_attributes_callback (GtkWidget *dialog,
|
||||
layer_lock_pixels != gimp_item_get_lock_content (item) ||
|
||||
layer_lock_position != gimp_item_get_lock_position (item) ||
|
||||
layer_lock_visibility != gimp_item_get_lock_visibility (item) ||
|
||||
layer_lock_alpha != gimp_layer_get_lock_alpha (layer))
|
||||
layer_lock_alpha != gimp_layer_get_lock_alpha (layer) ||
|
||||
link)
|
||||
{
|
||||
gimp_image_undo_group_start (image,
|
||||
GIMP_UNDO_GROUP_ITEM_PROPERTIES,
|
||||
@@ -2433,8 +2572,10 @@ layers_edit_attributes_callback (GtkWidget *dialog,
|
||||
if (layer_lock_alpha != gimp_layer_get_lock_alpha (layer))
|
||||
gimp_layer_set_lock_alpha (layer, layer_lock_alpha, TRUE);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
if (GIMP_IS_LINK_LAYER (layer) && link)
|
||||
gimp_link_layer_set_link (GIMP_LINK_LAYER (layer), link, TRUE);
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
@@ -2454,6 +2595,7 @@ layers_add_mask_callback (GtkWidget *dialog,
|
||||
GimpAddMaskType add_mask_type,
|
||||
GimpChannel *channel,
|
||||
gboolean invert,
|
||||
gboolean edit_mask,
|
||||
gpointer user_data)
|
||||
{
|
||||
GimpImage *image = gimp_item_get_image (GIMP_ITEM (layers->data));
|
||||
@@ -2463,13 +2605,15 @@ layers_add_mask_callback (GtkWidget *dialog,
|
||||
GError *error = NULL;
|
||||
|
||||
g_object_set (config,
|
||||
"layer-add-mask-type", add_mask_type,
|
||||
"layer-add-mask-invert", invert,
|
||||
"layer-add-mask-type", add_mask_type,
|
||||
"layer-add-mask-invert", invert,
|
||||
"layer-add-mask-edit-mask", edit_mask,
|
||||
NULL);
|
||||
|
||||
gimp_image_undo_group_start (image,
|
||||
GIMP_UNDO_GROUP_LAYER_ADD,
|
||||
_("Add Layer Masks"));
|
||||
|
||||
for (iter = layers; iter; iter = iter->next)
|
||||
{
|
||||
mask = gimp_layer_create_mask (iter->data,
|
||||
@@ -2479,7 +2623,7 @@ layers_add_mask_callback (GtkWidget *dialog,
|
||||
if (config->layer_add_mask_invert)
|
||||
gimp_channel_invert (GIMP_CHANNEL (mask), FALSE);
|
||||
|
||||
if (! gimp_layer_add_mask (iter->data, mask, TRUE, &error))
|
||||
if (! gimp_layer_add_mask (iter->data, mask, edit_mask, TRUE, &error))
|
||||
{
|
||||
gimp_message_literal (image->gimp,
|
||||
G_OBJECT (dialog), GIMP_MESSAGE_WARNING,
|
||||
@@ -2492,6 +2636,7 @@ layers_add_mask_callback (GtkWidget *dialog,
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
gimp_image_flush (image);
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
}
|
||||
|
||||
@@ -2555,6 +2700,56 @@ layers_scale_callback (GtkWidget *dialog,
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
layers_vector_fill_stroke_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *image;
|
||||
GimpLayer *layer;
|
||||
GList *layers;
|
||||
GtkWidget *widget;
|
||||
return_if_no_layers (image, layers, data);
|
||||
return_if_no_widget (widget, data);
|
||||
|
||||
if (g_list_length (layers) != 1)
|
||||
return;
|
||||
|
||||
layer = layers->data;
|
||||
|
||||
if (GIMP_IS_VECTOR_LAYER (layer))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = vector_layer_options_dialog_new (GIMP_VECTOR_LAYER (layer),
|
||||
action_data_get_context (data),
|
||||
_("Fill / Stroke"),
|
||||
"gimp-vector-layer-stroke",
|
||||
GIMP_HELP_LAYER_VECTOR_FILL_STROKE,
|
||||
widget);
|
||||
gtk_widget_show (dialog);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
layers_vector_discard_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *image;
|
||||
GimpLayer *layer;
|
||||
GList *layers;
|
||||
return_if_no_layers (image, layers, data);
|
||||
|
||||
if (g_list_length (layers) != 1)
|
||||
return;
|
||||
|
||||
layer = layers->data;
|
||||
|
||||
if (GIMP_IS_VECTOR_LAYER (layer))
|
||||
gimp_vector_layer_discard (GIMP_VECTOR_LAYER (layer));
|
||||
}
|
||||
|
||||
static void
|
||||
layers_resize_callback (GtkWidget *dialog,
|
||||
GimpViewable *viewable,
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __LAYERS_COMMANDS_H__
|
||||
#define __LAYERS_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void layers_edit_cmd_callback (GimpAction *action,
|
||||
@@ -25,6 +24,9 @@ void layers_edit_cmd_callback (GimpAction *action,
|
||||
void layers_edit_text_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_edit_vector_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_edit_attributes_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
@@ -75,13 +77,25 @@ void layers_merge_group_cmd_callback (GimpAction *action,
|
||||
void layers_delete_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_link_discard_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_link_monitor_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_text_discard_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_text_to_vectors_cmd_callback (GimpAction *action,
|
||||
void layers_text_to_path_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_text_along_vectors_cmd_callback (GimpAction *action,
|
||||
void layers_text_along_path_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_vector_fill_stroke_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
void layers_vector_discard_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
@@ -165,6 +179,3 @@ void layers_lock_alpha_cmd_callback (GimpAction *action,
|
||||
void layers_color_tag_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __LAYERS_COMMANDS_H__ */
|
||||
|
@@ -79,14 +79,14 @@ libappactions_sources = [
|
||||
'text-tool-commands.c',
|
||||
'tool-options-actions.c',
|
||||
'tool-options-commands.c',
|
||||
'tool-path-actions.c',
|
||||
'tool-path-commands.c',
|
||||
'tool-preset-editor-actions.c',
|
||||
'tool-preset-editor-commands.c',
|
||||
'tool-presets-actions.c',
|
||||
'tool-presets-commands.c',
|
||||
'tools-actions.c',
|
||||
'tools-commands.c',
|
||||
'vector-toolpath-actions.c',
|
||||
'vector-toolpath-commands.c',
|
||||
'view-actions.c',
|
||||
'view-commands.c',
|
||||
'window-actions.c',
|
||||
@@ -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,
|
||||
],
|
||||
)
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __MYPAINT_BRUSHES_ACTIONS_H__
|
||||
#define __MYPAINT_BRUSHES_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void mypaint_brushes_actions_setup (GimpActionGroup *group);
|
||||
void mypaint_brushes_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __MYPAINT_BRUSHES_ACTIONS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __PALETTE_EDITOR_ACTIONS_H__
|
||||
#define __PALETTE_EDITOR_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void palette_editor_actions_setup (GimpActionGroup *group);
|
||||
void palette_editor_actions_update (GimpActionGroup *group,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __PALETTE_EDITOR_ACTIONS_H__ */
|
||||
|
@@ -79,8 +79,17 @@ palette_editor_delete_color_cmd_callback (GimpAction *action,
|
||||
if (data_editor->data_editable && editor->color)
|
||||
{
|
||||
GimpPalette *palette = GIMP_PALETTE (data_editor->data);
|
||||
gint index;
|
||||
|
||||
index = gimp_palette_get_entry_position (palette, editor->color);
|
||||
|
||||
gimp_palette_delete_entry (palette, editor->color);
|
||||
|
||||
if (index >= gimp_palette_get_n_colors (palette))
|
||||
index = gimp_palette_get_n_colors (palette) - 1;
|
||||
|
||||
gimp_palette_view_select_entry (GIMP_PALETTE_VIEW (editor->view),
|
||||
gimp_palette_get_entry (palette, index));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __PALETTE_EDITOR_COMMANDS_H__
|
||||
#define __PALETTE_EDITOR_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void palette_editor_edit_color_cmd_callback (GimpAction *action,
|
||||
@@ -32,6 +31,3 @@ void palette_editor_delete_color_cmd_callback (GimpAction *action,
|
||||
void palette_editor_zoom_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __PALETTE_EDITOR_COMMANDS_H__ */
|
||||
|
@@ -15,13 +15,9 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __PALETTES_ACTIONS_H__
|
||||
#define __PALETTES_ACTIONS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void palettes_actions_setup (GimpActionGroup *group);
|
||||
void palettes_actions_update (GimpActionGroup *group,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
#endif /* __PALETTES_ACTIONS_H__ */
|
||||
|
@@ -117,9 +117,7 @@ palettes_merge_callback (GtkWidget *widget,
|
||||
context = gimp_container_view_get_context (editor->view);
|
||||
factory = gimp_data_factory_view_get_data_factory (view);
|
||||
|
||||
gimp_container_view_get_selected (editor->view, &selected, NULL);
|
||||
|
||||
if (g_list_length (selected) < 2)
|
||||
if (gimp_container_view_get_selected (editor->view, &selected) < 2)
|
||||
{
|
||||
gimp_message_literal (context->gimp,
|
||||
G_OBJECT (editor), GIMP_MESSAGE_WARNING,
|
||||
|
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __PALETTES_COMMANDS_H__
|
||||
#define __PALETTES_COMMANDS_H__
|
||||
#pragma once
|
||||
|
||||
|
||||
void palettes_import_cmd_callback (GimpAction *action,
|
||||
@@ -25,6 +24,3 @@ void palettes_import_cmd_callback (GimpAction *action,
|
||||
void palettes_merge_cmd_callback (GimpAction *action,
|
||||
GVariant *value,
|
||||
gpointer data);
|
||||
|
||||
|
||||
#endif /* __PALETTES_COMMANDS_H__ */
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user