Compare commits
1841 Commits
compile-ui
...
subsurface
Author | SHA1 | Date | |
---|---|---|---|
|
10d075ee47 | ||
|
9ec662dbba | ||
|
5b6297e00f | ||
|
27db4b5c2f | ||
|
5abaee4f02 | ||
|
d2b6fef1f8 | ||
|
a639aaefae | ||
|
39645d3258 | ||
|
526b62e0be | ||
|
19fb336c39 | ||
|
1f3674cf3e | ||
|
c76069389c | ||
|
eef0c81be9 | ||
|
c78eeaa874 | ||
|
2766f61abc | ||
|
45422f7b61 | ||
|
c4feca1311 | ||
|
9426b20759 | ||
|
f97cff1454 | ||
|
549a2b4c86 | ||
|
f4f0daa113 | ||
|
d4f8a80f2a | ||
|
8d175801d7 | ||
|
6bc3ecbe56 | ||
|
31da5f7e2a | ||
|
48228efe42 | ||
|
4b41d4f78c | ||
|
fb68600d88 | ||
|
0e6a3ab397 | ||
|
e895f7dd70 | ||
|
dae892d8f6 | ||
|
ad5c3168a9 | ||
|
8f1db27b6b | ||
|
56a1cbe217 | ||
|
63e9e7e899 | ||
|
480a933546 | ||
|
2623c396cb | ||
|
826fdc4a80 | ||
|
3b088281ca | ||
|
e61aecd67e | ||
|
bd68339390 | ||
|
491d1f67c7 | ||
|
73dc741a82 | ||
|
38ec040fce | ||
|
6bb1873183 | ||
|
5ba5693efd | ||
|
797cc2e91b | ||
|
5507b3f8c1 | ||
|
f9a3f13702 | ||
|
b4c72ac508 | ||
|
bcad305136 | ||
|
00d45c6743 | ||
|
38b393ff5d | ||
|
23f92ca1c2 | ||
|
34a9bc4632 | ||
|
d603164ec2 | ||
|
a033e838b2 | ||
|
511a2f4d03 | ||
|
c089912a52 | ||
|
2694d81d63 | ||
|
213490099b | ||
|
166af48904 | ||
|
6e3dbc42a8 | ||
|
36fbbfc5c7 | ||
|
9bfc89e23d | ||
|
802bf41999 | ||
|
93636d4c5a | ||
|
88f761f2c8 | ||
|
7752467847 | ||
|
8514457d0f | ||
|
c0d79aa1ef | ||
|
8a6d6fe6b1 | ||
|
7750a2c423 | ||
|
393893b8db | ||
|
4f16242807 | ||
|
e82fb8e894 | ||
|
b3e65bfdc1 | ||
|
111daecd3b | ||
|
72fe406c4d | ||
|
0f01629ce3 | ||
|
2f695388e9 | ||
|
3955633aa8 | ||
|
f77f941401 | ||
|
288dd406e0 | ||
|
8667b7a46c | ||
|
0410125f20 | ||
|
1ea0de61e1 | ||
|
e8eb96ae0c | ||
|
04f924c13e | ||
|
1fbca7a76a | ||
|
3f49d335d1 | ||
|
3882e14053 | ||
|
5f5fda911d | ||
|
b9574e119b | ||
|
5f469a0d2d | ||
|
ffd3801b1d | ||
|
fd21df7244 | ||
|
654d74bfb8 | ||
|
a26c72ef79 | ||
|
6b55a14429 | ||
|
bc241d62af | ||
|
2b2894490f | ||
|
c0747f2c2e | ||
|
b34beb9380 | ||
|
8f19099f1a | ||
|
db2516af0a | ||
|
bd07f846ef | ||
|
d938352fb3 | ||
|
13eef432fc | ||
|
1b355ff2e0 | ||
|
aa9a8702e4 | ||
|
ab2109ea6b | ||
|
926eb161f8 | ||
|
61bb9bb935 | ||
|
8f55a014b1 | ||
|
c3e5d80853 | ||
|
8bd77441a9 | ||
|
a2af794cb0 | ||
|
0c86b28828 | ||
|
4278e91a46 | ||
|
dd16d7c4c8 | ||
|
6164908bd3 | ||
|
2ff98dad03 | ||
|
f33c521836 | ||
|
e1159dab93 | ||
|
c4f423694f | ||
|
4f2b1b3cfc | ||
|
122fa679a8 | ||
|
7302407880 | ||
|
900a23e2bb | ||
|
0f7d93492d | ||
|
aee4475c0f | ||
|
1f61cb2251 | ||
|
0382e3b46c | ||
|
547b2891cb | ||
|
89614f5f72 | ||
|
f5fc71fe82 | ||
|
a546ae32d7 | ||
|
17578a97d6 | ||
|
9536eb654b | ||
|
0f21f6c273 | ||
|
4bf07aeef9 | ||
|
26b250503d | ||
|
8533824084 | ||
|
5a0d6e3fc8 | ||
|
6be466b675 | ||
|
1c587c7d7f | ||
|
2f98de06bc | ||
|
9e6855cdb8 | ||
|
a6c3e440f6 | ||
|
08d386844a | ||
|
48e98d333e | ||
|
ad4536e825 | ||
|
2080f3db17 | ||
|
726a92200f | ||
|
f9afee0667 | ||
|
78d34c098e | ||
|
aa4e8334ee | ||
|
5eee5e8cac | ||
|
376d95a549 | ||
|
a3ac414465 | ||
|
8ee6203e2c | ||
|
fadeda61e5 | ||
|
3307b8ce88 | ||
|
fff32faa67 | ||
|
c0acf264a9 | ||
|
dacca9ece0 | ||
|
bd9c491076 | ||
|
93d62acdf3 | ||
|
0da75b0bbf | ||
|
8328bd9f96 | ||
|
1a82e6a762 | ||
|
886bb0f522 | ||
|
d65e7c9d05 | ||
|
a96af76c8a | ||
|
0ce49daa5f | ||
|
08154c41f9 | ||
|
f880d24f2a | ||
|
10b5698b78 | ||
|
c2e8604805 | ||
|
1a488722fa | ||
|
361e8ac076 | ||
|
66a0e0a59e | ||
|
c29bf115f2 | ||
|
b74aec3606 | ||
|
e3abd7df5c | ||
|
25069cf233 | ||
|
158963ff77 | ||
|
19fa7d513d | ||
|
a0374334d4 | ||
|
3bae7f540e | ||
|
23fc3d9ecd | ||
|
c645da00dc | ||
|
4867ac653a | ||
|
b0ccfce1d6 | ||
|
3f6b5ccf4a | ||
|
07299dd9c7 | ||
|
d3ffc0c3bb | ||
|
48ef26317e | ||
|
981981dc46 | ||
|
f1551a87f6 | ||
|
9c42b8fb2b | ||
|
f6aa6dc59d | ||
|
35cd02cd1e | ||
|
2b183a9f4e | ||
|
5df314fa8f | ||
|
5a1396d38e | ||
|
6ce36e6a7d | ||
|
196ec107d1 | ||
|
4ddf1b70a2 | ||
|
b3f04413b4 | ||
|
898a2e9fcf | ||
|
ae06e40bcc | ||
|
940248598e | ||
|
737854aa0d | ||
|
515b1f5292 | ||
|
25520964af | ||
|
ea79f2dcf4 | ||
|
1d609d2a16 | ||
|
b82fae9177 | ||
|
d6fe6f495a | ||
|
65a7df47f2 | ||
|
3471c22f52 | ||
|
3af4d53945 | ||
|
1ca2d41a98 | ||
|
12287c034b | ||
|
76dc7f1b1b | ||
|
0ea3dcacb0 | ||
|
9761a4758a | ||
|
17262d1572 | ||
|
4dcd02e853 | ||
|
8e28b0765c | ||
|
c882a611c8 | ||
|
908661fee6 | ||
|
1cc2b96e6b | ||
|
e89365e9e3 | ||
|
6484807719 | ||
|
527ff05107 | ||
|
b89cfdb77f | ||
|
499687a11d | ||
|
c5e26dd591 | ||
|
bc17d1d5ea | ||
|
b88ac0890e | ||
|
d30baf34b3 | ||
|
b927ad2c87 | ||
|
4540dac11a | ||
|
aa9cac695d | ||
|
52412ca944 | ||
|
cd82b18cfd | ||
|
da5bb6ff22 | ||
|
7871f1e13b | ||
|
dd18c7dedf | ||
|
a34a6e9b84 | ||
|
0a5f29c9eb | ||
|
417be0719b | ||
|
3263a26cad | ||
|
00916c2b47 | ||
|
e3320633a6 | ||
|
764a8cea59 | ||
|
a2599c2bb9 | ||
|
e2675306e1 | ||
|
7d1429cb91 | ||
|
f13a018739 | ||
|
84b3b1fab5 | ||
|
048bb6db6f | ||
|
8c548d5579 | ||
|
09d5ec1b08 | ||
|
28bba484da | ||
|
191558cfa4 | ||
|
cb0c1b3f08 | ||
|
91f200167e | ||
|
2b6fb005a8 | ||
|
af6bec7539 | ||
|
38362c2803 | ||
|
eb7c78aa48 | ||
|
7ab39b5461 | ||
|
0c44851848 | ||
|
d72ed045df | ||
|
38eb182947 | ||
|
0eba21b2b5 | ||
|
21cba193ad | ||
|
ee7c83e15a | ||
|
48dbbbc099 | ||
|
1c733857b3 | ||
|
85a6517d65 | ||
|
d75147db0a | ||
|
d3cf7088b3 | ||
|
ffa7185397 | ||
|
d7fe62817c | ||
|
a034bdb17e | ||
|
af20f7e9b5 | ||
|
15b7a4572b | ||
|
146bb70c2e | ||
|
494de142f6 | ||
|
5d979cde82 | ||
|
f48b894468 | ||
|
a6e47892be | ||
|
1e0c25d96a | ||
|
f57eec5288 | ||
|
e938befcbc | ||
|
2af8ac655b | ||
|
cc3c0125a8 | ||
|
59f9be457f | ||
|
d1ce514260 | ||
|
ad5e72728f | ||
|
1bf24f7b19 | ||
|
a3cedb0163 | ||
|
97bab27d82 | ||
|
6030da573d | ||
|
0128574ca1 | ||
|
b27a169200 | ||
|
bcd0704511 | ||
|
506566b6a4 | ||
|
b67da38916 | ||
|
8519ab56f5 | ||
|
89d87e3482 | ||
|
04c9c6b428 | ||
|
9bd8ed0d82 | ||
|
40386c97eb | ||
|
6649cc6e5e | ||
|
e69dc04a7f | ||
|
c1361f7a5a | ||
|
351ffef704 | ||
|
314a75ed0f | ||
|
a1ddd3fead | ||
|
79f0f4ee8e | ||
|
7b8bfb4c80 | ||
|
7106cf6524 | ||
|
e706e14fd9 | ||
|
3f1021048f | ||
|
ddba7f8601 | ||
|
1660a0eaf1 | ||
|
ffffb382e2 | ||
|
09453bc60b | ||
|
f76b749e43 | ||
|
0aca2a03b4 | ||
|
fd358990a2 | ||
|
01b91c1ba3 | ||
|
cc02076b75 | ||
|
b726a2d902 | ||
|
654ae5928a | ||
|
1c24514798 | ||
|
33f3ab9991 | ||
|
91511a80ac | ||
|
a585457861 | ||
|
4a0ddac307 | ||
|
f7d9ede82d | ||
|
65839f67f8 | ||
|
df40db137b | ||
|
129bc27d53 | ||
|
274e2b221f | ||
|
adc4009354 | ||
|
f058a42bd3 | ||
|
3a8cb276e7 | ||
|
eeaa73c12a | ||
|
3873861b27 | ||
|
8e455e333b | ||
|
3d10e6c3d1 | ||
|
dcc7cf7114 | ||
|
f1d0886087 | ||
|
951e4ee6b2 | ||
|
f9e2c106bc | ||
|
53956e5389 | ||
|
3ab63fd03b | ||
|
fb4927827b | ||
|
cbbca38d88 | ||
|
c64836e1c9 | ||
|
6b23fe3aa7 | ||
|
9defc7fc64 | ||
|
9d56f44cdf | ||
|
1b9da2bb17 | ||
|
2efc1729e2 | ||
|
a66a0dde81 | ||
|
7062411bad | ||
|
9dbd137ec8 | ||
|
79fad9f221 | ||
|
8f9ee48aaa | ||
|
8eb9844a45 | ||
|
b90132c917 | ||
|
23806b7788 | ||
|
d266c0d105 | ||
|
581461c2b5 | ||
|
f108f053d4 | ||
|
df593ee651 | ||
|
4dcd011486 | ||
|
6fe7e373e2 | ||
|
0c3583b4bd | ||
|
5bd0179a88 | ||
|
f116efd48e | ||
|
8057bee295 | ||
|
ab330f1efc | ||
|
e5dc66b10e | ||
|
aa43d97a80 | ||
|
eaf4fb68f3 | ||
|
bfe193e6e2 | ||
|
aa8dec3d27 | ||
|
d2e7060150 | ||
|
08f3acb534 | ||
|
525f96f2f8 | ||
|
b6b2682bd6 | ||
|
1832964188 | ||
|
eb599653e6 | ||
|
e1e88ce665 | ||
|
66d21689bc | ||
|
8186cb8bee | ||
|
9b8f28903b | ||
|
1cd42825c2 | ||
|
166444f115 | ||
|
3cd68c5de5 | ||
|
9e2357d5f3 | ||
|
bd0c68f641 | ||
|
c3a7d79154 | ||
|
25624083dd | ||
|
407b5246a6 | ||
|
6bedcf22bc | ||
|
eeb9d6c398 | ||
|
cf8d2374c5 | ||
|
9fa5378d83 | ||
|
90352d760d | ||
|
c3c1763a9f | ||
|
9f7c9ce6ad | ||
|
1f155bf39a | ||
|
84014e3414 | ||
|
4ced1c90f1 | ||
|
54c3b947fc | ||
|
94007caf8d | ||
|
675c8b45b1 | ||
|
ea59d174a0 | ||
|
32935d9fb0 | ||
|
b390e1da4f | ||
|
cccd1147e7 | ||
|
d8db5f3217 | ||
|
f5bb364bb5 | ||
|
82f57c6a93 | ||
|
20c41dce80 | ||
|
a9de385ac5 | ||
|
ead210c170 | ||
|
2ad471542a | ||
|
d73cff5846 | ||
|
213376ee0a | ||
|
1cc100415f | ||
|
d9ad7884e9 | ||
|
f545d7a910 | ||
|
206eb647a4 | ||
|
00e637b480 | ||
|
bfc8b7b7b6 | ||
|
c44288c739 | ||
|
2fb5104731 | ||
|
0ae4d80766 | ||
|
f5098e4fc5 | ||
|
28607f082c | ||
|
f3968f2f1e | ||
|
88fa226223 | ||
|
c4c496a31c | ||
|
c1eac4a421 | ||
|
b5d1323f49 | ||
|
e297ac319d | ||
|
bf852bea24 | ||
|
a652507b7b | ||
|
4a2a76c231 | ||
|
8cb7369b7a | ||
|
588076d166 | ||
|
3a98b28ab7 | ||
|
cfeedcc321 | ||
|
d0aedbc9fc | ||
|
5557a528b6 | ||
|
5316eb0c35 | ||
|
e6afe28de5 | ||
|
eaf0353205 | ||
|
f9f9bd3f5b | ||
|
ca79688f52 | ||
|
efa8f903c2 | ||
|
f7d0b91267 | ||
|
ed4f0de2b0 | ||
|
50b96dcdd5 | ||
|
cf25f2c04b | ||
|
ddf07ffe22 | ||
|
82f1eaacc9 | ||
|
4cdb07fa02 | ||
|
bdd5393084 | ||
|
27b87ebec5 | ||
|
8c0df66d5f | ||
|
e5238bf54f | ||
|
e9abcde031 | ||
|
d45281e6c7 | ||
|
3fd5ebffcb | ||
|
88a621fa13 | ||
|
ce4b799f1e | ||
|
4dcacff312 | ||
|
fd7667246d | ||
|
b8cb15f28d | ||
|
51607ce93c | ||
|
66284cd245 | ||
|
f9faecd5b7 | ||
|
92261b5022 | ||
|
91f5bfd211 | ||
|
63f20b173d | ||
|
25b3bd64af | ||
|
fc4d36e50a | ||
|
dbede0b115 | ||
|
1e40033852 | ||
|
478bf45320 | ||
|
dac0b7d609 | ||
|
d14987e819 | ||
|
3a0077f65f | ||
|
03882ef8e5 | ||
|
505e10f3ea | ||
|
1e01444de8 | ||
|
4404c43cd3 | ||
|
92a7c7cdc3 | ||
|
33db142eab | ||
|
68319afd23 | ||
|
25f4e597ee | ||
|
db8339ca66 | ||
|
5ba02e3459 | ||
|
999509be61 | ||
|
5dca6dce91 | ||
|
d3acfa8c2b | ||
|
c1cc8c979b | ||
|
eed74f6ea0 | ||
|
e5a4b91997 | ||
|
885b34d382 | ||
|
3faf9d85bb | ||
|
4cd4c25c25 | ||
|
bffa5dfddd | ||
|
2fe20878c3 | ||
|
b28c3ef3d9 | ||
|
ed5fb4bbfe | ||
|
2dd86aaa00 | ||
|
eaf952d902 | ||
|
88cb6a46f2 | ||
|
c76b4bdc77 | ||
|
62fe4eae16 | ||
|
99a40de8ad | ||
|
b8376407a4 | ||
|
a5643b0c83 | ||
|
828688d5cd | ||
|
fc47b913b1 | ||
|
7d8b3357a5 | ||
|
e0b98bc7de | ||
|
493b145496 | ||
|
1b2c11d7f5 | ||
|
a56828237a | ||
|
56e2a7e8bb | ||
|
f278f3610b | ||
|
c111e633e9 | ||
|
eea7cf30bb | ||
|
36bdcfaccb | ||
|
45bb820656 | ||
|
617deb8bb6 | ||
|
8efcd34dbe | ||
|
a78b573f8b | ||
|
226f0e0567 | ||
|
4304a494ae | ||
|
b71ff21530 | ||
|
6a7da77980 | ||
|
c5f92340ee | ||
|
572a884e90 | ||
|
69bc9d0702 | ||
|
34ff9e359b | ||
|
de705c2a2b | ||
|
d1102f586c | ||
|
bcb6cf04ed | ||
|
c9dbb30aff | ||
|
2c88797195 | ||
|
89a351fd66 | ||
|
e1d3d01e2f | ||
|
76a58c40db | ||
|
3b0ceeb09a | ||
|
f95e082186 | ||
|
df8e2bc0a0 | ||
|
42164fa8bb | ||
|
6016e17a38 | ||
|
b2de83efcb | ||
|
493f90499b | ||
|
8b71cff71d | ||
|
f9268e8137 | ||
|
b4b282dc81 | ||
|
d4d328f96f | ||
|
553eb55f8a | ||
|
9ea43096d4 | ||
|
e9ffe8f212 | ||
|
931be7d729 | ||
|
378bb481fa | ||
|
8f83c7e255 | ||
|
3c99b50d2c | ||
|
9fccbeaa75 | ||
|
d35bac452b | ||
|
d8c79e91a2 | ||
|
7f5a249056 | ||
|
70ce353a58 | ||
|
ab65e8e178 | ||
|
c0ede8d46e | ||
|
8f02ea39e5 | ||
|
8a8cd4e248 | ||
|
08d0575ed0 | ||
|
43476c09ed | ||
|
6123212a68 | ||
|
6106207b93 | ||
|
b5036faa2a | ||
|
56fd3af4d0 | ||
|
26beab6064 | ||
|
f41fe7b8e4 | ||
|
7d6797c9ed | ||
|
2e34d62111 | ||
|
6eda5deeff | ||
|
83b98738b6 | ||
|
a07455aa0d | ||
|
49a4d27245 | ||
|
ff59bf356b | ||
|
c6ce05b782 | ||
|
db77204a52 | ||
|
4c08d1643f | ||
|
592436503c | ||
|
1877bb8a27 | ||
|
67a5120b5b | ||
|
9d8f56edaa | ||
|
7ec9c5181d | ||
|
853ef43dae | ||
|
1fdf5b7cf8 | ||
|
0e3ed7a738 | ||
|
9c1a66518b | ||
|
280544b874 | ||
|
3c9687fcf1 | ||
|
f207402228 | ||
|
a080f1197a | ||
|
8f0b9bf5ae | ||
|
b74d3c2221 | ||
|
49b0ee21c1 | ||
|
481634930c | ||
|
d58c038fe8 | ||
|
056e9012d2 | ||
|
82e4690564 | ||
|
8dc2c4b24a | ||
|
3e913ff16e | ||
|
37702af22b | ||
|
12908ab863 | ||
|
4cb599f378 | ||
|
fe210fb0dd | ||
|
1fee30af36 | ||
|
3f329b2d0f | ||
|
1fd03acf9d | ||
|
a26c1a5f0d | ||
|
7a608bda27 | ||
|
c400dce0b1 | ||
|
5912b2d64a | ||
|
e38e8ed73e | ||
|
5088103d31 | ||
|
76b185e6f6 | ||
|
f3999f7ebf | ||
|
f8e7ecfde1 | ||
|
cc49e044a5 | ||
|
9205193147 | ||
|
124d689f45 | ||
|
d2a2591d28 | ||
|
64a1a1dd6b | ||
|
3b383569a4 | ||
|
c2fe438676 | ||
|
0ade146e26 | ||
|
ba266325d0 | ||
|
e6322e177e | ||
|
080a4cda49 | ||
|
6b63868641 | ||
|
cb710f1999 | ||
|
85bb9aaefc | ||
|
6c02017212 | ||
|
90bccf4e82 | ||
|
18db7ad470 | ||
|
468ddd4d49 | ||
|
ff4b5c8996 | ||
|
06aa640664 | ||
|
9f24229f82 | ||
|
214370ee23 | ||
|
217d817408 | ||
|
6dfaafc9f2 | ||
|
287de3844d | ||
|
878e4a34d3 | ||
|
b893dc9552 | ||
|
687b80a037 | ||
|
a8a98523db | ||
|
0a224964a6 | ||
|
0457c37847 | ||
|
037c0e4005 | ||
|
b9389d3784 | ||
|
86a3400f2e | ||
|
8245fd4beb | ||
|
f41cfd3caa | ||
|
07d6ef13c5 | ||
|
883e8328e0 | ||
|
c6d5816c95 | ||
|
f37c5ebd26 | ||
|
2c71825324 | ||
|
38ad56e6a1 | ||
|
84d698464c | ||
|
9363269ceb | ||
|
59eb9aeb73 | ||
|
d9109a0e92 | ||
|
f27c0c65b1 | ||
|
212f629876 | ||
|
05f2f3ba8c | ||
|
a66072f312 | ||
|
3ba582375d | ||
|
4c211f1872 | ||
|
2ceba0d31c | ||
|
95168e179c | ||
|
34959b58f4 | ||
|
2be51dc3b1 | ||
|
14bdf82e33 | ||
|
6b85d501f0 | ||
|
473aceea68 | ||
|
0621dbc745 | ||
|
8ea0a4fc50 | ||
|
94ef818c9a | ||
|
8112b49c36 | ||
|
58b9c3a6d4 | ||
|
4373743d4c | ||
|
58159552ba | ||
|
4bff24f83a | ||
|
f644925570 | ||
|
8a4fd3f2af | ||
|
b7130a1ce3 | ||
|
519a44d224 | ||
|
936034e07a | ||
|
ea43939f52 | ||
|
d8befc612f | ||
|
06ec4ec148 | ||
|
6fbcb967a0 | ||
|
82e0241c42 | ||
|
8e000c2dbf | ||
|
1f1aafd5c2 | ||
|
d314298644 | ||
|
3cbe3abf67 | ||
|
90ab8b8dd3 | ||
|
cb1dd66220 | ||
|
d033a099ae | ||
|
78d9e5e181 | ||
|
41270ba8c9 | ||
|
e2277438e9 | ||
|
b0936c913b | ||
|
4b05eb62c9 | ||
|
fbacf0cb65 | ||
|
05a53a1582 | ||
|
be5873a057 | ||
|
c97f46bf28 | ||
|
1d47882eab | ||
|
9dcbbb4300 | ||
|
c9eda02fa1 | ||
|
a37584a404 | ||
|
566f217f6f | ||
|
ca34c79443 | ||
|
4be6c5b197 | ||
|
7194196100 | ||
|
d9d2eb978d | ||
|
c8460c51bd | ||
|
b4d0235a05 | ||
|
a5d1f78bf2 | ||
|
9a7750e339 | ||
|
d7c4ac7d02 | ||
|
1a08be066e | ||
|
fe86aa5f6b | ||
|
34133ec1e8 | ||
|
a99a75827c | ||
|
3bfcc12ec0 | ||
|
382341e1bf | ||
|
44b0d8b330 | ||
|
62808722d2 | ||
|
f09338c8de | ||
|
ec91b2de10 | ||
|
5cd289dc1d | ||
|
299caaa383 | ||
|
0aa2a4ef14 | ||
|
331f1ee722 | ||
|
0f351508bc | ||
|
304527ab01 | ||
|
b3d778469a | ||
|
6f5210afea | ||
|
6b1de35c01 | ||
|
8fccfc7a3d | ||
|
6fd3645713 | ||
|
8e86e6325b | ||
|
2b41e72196 | ||
|
1a64eeb88e | ||
|
2f8eac2c0a | ||
|
aaba777ad0 | ||
|
a580547f47 | ||
|
00ee7ffa6a | ||
|
f02b7d55b1 | ||
|
bed709a322 | ||
|
b362eeefdf | ||
|
7b02498963 | ||
|
6fd53f28f3 | ||
|
fefc8b5a82 | ||
|
4fe976549e | ||
|
044ff82d0b | ||
|
feac1e5fba | ||
|
dd5455fcd2 | ||
|
315971f02d | ||
|
a092986af3 | ||
|
6633f4e02f | ||
|
ee8970f23d | ||
|
46f1e4c414 | ||
|
a853e27765 | ||
|
68985d42bb | ||
|
9146a21738 | ||
|
8c2128703b | ||
|
b2d9cae0ec | ||
|
11eb66298d | ||
|
0f67e46549 | ||
|
45397534eb | ||
|
ffa93b87f8 | ||
|
4d741bac98 | ||
|
0fe37d1828 | ||
|
43839898b3 | ||
|
6f2848c311 | ||
|
38c17c1f79 | ||
|
b85aa10700 | ||
|
598c7d9cf4 | ||
|
3e9d858af1 | ||
|
6fd29e6600 | ||
|
b67636747b | ||
|
ea464c9874 | ||
|
0e9c4a3964 | ||
|
1b15f89dfd | ||
|
7192ff672e | ||
|
7a99e03888 | ||
|
be7a391a13 | ||
|
23aec81f1a | ||
|
738d962aca | ||
|
93bc97b7ec | ||
|
243bb57a27 | ||
|
4916ebd05e | ||
|
8bbf48eb64 | ||
|
56920092b9 | ||
|
672ab4fc35 | ||
|
52616dee8e | ||
|
905f021bbd | ||
|
55016ada92 | ||
|
3bfaaab4f7 | ||
|
9e83eb6501 | ||
|
ef1905a665 | ||
|
c44badd26a | ||
|
66ebc660b4 | ||
|
06e5da456f | ||
|
689486eae5 | ||
|
48dc6ecfe3 | ||
|
b9bc7d9166 | ||
|
63ee135a1e | ||
|
ca2aa52ba9 | ||
|
96d28738c9 | ||
|
e4b05e55e1 | ||
|
4a4a579fd9 | ||
|
df716e5c9f | ||
|
52000177d9 | ||
|
7d6257cb1e | ||
|
db0234ecb4 | ||
|
438fad803e | ||
|
82f8f878bc | ||
|
b0818f9535 | ||
|
c71cb35e9d | ||
|
5bf5d25bc1 | ||
|
45d6b3ba51 | ||
|
e4e1b9ccbe | ||
|
d50df7db37 | ||
|
7257d1c15f | ||
|
ea65abc7e2 | ||
|
915090f118 | ||
|
629dcd3dcf | ||
|
169172a9e0 | ||
|
0a3fad4d47 | ||
|
b666a767e4 | ||
|
ee2dd1acc7 | ||
|
4f36583898 | ||
|
21d40fc038 | ||
|
93ff65c685 | ||
|
7e7201745d | ||
|
50a986605c | ||
|
96994568fd | ||
|
b494d94bdb | ||
|
9d6ccc0fe0 | ||
|
a56e187352 | ||
|
dcdcc659ef | ||
|
ae8e844dec | ||
|
e566ba54d9 | ||
|
70732afb95 | ||
|
f2aed69f87 | ||
|
6bd96522e8 | ||
|
1e26c352d6 | ||
|
2de65ebd4d | ||
|
ed3d9aaaed | ||
|
27a3998c8f | ||
|
979c124e57 | ||
|
20ad839075 | ||
|
bed67edd2e | ||
|
6efcc02806 | ||
|
8a6dd2805f | ||
|
464219c0fa | ||
|
e602768794 | ||
|
262f2a1453 | ||
|
b408967278 | ||
|
1fd97fed91 | ||
|
fef179b625 | ||
|
87ac411c50 | ||
|
46a7aaac76 | ||
|
e14d6fe9d5 | ||
|
fb5b2d3d8e | ||
|
9dccdd1008 | ||
|
8e8a746cce | ||
|
ee71effe98 | ||
|
ce2c4f0f08 | ||
|
ef9dbf73cc | ||
|
3bed5334bf | ||
|
5dc940ead2 | ||
|
7872b41f16 | ||
|
be81f6b4ab | ||
|
1229032b4e | ||
|
ad73e2d07b | ||
|
6d80135342 | ||
|
c36a10da83 | ||
|
c30d09cef4 | ||
|
716e0b97bd | ||
|
ff862dc926 | ||
|
17c2a1cb4e | ||
|
895e640fd0 | ||
|
e8f5f86ad5 | ||
|
5055b41ee7 | ||
|
7efd08ca2e | ||
|
76b421e064 | ||
|
063e6baa0a | ||
|
9e5d412a8b | ||
|
fa9b634d8f | ||
|
d76379428d | ||
|
46509b6dd2 | ||
|
89dbf9cc81 | ||
|
c138aaabf3 | ||
|
7cef454c86 | ||
|
5cb8d15505 | ||
|
2aab55983d | ||
|
31714e5c1d | ||
|
96c351e792 | ||
|
edd57004d3 | ||
|
234d20641c | ||
|
dd802f21e7 | ||
|
dbbc990c72 | ||
|
3a6e772cba | ||
|
c9fa16fcfa | ||
|
07b04fbea9 | ||
|
1c633cbea2 | ||
|
2f685d5d2a | ||
|
0fdf2cc195 | ||
|
4f7d18a28f | ||
|
c77272a7d7 | ||
|
7a1004df73 | ||
|
0e86d2b345 | ||
|
2441bdb900 | ||
|
57679b7b7f | ||
|
37063e7a05 | ||
|
791dc7b9be | ||
|
ff24dfb2e7 | ||
|
4db60fa5a8 | ||
|
5301367630 | ||
|
9409b7ef7d | ||
|
afeb7f668b | ||
|
38b8da0f5f | ||
|
d029b62d23 | ||
|
1e9bdb4647 | ||
|
1d72024605 | ||
|
06570443b7 | ||
|
77f7caf18d | ||
|
8767ffde2f | ||
|
d58b7fa779 | ||
|
dcbf3f8879 | ||
|
30d8c8e17c | ||
|
b803bb5edb | ||
|
985a39d41f | ||
|
f846eec894 | ||
|
e7fc8ad1f5 | ||
|
95169ad54b | ||
|
ddb2e91a42 | ||
|
90357193c9 | ||
|
a336fe2850 | ||
|
fcb8e4cf37 | ||
|
b7b6c147f9 | ||
|
35ee82ca07 | ||
|
2dc56a6e9b | ||
|
e12ef76de5 | ||
|
536b05e35b | ||
|
1354854d23 | ||
|
2b062d60f2 | ||
|
c8bdb4c7fb | ||
|
80328e8a4f | ||
|
1138e3770b | ||
|
ec58013b22 | ||
|
70cb61fb71 | ||
|
8e6a0ec23d | ||
|
e2ab334636 | ||
|
dd0effe957 | ||
|
ac210c1765 | ||
|
c58e48e648 | ||
|
acdadab617 | ||
|
aa19194f7b | ||
|
9319a6e39b | ||
|
b41206abab | ||
|
07c3dc6b6f | ||
|
fa71a2a993 | ||
|
b997d1e892 | ||
|
4b71fba540 | ||
|
48d39c0a57 | ||
|
0aad053507 | ||
|
6ed14b2a5f | ||
|
c7df5ef957 | ||
|
a9013febcf | ||
|
815c430ba1 | ||
|
e94d5bf006 | ||
|
a00480f4a1 | ||
|
6da952100c | ||
|
df8588e9b7 | ||
|
fce9b35e4d | ||
|
6fd4421add | ||
|
7149bfd100 | ||
|
344ad0355e | ||
|
e7871fbc43 | ||
|
99d8dd751e | ||
|
22b1abb36d | ||
|
aa289d1023 | ||
|
ef51e02767 | ||
|
7118127139 | ||
|
2ce2afa036 | ||
|
5803dd765d | ||
|
6a310b5069 | ||
|
2caab68be9 | ||
|
4e2dbc1258 | ||
|
40eca1a68e | ||
|
98f937ba15 | ||
|
a70988ecd5 | ||
|
6f2ff620bd | ||
|
bd772610b1 | ||
|
de42b5bfae | ||
|
fcdd5173bd | ||
|
c419799313 | ||
|
c5973a630b | ||
|
e5a88b64b1 | ||
|
74f58a49b9 | ||
|
cff9d9f5eb | ||
|
ddd64f2918 | ||
|
9f06f53a59 | ||
|
4c00d7a306 | ||
|
88726e12f7 | ||
|
248bb148af | ||
|
49589e1da1 | ||
|
552267b93d | ||
|
855357f871 | ||
|
c83cba2322 | ||
|
20dcc31d19 | ||
|
29e6cc5808 | ||
|
4e6ee28bcb | ||
|
4b3247576a | ||
|
69edf17c2a | ||
|
d91a4ad1dd | ||
|
9b750ef69f | ||
|
0bf22ee3ce | ||
|
981ed22dff | ||
|
d40321ef63 | ||
|
c94996e8e8 | ||
|
4b19dd46dd | ||
|
942e841cbc | ||
|
e0a595273a | ||
|
92ca52822c | ||
|
f89dbce93c | ||
|
28f0e2eb2a | ||
|
47ac080565 | ||
|
afdf5cfde9 | ||
|
a4760bcff7 | ||
|
72e571a3de | ||
|
484c0fdd15 | ||
|
2636fb7c8d | ||
|
99c2936e90 | ||
|
66c74d6091 | ||
|
a43ba245e2 | ||
|
810d734eda | ||
|
687d6c5dc4 | ||
|
5e090c1fac | ||
|
ceb61e6600 | ||
|
ae60293c24 | ||
|
e411081c84 | ||
|
0682a5e45e | ||
|
4f751aa53d | ||
|
27fa51cfa6 | ||
|
2772ff624f | ||
|
69b160cfe8 | ||
|
ee7541c032 | ||
|
abf6068d91 | ||
|
9d5f3e787d | ||
|
ab2b9ba444 | ||
|
6ab1aff531 | ||
|
6012276093 | ||
|
9648cf226b | ||
|
56532a505d | ||
|
6bb2e5625a | ||
|
d57a5dffa1 | ||
|
1028ca0841 | ||
|
6dbe6b42c2 | ||
|
7611c3ea03 | ||
|
2fa9f934b6 | ||
|
e9fd7b7ed6 | ||
|
075e954b71 | ||
|
3f7122b3d2 | ||
|
35251c6d9c | ||
|
173594365c | ||
|
2fc44fb27d | ||
|
0264630c90 | ||
|
208769f70f | ||
|
c5bffb9fb5 | ||
|
c7afa5452b | ||
|
c7c6e83779 | ||
|
fcb6adaaaa | ||
|
9c12b58e32 | ||
|
6c8b505f93 | ||
|
8b228e7471 | ||
|
4ce07f41ca | ||
|
1bfd0e5e38 | ||
|
b962d37f79 | ||
|
c6ecf02a07 | ||
|
8b7d4b423c | ||
|
83dc126565 | ||
|
f2d3d7e710 | ||
|
f991428cb9 | ||
|
e2b4108377 | ||
|
c9cf7b1e08 | ||
|
4d865cd7ba | ||
|
a55458a84a | ||
|
66d8631c23 | ||
|
5c1ad88137 | ||
|
e230c9c6f0 | ||
|
6d24a2c942 | ||
|
5222dc0cd1 | ||
|
02c484e844 | ||
|
5face79cd0 | ||
|
51a72a9c53 | ||
|
f609d9cd59 | ||
|
3901c6ab91 | ||
|
da6f86bd79 | ||
|
42fd499af4 | ||
|
de5b88477a | ||
|
cd49a7f9e9 | ||
|
df025fcb88 | ||
|
bbb1404bd3 | ||
|
af2a172197 | ||
|
252b9fc39c | ||
|
6fc5e04d7c | ||
|
66f1fef083 | ||
|
645d4807c3 | ||
|
e2c360ada0 | ||
|
a463ead739 | ||
|
dbe5e57b8e | ||
|
99b99d7b23 | ||
|
787111a145 | ||
|
9a872f059f | ||
|
eadc94e0a1 | ||
|
f8855e892a | ||
|
27d05014e3 | ||
|
ebb58b7cbc | ||
|
7f6895a4bb | ||
|
80ae4c1a69 | ||
|
e72df9cd5f | ||
|
80ba529fb9 | ||
|
fd6b3ef5a0 | ||
|
4cd0a39794 | ||
|
5fbc510f94 | ||
|
600ab5ba5f | ||
|
ae92181d02 | ||
|
66910ed998 | ||
|
5371e4403e | ||
|
79375dd7dd | ||
|
6889609ab9 | ||
|
0bf87281e0 | ||
|
bc7bed7517 | ||
|
cfac6fd752 | ||
|
97c09c827b | ||
|
0370672886 | ||
|
2d062fedd9 | ||
|
c6a68f3de2 | ||
|
d6181b2335 | ||
|
d74e62886c | ||
|
d8505f09eb | ||
|
935c6aade0 | ||
|
a35c35f849 | ||
|
57518a2bb4 | ||
|
99a8202015 | ||
|
17c903e246 | ||
|
4de5d225db | ||
|
7741df9963 | ||
|
7ef54e9c53 | ||
|
12bb700c62 | ||
|
e3ba7250f1 | ||
|
54842095c3 | ||
|
d1aec0c3f1 | ||
|
00d5f72d6e | ||
|
15d01d4315 | ||
|
348e34f221 | ||
|
ce7b0656c0 | ||
|
fd0d360f9b | ||
|
f26cae3838 | ||
|
b8468af411 | ||
|
9fd7e319f3 | ||
|
80a8b59f24 | ||
|
b9d4da9cfe | ||
|
5bf5b58eb3 | ||
|
b2c227e9c5 | ||
|
d854228d58 | ||
|
a0c09bc2a9 | ||
|
aca3b2da58 | ||
|
604541863c | ||
|
fc67b5a8cf | ||
|
ce1b970b46 | ||
|
ceb77d6100 | ||
|
02579a1333 | ||
|
2f7fa10434 | ||
|
6be352f446 | ||
|
4d2be2e322 | ||
|
d5c01098fd | ||
|
d2bda8ea77 | ||
|
c517e945de | ||
|
e3a1a2e0c6 | ||
|
b9c2a925e2 | ||
|
59238c6e73 | ||
|
652ab1ac72 | ||
|
bdf879427c | ||
|
4058b80d56 | ||
|
be949496ac | ||
|
b57b12fdb7 | ||
|
e64bb40d0b | ||
|
c8d83b7a63 | ||
|
9539cc4a93 | ||
|
72cf304a86 | ||
|
67ad566188 | ||
|
db46a8dd06 | ||
|
fd9e0dd13a | ||
|
da535164b4 | ||
|
82d9570ed4 | ||
|
a619e8af4a | ||
|
2611a996ff | ||
|
3e7618fef7 | ||
|
5b1b75b055 | ||
|
f1612e36ee | ||
|
bfd3d714b9 | ||
|
5a42ccc575 | ||
|
b3b0321620 | ||
|
e0deacd236 | ||
|
f66172451d | ||
|
25ec20d861 | ||
|
e80238120e | ||
|
07cfdd8ca0 | ||
|
ade7509b97 | ||
|
8d1956921d | ||
|
354fa6544a | ||
|
291c50202a | ||
|
ce8faa2e90 | ||
|
0579220546 | ||
|
50e4ca8593 | ||
|
ddd5704c92 | ||
|
3ba6d2bd27 | ||
|
cd9b730735 | ||
|
f593f3da0a | ||
|
e9d8bf96e0 | ||
|
6b3a612bbc | ||
|
c742debea8 | ||
|
cd60ec1576 | ||
|
95e6453823 | ||
|
7e0279b15c | ||
|
791f0d70ac | ||
|
0709dc7a6a | ||
|
15528599f4 | ||
|
031aab3ef6 | ||
|
c990134e49 | ||
|
822508f33e | ||
|
358893aa84 | ||
|
344fac5aa7 | ||
|
27965d5fdc | ||
|
c025bc5098 | ||
|
170bc0a8de | ||
|
891fd5c604 | ||
|
5b1cd335bb | ||
|
eefb6a0dd4 | ||
|
9aaf54140f | ||
|
c5786916f7 | ||
|
b8e009eb05 | ||
|
256d226d4b | ||
|
7b3208092c | ||
|
1eb86d6394 | ||
|
a0ca936e8d | ||
|
de3c50a237 | ||
|
244ddea0ea | ||
|
6c94835f5d | ||
|
617566128d | ||
|
7bf772111c | ||
|
50e0893497 | ||
|
7459d430eb | ||
|
163616cc0a | ||
|
e378dc4c28 | ||
|
4876028f29 | ||
|
22847563ce | ||
|
0996113d14 | ||
|
f019e9d856 | ||
|
48b83d3e97 | ||
|
c3211e32ae | ||
|
c1790bf0d8 | ||
|
6690197673 | ||
|
384196efb1 | ||
|
b801125797 | ||
|
aecdd6f68f | ||
|
899cb44519 | ||
|
86175f043c | ||
|
74c6b8e9bc | ||
|
d3347e64ba | ||
|
4c8081bafc | ||
|
5995e89a80 | ||
|
b9bdbe9aae | ||
|
c86789427d | ||
|
0852084884 | ||
|
96778fca92 | ||
|
0c53b608f9 | ||
|
27350ad71b | ||
|
d9d220cfc9 | ||
|
2026256823 | ||
|
012baeb909 | ||
|
7249961aa4 | ||
|
3d77e526d6 | ||
|
c4b2fe6ee5 | ||
|
cea320af24 | ||
|
a5bf0591ee | ||
|
22f5236943 | ||
|
f84bcfbb97 | ||
|
f36ee67226 | ||
|
615b8fc569 | ||
|
ff3bb7f671 | ||
|
39e4e48fdc | ||
|
300a88922e | ||
|
c003260d63 | ||
|
40c08954db | ||
|
fd69b41748 | ||
|
a2191c0a68 | ||
|
c17451557f | ||
|
b91dca9ad0 | ||
|
7586e535ff | ||
|
7859b88f19 | ||
|
7f7809f523 | ||
|
b4c2d1dabb | ||
|
362e91c40b | ||
|
acf6d47b6f | ||
|
0903ad48f0 | ||
|
46f8600b6a | ||
|
fcb3638ac3 | ||
|
e599b2548a | ||
|
98d14b4655 | ||
|
96f7e59832 | ||
|
061026f21f | ||
|
330e9a8424 | ||
|
1e47b1c610 | ||
|
bf40b89b53 | ||
|
9f2dbf4fc5 | ||
|
235b0482dd | ||
|
cbd332bc57 | ||
|
fc8aa80e62 | ||
|
56404b7006 | ||
|
08d48201e9 | ||
|
76c4673944 | ||
|
0a31201c88 | ||
|
afe94e303a | ||
|
b004706009 | ||
|
129042425d | ||
|
81169d18c3 | ||
|
cce6a603a6 | ||
|
1c6608f426 | ||
|
fcdc5538cf | ||
|
dd327bc8a6 | ||
|
b878353f0b | ||
|
27d286eb7a | ||
|
01cf559d9d | ||
|
20fd760a52 | ||
|
cca8ae04b6 | ||
|
60c45dac56 | ||
|
7bee4fa44b | ||
|
4c029af6cd | ||
|
1c6efea370 | ||
|
895dc94cc9 | ||
|
9f9479a50f | ||
|
13d559119f | ||
|
018388d321 | ||
|
cf69d917c1 | ||
|
41599e5e90 | ||
|
1b2e69f6c0 | ||
|
ee45869759 | ||
|
048fe84888 | ||
|
480031439f | ||
|
dc9b145e27 | ||
|
0e27a49d1a | ||
|
4afd416840 | ||
|
25142abebf | ||
|
60d50bcb13 | ||
|
59f45aa30c | ||
|
14c32a7cf0 | ||
|
4c8e703803 | ||
|
8338e55549 | ||
|
da72cfea40 | ||
|
0632e94e68 | ||
|
4a356ae331 | ||
|
4f4f2d169a | ||
|
577d520006 | ||
|
222d6f1db1 | ||
|
4ffa60be50 | ||
|
7da72d1295 | ||
|
c9735e8ea9 | ||
|
8a7868d006 | ||
|
c4e5242be0 | ||
|
935f7f19f3 | ||
|
5c9ae28937 | ||
|
8e27fc7f9b | ||
|
e0c97e6fcc | ||
|
e80d938ee5 | ||
|
a6f1737861 | ||
|
c78ed25e30 | ||
|
c87d1c2fb9 | ||
|
c66d24b41a | ||
|
155b791d43 | ||
|
c5ac80be2b | ||
|
53acff167b | ||
|
9c1a41052b | ||
|
a1861112ee | ||
|
b2a1fb7149 | ||
|
db2a03ed33 | ||
|
9e8bf10653 | ||
|
c20a631ab7 | ||
|
8c63244855 | ||
|
9a31922709 | ||
|
3c2818b30a | ||
|
e017e4252b | ||
|
97365a8ffe | ||
|
df12a41cbb | ||
|
0aa3a7e71c | ||
|
3918cdd989 | ||
|
c4df987eef | ||
|
c125ffb384 | ||
|
6536e3dc54 | ||
|
164d0a5201 | ||
|
95574f98c4 | ||
|
bca77b5505 | ||
|
96f63a6bf3 | ||
|
37cbd0662e | ||
|
9b23602806 | ||
|
68f2e1bc06 | ||
|
bc80eb616d | ||
|
d005049084 | ||
|
142571d0b8 | ||
|
5cc6b3e342 | ||
|
49032b4b63 | ||
|
1903c6d009 | ||
|
266fceddf0 | ||
|
973aa8583a | ||
|
ca06aeeb2d | ||
|
d1e246c68d | ||
|
bdea3ed979 | ||
|
dd7cbb6bb5 | ||
|
13defc7ceb | ||
|
61d9874ebc | ||
|
031c37c7b0 | ||
|
860821114a | ||
|
73bba62d82 | ||
|
207437a6ee | ||
|
f7c39ae089 | ||
|
f1fbd363f8 | ||
|
206d7635f7 | ||
|
1fa350267f | ||
|
9962ef9ac4 | ||
|
c97a758aa7 | ||
|
68eb601194 | ||
|
cadeca27de | ||
|
af2d0f188c | ||
|
c11a43418e | ||
|
d7d4cef66d | ||
|
9b71bbac3a | ||
|
ac8c4245b2 | ||
|
d726ecdb5d | ||
|
41919158cc | ||
|
4ea84d3144 | ||
|
3744cb24e2 | ||
|
a6cbeba5f6 | ||
|
4cda2aec57 | ||
|
33470fd872 | ||
|
75bba2b055 | ||
|
c953e3cc0f | ||
|
83319a3ea6 | ||
|
516dc79605 | ||
|
2aa2b7f61e | ||
|
0053160f28 | ||
|
2ac8132499 | ||
|
7aa34cb3d2 | ||
|
3aee23c172 | ||
|
bec9141233 | ||
|
131683fdcf | ||
|
8176b0c2fc | ||
|
513fe87391 | ||
|
a07e1bf336 | ||
|
ae117d0cfa | ||
|
a4e83ec584 | ||
|
373ca2389a | ||
|
b2f9a907ce | ||
|
2b2fd23815 | ||
|
2113a18a18 | ||
|
1606a41116 | ||
|
438bf8596e | ||
|
b912e84df7 | ||
|
3c9c7a0e72 | ||
|
82c0654f76 | ||
|
cb3eae1042 | ||
|
3dcda782ce | ||
|
1d387b5d45 | ||
|
74329abf29 | ||
|
0afae65c8a | ||
|
350a5edb87 | ||
|
c11bd57422 | ||
|
883b2223c1 | ||
|
0898023e6b | ||
|
869d2f281a | ||
|
cb03fe8f31 | ||
|
ea14e94eaf | ||
|
2601c39cb2 | ||
|
53312cf696 | ||
|
9e0494cf4d | ||
|
3d536f1293 | ||
|
d6f4a0d2cf | ||
|
14e6d9555d | ||
|
8b02e87529 | ||
|
f04e10238b | ||
|
e946ee4040 | ||
|
46ba4b9d8c | ||
|
464f76ce5d | ||
|
9965f26d97 | ||
|
bf5350e13c | ||
|
3742fabae0 | ||
|
192e554f3e | ||
|
00214cbb4a | ||
|
ba44e7a228 | ||
|
cad979b734 | ||
|
1c5a4de176 | ||
|
ad46e65dff | ||
|
5dec1b0cc0 | ||
|
c80e877c28 | ||
|
5ff9f4a435 | ||
|
bd1649e5f4 | ||
|
b7cab5c5eb | ||
|
6067a556d7 | ||
|
6a07a853b0 | ||
|
886f435fc8 | ||
|
96e837ae9f | ||
|
bddf9f9ca3 | ||
|
5f3062aff0 | ||
|
a859471960 | ||
|
5b47391162 | ||
|
dcba783389 | ||
|
7eceed8d4d | ||
|
800246402f | ||
|
c7e36bcf22 | ||
|
79d2a14061 | ||
|
085f0171c1 | ||
|
e7ac8275ea | ||
|
03d4ac1863 | ||
|
a61999170e | ||
|
beda50f631 | ||
|
cf7ee82755 | ||
|
f6e5a33952 | ||
|
7a50ebaa3f | ||
|
aa0c22b648 | ||
|
aa258fa17f | ||
|
66de8f33fb | ||
|
e3ef21f770 | ||
|
a7ef4c75ea | ||
|
9a2e9c5be4 | ||
|
ddc4a40c33 | ||
|
52e88ed4c8 | ||
|
5199bebdb5 | ||
|
31e9072906 | ||
|
c2368cc605 | ||
|
1e7fb52b21 | ||
|
53705a537c | ||
|
3481ebdafb | ||
|
71eece2f35 | ||
|
454ca897bb | ||
|
41ca09d645 | ||
|
24b7eec687 | ||
|
dcbfd61558 | ||
|
e98b83dade | ||
|
257adb4464 | ||
|
7b41738979 | ||
|
b65b64628d | ||
|
086a3044e3 | ||
|
fc32c19ca7 | ||
|
d89e82d4a0 | ||
|
f40ce51a13 | ||
|
e6ae3b8a2b | ||
|
dc503897b1 | ||
|
49a64da7ec | ||
|
922e6add38 | ||
|
232003b046 | ||
|
cfadca696b | ||
|
5311616ca1 | ||
|
c7bb4a9678 | ||
|
e581c148d9 | ||
|
d4959a95c2 | ||
|
780ae5232d | ||
|
caddea4624 | ||
|
27b5dc1452 | ||
|
b4ab9f7b8c | ||
|
e371bd09c1 | ||
|
db167e09c5 | ||
|
27573d9576 | ||
|
0054f8bd74 | ||
|
5c1e402429 | ||
|
e974a0412f | ||
|
76420d7146 | ||
|
f584d4f500 | ||
|
8c1f7f7531 | ||
|
c6dd3c11fa | ||
|
3b9967db48 | ||
|
4f53645e5d | ||
|
b7eb1d3310 | ||
|
222d927e93 | ||
|
30164d5b46 | ||
|
f868c67429 | ||
|
7a1644bc97 | ||
|
144f727d5a | ||
|
9f1e9b6044 | ||
|
70a622ce54 | ||
|
0775e21131 | ||
|
db37452787 | ||
|
c7d6bf733a | ||
|
8d9c3920bb | ||
|
6f1742970d | ||
|
8a24deff97 | ||
|
985d2d221c | ||
|
9174814686 | ||
|
2a08641f59 | ||
|
8950c0dc96 | ||
|
2e555db9a4 | ||
|
3f4fb93379 | ||
|
dc6e831524 | ||
|
afa004fb8b | ||
|
149395c306 | ||
|
48781cf7f7 | ||
|
db86b3ea2e | ||
|
cd2debdfc6 | ||
|
cd45e6edee | ||
|
4360bc326a | ||
|
f819e88e9c | ||
|
0969d9db83 | ||
|
cdc85232b2 | ||
|
5eb42dd9f3 | ||
|
7ede468849 | ||
|
bc7c0d05f8 | ||
|
3ca84c4357 | ||
|
2ff1ea555f | ||
|
03cc603093 | ||
|
64f10eff20 | ||
|
111c2769a5 | ||
|
482845b027 | ||
|
f8b9b309b0 | ||
|
d128ffcc14 | ||
|
aba37c40d3 | ||
|
c8204a902c | ||
|
032eb15079 | ||
|
70607f56d9 | ||
|
bfb158d773 | ||
|
ae8de7168a | ||
|
9e88275de6 | ||
|
3f5107cea5 | ||
|
04da2ff7c8 | ||
|
9012a032c1 | ||
|
38461ee204 | ||
|
75370a2fee | ||
|
6ec6bcafbf | ||
|
e2fb67fdea | ||
|
bb5eb3ba55 | ||
|
c9ad181ca4 | ||
|
289394de30 | ||
|
12d4a51679 | ||
|
9bd0674672 | ||
|
a9c1e1e468 | ||
|
42ba6f0a34 | ||
|
49603c24ad | ||
|
08aa77c243 | ||
|
4e6a76e11e | ||
|
34037c0550 | ||
|
bc086c5a2d | ||
|
d939f379f4 | ||
|
8079f8ea3c | ||
|
f2dbf57104 | ||
|
b8622adac5 | ||
|
b4bc7983a6 | ||
|
f7df384ee1 | ||
|
095d531cc6 | ||
|
8c227622d7 | ||
|
1ddcf7d5c5 | ||
|
c93264868b | ||
|
5bf1196bd4 | ||
|
139aa17af4 | ||
|
bfcc2da2ce | ||
|
670659bcba | ||
|
5f825eb68b | ||
|
1efccfcced | ||
|
b7ad3bcf96 | ||
|
08fd62e328 | ||
|
63b73351ae | ||
|
a9f401a9a0 | ||
|
e9828f1fcd | ||
|
169effefc2 | ||
|
6339875989 | ||
|
802ad39209 | ||
|
200a2f5c71 | ||
|
d7e117f52b | ||
|
72bbc51ba9 | ||
|
a816f81ecd | ||
|
5c3b368925 | ||
|
2a3a1aaf1e | ||
|
156650e90a | ||
|
bf93537d54 | ||
|
f42c61f9d1 | ||
|
ce40c64f6b | ||
|
f836d2f9f7 | ||
|
bdcfb760b5 | ||
|
749883835a | ||
|
b4d91d5e31 | ||
|
dbd0ce30d9 | ||
|
a45e1a01fc | ||
|
9bff56db9f | ||
|
502b3ceaa2 | ||
|
01abd1565e | ||
|
160aeb4879 | ||
|
fd0a5e3c23 | ||
|
6f002678be | ||
|
da5efea663 | ||
|
22ffae1b13 | ||
|
62ed3b476d | ||
|
4a684a6371 | ||
|
18c9727a98 | ||
|
e77eaa0ace | ||
|
12e8a92608 | ||
|
5bc3923bae | ||
|
e99ac8f6d8 | ||
|
f5db501879 | ||
|
8aafee4e35 | ||
|
83b434d6a5 | ||
|
2c9a2e94c8 | ||
|
8f817e67de | ||
|
66c80e82ba | ||
|
32191bc18e | ||
|
c4069fdcee | ||
|
b17005ddab | ||
|
30a741e6af | ||
|
69cf1aa050 | ||
|
1b82de1797 | ||
|
ec62402908 | ||
|
c8f29a689d | ||
|
e3ecd5d23e | ||
|
eac0e06a7a | ||
|
834c72bb0f | ||
|
6b86848984 | ||
|
68bd94fa25 | ||
|
d981694c64 | ||
|
4fff68355a | ||
|
c79d327b5e | ||
|
35abc0725d | ||
|
1fab75d789 | ||
|
5175b1676b | ||
|
fbae56ef45 | ||
|
f96c4eb5bb | ||
|
9395b28542 | ||
|
ef09cbee2f | ||
|
5d86f08626 | ||
|
ec6a824ef9 | ||
|
bbcc818b3d | ||
|
7ede54e821 | ||
|
b2b7118b8e | ||
|
8fba0d209e | ||
|
659181f74b | ||
|
555993717b | ||
|
a29474567a | ||
|
279f9aa6d3 | ||
|
d4f9d38368 | ||
|
47e0539968 | ||
|
4e836493cc | ||
|
226ecaf9a2 | ||
|
bcd9a0141a | ||
|
811b5d995b | ||
|
c7992884ae | ||
|
39f2bb28de | ||
|
78d7cb712e | ||
|
d61c71c378 | ||
|
c317a1b7c4 | ||
|
7e48ab4ccd | ||
|
2fd0da8788 | ||
|
113d546486 | ||
|
2c810c747d | ||
|
a74d90891a | ||
|
381717792b | ||
|
610ba1cadf | ||
|
e41bf097d0 | ||
|
7a82e9f557 | ||
|
23acc993cc | ||
|
659393049e | ||
|
b578c78eff | ||
|
d7db3f1546 | ||
|
20f6610c61 | ||
|
923c944abb | ||
|
0b9f6985b1 | ||
|
1430142ad8 | ||
|
3a5091cb6e | ||
|
ece02317b9 | ||
|
218a3e3d01 | ||
|
d6d7299859 | ||
|
5f913e9558 | ||
|
a9d7282f00 | ||
|
3e20ecd6e1 | ||
|
1ef000b1ab | ||
|
765e78f72b | ||
|
32871f997e | ||
|
9fb729ccc0 | ||
|
4b582851f7 | ||
|
da20c68d48 | ||
|
d19f4ad53a | ||
|
d17552670c | ||
|
6a69b4e475 | ||
|
0b4817a1c6 | ||
|
e931afdc9b | ||
|
7dab5322df | ||
|
138fd6f0f3 | ||
|
5c3bb42612 | ||
|
2c2d03a8d7 | ||
|
93878da2ca | ||
|
3f798dbbcd | ||
|
72dc9a21f7 | ||
|
bd7b8e87c1 | ||
|
42249ce28e |
32
.editorconfig
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2021 The GTK Authors
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.[ch]]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
insert_final_newline = true
|
||||||
|
# For the legacy tabs which still exist in the code:
|
||||||
|
tab_width = 8
|
||||||
|
|
||||||
|
[*.ui]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*.xml]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
[meson.build]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
max_line_length = 80
|
@@ -25,7 +25,7 @@ variables:
|
|||||||
BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true"
|
BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true"
|
||||||
FEATURE_FLAGS: "-Dvulkan=enabled -Dcloudproviders=enabled"
|
FEATURE_FLAGS: "-Dvulkan=enabled -Dcloudproviders=enabled"
|
||||||
MESON_TEST_TIMEOUT_MULTIPLIER: 3
|
MESON_TEST_TIMEOUT_MULTIPLIER: 3
|
||||||
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v34"
|
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v38"
|
||||||
FLATPAK_IMAGE: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master"
|
FLATPAK_IMAGE: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master"
|
||||||
|
|
||||||
.only-default:
|
.only-default:
|
||||||
@@ -58,6 +58,7 @@ style-check-diff:
|
|||||||
- "${CI_PROJECT_DIR}/_build/report*.xml"
|
- "${CI_PROJECT_DIR}/_build/report*.xml"
|
||||||
- "${CI_PROJECT_DIR}/_build/report*.html"
|
- "${CI_PROJECT_DIR}/_build/report*.html"
|
||||||
- "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.png"
|
- "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.png"
|
||||||
|
- "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.node"
|
||||||
- "${CI_PROJECT_DIR}/_build/testsuite/tools/output/*/*"
|
- "${CI_PROJECT_DIR}/_build/testsuite/tools/output/*/*"
|
||||||
- "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*/*.png"
|
- "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*/*.png"
|
||||||
- "${CI_PROJECT_DIR}/_build/testsuite/css/output/*/*.syscap"
|
- "${CI_PROJECT_DIR}/_build/testsuite/css/output/*/*.syscap"
|
||||||
@@ -88,9 +89,10 @@ fedora-x86_64:
|
|||||||
- meson compile -C _build
|
- meson compile -C _build
|
||||||
- meson install -C _build
|
- meson install -C _build
|
||||||
- PKG_CONFIG_PATH=${CI_PROJECT_DIR}/_install/lib64/pkgconfig:${CI_PROJECT_DIR}/_install/share/pkgconfig meson setup _build_hello examples/hello
|
- PKG_CONFIG_PATH=${CI_PROJECT_DIR}/_install/lib64/pkgconfig:${CI_PROJECT_DIR}/_install/share/pkgconfig meson setup _build_hello examples/hello
|
||||||
- meson compile -C _build_hello
|
- LD_LIBRARY_PATH=${CI_PROJECT_DIR}/_install/lib64 meson compile -C _build_hello
|
||||||
- .gitlab-ci/run-tests.sh _build x11
|
- .gitlab-ci/run-tests.sh _build x11
|
||||||
- .gitlab-ci/run-tests.sh _build wayland
|
- .gitlab-ci/run-tests.sh _build wayland
|
||||||
|
- .gitlab-ci/run-tests.sh _build waylandgles
|
||||||
- .gitlab-ci/run-tests.sh _build broadway
|
- .gitlab-ci/run-tests.sh _build broadway
|
||||||
|
|
||||||
release-build:
|
release-build:
|
||||||
@@ -155,6 +157,11 @@ msys2-mingw64:
|
|||||||
variables:
|
variables:
|
||||||
MSYSTEM: "MINGW64"
|
MSYSTEM: "MINGW64"
|
||||||
CHERE_INVOKING: "yes"
|
CHERE_INVOKING: "yes"
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
expose_as: 'Windows_DLL_MSYS2_64_bit_toolchain'
|
||||||
|
paths:
|
||||||
|
- "${CI_PROJECT_DIR}/_build/gtkdll.tar.gz"
|
||||||
|
|
||||||
macos:
|
macos:
|
||||||
extends: .only-default
|
extends: .only-default
|
||||||
@@ -166,7 +173,7 @@ macos:
|
|||||||
needs: []
|
needs: []
|
||||||
before_script:
|
before_script:
|
||||||
- bash .gitlab-ci/show-info-osx.sh
|
- bash .gitlab-ci/show-info-osx.sh
|
||||||
- pip3 install --user meson==0.56
|
- pip3 install --user meson==0.60.3
|
||||||
- pip3 install --user ninja
|
- pip3 install --user ninja
|
||||||
- export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH
|
- export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH
|
||||||
- export MESON_FORCE_BACKTRACE=1
|
- export MESON_FORCE_BACKTRACE=1
|
||||||
@@ -220,11 +227,11 @@ vs2017-x64:
|
|||||||
extends: .flatpak-defaults
|
extends: .flatpak-defaults
|
||||||
when: manual
|
when: manual
|
||||||
|
|
||||||
# Only build Flatpak bundles automatically on master
|
# Only build Flatpak bundles automatically on main
|
||||||
.flatpak-master:
|
.flatpak-main:
|
||||||
extends: .flatpak-defaults
|
extends: .flatpak-defaults
|
||||||
only:
|
only:
|
||||||
- master
|
- main
|
||||||
|
|
||||||
flatpak-manual:demo:
|
flatpak-manual:demo:
|
||||||
extends: .flatpak-manual
|
extends: .flatpak-manual
|
||||||
@@ -232,8 +239,8 @@ flatpak-manual:demo:
|
|||||||
variables:
|
variables:
|
||||||
APPID: org.gtk.Demo4
|
APPID: org.gtk.Demo4
|
||||||
|
|
||||||
flatpak-master:demo:
|
flatpak-main:demo:
|
||||||
extends: .flatpak-master
|
extends: .flatpak-main
|
||||||
needs: []
|
needs: []
|
||||||
variables:
|
variables:
|
||||||
APPID: org.gtk.Demo4
|
APPID: org.gtk.Demo4
|
||||||
@@ -244,8 +251,8 @@ flatpak-manual:widget-factory:
|
|||||||
variables:
|
variables:
|
||||||
APPID: org.gtk.WidgetFactory4
|
APPID: org.gtk.WidgetFactory4
|
||||||
|
|
||||||
flatpak-master:widget-factory:
|
flatpak-main:widget-factory:
|
||||||
extends: .flatpak-master
|
extends: .flatpak-main
|
||||||
needs: []
|
needs: []
|
||||||
variables:
|
variables:
|
||||||
APPID: org.gtk.WidgetFactory4
|
APPID: org.gtk.WidgetFactory4
|
||||||
@@ -256,8 +263,8 @@ flatpak-manual:icon-browser:
|
|||||||
variables:
|
variables:
|
||||||
APPID: org.gtk.IconBrowser4
|
APPID: org.gtk.IconBrowser4
|
||||||
|
|
||||||
flatpak-master:icon-browser:
|
flatpak-main:icon-browser:
|
||||||
extends: .flatpak-master
|
extends: .flatpak-main
|
||||||
needs: []
|
needs: []
|
||||||
variables:
|
variables:
|
||||||
APPID: org.gtk.IconBrowser4
|
APPID: org.gtk.IconBrowser4
|
||||||
@@ -267,18 +274,18 @@ flatpak-master:icon-browser:
|
|||||||
# https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
|
# https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
|
||||||
nightly demo:
|
nightly demo:
|
||||||
extends: '.publish_nightly'
|
extends: '.publish_nightly'
|
||||||
dependencies: ['flatpak-master:demo']
|
dependencies: ['flatpak-main:demo']
|
||||||
needs: ['flatpak-master:demo']
|
needs: ['flatpak-main:demo']
|
||||||
|
|
||||||
nightly factory:
|
nightly factory:
|
||||||
extends: '.publish_nightly'
|
extends: '.publish_nightly'
|
||||||
dependencies: ['flatpak-master:widget-factory']
|
dependencies: ['flatpak-main:widget-factory']
|
||||||
needs: ['flatpak-master:widget-factory']
|
needs: ['flatpak-main:widget-factory']
|
||||||
|
|
||||||
nightly icon-browser:
|
nightly icon-browser:
|
||||||
extends: '.publish_nightly'
|
extends: '.publish_nightly'
|
||||||
dependencies: ['flatpak-master:icon-browser']
|
dependencies: ['flatpak-main:icon-browser']
|
||||||
needs: ['flatpak-master:icon-browser']
|
needs: ['flatpak-main:icon-browser']
|
||||||
|
|
||||||
static-scan:
|
static-scan:
|
||||||
image: $FEDORA_IMAGE
|
image: $FEDORA_IMAGE
|
||||||
@@ -345,4 +352,4 @@ publish-docs:
|
|||||||
- "curl -X POST -F token=${PAGES_TRIGGER_TOKEN} -F ref=docs-gtk-org https://gitlab.gnome.org/api/v4/projects/665/trigger/pipeline"
|
- "curl -X POST -F token=${PAGES_TRIGGER_TOKEN} -F ref=docs-gtk-org https://gitlab.gnome.org/api/v4/projects/665/trigger/pipeline"
|
||||||
only:
|
only:
|
||||||
refs:
|
refs:
|
||||||
- master
|
- main
|
||||||
|
@@ -14,6 +14,9 @@ Each Docker image has a tag composed of two parts:
|
|||||||
See the [container registry][registry] for the available images for each
|
See the [container registry][registry] for the available images for each
|
||||||
branch, as well as their available versions.
|
branch, as well as their available versions.
|
||||||
|
|
||||||
|
Note that using `latest` as version number will overwrite the most
|
||||||
|
recently uploaded image in the registry.
|
||||||
|
|
||||||
### Checklist for Updating a CI image
|
### Checklist for Updating a CI image
|
||||||
|
|
||||||
- [ ] Update the `${image}.Dockerfile` file with the dependencies
|
- [ ] Update the `${image}.Dockerfile` file with the dependencies
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
FROM fedora:34
|
FROM fedora:36
|
||||||
|
|
||||||
RUN dnf -y install \
|
RUN dnf -y install \
|
||||||
adwaita-icon-theme \
|
adwaita-icon-theme \
|
||||||
@@ -76,6 +76,7 @@ RUN dnf -y install \
|
|||||||
pcre-devel \
|
pcre-devel \
|
||||||
pcre-static \
|
pcre-static \
|
||||||
python3 \
|
python3 \
|
||||||
|
python3-docutils \
|
||||||
python3-gobject \
|
python3-gobject \
|
||||||
python3-jinja2 \
|
python3-jinja2 \
|
||||||
python3-markdown \
|
python3-markdown \
|
||||||
@@ -86,7 +87,6 @@ RUN dnf -y install \
|
|||||||
python3-wheel \
|
python3-wheel \
|
||||||
redhat-rpm-config \
|
redhat-rpm-config \
|
||||||
sassc \
|
sassc \
|
||||||
systemtap-sdt-devel \
|
|
||||||
vulkan-devel \
|
vulkan-devel \
|
||||||
wayland-devel \
|
wayland-devel \
|
||||||
wayland-protocols-devel \
|
wayland-protocols-devel \
|
||||||
@@ -94,6 +94,8 @@ RUN dnf -y install \
|
|||||||
weston-libs \
|
weston-libs \
|
||||||
which \
|
which \
|
||||||
xorg-x11-server-Xvfb \
|
xorg-x11-server-Xvfb \
|
||||||
|
&& dnf install -y 'dnf-command(builddep)' \
|
||||||
|
&& dnf builddep -y wayland \
|
||||||
&& dnf clean all
|
&& dnf clean all
|
||||||
|
|
||||||
# Enable sudo for wheel users
|
# Enable sudo for wheel users
|
||||||
|
@@ -43,6 +43,6 @@ flatpak build-bundle \
|
|||||||
${appid}
|
${appid}
|
||||||
|
|
||||||
# to be consumed by the nightly publish jobs
|
# to be consumed by the nightly publish jobs
|
||||||
if [[ $CI_COMMIT_BRANCH == master ]]; then
|
if [[ $CI_COMMIT_BRANCH == main ]]; then
|
||||||
tar cf repo.tar ${repodir}
|
tar cf repo.tar ${repodir}
|
||||||
fi
|
fi
|
||||||
|
@@ -185,6 +185,8 @@ ul.images li {
|
|||||||
<li><img alt="ref" src="{{ failure.image_data.ref }}" /></li>
|
<li><img alt="ref" src="{{ failure.image_data.ref }}" /></li>
|
||||||
<li><img alt="out" src="{{ failure.image_data.out }}" /></li>
|
<li><img alt="out" src="{{ failure.image_data.out }}" /></li>
|
||||||
<li><img alt="diff" src="{{ failure.image_data.diff }}" /></li>
|
<li><img alt="diff" src="{{ failure.image_data.diff }}" /></li>
|
||||||
|
<li><a href="{{ failure.image_data.refnode }}">ref node</a></li>
|
||||||
|
<li><a href="{{ failure.image_data.outnode }}">out node</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
@@ -268,7 +270,7 @@ aparser.add_argument('--job-id', metavar='ID',
|
|||||||
default=None)
|
default=None)
|
||||||
aparser.add_argument('--branch', metavar='NAME',
|
aparser.add_argument('--branch', metavar='NAME',
|
||||||
help='Branch of the project being tested',
|
help='Branch of the project being tested',
|
||||||
default='master')
|
default='main')
|
||||||
aparser.add_argument('--output', metavar='FILE',
|
aparser.add_argument('--output', metavar='FILE',
|
||||||
help='The output HTML file, stdout by default',
|
help='The output HTML file, stdout by default',
|
||||||
type=argparse.FileType('w', encoding='UTF-8'),
|
type=argparse.FileType('w', encoding='UTF-8'),
|
||||||
@@ -311,6 +313,8 @@ for line in args.infile:
|
|||||||
image_data = {
|
image_data = {
|
||||||
'ref': os.path.join(args.reftest_output_dir, '{}.ref.png'.format(basename)),
|
'ref': os.path.join(args.reftest_output_dir, '{}.ref.png'.format(basename)),
|
||||||
'out': os.path.join(args.reftest_output_dir, '{}.out.png'.format(basename)),
|
'out': os.path.join(args.reftest_output_dir, '{}.out.png'.format(basename)),
|
||||||
|
'refnode': os.path.join(args.reftest_output_dir, '{}.ref.node'.format(basename)),
|
||||||
|
'outnode': os.path.join(args.reftest_output_dir, '{}.out.node'.format(basename)),
|
||||||
'diff': os.path.join(args.reftest_output_dir, '{}.diff.png'.format(basename)),
|
'diff': os.path.join(args.reftest_output_dir, '{}.diff.png'.format(basename)),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,7 +27,7 @@ aparser.add_argument('--job-id', metavar='ID',
|
|||||||
default='Unknown')
|
default='Unknown')
|
||||||
aparser.add_argument('--branch', metavar='NAME',
|
aparser.add_argument('--branch', metavar='NAME',
|
||||||
help='Branch of the project being tested',
|
help='Branch of the project being tested',
|
||||||
default='master')
|
default='main')
|
||||||
aparser.add_argument('--output', metavar='FILE',
|
aparser.add_argument('--output', metavar='FILE',
|
||||||
help='The output file, stdout by default',
|
help='The output file, stdout by default',
|
||||||
type=argparse.FileType('w', encoding='UTF-8'),
|
type=argparse.FileType('w', encoding='UTF-8'),
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# We need to add a new remote for the upstream master, since this script could
|
# We need to add a new remote for the upstream main, since this script could
|
||||||
# be running in a personal fork of the repository which has out of date branches.
|
# be running in a personal fork of the repository which has out of date branches.
|
||||||
if [ "${CI_PROJECT_NAMESPACE}" != "GNOME" ]; then
|
if [ "${CI_PROJECT_NAMESPACE}" != "GNOME" ]; then
|
||||||
echo "Retrieving the current upstream repository from ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}..."
|
echo "Retrieving the current upstream repository from ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}..."
|
||||||
@@ -16,7 +16,7 @@ fi
|
|||||||
|
|
||||||
# Work out the newest common ancestor between the detached HEAD that this CI job
|
# 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
|
# has checked out, and the upstream target branch (which will typically be
|
||||||
# `upstream/master` or `upstream/gtk-3-24`).
|
# `upstream/main` or `upstream/gtk-3-24`).
|
||||||
#
|
#
|
||||||
# `${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}` is only defined if we’re running in
|
# `${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}` is only defined if we’re running in
|
||||||
# a merge request pipeline; fall back to `${CI_DEFAULT_BRANCH}` otherwise.
|
# a merge request pipeline; fall back to `${CI_DEFAULT_BRANCH}` otherwise.
|
||||||
@@ -36,7 +36,7 @@ exit_status=$?
|
|||||||
echo ""
|
echo ""
|
||||||
echo "Note that clang-format output is advisory and cannot always match the"
|
echo "Note that clang-format output is advisory and cannot always match the"
|
||||||
echo "GTK coding style, documented at:"
|
echo "GTK coding style, documented at:"
|
||||||
echo " https://gitlab.gnome.org/GNOME/gtk/blob/master/docs/CODING-STYLE"
|
echo " https://gitlab.gnome.org/GNOME/gtk/blob/main/docs/CODING-STYLE"
|
||||||
echo "Warnings from this tool can be ignored in favour of the documented "
|
echo "Warnings from this tool can be ignored in favour of the documented "
|
||||||
echo "coding style, or in favour of matching the style of existing"
|
echo "coding style, or in favour of matching the style of existing"
|
||||||
echo "surrounding code."
|
echo "surrounding code."
|
||||||
|
@@ -44,6 +44,24 @@ case "${backend}" in
|
|||||||
kill ${compositor}
|
kill ${compositor}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
waylandgles)
|
||||||
|
export XDG_RUNTIME_DIR="$(mktemp -p $(pwd) -d xdg-runtime-XXXXXX)"
|
||||||
|
|
||||||
|
weston --backend=headless-backend.so --socket=wayland-6 --idle-time=0 &
|
||||||
|
compositor=$!
|
||||||
|
export WAYLAND_DISPLAY=wayland-6
|
||||||
|
|
||||||
|
meson test -C ${builddir} \
|
||||||
|
--timeout-multiplier "${MESON_TEST_TIMEOUT_MULTIPLIER}" \
|
||||||
|
--print-errorlogs \
|
||||||
|
--setup=${backend} \
|
||||||
|
--suite=gtk \
|
||||||
|
--no-suite=gsk-compare-broadway
|
||||||
|
|
||||||
|
exit_code=$?
|
||||||
|
kill ${compositor}
|
||||||
|
;;
|
||||||
|
|
||||||
broadway)
|
broadway)
|
||||||
export XDG_RUNTIME_DIR="$(mktemp -p $(pwd) -d xdg-runtime-XXXXXX)"
|
export XDG_RUNTIME_DIR="$(mktemp -p $(pwd) -d xdg-runtime-XXXXXX)"
|
||||||
|
|
||||||
@@ -62,6 +80,12 @@ case "${backend}" in
|
|||||||
exit_code=0
|
exit_code=0
|
||||||
kill ${server}
|
kill ${server}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Failed to add ${backend} to .gitlab-ci/run-tests.sh"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
cd ${builddir}
|
cd ${builddir}
|
||||||
|
@@ -5,8 +5,8 @@ call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliar
|
|||||||
@echo on
|
@echo on
|
||||||
|
|
||||||
:: FIXME: make warnings fatal
|
:: FIXME: make warnings fatal
|
||||||
pip3 install --upgrade --user meson==0.56.2 || goto :error
|
pip3 install --upgrade --user meson==0.60.3 || goto :error
|
||||||
meson -Dmedia-gstreamer=disabled _build || goto :error
|
meson -Ddebug=false -Dmedia-gstreamer=disabled _build || goto :error
|
||||||
ninja -C _build || goto :error
|
ninja -C _build || goto :error
|
||||||
|
|
||||||
goto :EOF
|
goto :EOF
|
||||||
|
@@ -15,9 +15,9 @@ pacman --noconfirm -Suy
|
|||||||
pacman --noconfirm -S --needed \
|
pacman --noconfirm -S --needed \
|
||||||
base-devel \
|
base-devel \
|
||||||
git \
|
git \
|
||||||
mingw-w64-$MSYS2_ARCH-toolchain \
|
mingw-w64-$MSYS2_ARCH-cc \
|
||||||
mingw-w64-$MSYS2_ARCH-ccache \
|
mingw-w64-$MSYS2_ARCH-ccache \
|
||||||
mingw-w64-$MSYS2_ARCH-pkg-config \
|
mingw-w64-$MSYS2_ARCH-pkgconf \
|
||||||
mingw-w64-$MSYS2_ARCH-gobject-introspection \
|
mingw-w64-$MSYS2_ARCH-gobject-introspection \
|
||||||
mingw-w64-$MSYS2_ARCH-meson \
|
mingw-w64-$MSYS2_ARCH-meson \
|
||||||
mingw-w64-$MSYS2_ARCH-adwaita-icon-theme \
|
mingw-w64-$MSYS2_ARCH-adwaita-icon-theme \
|
||||||
@@ -30,8 +30,9 @@ pacman --noconfirm -S --needed \
|
|||||||
mingw-w64-$MSYS2_ARCH-libepoxy \
|
mingw-w64-$MSYS2_ARCH-libepoxy \
|
||||||
mingw-w64-$MSYS2_ARCH-pango \
|
mingw-w64-$MSYS2_ARCH-pango \
|
||||||
mingw-w64-$MSYS2_ARCH-fribidi \
|
mingw-w64-$MSYS2_ARCH-fribidi \
|
||||||
mingw-w64-$MSYS2_ARCH-gst-plugins-bad \
|
mingw-w64-$MSYS2_ARCH-gst-plugins-bad-libs \
|
||||||
mingw-w64-$MSYS2_ARCH-shared-mime-info
|
mingw-w64-$MSYS2_ARCH-shared-mime-info \
|
||||||
|
mingw-w64-$MSYS2_ARCH-python-gobject
|
||||||
|
|
||||||
mkdir -p _ccache
|
mkdir -p _ccache
|
||||||
export CCACHE_BASEDIR="$(pwd)"
|
export CCACHE_BASEDIR="$(pwd)"
|
||||||
@@ -48,7 +49,7 @@ if ! pkg-config --atleast-version=2.66.0 glib-2.0; then
|
|||||||
fi
|
fi
|
||||||
pkg-config --modversion glib-2.0
|
pkg-config --modversion glib-2.0
|
||||||
|
|
||||||
if ! pkg-config --atleast-version=1.49.1 pango; then
|
if ! pkg-config --atleast-version=1.50.0 pango; then
|
||||||
git clone https://gitlab.gnome.org/GNOME/pango.git _pango
|
git clone https://gitlab.gnome.org/GNOME/pango.git _pango
|
||||||
meson setup _pango_build _pango
|
meson setup _pango_build _pango
|
||||||
meson compile -C _pango_build
|
meson compile -C _pango_build
|
||||||
@@ -72,3 +73,5 @@ unset CCACHE_DISABLE
|
|||||||
|
|
||||||
ninja -C _build
|
ninja -C _build
|
||||||
ccache --show-stats
|
ccache --show-stats
|
||||||
|
|
||||||
|
tar zcf _build/gtkdll.tar.gz _build/gtk/libgtk*.dll
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
Please, read the CONTRIBUTING.md guide on how to file a new issue.
|
Please, read the CONTRIBUTING.md guide on how to file a new issue.
|
||||||
|
|
||||||
https://gitlab.gnome.org/GNOME/gtk/-/blob/master/CONTRIBUTING.md
|
https://gitlab.gnome.org/GNOME/gtk/-/blob/main/CONTRIBUTING.md
|
||||||
-->
|
-->
|
||||||
## Steps to reproduce
|
## Steps to reproduce
|
||||||
<!--
|
<!--
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
Please, read the CONTRIBUTING.md guide on how to file a new issue.
|
Please, read the CONTRIBUTING.md guide on how to file a new issue.
|
||||||
|
|
||||||
https://gitlab.gnome.org/GNOME/gtk/-/blob/master/CONTRIBUTING.md
|
https://gitlab.gnome.org/GNOME/gtk/-/blob/main/CONTRIBUTING.md
|
||||||
-->
|
-->
|
||||||
|
|
||||||
## Steps to reproduce
|
## Steps to reproduce
|
||||||
|
@@ -256,7 +256,7 @@ people committing to GTK to follow a few rules:
|
|||||||
0. Always write a meaningful commit message. Changes without a sufficient
|
0. Always write a meaningful commit message. Changes without a sufficient
|
||||||
commit message will be reverted.
|
commit message will be reverted.
|
||||||
|
|
||||||
0. Never push to the `master` branch, or any stable branches, directly; you
|
0. Never push to the `main` branch, or any stable branches, directly; you
|
||||||
should always go through a merge request, to ensure that the code is
|
should always go through a merge request, to ensure that the code is
|
||||||
tested on the CI infrastructure at the very least. A merge request is
|
tested on the CI infrastructure at the very least. A merge request is
|
||||||
also the proper place to get a comprehensive code review from the core
|
also the proper place to get a comprehensive code review from the core
|
||||||
|
453
NEWS
@@ -1,19 +1,468 @@
|
|||||||
Overview of Changes
|
Overview of Changes in 4.7.0, 07-05-2022
|
||||||
===================
|
========================================
|
||||||
|
|
||||||
|
* GtkTextView:
|
||||||
|
- Reduce overdraws
|
||||||
|
|
||||||
|
* GtkViewport:
|
||||||
|
- Default scroll-to-focus to TRUE
|
||||||
|
|
||||||
|
* GtkText:
|
||||||
|
- Stop blinking when we lose focus
|
||||||
|
|
||||||
|
* GtkSearchEntry:
|
||||||
|
- Make search delay configurable
|
||||||
|
|
||||||
|
* GtkPopoverMenu:
|
||||||
|
- Fix RTL positioning of buttons
|
||||||
|
|
||||||
|
* GtkLabel:
|
||||||
|
- Fix focus keynav with links
|
||||||
|
|
||||||
|
* GtkFileChooser:
|
||||||
|
- Prevent undesirable completion popups
|
||||||
|
- Fix a corner case in save mode
|
||||||
|
- Keep the portal filechooser alive long enough
|
||||||
|
|
||||||
|
* GtkCheckButton:
|
||||||
|
- Allow setting a custom child
|
||||||
|
|
||||||
|
* GtkEditableLabel:
|
||||||
|
- Make the :editing property writable
|
||||||
|
|
||||||
|
* GtkColumnView:
|
||||||
|
- Various optimizations to improve scrolling performance
|
||||||
|
|
||||||
|
* GtkTreeStore:
|
||||||
|
- Allow populating tree stores from ui files
|
||||||
|
|
||||||
|
* GtkBoxLayout:
|
||||||
|
- Avoid infinite loops
|
||||||
|
|
||||||
|
* CSS:
|
||||||
|
- Optimize reordering within the same parent
|
||||||
|
|
||||||
|
* Emoji:
|
||||||
|
- Update to CLDR v40 / Unicode 14
|
||||||
|
- Add more locales
|
||||||
|
|
||||||
|
* Input:
|
||||||
|
- Add scroll unit handling
|
||||||
|
- Handle display changes in GtkIMMultiContext
|
||||||
|
- Always populate GDK_AXIS_X/Y in event history
|
||||||
|
- Don't crash for large compose tables
|
||||||
|
|
||||||
|
* Accessibility:
|
||||||
|
- Fix a crash at start when orca is running
|
||||||
|
|
||||||
|
* Theme:
|
||||||
|
- Refresh icons
|
||||||
|
- Fix selection in vertical spin buttons
|
||||||
|
- Fix selection in editable labels
|
||||||
|
|
||||||
|
* gdk:
|
||||||
|
- Optimize pixel format conversions
|
||||||
|
- Use EGL_KHR_swap_buffers_with_damage for NVidia
|
||||||
|
|
||||||
|
* gsk:
|
||||||
|
- Handle large viewports
|
||||||
|
- Prepare texture libraries for glyphy rendering
|
||||||
|
- Don't leak big glyphs in the glyph cache
|
||||||
|
- Align offscreen rendering with th pixel grid
|
||||||
|
- Check for half-float support before using it
|
||||||
|
|
||||||
|
* Wayland:
|
||||||
|
- Use xdg-activation protocol
|
||||||
|
- Fix text caret coordinates
|
||||||
|
- Fix on-screen keyboard activation
|
||||||
|
|
||||||
|
* MacOS:
|
||||||
|
- Fix sluggish and reversed scrolling
|
||||||
|
- Improve monitor detection
|
||||||
|
- Event handling fixes
|
||||||
|
- Fix keyboard input on popovers
|
||||||
|
- Support OpenGL-based video playback
|
||||||
|
- Suport fullscreen
|
||||||
|
- Improve native filechoooser size allocation
|
||||||
|
- Use CALayer and IOSurface for rendering
|
||||||
|
- Use a per-monitor CVDisplayLink
|
||||||
|
- Fix kinetic scrolling
|
||||||
|
- Improve window placement
|
||||||
|
- Improve multi-monitor handling
|
||||||
|
- Start applications in the foreground
|
||||||
|
- Fix cursor blink time
|
||||||
|
|
||||||
|
* Windows:
|
||||||
|
- Fix preedit window placement on HiDPI
|
||||||
|
|
||||||
|
* Tools:
|
||||||
|
- gtk4-builder-tool: Don't require a display for all commands
|
||||||
|
- gtk4-builder-tool: Add a screenshot command
|
||||||
|
- gtk4-node-editor: Install this utility
|
||||||
|
|
||||||
|
* Debugging:
|
||||||
|
- inspector: Show more application data
|
||||||
|
- inspector: Allow viewing PangoAttrList properties
|
||||||
|
|
||||||
|
* Documentation:
|
||||||
|
- Use the gtk-builder-tool to generate screenshots
|
||||||
|
|
||||||
|
* Build:
|
||||||
|
- Fix cross-compilation
|
||||||
|
- Fix build on aarch64
|
||||||
|
- Fix build with gcc 12
|
||||||
|
|
||||||
|
* Translation updates
|
||||||
|
Basque
|
||||||
|
Brazilian Portuguese
|
||||||
|
British English
|
||||||
|
Catalan
|
||||||
|
Chinese (China)
|
||||||
|
Chinese (Taiwan)
|
||||||
|
Croatian
|
||||||
|
Czech
|
||||||
|
Danish
|
||||||
|
Finnish
|
||||||
|
Galician
|
||||||
|
Georgian
|
||||||
|
German
|
||||||
|
Hebrew
|
||||||
|
Hungarian
|
||||||
|
Indonesian
|
||||||
|
Italian
|
||||||
|
Kazakh
|
||||||
|
Korean
|
||||||
|
Latvian
|
||||||
|
Lithuanian
|
||||||
|
Norwegian Bokmål
|
||||||
|
Persian
|
||||||
|
Polish
|
||||||
|
Portuguese
|
||||||
|
Russian
|
||||||
|
Serbian
|
||||||
|
Slovak
|
||||||
|
Slovenian
|
||||||
|
Spanish
|
||||||
|
Swedish
|
||||||
|
Turkish
|
||||||
|
Ukrainian
|
||||||
|
|
||||||
|
|
||||||
|
Overview of Changes in 4.6.1, 11-02-2022
|
||||||
|
========================================
|
||||||
|
|
||||||
|
* GtkFontChooser:
|
||||||
|
- Stop using PangoFc api
|
||||||
|
- Fix a crash
|
||||||
|
- Use new HarfBuzz api
|
||||||
|
|
||||||
|
* GtkMenuButton:
|
||||||
|
- Update accessible description
|
||||||
|
|
||||||
|
* GtkTextView:
|
||||||
|
- Fix intra-widget dnd
|
||||||
|
|
||||||
|
* Printing:
|
||||||
|
- Fix an fd leak
|
||||||
|
|
||||||
|
* Input:
|
||||||
|
- Make sure input methods get focus-in events
|
||||||
|
- Always flush events to avoid scroll event pileup
|
||||||
|
- Support hold events
|
||||||
|
- Update keysyms from libxkbcommon
|
||||||
|
|
||||||
|
* Theme:
|
||||||
|
- Improve text selection legibility
|
||||||
|
|
||||||
|
* Introspection:
|
||||||
|
- Add missing nullable annotations everywhere
|
||||||
|
|
||||||
|
* Build:
|
||||||
|
- Make stack noexec again
|
||||||
|
- Avoid symbol leaks
|
||||||
|
- Drop unneeded script data
|
||||||
|
|
||||||
|
* Windows:
|
||||||
|
- Stop using WM_SYNCPAINT
|
||||||
|
- Relax check for GL 3.x legacy contexts
|
||||||
|
- Use native apis for language names
|
||||||
|
- Rewrite the keymap code
|
||||||
|
- Use the GL renderer by default
|
||||||
|
|
||||||
|
* Wayland:
|
||||||
|
- Fix support for the new high-contrast setting
|
||||||
|
- Avoid redundant scale changes
|
||||||
|
- Fix DND hotspot handling
|
||||||
|
- Don't always restore the saved size when floating
|
||||||
|
|
||||||
|
* MacOS:
|
||||||
|
- Various performance improvements
|
||||||
|
|
||||||
|
* Translation updates:
|
||||||
|
Brazilian Portuguese
|
||||||
|
Catalan
|
||||||
|
Chinese (China)
|
||||||
|
Galician
|
||||||
|
Hebrew
|
||||||
|
Japanese
|
||||||
|
Lithuanian
|
||||||
|
Persian
|
||||||
|
Polish
|
||||||
|
Portuguese
|
||||||
|
Russian
|
||||||
|
Slovenian
|
||||||
|
Spanish
|
||||||
|
Ukrainian
|
||||||
|
|
||||||
|
|
||||||
|
Overview of Changes in 4.6.0, 30-12-2021
|
||||||
|
========================================
|
||||||
|
|
||||||
|
* GtkProgressBar:
|
||||||
|
- Fix handling of "inverted"
|
||||||
|
|
||||||
|
* GtkLabel:
|
||||||
|
- Add a "natural wrap mode" property to influence how
|
||||||
|
natural width is determined
|
||||||
|
|
||||||
|
* GtkTextView
|
||||||
|
- Scroll insertion on-screen after undo / redo
|
||||||
|
|
||||||
|
* gsk:
|
||||||
|
- Abort region diffing when changes are too complex
|
||||||
|
|
||||||
|
* gdk:
|
||||||
|
- Avoid compressing discrete scroll events
|
||||||
|
- Fix problems with hiding windows
|
||||||
|
- Improve GL and GLES version checks
|
||||||
|
|
||||||
|
* Wayland:
|
||||||
|
- Support new high-contrast setting
|
||||||
|
|
||||||
|
* Inspector:
|
||||||
|
- Add DND inspection support
|
||||||
|
|
||||||
|
* build:
|
||||||
|
- Avoid deprecated meson apis
|
||||||
|
|
||||||
|
* Translation updates
|
||||||
|
Galician
|
||||||
|
Portuguese
|
||||||
|
Ukrainian
|
||||||
|
|
||||||
|
|
||||||
|
Overview of Changes in 4.5.1, 16-12-2021
|
||||||
|
========================================
|
||||||
|
|
||||||
|
* GtkWidget sizing has been rewritten to implement
|
||||||
|
width-for-height more properly. This had some fallout,
|
||||||
|
and some widgets may still not react kindly to the
|
||||||
|
new way of doing things.
|
||||||
|
|
||||||
|
See https://blog.gtk.org/2021/12/03/sizable-news/
|
||||||
|
for details, and please file issues if you notice fallout.
|
||||||
|
|
||||||
|
* Rename git `master` branch to `main`
|
||||||
|
|
||||||
|
* Css:
|
||||||
|
- Fully support font-variant-caps
|
||||||
|
- Fix a crash with gradients
|
||||||
|
|
||||||
|
* Make various widgets activatable:
|
||||||
|
- GtkComboBox
|
||||||
|
- GtkDropDown
|
||||||
|
|
||||||
|
* GtkPopover:
|
||||||
|
- Make focus indicators not disappear
|
||||||
|
|
||||||
|
* GtkTextView:
|
||||||
|
- Don't leave embedded children stranded when scrolling
|
||||||
|
- Don't insert Emoji into non-editable textviews
|
||||||
|
- Fix Emoji chooser positioning
|
||||||
|
- Fix problems with pasting text
|
||||||
|
- Improve scroll-to-mark behavior
|
||||||
|
- Support right-aligned, centered and decimal tabs
|
||||||
|
- Make child anchor replacement character settable
|
||||||
|
- Provide more context to input methods
|
||||||
|
|
||||||
|
* GtkDragIcon:
|
||||||
|
- Provide default icons for paintables and files
|
||||||
|
|
||||||
|
* GtkBuilder:
|
||||||
|
- Speed up template precompilation
|
||||||
|
|
||||||
|
* Actions:
|
||||||
|
- Reduce allocations during signal emissions
|
||||||
|
- Avoid duplication and unnecessary recursion
|
||||||
|
|
||||||
|
* Inspector:
|
||||||
|
- Show the selected im-module in the General tab
|
||||||
|
- Add a clipboard viewer
|
||||||
|
- Make the recorder record events too
|
||||||
|
- Add a graph visualizing gtk_widget_measure()
|
||||||
|
|
||||||
|
* Gsk:
|
||||||
|
- Fix hexbox rendering
|
||||||
|
- Fix transformed linear gradient rendering
|
||||||
|
|
||||||
|
* Printing:
|
||||||
|
- Fix dialog-less printing
|
||||||
|
|
||||||
|
* Windows:
|
||||||
|
- Use the common EGL setup code
|
||||||
|
- Respect GDK_DEBUG=gl-egl
|
||||||
|
- Fix AeroSnap indicator and positioning
|
||||||
|
|
||||||
|
* X11:
|
||||||
|
- Improve behavior of windows drags on headerbar controls
|
||||||
|
- Trap errors for RANDR changes
|
||||||
|
- Fix problems with drag icons
|
||||||
|
|
||||||
|
* Wayland:
|
||||||
|
- Ensure we prefer the Wayland im-module over others
|
||||||
|
|
||||||
|
* Translation updates
|
||||||
|
Basque
|
||||||
|
Catalan
|
||||||
|
Croatian
|
||||||
|
Friulian
|
||||||
|
Galician
|
||||||
|
Hebrew
|
||||||
|
Icelandic
|
||||||
|
Italian
|
||||||
|
Latvian
|
||||||
|
Lithuanian
|
||||||
|
Occitan
|
||||||
|
Persian
|
||||||
|
Portuguese
|
||||||
|
Spanish
|
||||||
|
Swedish
|
||||||
|
Ukrainian
|
||||||
|
|
||||||
|
Overview of Changes in 4.5.0
|
||||||
|
============================
|
||||||
|
|
||||||
* gsk:
|
* gsk:
|
||||||
- Drop the GL renderer in favor of NGL
|
- Drop the GL renderer in favor of NGL
|
||||||
|
- Rename NGL to GL
|
||||||
|
- Fix some coordinate overflow issues
|
||||||
|
- Reimplement texture upload and download for better
|
||||||
|
support of image formats and color spaces
|
||||||
|
- New api:
|
||||||
|
gsk_transform_skew
|
||||||
|
gsk_transform_to_2d_components
|
||||||
|
|
||||||
|
* gdk:
|
||||||
|
- Support HSL in gdk_rgba_parse
|
||||||
|
- Use libpng, libjpeg and libtiff directly when loading
|
||||||
|
textures, and support more image formats (including 16bit
|
||||||
|
and float formats)
|
||||||
|
- New apis:
|
||||||
|
gdk_texture_new_from_bytes
|
||||||
|
gdk_texture_new_from_filename
|
||||||
|
gdk_texture_download_float
|
||||||
|
gdk_texture_save_to_png_bytes
|
||||||
|
gdk_texture_save_to_tiff
|
||||||
|
gdk_texture_save_to_tiff_bytes
|
||||||
|
gdk_display_create_gl_context
|
||||||
|
- Implement GIcon and GLoadableIcon in GdkTexture
|
||||||
|
- Move EGL initialization to the frontend
|
||||||
|
- Use configless EGL contexts, if supported
|
||||||
|
- Use >8bit pixel formats, if supported and requested
|
||||||
|
|
||||||
* css:
|
* css:
|
||||||
- Add support for line-height
|
- Add support for line-height
|
||||||
- Add support for text-transform
|
- Add support for text-transform
|
||||||
|
|
||||||
|
* theme:
|
||||||
|
- Fixes for buttons in toolbars
|
||||||
|
|
||||||
|
* input:
|
||||||
|
- Update compose sequences from libX11 1.7.2
|
||||||
|
- Accept replacement string longer than 20 characters
|
||||||
|
|
||||||
|
* text:
|
||||||
|
- Implement sloped caret drawing
|
||||||
|
- Add a gtk-hint-font-metrics setting to switch
|
||||||
|
font rendering to be more similar to GTK3
|
||||||
|
|
||||||
* GtkTextView:
|
* GtkTextView:
|
||||||
- Add support for line height
|
- Add support for line height
|
||||||
- Add support for text transforms
|
- Add support for text transforms
|
||||||
|
- Misc fixes for css->pango attribute translations
|
||||||
|
- Invalidate pango contexts when font settings change
|
||||||
|
- Improve undo grouping when overwriting
|
||||||
|
|
||||||
|
* GtkListView:
|
||||||
|
- Make tree indentation more flexible with
|
||||||
|
GtkTreeExpander:indent-for-icon
|
||||||
|
|
||||||
|
* GtkMenuButton:
|
||||||
|
- Support custom children
|
||||||
|
|
||||||
|
* GtkFlowBox:
|
||||||
|
- Add prepend and append
|
||||||
|
|
||||||
|
* GtkCalendar:
|
||||||
|
- Fix handling of weeks starting on Monday
|
||||||
|
|
||||||
|
* GtkWindow:
|
||||||
|
- Add a titlebar property
|
||||||
|
|
||||||
|
* GtkDropDown:
|
||||||
|
- Add a show-arrow property
|
||||||
|
|
||||||
|
* GtkPopoverMenu:
|
||||||
|
- Support a use-markup attribute in menu models
|
||||||
|
|
||||||
|
* Add GtkSymbolicPaintable
|
||||||
|
|
||||||
|
* Tools:
|
||||||
|
- Support DND in gtk4-node-editor and the inspector's recorder
|
||||||
|
|
||||||
|
* Demos:
|
||||||
|
- Improve the font rendering demo
|
||||||
|
|
||||||
* Build:
|
* Build:
|
||||||
- Require Pango 1.49
|
- Require Pango 1.49
|
||||||
|
- Require libpng, libtiff and libjpeg
|
||||||
|
- Speed up handling of resources during build
|
||||||
|
|
||||||
|
* X11:
|
||||||
|
- Support touchpad gestures with XInput 2.4
|
||||||
|
|
||||||
|
* Windows:
|
||||||
|
- Fix DND coordinates
|
||||||
|
|
||||||
|
* Translation updates:
|
||||||
|
Basque
|
||||||
|
Brazilian Portuguese
|
||||||
|
Catalan
|
||||||
|
Chinese (China)
|
||||||
|
Croatian
|
||||||
|
Czech
|
||||||
|
Dutch
|
||||||
|
Finnish
|
||||||
|
French
|
||||||
|
Galician
|
||||||
|
German
|
||||||
|
Hebrew
|
||||||
|
Hungarian
|
||||||
|
Icelandic
|
||||||
|
Indonesian
|
||||||
|
Kazakh
|
||||||
|
Korean
|
||||||
|
Latvian
|
||||||
|
Lithuanian
|
||||||
|
Persian
|
||||||
|
Portuguese
|
||||||
|
Romanian
|
||||||
|
Serbian
|
||||||
|
Slovak
|
||||||
|
Spanish
|
||||||
|
Swedish
|
||||||
|
Turkish
|
||||||
|
Ukrainian
|
||||||
|
|
||||||
|
|
||||||
Overview of Changes in 4.4.0
|
Overview of Changes in 4.4.0
|
||||||
|
20
README.md
@@ -1,7 +1,7 @@
|
|||||||
GTK — The GTK toolkit
|
GTK — The GTK toolkit
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
[](https://gitlab.gnome.org/GNOME/gtk/-/commits/master)
|
[](https://gitlab.gnome.org/GNOME/gtk/-/commits/main)
|
||||||
|
|
||||||
General information
|
General information
|
||||||
-------------------
|
-------------------
|
||||||
@@ -40,7 +40,7 @@ Nightly documentation can be found at
|
|||||||
|
|
||||||
Nightly flatpaks of our demos can be installed from the
|
Nightly flatpaks of our demos can be installed from the
|
||||||
[GNOME Nightly](https://wiki.gnome.org/Apps/Nightly) repository:
|
[GNOME Nightly](https://wiki.gnome.org/Apps/Nightly) repository:
|
||||||
- `flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo`
|
- `flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo`
|
||||||
- `flatpak install gnome-nightly org.gtk.Demo4`
|
- `flatpak install gnome-nightly org.gtk.Demo4`
|
||||||
- `flatpak install gnome-nightly org.gtk.WidgetFactory4`
|
- `flatpak install gnome-nightly org.gtk.WidgetFactory4`
|
||||||
- `flatpak install gnome-nightly org.gtk.IconBrowser4`
|
- `flatpak install gnome-nightly org.gtk.IconBrowser4`
|
||||||
@@ -114,7 +114,21 @@ can be found in the file:
|
|||||||
docs/reference/gtk/html/gtk-building.html
|
docs/reference/gtk/html/gtk-building.html
|
||||||
```
|
```
|
||||||
|
|
||||||
Or [online](https://developer.gnome.org/gtk4/stable/gtk-building.html)
|
Or [online](https://docs.gtk.org/gtk4/building.html)
|
||||||
|
|
||||||
|
Default branch renamed to `main`
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
The default development branch of GTK has been renamed to `main`.
|
||||||
|
To update your local checkout, use:
|
||||||
|
```sh
|
||||||
|
git checkout master
|
||||||
|
git branch -m master main
|
||||||
|
git fetch
|
||||||
|
git branch --unset-upstream
|
||||||
|
git branch -u origin/main
|
||||||
|
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
|
||||||
|
```
|
||||||
|
|
||||||
How to report bugs
|
How to report bugs
|
||||||
------------------
|
------------------
|
||||||
|
@@ -43,7 +43,8 @@
|
|||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type" : "git",
|
"type" : "git",
|
||||||
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git"
|
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git",
|
||||||
|
"branch" : "main"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -164,6 +165,21 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name" : "pango",
|
||||||
|
"buildsystem" : "meson",
|
||||||
|
"builddir" : true,
|
||||||
|
"config-opts" : [
|
||||||
|
"--libdir=/app/lib"
|
||||||
|
],
|
||||||
|
"sources" : [
|
||||||
|
{
|
||||||
|
"type" : "git",
|
||||||
|
"url" : "https://gitlab.gnome.org/GNOME/pango.git",
|
||||||
|
"branch" : "main"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name" : "gtk",
|
"name" : "gtk",
|
||||||
"buildsystem" : "meson",
|
"buildsystem" : "meson",
|
||||||
@@ -177,7 +193,8 @@
|
|||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type" : "git",
|
"type" : "git",
|
||||||
"url" : "https://gitlab.gnome.org/GNOME/gtk.git"
|
"url" : "https://gitlab.gnome.org/GNOME/gtk.git",
|
||||||
|
"branch" : "main"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -43,7 +43,8 @@
|
|||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type" : "git",
|
"type" : "git",
|
||||||
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git"
|
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git",
|
||||||
|
"branch" : "main"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -93,6 +94,21 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name" : "pango",
|
||||||
|
"buildsystem" : "meson",
|
||||||
|
"builddir" : true,
|
||||||
|
"config-opts" : [
|
||||||
|
"--libdir=/app/lib"
|
||||||
|
],
|
||||||
|
"sources" : [
|
||||||
|
{
|
||||||
|
"type" : "git",
|
||||||
|
"url" : "https://gitlab.gnome.org/GNOME/pango.git",
|
||||||
|
"branch" : "main"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name" : "gtk",
|
"name" : "gtk",
|
||||||
"buildsystem" : "meson",
|
"buildsystem" : "meson",
|
||||||
@@ -106,7 +122,8 @@
|
|||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type" : "git",
|
"type" : "git",
|
||||||
"url" : "https://gitlab.gnome.org/GNOME/gtk.git"
|
"url" : "https://gitlab.gnome.org/GNOME/gtk.git",
|
||||||
|
"branch" : "main"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -43,7 +43,8 @@
|
|||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type" : "git",
|
"type" : "git",
|
||||||
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git"
|
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git",
|
||||||
|
"branch" : "main"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -93,6 +94,21 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name" : "pango",
|
||||||
|
"buildsystem" : "meson",
|
||||||
|
"builddir" : true,
|
||||||
|
"config-opts" : [
|
||||||
|
"--libdir=/app/lib"
|
||||||
|
],
|
||||||
|
"sources" : [
|
||||||
|
{
|
||||||
|
"type" : "git",
|
||||||
|
"url" : "https://gitlab.gnome.org/GNOME/pango.git",
|
||||||
|
"branch" : "main"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name" : "gtk",
|
"name" : "gtk",
|
||||||
"buildsystem" : "meson",
|
"buildsystem" : "meson",
|
||||||
@@ -106,7 +122,8 @@
|
|||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type" : "git",
|
"type" : "git",
|
||||||
"url" : "https://gitlab.gnome.org/GNOME/gtk.git"
|
"url" : "https://gitlab.gnome.org/GNOME/gtk.git",
|
||||||
|
"branch" : "main"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -13,7 +13,7 @@ if 'DESTDIR' not in os.environ:
|
|||||||
|
|
||||||
gtk_moduledir = os.path.join(gtk_libdir, 'gtk-' + gtk_api_version, gtk_abi_version)
|
gtk_moduledir = os.path.join(gtk_libdir, 'gtk-' + gtk_api_version, gtk_abi_version)
|
||||||
gtk_printmodule_dir = os.path.join(gtk_moduledir, 'printbackends')
|
gtk_printmodule_dir = os.path.join(gtk_moduledir, 'printbackends')
|
||||||
gtk_immodule_dir = os.path.join(gtk_moduledir, 'immodules')
|
gtk_mediamodule_dir = os.path.join(gtk_moduledir, 'media')
|
||||||
|
|
||||||
print('Compiling GSettings schemas...')
|
print('Compiling GSettings schemas...')
|
||||||
glib_compile_schemas = subprocess.check_output(['pkg-config',
|
glib_compile_schemas = subprocess.check_output(['pkg-config',
|
||||||
@@ -40,6 +40,6 @@ if 'DESTDIR' not in os.environ:
|
|||||||
gio_querymodules = 'gio-querymodules'
|
gio_querymodules = 'gio-querymodules'
|
||||||
subprocess.call([gio_querymodules, gtk_printmodule_dir])
|
subprocess.call([gio_querymodules, gtk_printmodule_dir])
|
||||||
|
|
||||||
print('Updating module cache for input methods...')
|
print('Updating module cache for media backends...')
|
||||||
os.makedirs(gtk_immodule_dir, exist_ok=True)
|
os.makedirs(gtk_mediamodule_dir, exist_ok=True)
|
||||||
subprocess.call([gio_querymodules, gtk_immodule_dir])
|
subprocess.call([gio_querymodules, gtk_mediamodule_dir])
|
||||||
|
@@ -17,7 +17,7 @@ executable('gtk4-constraint-editor',
|
|||||||
c_args: common_cflags,
|
c_args: common_cflags,
|
||||||
dependencies: libgtk_dep,
|
dependencies: libgtk_dep,
|
||||||
include_directories: confinc,
|
include_directories: confinc,
|
||||||
gui_app: true,
|
win_subsystem: 'windows',
|
||||||
link_args: extra_demo_ldflags,
|
link_args: extra_demo_ldflags,
|
||||||
install: false,
|
install: false,
|
||||||
)
|
)
|
||||||
|
@@ -1,12 +1,10 @@
|
|||||||
/* Clipboard
|
/* Clipboard
|
||||||
*
|
*
|
||||||
* GdkClipboard is used for clipboard handling. This demo shows how to
|
* GdkClipboard is used for clipboard handling. This demo shows how to
|
||||||
* copy and paste text to and from the clipboard.
|
* copy and paste text, images, colors or files to and from the clipboard.
|
||||||
*
|
*
|
||||||
* It also shows how to transfer images via the clipboard or via
|
* You can also use Drag-And-Drop to copy the data from the source to the
|
||||||
* drag-and-drop, and how to make clipboard contents persist after
|
* target.
|
||||||
* the application exits. Clipboard persistence requires a clipboard
|
|
||||||
* manager to run.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
@@ -14,22 +12,103 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "demoimage.h"
|
#include "demoimage.h"
|
||||||
|
|
||||||
static GtkWidget *window = NULL;
|
static void
|
||||||
|
copy_button_clicked (GtkStack *source_stack,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GdkClipboard *clipboard;
|
||||||
|
const char *visible_child_name;
|
||||||
|
GtkWidget *visible_child;
|
||||||
|
|
||||||
|
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (source_stack));
|
||||||
|
|
||||||
|
visible_child = gtk_stack_get_visible_child (source_stack);
|
||||||
|
visible_child_name = gtk_stack_get_visible_child_name (source_stack);
|
||||||
|
|
||||||
|
if (strcmp (visible_child_name, "Text") == 0)
|
||||||
|
{
|
||||||
|
gdk_clipboard_set_text (clipboard, gtk_editable_get_text (GTK_EDITABLE (visible_child)));
|
||||||
|
}
|
||||||
|
else if (strcmp (visible_child_name, "Image") == 0)
|
||||||
|
{
|
||||||
|
GtkWidget *child;
|
||||||
|
|
||||||
|
for (child = gtk_widget_get_first_child (visible_child); child; child = gtk_widget_get_next_sibling (child))
|
||||||
|
{
|
||||||
|
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (child)))
|
||||||
|
{
|
||||||
|
GtkWidget *image = gtk_widget_get_first_child (child);
|
||||||
|
GdkPaintable *paintable = gtk_image_get_paintable (GTK_IMAGE (image));
|
||||||
|
|
||||||
|
if (GDK_IS_TEXTURE (paintable))
|
||||||
|
gdk_clipboard_set (clipboard, GDK_TYPE_TEXTURE, paintable);
|
||||||
|
else
|
||||||
|
gdk_clipboard_set (clipboard, GDK_TYPE_PAINTABLE, paintable);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp (visible_child_name, "Color") == 0)
|
||||||
|
{
|
||||||
|
GdkRGBA color;
|
||||||
|
|
||||||
|
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (visible_child), &color);
|
||||||
|
gdk_clipboard_set (clipboard, GDK_TYPE_RGBA, &color);
|
||||||
|
}
|
||||||
|
else if (strcmp (visible_child_name, "File") == 0)
|
||||||
|
{
|
||||||
|
gdk_clipboard_set (clipboard, G_TYPE_FILE, g_object_get_data (G_OBJECT (visible_child), "file"), NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_print ("TODO");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
copy_button_clicked (GtkWidget *button,
|
present_value (GtkStack *dest_stack,
|
||||||
gpointer user_data)
|
const GValue *value)
|
||||||
{
|
{
|
||||||
GtkWidget *entry;
|
GtkWidget *child;
|
||||||
GdkClipboard *clipboard;
|
|
||||||
|
|
||||||
entry = GTK_WIDGET (user_data);
|
if (G_VALUE_HOLDS (value, G_TYPE_FILE))
|
||||||
|
{
|
||||||
|
GFile *file;
|
||||||
|
|
||||||
/* Get the clipboard object */
|
gtk_stack_set_visible_child_name (dest_stack, "File");
|
||||||
clipboard = gtk_widget_get_clipboard (entry);
|
child = gtk_stack_get_visible_child (dest_stack);
|
||||||
|
|
||||||
/* Set clipboard text */
|
file = g_value_get_object (value);
|
||||||
gdk_clipboard_set_text (clipboard, gtk_editable_get_text (GTK_EDITABLE (entry)));
|
g_object_set (child, "label", g_file_peek_path (file), NULL);
|
||||||
|
}
|
||||||
|
else if (G_VALUE_HOLDS (value, GDK_TYPE_RGBA))
|
||||||
|
{
|
||||||
|
GdkRGBA *color;
|
||||||
|
|
||||||
|
gtk_stack_set_visible_child_name (dest_stack, "Color");
|
||||||
|
child = gtk_widget_get_first_child (gtk_stack_get_visible_child (dest_stack));
|
||||||
|
|
||||||
|
color = g_value_get_boxed (value);
|
||||||
|
g_object_set (child, "rgba", color, NULL);
|
||||||
|
}
|
||||||
|
else if (G_VALUE_HOLDS (value, GDK_TYPE_TEXTURE) ||
|
||||||
|
G_VALUE_HOLDS (value, GDK_TYPE_PAINTABLE))
|
||||||
|
{
|
||||||
|
GdkPaintable *paintable;
|
||||||
|
|
||||||
|
gtk_stack_set_visible_child_name (dest_stack, "Image");
|
||||||
|
child = gtk_stack_get_visible_child (dest_stack);
|
||||||
|
|
||||||
|
paintable = g_value_get_object (value);
|
||||||
|
g_object_set (child, "paintable", paintable, NULL);
|
||||||
|
}
|
||||||
|
else if (G_VALUE_HOLDS (value, G_TYPE_STRING))
|
||||||
|
{
|
||||||
|
gtk_stack_set_visible_child_name (dest_stack, "Text");
|
||||||
|
child = gtk_stack_get_visible_child (dest_stack);
|
||||||
|
|
||||||
|
gtk_label_set_label (GTK_LABEL (child), g_value_get_string (value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -37,149 +116,259 @@ paste_received (GObject *source_object,
|
|||||||
GAsyncResult *result,
|
GAsyncResult *result,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
|
GtkStack *dest_stack = user_data;
|
||||||
GdkClipboard *clipboard;
|
GdkClipboard *clipboard;
|
||||||
GtkWidget *entry;
|
const GValue *value;
|
||||||
char *text;
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
clipboard = GDK_CLIPBOARD (source_object);
|
clipboard = GDK_CLIPBOARD (source_object);
|
||||||
entry = GTK_WIDGET (user_data);
|
|
||||||
|
|
||||||
/* Get the resulting text of the read operation */
|
value = gdk_clipboard_read_value_finish (clipboard, result, &error);
|
||||||
text = gdk_clipboard_read_text_finish (clipboard, result, &error);
|
if (value)
|
||||||
|
|
||||||
if (text)
|
|
||||||
{
|
{
|
||||||
/* Set the entry text */
|
present_value (dest_stack, value);
|
||||||
gtk_editable_set_text (GTK_EDITABLE (entry), text);
|
|
||||||
g_free (text);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GtkWidget *dialog;
|
g_print ("%s\n", error->message);
|
||||||
|
|
||||||
/* Show an error about why pasting failed.
|
|
||||||
* Usually you probably want to ignore such failures,
|
|
||||||
* but for demonstration purposes, we show the error.
|
|
||||||
*/
|
|
||||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
|
||||||
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
|
|
||||||
GTK_MESSAGE_ERROR,
|
|
||||||
GTK_BUTTONS_CLOSE,
|
|
||||||
"Could not paste text: %s",
|
|
||||||
error->message);
|
|
||||||
g_signal_connect (dialog, "response",
|
|
||||||
G_CALLBACK (gtk_window_destroy), NULL);
|
|
||||||
gtk_widget_show (dialog);
|
|
||||||
|
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
paste_button_clicked (GtkWidget *button,
|
paste_button_clicked (GtkStack *dest_stack,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkWidget *entry;
|
|
||||||
GdkClipboard *clipboard;
|
GdkClipboard *clipboard;
|
||||||
|
GdkContentFormats *formats;
|
||||||
|
|
||||||
entry = GTK_WIDGET (user_data);
|
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (dest_stack));
|
||||||
|
formats = gdk_clipboard_get_formats (clipboard);
|
||||||
|
|
||||||
/* Get the clipboard object */
|
if (gdk_content_formats_contain_gtype (formats, GDK_TYPE_TEXTURE))
|
||||||
clipboard = gtk_widget_get_clipboard (entry);
|
gdk_clipboard_read_value_async (clipboard, GDK_TYPE_TEXTURE, 0, NULL, paste_received, dest_stack);
|
||||||
|
else if (gdk_content_formats_contain_gtype (formats, GDK_TYPE_PAINTABLE))
|
||||||
|
gdk_clipboard_read_value_async (clipboard, GDK_TYPE_PAINTABLE, 0, NULL, paste_received, dest_stack);
|
||||||
|
else if (gdk_content_formats_contain_gtype (formats, GDK_TYPE_RGBA))
|
||||||
|
gdk_clipboard_read_value_async (clipboard, GDK_TYPE_RGBA, 0, NULL, paste_received, dest_stack);
|
||||||
|
else if (gdk_content_formats_contain_gtype (formats, G_TYPE_FILE))
|
||||||
|
gdk_clipboard_read_value_async (clipboard, G_TYPE_FILE, 0, NULL, paste_received, dest_stack);
|
||||||
|
else if (gdk_content_formats_contain_gtype (formats, G_TYPE_STRING))
|
||||||
|
gdk_clipboard_read_value_async (clipboard, G_TYPE_STRING, 0, NULL, paste_received, dest_stack);
|
||||||
|
}
|
||||||
|
|
||||||
/* Request the contents of the clipboard, contents_received will be
|
static void
|
||||||
called when we do get the contents.
|
update_copy_button_sensitivity (GtkWidget *source_stack)
|
||||||
*/
|
{
|
||||||
gdk_clipboard_read_text_async (clipboard, NULL, paste_received, entry);
|
GtkButton *copy_button;
|
||||||
|
const char *visible_child_name;
|
||||||
|
GtkWidget *visible_child;
|
||||||
|
gboolean sensitive;
|
||||||
|
|
||||||
|
copy_button = GTK_BUTTON (g_object_get_data (G_OBJECT (source_stack), "copy-button"));
|
||||||
|
|
||||||
|
visible_child = gtk_stack_get_visible_child (GTK_STACK (source_stack));
|
||||||
|
visible_child_name = gtk_stack_get_visible_child_name (GTK_STACK (source_stack));
|
||||||
|
if (strcmp (visible_child_name, "Text") == 0)
|
||||||
|
{
|
||||||
|
sensitive = strlen (gtk_editable_get_text (GTK_EDITABLE (visible_child))) > 0;
|
||||||
|
}
|
||||||
|
else if (strcmp (visible_child_name, "Color") == 0 ||
|
||||||
|
strcmp (visible_child_name, "Image") == 0)
|
||||||
|
{
|
||||||
|
sensitive = TRUE;
|
||||||
|
}
|
||||||
|
else if (strcmp (visible_child_name, "File") == 0)
|
||||||
|
{
|
||||||
|
sensitive = g_object_get_data (G_OBJECT (visible_child), "file") != NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sensitive = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_widget_set_sensitive (GTK_WIDGET (copy_button), sensitive);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
source_changed_cb (GtkButton *copy_button,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
GtkWidget *source_stack)
|
||||||
|
{
|
||||||
|
update_copy_button_sensitivity (source_stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
text_changed_cb (GtkButton *copy_button,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
GtkWidget *entry)
|
||||||
|
{
|
||||||
|
update_copy_button_sensitivity (gtk_widget_get_ancestor (entry, GTK_TYPE_STACK));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
file_button_set_file (GtkButton *button,
|
||||||
|
GFile *file)
|
||||||
|
{
|
||||||
|
gtk_label_set_label (GTK_LABEL (gtk_button_get_child (button)), g_file_peek_path (file));
|
||||||
|
g_object_set_data_full (G_OBJECT (button), "file", g_object_ref (file), g_object_unref);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
file_chooser_response (GtkNativeDialog *dialog,
|
||||||
|
int response,
|
||||||
|
GtkButton *button)
|
||||||
|
{
|
||||||
|
gtk_native_dialog_hide (dialog);
|
||||||
|
|
||||||
|
if (response == GTK_RESPONSE_ACCEPT)
|
||||||
|
{
|
||||||
|
GFile *file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
|
||||||
|
file_button_set_file (button, file);
|
||||||
|
g_object_unref (file);
|
||||||
|
|
||||||
|
update_copy_button_sensitivity (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_STACK));
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_native_dialog_destroy (dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
open_file_cb (GtkWidget *button)
|
||||||
|
{
|
||||||
|
GtkFileChooserNative *chooser;
|
||||||
|
|
||||||
|
chooser = gtk_file_chooser_native_new ("Choose a file",
|
||||||
|
GTK_WINDOW (gtk_widget_get_ancestor (button, GTK_TYPE_WINDOW)),
|
||||||
|
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||||
|
"_Open",
|
||||||
|
"_Cancel");
|
||||||
|
|
||||||
|
g_signal_connect (chooser, "response", G_CALLBACK (file_chooser_response), button);
|
||||||
|
gtk_native_dialog_show (GTK_NATIVE_DIALOG (chooser));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_paste_button_sensitivity (GdkClipboard *clipboard,
|
||||||
|
GtkWidget *paste_button)
|
||||||
|
{
|
||||||
|
GdkContentFormats *formats;
|
||||||
|
gboolean sensitive = FALSE;
|
||||||
|
|
||||||
|
formats = gdk_clipboard_get_formats (clipboard);
|
||||||
|
|
||||||
|
if (gdk_content_formats_contain_gtype (formats, G_TYPE_FILE) ||
|
||||||
|
gdk_content_formats_contain_gtype (formats, GDK_TYPE_RGBA) ||
|
||||||
|
gdk_content_formats_contain_gtype (formats, GDK_TYPE_TEXTURE) ||
|
||||||
|
gdk_content_formats_contain_gtype (formats, GDK_TYPE_PAINTABLE) ||
|
||||||
|
gdk_content_formats_contain_gtype (formats, G_TYPE_STRING))
|
||||||
|
sensitive = TRUE;
|
||||||
|
|
||||||
|
gtk_widget_set_sensitive (paste_button, sensitive);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
unset_clipboard_handler (gpointer data)
|
||||||
|
{
|
||||||
|
GdkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET (data));
|
||||||
|
|
||||||
|
g_signal_handlers_disconnect_by_func (clipboard, update_paste_button_sensitivity, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
on_drop (GtkStack *dest_stack,
|
||||||
|
const GValue *value,
|
||||||
|
double x,
|
||||||
|
double y,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
present_value (dest_stack, value);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkContentProvider *
|
||||||
|
drag_prepare (GtkDragSource *drag_source,
|
||||||
|
double x,
|
||||||
|
double y,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GtkWidget *button;
|
||||||
|
GValue value = G_VALUE_INIT;
|
||||||
|
|
||||||
|
button = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (drag_source));
|
||||||
|
|
||||||
|
if (GTK_IS_TOGGLE_BUTTON (button))
|
||||||
|
{
|
||||||
|
GtkWidget *image = gtk_widget_get_first_child (button);
|
||||||
|
GdkPaintable *paintable = gtk_image_get_paintable (GTK_IMAGE (image));
|
||||||
|
|
||||||
|
if (GDK_IS_TEXTURE (paintable))
|
||||||
|
{
|
||||||
|
g_value_init (&value, GDK_TYPE_TEXTURE);
|
||||||
|
g_value_set_object (&value, paintable);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_value_init (&value, GDK_TYPE_PAINTABLE);
|
||||||
|
g_value_set_object (&value, paintable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GFile *file = g_object_get_data (G_OBJECT (button), "file");
|
||||||
|
|
||||||
|
if (file)
|
||||||
|
{
|
||||||
|
g_value_init (&value, G_TYPE_FILE);
|
||||||
|
g_value_set_object (&value, file);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return gdk_content_provider_new_for_value (&value);
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
do_clipboard (GtkWidget *do_widget)
|
do_clipboard (GtkWidget *do_widget)
|
||||||
{
|
{
|
||||||
|
static GtkWidget *window = NULL;
|
||||||
|
|
||||||
if (!window)
|
if (!window)
|
||||||
{
|
{
|
||||||
GtkWidget *vbox, *hbox;
|
GtkBuilderScope *scope;
|
||||||
GtkWidget *label;
|
GtkBuilder *builder;
|
||||||
GtkWidget *entry, *button;
|
GtkWidget *button;
|
||||||
GtkWidget *image;
|
|
||||||
|
|
||||||
window = gtk_window_new ();
|
scope = gtk_builder_cscope_new ();
|
||||||
gtk_window_set_display (GTK_WINDOW (window),
|
gtk_builder_cscope_add_callback_symbols (GTK_BUILDER_CSCOPE (scope),
|
||||||
gtk_widget_get_display (do_widget));
|
"copy_button_clicked", G_CALLBACK (copy_button_clicked),
|
||||||
gtk_window_set_title (GTK_WINDOW (window), "Clipboard");
|
"paste_button_clicked", G_CALLBACK (paste_button_clicked),
|
||||||
|
"source_changed_cb", G_CALLBACK (source_changed_cb),
|
||||||
|
"text_changed_cb", G_CALLBACK (text_changed_cb),
|
||||||
|
"open_file_cb", G_CALLBACK (open_file_cb),
|
||||||
|
"on_drop", G_CALLBACK (on_drop),
|
||||||
|
"drag_prepare", G_CALLBACK (drag_prepare),
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
builder = gtk_builder_new ();
|
||||||
|
gtk_builder_set_scope (builder, scope);
|
||||||
|
gtk_builder_add_from_resource (builder, "/clipboard/clipboard.ui", NULL);
|
||||||
|
|
||||||
|
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
|
||||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||||
|
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
|
||||||
|
|
||||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
button = GTK_WIDGET (gtk_builder_get_object (builder, "copy_button"));
|
||||||
gtk_widget_set_margin_start (vbox, 8);
|
g_object_set_data (gtk_builder_get_object (builder, "source_stack"), "copy-button", button);
|
||||||
gtk_widget_set_margin_end (vbox, 8);
|
|
||||||
gtk_widget_set_margin_top (vbox, 8);
|
|
||||||
gtk_widget_set_margin_bottom (vbox, 8);
|
|
||||||
|
|
||||||
gtk_window_set_child (GTK_WINDOW (window), vbox);
|
button = GTK_WIDGET (gtk_builder_get_object (builder, "paste_button"));
|
||||||
|
g_signal_connect (gtk_widget_get_clipboard (button), "changed",
|
||||||
|
G_CALLBACK (update_paste_button_sensitivity), button);
|
||||||
|
g_object_set_data_full (G_OBJECT (button), "clipboard-handler", button, unset_clipboard_handler);
|
||||||
|
|
||||||
label = gtk_label_new ("\"Copy\" will copy the text\nin the entry to the clipboard");
|
g_object_unref (builder);
|
||||||
|
g_object_unref (scope);
|
||||||
gtk_box_append (GTK_BOX (vbox), label);
|
|
||||||
|
|
||||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
|
|
||||||
gtk_widget_set_margin_start (hbox, 8);
|
|
||||||
gtk_widget_set_margin_end (hbox, 8);
|
|
||||||
gtk_widget_set_margin_top (hbox, 8);
|
|
||||||
gtk_widget_set_margin_bottom (hbox, 8);
|
|
||||||
gtk_box_append (GTK_BOX (vbox), hbox);
|
|
||||||
|
|
||||||
/* Create the first entry */
|
|
||||||
entry = gtk_entry_new ();
|
|
||||||
gtk_box_append (GTK_BOX (hbox), entry);
|
|
||||||
|
|
||||||
/* Create the button */
|
|
||||||
button = gtk_button_new_with_mnemonic (_("_Copy"));
|
|
||||||
gtk_box_append (GTK_BOX (hbox), button);
|
|
||||||
g_signal_connect (button, "clicked",
|
|
||||||
G_CALLBACK (copy_button_clicked), entry);
|
|
||||||
|
|
||||||
label = gtk_label_new ("\"Paste\" will paste the text from the clipboard to the entry");
|
|
||||||
gtk_box_append (GTK_BOX (vbox), label);
|
|
||||||
|
|
||||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
|
|
||||||
gtk_widget_set_margin_start (hbox, 8);
|
|
||||||
gtk_widget_set_margin_end (hbox, 8);
|
|
||||||
gtk_widget_set_margin_top (hbox, 8);
|
|
||||||
gtk_widget_set_margin_bottom (hbox, 8);
|
|
||||||
gtk_box_append (GTK_BOX (vbox), hbox);
|
|
||||||
|
|
||||||
/* Create the second entry */
|
|
||||||
entry = gtk_entry_new ();
|
|
||||||
gtk_box_append (GTK_BOX (hbox), entry);
|
|
||||||
|
|
||||||
/* Create the button */
|
|
||||||
button = gtk_button_new_with_mnemonic (_("_Paste"));
|
|
||||||
gtk_box_append (GTK_BOX (hbox), button);
|
|
||||||
g_signal_connect (button, "clicked",
|
|
||||||
G_CALLBACK (paste_button_clicked), entry);
|
|
||||||
|
|
||||||
label = gtk_label_new ("Images can be transferred via the clipboard, too");
|
|
||||||
gtk_box_append (GTK_BOX (vbox), label);
|
|
||||||
|
|
||||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
|
|
||||||
gtk_widget_set_margin_start (hbox, 8);
|
|
||||||
gtk_widget_set_margin_end (hbox, 8);
|
|
||||||
gtk_widget_set_margin_top (hbox, 8);
|
|
||||||
gtk_widget_set_margin_bottom (hbox, 8);
|
|
||||||
gtk_box_append (GTK_BOX (vbox), hbox);
|
|
||||||
|
|
||||||
/* Create the first image */
|
|
||||||
image = demo_image_new ("dialog-warning");
|
|
||||||
gtk_box_append (GTK_BOX (hbox), image);
|
|
||||||
|
|
||||||
/* Create the second image */
|
|
||||||
image = demo_image_new ("process-stop");
|
|
||||||
gtk_box_append (GTK_BOX (hbox), image);
|
|
||||||
|
|
||||||
/* Create the third image */
|
|
||||||
image = demo_image_new ("weather-clear");
|
|
||||||
gtk_box_append (GTK_BOX (hbox), image);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gtk_widget_get_visible (window))
|
if (!gtk_widget_get_visible (window))
|
||||||
|
288
demos/gtk-demo/clipboard.ui
Normal file
@@ -0,0 +1,288 @@
|
|||||||
|
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<object class="GtkWindow" id="window">
|
||||||
|
<property name="resizable">1</property>
|
||||||
|
<property name="title">Clipboard</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="margin-start">12</property>
|
||||||
|
<property name="margin-end">12</property>
|
||||||
|
<property name="margin-top">12</property>
|
||||||
|
<property name="margin-bottom">12</property>
|
||||||
|
<property name="spacing">12</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label">“Copy” will copy the selected data the clipboard, “Paste” will show the current clipboard contents. You can also drag the data to the bottom.</property>
|
||||||
|
<property name="wrap">1</property>
|
||||||
|
<property name="max-width-chars">40</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="spacing">12</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkDropDown" id="source_chooser">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="model">
|
||||||
|
<object class="GtkStringList">
|
||||||
|
<items>
|
||||||
|
<item>Text</item>
|
||||||
|
<item>Color</item>
|
||||||
|
<item>Image</item>
|
||||||
|
<item>File</item>
|
||||||
|
</items>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStack" id="source_stack">
|
||||||
|
<signal name="notify::visible-child" handler="source_changed_cb" object="copy_button"/>
|
||||||
|
<property name="vexpand">1</property>
|
||||||
|
<binding name="visible-child-name">
|
||||||
|
<lookup name="string" type="GtkStringObject">
|
||||||
|
<lookup name="selected-item">
|
||||||
|
source_chooser
|
||||||
|
</lookup>
|
||||||
|
</lookup>
|
||||||
|
</binding>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">Text</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkEntry" id="source_text">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<signal name="notify::text" handler="text_changed_cb" object="copy_button"/>
|
||||||
|
<property name="text">Copy this!</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">Color</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkColorButton" id="source_color">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="rgba">purple</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">Image</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<style>
|
||||||
|
<class name="linked"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToggleButton" id="image_rose">
|
||||||
|
<property name="active">1</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkDragSource">
|
||||||
|
<signal name="prepare" handler="drag_prepare"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<style>
|
||||||
|
<class name="large-icons"/>
|
||||||
|
</style>
|
||||||
|
<property name="paintable">resource:///transparent/portland-rose.jpg</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToggleButton" id="image_floppy">
|
||||||
|
<property name="group">image_rose</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkDragSource">
|
||||||
|
<signal name="prepare" handler="drag_prepare"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<style>
|
||||||
|
<class name="large-icons"/>
|
||||||
|
</style>
|
||||||
|
<property name="paintable">resource:///images/floppybuddy.gif</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToggleButton" id="image_logo">
|
||||||
|
<property name="group">image_floppy</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkDragSource">
|
||||||
|
<signal name="prepare" handler="drag_prepare"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<style>
|
||||||
|
<class name="large-icons"/>
|
||||||
|
</style>
|
||||||
|
<property name="paintable">resource:///images/org.gtk.Demo4.svg</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">File</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkButton" id="source_file">
|
||||||
|
<child>
|
||||||
|
<object class="GtkDragSource">
|
||||||
|
<property name="propagation-phase">capture</property>
|
||||||
|
<signal name="prepare" handler="drag_prepare"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label">—</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="ellipsize">start</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<signal name="clicked" handler="open_file_cb"/>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="copy_button">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="label" translatable="yes">_Copy</property>
|
||||||
|
<signal name="clicked" handler="copy_button_clicked" object="source_stack"/>
|
||||||
|
<property name="use-underline">1</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparator">
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="spacing">12</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkDropTarget">
|
||||||
|
<property name="actions">copy</property>
|
||||||
|
<property name="formats">GdkTexture GdkPaintable GFile GdkRGBA gchararray</property>
|
||||||
|
<signal name="drop" handler="on_drop" object="dest_stack"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="paste_button">
|
||||||
|
<property name="label" translatable="yes">_Paste</property>
|
||||||
|
<signal name="clicked" handler="paste_button_clicked" object="dest_stack"/>
|
||||||
|
<property name="use-underline">1</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<binding name="label">
|
||||||
|
<lookup name="visible-child-name" type="GtkStack">
|
||||||
|
dest_stack
|
||||||
|
</lookup>
|
||||||
|
</binding>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStack" id="dest_stack">
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name"></property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkLabel">
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">Text</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="ellipsize">end</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">Image</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<style>
|
||||||
|
<class name="large-icons"/>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">Color</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkColorSwatch">
|
||||||
|
<property name="accessible-role">img</property>
|
||||||
|
<property name="can-focus">0</property>
|
||||||
|
<property name="selectable">0</property>
|
||||||
|
<property name="has-menu">0</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">File</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="hexpand">1</property>
|
||||||
|
<property name="ellipsize">start</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
@@ -24,6 +24,7 @@ do_cursors (GtkWidget *do_widget)
|
|||||||
|
|
||||||
builder = gtk_builder_new_from_resource ("/cursors/cursors.ui");
|
builder = gtk_builder_new_from_resource ("/cursors/cursors.ui");
|
||||||
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
|
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
|
||||||
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||||
gtk_window_set_display (GTK_WINDOW (window),
|
gtk_window_set_display (GTK_WINDOW (window),
|
||||||
gtk_widget_get_display (do_widget));
|
gtk_widget_get_display (do_widget));
|
||||||
g_signal_connect (window, "destroy",
|
g_signal_connect (window, "destroy",
|
||||||
@@ -34,9 +35,7 @@ do_cursors (GtkWidget *do_widget)
|
|||||||
if (!gtk_widget_get_visible (window))
|
if (!gtk_widget_get_visible (window))
|
||||||
gtk_widget_show (window);
|
gtk_widget_show (window);
|
||||||
else
|
else
|
||||||
{
|
gtk_window_destroy (GTK_WINDOW (window));
|
||||||
gtk_window_destroy (GTK_WINDOW (window));
|
|
||||||
}
|
|
||||||
|
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
<file>demo.ui</file>
|
<file>demo.ui</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
<gresource prefix="/clipboard">
|
<gresource prefix="/clipboard">
|
||||||
|
<file>clipboard.ui</file>
|
||||||
<file>demoimage.c</file>
|
<file>demoimage.c</file>
|
||||||
<file>demoimage.h</file>
|
<file>demoimage.h</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <pango/pangofc-font.h>
|
|
||||||
#include <hb.h>
|
#include <hb.h>
|
||||||
#include <hb-ot.h>
|
#include <hb-ot.h>
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
|
@@ -59,16 +59,18 @@ update_image (void)
|
|||||||
fopt = cairo_font_options_copy (pango_cairo_context_get_font_options (context));
|
fopt = cairo_font_options_copy (pango_cairo_context_get_font_options (context));
|
||||||
|
|
||||||
hint = gtk_combo_box_get_active_id (GTK_COMBO_BOX (hinting));
|
hint = gtk_combo_box_get_active_id (GTK_COMBO_BOX (hinting));
|
||||||
if (strcmp (hint, "none") == 0)
|
hintstyle = CAIRO_HINT_STYLE_DEFAULT;
|
||||||
hintstyle = CAIRO_HINT_STYLE_NONE;
|
if (hint)
|
||||||
else if (strcmp (hint, "slight") == 0)
|
{
|
||||||
hintstyle = CAIRO_HINT_STYLE_SLIGHT;
|
if (strcmp (hint, "none") == 0)
|
||||||
else if (strcmp (hint, "medium") == 0)
|
hintstyle = CAIRO_HINT_STYLE_NONE;
|
||||||
hintstyle = CAIRO_HINT_STYLE_MEDIUM;
|
else if (strcmp (hint, "slight") == 0)
|
||||||
else if (strcmp (hint, "full") == 0)
|
hintstyle = CAIRO_HINT_STYLE_SLIGHT;
|
||||||
hintstyle = CAIRO_HINT_STYLE_FULL;
|
else if (strcmp (hint, "medium") == 0)
|
||||||
else
|
hintstyle = CAIRO_HINT_STYLE_MEDIUM;
|
||||||
hintstyle = CAIRO_HINT_STYLE_DEFAULT;
|
else if (strcmp (hint, "full") == 0)
|
||||||
|
hintstyle = CAIRO_HINT_STYLE_FULL;
|
||||||
|
}
|
||||||
cairo_font_options_set_hint_style (fopt, hintstyle);
|
cairo_font_options_set_hint_style (fopt, hintstyle);
|
||||||
|
|
||||||
if (gtk_check_button_get_active (GTK_CHECK_BUTTON (hint_metrics)))
|
if (gtk_check_button_get_active (GTK_CHECK_BUTTON (hint_metrics)))
|
||||||
|
@@ -874,8 +874,8 @@ gtk_gears_tick (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
GtkGears *gears = GTK_GEARS (widget);
|
GtkGears *gears = GTK_GEARS (widget);
|
||||||
GtkGearsPrivate *priv = gtk_gears_get_instance_private (gears);
|
GtkGearsPrivate *priv = gtk_gears_get_instance_private (gears);
|
||||||
GdkFrameTimings *timings, *previous_timings;
|
GdkFrameTimings *previous_timings;
|
||||||
gint64 previous_frame_time = 0;
|
gint64 previous_frame_time;
|
||||||
gint64 frame_time;
|
gint64 frame_time;
|
||||||
gint64 history_start, history_len;
|
gint64 history_start, history_len;
|
||||||
gint64 frame;
|
gint64 frame;
|
||||||
@@ -915,12 +915,6 @@ gtk_gears_tick (GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timings = gdk_frame_clock_get_current_timings (frame_clock);
|
|
||||||
previous_timings = gdk_frame_clock_get_timings (frame_clock,
|
|
||||||
gdk_frame_timings_get_frame_counter (timings) - 1);
|
|
||||||
if (previous_timings != NULL)
|
|
||||||
previous_frame_time = gdk_frame_timings_get_frame_time (previous_timings);
|
|
||||||
|
|
||||||
return G_SOURCE_CONTINUE;
|
return G_SOURCE_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -23,7 +23,7 @@ do_headerbar (GtkWidget *do_widget)
|
|||||||
{
|
{
|
||||||
window = gtk_window_new ();
|
window = gtk_window_new ();
|
||||||
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
|
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
|
||||||
gtk_window_set_title (GTK_WINDOW (window), "Welcome to Facebook - Log in, sign up or learn more");
|
gtk_window_set_title (GTK_WINDOW (window), "Welcome to the Hotel California");
|
||||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||||
|
|
||||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||||
@@ -31,6 +31,7 @@ do_headerbar (GtkWidget *do_widget)
|
|||||||
header = gtk_header_bar_new ();
|
header = gtk_header_bar_new ();
|
||||||
|
|
||||||
button = gtk_button_new_from_icon_name ("mail-send-receive-symbolic");
|
button = gtk_button_new_from_icon_name ("mail-send-receive-symbolic");
|
||||||
|
gtk_widget_set_tooltip_text (button, "Check out");
|
||||||
gtk_header_bar_pack_end (GTK_HEADER_BAR (header), button);
|
gtk_header_bar_pack_end (GTK_HEADER_BAR (header), button);
|
||||||
|
|
||||||
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
||||||
|
@@ -7,7 +7,8 @@
|
|||||||
* shows.
|
* shows.
|
||||||
*
|
*
|
||||||
* We also demonstrate adding other things to a text view, such as
|
* We also demonstrate adding other things to a text view, such as
|
||||||
* clickable icons.
|
* clickable icons and widgets which can also replace a character
|
||||||
|
* (try copying the ghost text).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
@@ -94,13 +95,12 @@ show_page (GtkTextView *text_view,
|
|||||||
gtk_text_buffer_insert (buffer, &iter, " can easily be realized with ", -1);
|
gtk_text_buffer_insert (buffer, &iter, " can easily be realized with ", -1);
|
||||||
insert_link (buffer, &iter, "tags", 2);
|
insert_link (buffer, &iter, "tags", 2);
|
||||||
gtk_text_buffer_insert (buffer, &iter, ".\n", -1);
|
gtk_text_buffer_insert (buffer, &iter, ".\n", -1);
|
||||||
gtk_text_buffer_insert (buffer, &iter,
|
gtk_text_buffer_insert (buffer, &iter, "Of course you can also embed Emoji 😋, ", -1);
|
||||||
"Of course you can also embed Emoji 😋, "
|
gtk_text_buffer_insert (buffer, &iter, "icons ", -1);
|
||||||
"icons ", -1);
|
|
||||||
|
|
||||||
theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (GTK_WIDGET (text_view)));
|
theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (GTK_WIDGET (text_view)));
|
||||||
icon = gtk_icon_theme_lookup_icon (theme,
|
icon = gtk_icon_theme_lookup_icon (theme,
|
||||||
"microphone-sensitivity-high-symbolic",
|
"view-conceal-symbolic",
|
||||||
NULL,
|
NULL,
|
||||||
16,
|
16,
|
||||||
1,
|
1,
|
||||||
@@ -114,7 +114,12 @@ show_page (GtkTextView *text_view,
|
|||||||
gtk_level_bar_set_value (GTK_LEVEL_BAR (child), 50);
|
gtk_level_bar_set_value (GTK_LEVEL_BAR (child), 50);
|
||||||
gtk_widget_set_size_request (child, 100, -1);
|
gtk_widget_set_size_request (child, 100, -1);
|
||||||
gtk_text_view_add_child_at_anchor (text_view, child, anchor);
|
gtk_text_view_add_child_at_anchor (text_view, child, anchor);
|
||||||
gtk_text_buffer_insert (buffer, &iter, ".", -1);
|
gtk_text_buffer_insert (buffer, &iter, " and labels with ", -1);
|
||||||
|
anchor = gtk_text_child_anchor_new_with_replacement ("👻");
|
||||||
|
gtk_text_buffer_insert_child_anchor (buffer, &iter, anchor);
|
||||||
|
child = gtk_label_new ("ghost");
|
||||||
|
gtk_text_view_add_child_at_anchor (text_view, child, anchor);
|
||||||
|
gtk_text_buffer_insert (buffer, &iter, " text.", -1);
|
||||||
}
|
}
|
||||||
else if (page == 2)
|
else if (page == 2)
|
||||||
{
|
{
|
||||||
|
@@ -18,15 +18,81 @@
|
|||||||
|
|
||||||
#include "language-names.h"
|
#include "language-names.h"
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
#else
|
||||||
|
|
||||||
#ifndef ISO_CODES_PREFIX
|
#ifndef ISO_CODES_PREFIX
|
||||||
#define ISO_CODES_PREFIX "/usr"
|
#define ISO_CODES_PREFIX "/usr"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ISO_CODES_DATADIR ISO_CODES_PREFIX "/share/xml/iso-codes"
|
#define ISO_CODES_DATADIR ISO_CODES_PREFIX "/share/xml/iso-codes"
|
||||||
#define ISO_CODES_LOCALESDIR ISO_CODES_PREFIX "/share/locale"
|
#define ISO_CODES_LOCALESDIR ISO_CODES_PREFIX "/share/locale"
|
||||||
|
#endif
|
||||||
|
|
||||||
static GHashTable *language_map;
|
static GHashTable *language_map;
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
/* if we are using native Windows use native Windows API for language names */
|
||||||
|
static BOOL CALLBACK
|
||||||
|
get_win32_all_locales_scripts (LPWSTR locale_w, DWORD flags, LPARAM param)
|
||||||
|
{
|
||||||
|
wchar_t *langname_w = NULL;
|
||||||
|
wchar_t locale_abbrev_w[9];
|
||||||
|
gchar *langname, *locale_abbrev, *locale, *p;
|
||||||
|
gint i;
|
||||||
|
const LCTYPE iso639_lctypes[] = { LOCALE_SISO639LANGNAME, LOCALE_SISO639LANGNAME2 };
|
||||||
|
GHashTable *ht_scripts_langs = (GHashTable *) param;
|
||||||
|
PangoLanguage *lang;
|
||||||
|
|
||||||
|
gint langname_size, locale_abbrev_size;
|
||||||
|
langname_size = GetLocaleInfoEx (locale_w, LOCALE_SLOCALIZEDDISPLAYNAME, langname_w, 0);
|
||||||
|
if (langname_size == 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
langname_w = g_new0 (wchar_t, langname_size);
|
||||||
|
|
||||||
|
if (langname_size == 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
GetLocaleInfoEx (locale_w, LOCALE_SLOCALIZEDDISPLAYNAME, langname_w, langname_size);
|
||||||
|
langname = g_utf16_to_utf8 (langname_w, -1, NULL, NULL, NULL);
|
||||||
|
locale = g_utf16_to_utf8 (locale_w, -1, NULL, NULL, NULL);
|
||||||
|
p = strchr (locale, '-');
|
||||||
|
lang = pango_language_from_string (locale);
|
||||||
|
if (g_hash_table_lookup (ht_scripts_langs, lang) == NULL)
|
||||||
|
g_hash_table_insert (ht_scripts_langs, lang, langname);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Track 3+-letter ISO639-2/3 language codes as well (these have a max length of 9 including terminating NUL)
|
||||||
|
* ISO639-2: iso639_lctypes[0] = LOCALE_SISO639LANGNAME
|
||||||
|
* ISO639-3: iso639_lctypes[1] = LOCALE_SISO639LANGNAME2
|
||||||
|
*/
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
locale_abbrev_size = GetLocaleInfoEx (locale_w, iso639_lctypes[i], locale_abbrev_w, 0);
|
||||||
|
if (locale_abbrev_size > 0)
|
||||||
|
{
|
||||||
|
GetLocaleInfoEx (locale_w, iso639_lctypes[i], locale_abbrev_w, locale_abbrev_size);
|
||||||
|
|
||||||
|
locale_abbrev = g_utf16_to_utf8 (locale_abbrev_w, -1, NULL, NULL, NULL);
|
||||||
|
lang = pango_language_from_string (locale_abbrev);
|
||||||
|
if (g_hash_table_lookup (ht_scripts_langs, lang) == NULL)
|
||||||
|
g_hash_table_insert (ht_scripts_langs, lang, langname);
|
||||||
|
|
||||||
|
g_free (locale_abbrev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (locale);
|
||||||
|
g_free (langname_w);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* non-Windows */
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_first_item_in_semicolon_list (const char *list)
|
get_first_item_in_semicolon_list (const char *list)
|
||||||
{
|
{
|
||||||
@@ -210,6 +276,7 @@ languages_variant_init (const char *variant)
|
|||||||
g_free (filename);
|
g_free (filename);
|
||||||
g_free (buf);
|
g_free (buf);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
languages_init (void)
|
languages_init (void)
|
||||||
@@ -218,8 +285,13 @@ languages_init (void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
language_map = g_hash_table_new_full (NULL, NULL, NULL, g_free);
|
language_map = g_hash_table_new_full (NULL, NULL, NULL, g_free);
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
g_return_if_fail (EnumSystemLocalesEx (&get_win32_all_locales_scripts, LOCALE_ALL, (LPARAM) language_map, NULL));
|
||||||
|
#else
|
||||||
languages_variant_init ("iso_639");
|
languages_variant_init ("iso_639");
|
||||||
languages_variant_init ("iso_639_3");
|
languages_variant_init ("iso_639_3");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
|
@@ -66,11 +66,9 @@ do_links (GtkWidget *do_widget)
|
|||||||
"as hyperlinks, which can be clicked "
|
"as hyperlinks, which can be clicked "
|
||||||
"or activated via <a href=\"keynav\">keynav</a> "
|
"or activated via <a href=\"keynav\">keynav</a> "
|
||||||
"and they work fine with other markup, like when "
|
"and they work fine with other markup, like when "
|
||||||
"searching on <a href=\"http://www.google.com/\">"
|
"linking to <a href=\"http://www.flathub.org/\"><b>"
|
||||||
"<span color=\"#0266C8\">G</span><span color=\"#F90101\">o</span>"
|
"<span letter_spacing=\"1024\" underline=\"none\" color=\"pink\" background=\"darkslategray\">Flathub</span>"
|
||||||
"<span color=\"#F2B50F\">o</span><span color=\"#0266C8\">g</span>"
|
"</b></a>.");
|
||||||
"<span color=\"#00933B\">l</span><span color=\"#F90101\">e</span>"
|
|
||||||
"</a>.");
|
|
||||||
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
|
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
|
||||||
gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
|
gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
|
||||||
gtk_label_set_wrap (GTK_LABEL (label), TRUE);
|
gtk_label_set_wrap (GTK_LABEL (label), TRUE);
|
||||||
|
@@ -192,7 +192,7 @@ activate_about (GSimpleAction *action,
|
|||||||
glib_micro_version);
|
glib_micro_version);
|
||||||
g_string_append_printf (s, "\tPango\t%s\n",
|
g_string_append_printf (s, "\tPango\t%s\n",
|
||||||
pango_version_string ());
|
pango_version_string ());
|
||||||
g_string_append_printf (s, "\tGTK\t%d.%d.%d\n",
|
g_string_append_printf (s, "\tGTK \t%d.%d.%d\n",
|
||||||
gtk_get_major_version (),
|
gtk_get_major_version (),
|
||||||
gtk_get_minor_version (),
|
gtk_get_minor_version (),
|
||||||
gtk_get_micro_version ());
|
gtk_get_micro_version ());
|
||||||
@@ -512,7 +512,7 @@ load_file (const char *demoname,
|
|||||||
|
|
||||||
info_buffer = gtk_text_buffer_new (NULL);
|
info_buffer = gtk_text_buffer_new (NULL);
|
||||||
gtk_text_buffer_create_tag (info_buffer, "title",
|
gtk_text_buffer_create_tag (info_buffer, "title",
|
||||||
"font", "Sans 18",
|
"size", 18 * 1024,
|
||||||
"pixels-below-lines", 10,
|
"pixels-below-lines", 10,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
@@ -1040,7 +1040,7 @@ out:
|
|||||||
g_signal_connect_swapped (G_OBJECT (demo), "destroy", G_CALLBACK (g_application_quit), app);
|
g_signal_connect_swapped (G_OBJECT (demo), "destroy", G_CALLBACK (g_application_quit), app);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gtk_widget_show (GTK_WIDGET (window));
|
gtk_window_present (GTK_WINDOW (window));
|
||||||
|
|
||||||
if (autoquit)
|
if (autoquit)
|
||||||
g_timeout_add_seconds (1, auto_quit, app);
|
g_timeout_add_seconds (1, auto_quit, app);
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<attribute name="label" translatable="yes">Save _As...</attribute>
|
<attribute name="label" translatable="yes">Save _As...</attribute>
|
||||||
<attribute name="action">app.save-as</attribute>
|
<attribute name="action">app.save-as</attribute>
|
||||||
<attribute name="accel"><Control>s</attribute>
|
<attribute name="accel"><Control><Shift>s</attribute>
|
||||||
</item>
|
</item>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
@@ -98,6 +98,7 @@ demos = files([
|
|||||||
'transparent.c',
|
'transparent.c',
|
||||||
'tree_store.c',
|
'tree_store.c',
|
||||||
'video_player.c',
|
'video_player.c',
|
||||||
|
'font_features.c',
|
||||||
])
|
])
|
||||||
|
|
||||||
gtkdemo_deps = [ libgtk_dep, ]
|
gtkdemo_deps = [ libgtk_dep, ]
|
||||||
@@ -128,19 +129,14 @@ extra_demo_sources = files([
|
|||||||
'script-names.c',
|
'script-names.c',
|
||||||
'unicode-names.c',
|
'unicode-names.c',
|
||||||
'suggestionentry.c',
|
'suggestionentry.c',
|
||||||
|
'language-names.c',
|
||||||
])
|
])
|
||||||
|
|
||||||
if harfbuzz_dep.found() and pangoft_dep.found()
|
|
||||||
demos += files(['font_features.c'])
|
|
||||||
extra_demo_sources += files(['language-names.c'])
|
|
||||||
gtkdemo_deps += [ harfbuzz_dep, epoxy_dep ]
|
|
||||||
endif
|
|
||||||
|
|
||||||
if os_unix
|
if os_unix
|
||||||
demos += files('pagesetup.c')
|
demos += files('pagesetup.c')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
librsvg_dep = dependency('librsvg-2.0', version: '>= 2.46.0', required: false)
|
librsvg_dep = dependency('librsvg-2.0', version: '>= 2.52.0', required: false)
|
||||||
|
|
||||||
if librsvg_dep.found()
|
if librsvg_dep.found()
|
||||||
demos += files('paintable_svg.c')
|
demos += files('paintable_svg.c')
|
||||||
@@ -156,15 +152,85 @@ demos_h = custom_target('gtk4 demo header',
|
|||||||
command: [ find_program('geninclude.py'), '@OUTPUT@', '@INPUT@' ],
|
command: [ find_program('geninclude.py'), '@OUTPUT@', '@INPUT@' ],
|
||||||
)
|
)
|
||||||
|
|
||||||
gtkdemo_resources = gnome.compile_resources('gtkdemo_resources',
|
objcopy_supports_add_symbol = false
|
||||||
'demo.gresource.xml',
|
objcopy = find_program('objcopy', required : false)
|
||||||
source_dir: '.',
|
if objcopy.found()
|
||||||
)
|
objcopy_supports_add_symbol = run_command(objcopy, '--help').stdout().contains('--add-symbol')
|
||||||
|
endif
|
||||||
|
|
||||||
|
ld = find_program('ld', required : false)
|
||||||
|
|
||||||
|
if not meson.is_cross_build() and build_machine.cpu_family() != 'arm' and build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
|
||||||
|
glib_compile_resources = find_program('glib-compile-resources')
|
||||||
|
|
||||||
|
# Create the resource blob
|
||||||
|
gtkdemo_gresource = custom_target('gtkdemo.gresource',
|
||||||
|
input : 'demo.gresource.xml',
|
||||||
|
output : 'gtkdemo.gresource',
|
||||||
|
depfile : 'gtkdemo.gresource.d',
|
||||||
|
command : [glib_compile_resources,
|
||||||
|
'--generate',
|
||||||
|
'--internal',
|
||||||
|
'--target=@OUTPUT@',
|
||||||
|
'--dependency-file=@DEPFILE@',
|
||||||
|
'--sourcedir=' + meson.current_source_dir(),
|
||||||
|
'--sourcedir=' + meson.current_build_dir(),
|
||||||
|
'@INPUT@'])
|
||||||
|
|
||||||
|
# Create resource data file
|
||||||
|
gtkdemo_resources_c = custom_target('gtkdemo_resources.c',
|
||||||
|
input : 'demo.gresource.xml',
|
||||||
|
output : 'gtkdemo_resources.c',
|
||||||
|
depfile : 'gtkdemo_resources.c.d',
|
||||||
|
command : [glib_compile_resources,
|
||||||
|
'--generate-source',
|
||||||
|
'--internal',
|
||||||
|
'--target=@OUTPUT@',
|
||||||
|
'--dependency-file=@DEPFILE@',
|
||||||
|
'--sourcedir=' + meson.current_source_dir(),
|
||||||
|
'--sourcedir=' + meson.current_build_dir(),
|
||||||
|
'--external-data',
|
||||||
|
'--c-name', '_g_binary_gtkdemo',
|
||||||
|
'@INPUT@'])
|
||||||
|
|
||||||
|
# Create object file containing resource data
|
||||||
|
gtkdemo_resources_binary = custom_target('gtkdemo_resources.o',
|
||||||
|
input : gtkdemo_gresource,
|
||||||
|
output : 'gtkdemo_resources.o',
|
||||||
|
command : [ld,
|
||||||
|
'-z', 'noexecstack',
|
||||||
|
'-r',
|
||||||
|
'-b','binary',
|
||||||
|
'@INPUT@',
|
||||||
|
'-o','@OUTPUT@'])
|
||||||
|
|
||||||
|
# Rename symbol to match the one in the C file
|
||||||
|
gtkdemo_resources_o = custom_target('gtkdemo_resources2.o',
|
||||||
|
input : gtkdemo_resources_binary,
|
||||||
|
output : 'gtkdemo_resources2.o',
|
||||||
|
command : [objcopy,
|
||||||
|
'--strip-all',
|
||||||
|
'--add-symbol','_g_binary_gtkdemo_resource_data=.data:0',
|
||||||
|
'@INPUT@',
|
||||||
|
'@OUTPUT@'])
|
||||||
|
|
||||||
|
gtkdemo_resources = [
|
||||||
|
gtkdemo_resources_c,
|
||||||
|
gtkdemo_resources_o,
|
||||||
|
]
|
||||||
|
else
|
||||||
|
gtkdemo_resources = gnome.compile_resources('gtkdemo_resources',
|
||||||
|
'demo.gresource.xml',
|
||||||
|
source_dir: '.',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
# Use a subset of compiler flags
|
# Use a subset of compiler flags
|
||||||
demo_cflags = []
|
demo_cflags = []
|
||||||
foreach flag: common_cflags
|
foreach flag: common_cflags
|
||||||
if flag not in ['-Werror=missing-prototypes', '-Werror=missing-declarations', '-fvisibility=hidden']
|
if flag not in ['-Werror=missing-prototypes', '-Wmissing-prototypes',
|
||||||
|
'-Werror=missing-declarations', '-Wmissing-declarations',
|
||||||
|
'-fvisibility=hidden']
|
||||||
demo_cflags += flag
|
demo_cflags += flag
|
||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
@@ -176,7 +242,7 @@ executable('gtk4-demo',
|
|||||||
c_args: gtkdemo_args + demo_cflags,
|
c_args: gtkdemo_args + demo_cflags,
|
||||||
dependencies: gtkdemo_deps,
|
dependencies: gtkdemo_deps,
|
||||||
include_directories: confinc,
|
include_directories: confinc,
|
||||||
gui_app: true,
|
win_subsystem: 'windows',
|
||||||
link_args: extra_demo_ldflags,
|
link_args: extra_demo_ldflags,
|
||||||
install: true,
|
install: true,
|
||||||
)
|
)
|
||||||
@@ -186,7 +252,7 @@ executable('gtk4-demo-application',
|
|||||||
c_args: gtkdemo_args + common_cflags,
|
c_args: gtkdemo_args + common_cflags,
|
||||||
dependencies: gtkdemo_deps,
|
dependencies: gtkdemo_deps,
|
||||||
include_directories: confinc,
|
include_directories: confinc,
|
||||||
gui_app: true,
|
win_subsystem: 'windows',
|
||||||
link_args: extra_demo_ldflags,
|
link_args: extra_demo_ldflags,
|
||||||
install: true,
|
install: true,
|
||||||
)
|
)
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
<developer_name>Matthias Clasen and others</developer_name>
|
<developer_name>Matthias Clasen and others</developer_name>
|
||||||
<content_rating type="oars-1.1"/>
|
<content_rating type="oars-1.1"/>
|
||||||
<releases>
|
<releases>
|
||||||
<release version="@BUILD_VERSION@" date="@BUILD_DATE@">
|
<release version="@BUILD_VERSION@">
|
||||||
<description>
|
<description>
|
||||||
<p>A new build of GTK.</p>
|
<p>A new build of GTK.</p>
|
||||||
</description>
|
</description>
|
||||||
|
@@ -47,22 +47,24 @@ static int
|
|||||||
svg_paintable_get_intrinsic_width (GdkPaintable *paintable)
|
svg_paintable_get_intrinsic_width (GdkPaintable *paintable)
|
||||||
{
|
{
|
||||||
SvgPaintable *self = SVG_PAINTABLE (paintable);
|
SvgPaintable *self = SVG_PAINTABLE (paintable);
|
||||||
RsvgDimensionData data;
|
double width;
|
||||||
|
|
||||||
rsvg_handle_get_dimensions (self->handle, &data);
|
if (!rsvg_handle_get_intrinsic_size_in_pixels (self->handle, &width, NULL))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return data.width;
|
return ceil (width);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
svg_paintable_get_intrinsic_height (GdkPaintable *paintable)
|
svg_paintable_get_intrinsic_height (GdkPaintable *paintable)
|
||||||
{
|
{
|
||||||
SvgPaintable *self = SVG_PAINTABLE (paintable);
|
SvgPaintable *self = SVG_PAINTABLE (paintable);
|
||||||
RsvgDimensionData data;
|
double height;
|
||||||
|
|
||||||
rsvg_handle_get_dimensions (self->handle, &data);
|
if (!rsvg_handle_get_intrinsic_size_in_pixels (self->handle, NULL, &height))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return data.height;
|
return ceil (height);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -1,6 +1,11 @@
|
|||||||
/* Text View/Tabs
|
/* Text View/Tabs
|
||||||
*
|
*
|
||||||
* GtkTextView can position text at fixed positions, using tabs.
|
* GtkTextView can position text at fixed positions, using tabs.
|
||||||
|
* Tabs can specify alignment, and also allow aligning numbers
|
||||||
|
* on the decimal point.
|
||||||
|
*
|
||||||
|
* The example here has three tabs, with left, numeric and right
|
||||||
|
* alignment.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
@@ -22,7 +27,7 @@ do_tabs (GtkWidget *do_widget)
|
|||||||
gtk_window_set_title (GTK_WINDOW (window), "Tabs");
|
gtk_window_set_title (GTK_WINDOW (window), "Tabs");
|
||||||
gtk_window_set_display (GTK_WINDOW (window),
|
gtk_window_set_display (GTK_WINDOW (window),
|
||||||
gtk_widget_get_display (do_widget));
|
gtk_widget_get_display (do_widget));
|
||||||
gtk_window_set_default_size (GTK_WINDOW (window), 330, 330);
|
gtk_window_set_default_size (GTK_WINDOW (window), 330, 130);
|
||||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||||
|
|
||||||
@@ -35,17 +40,18 @@ do_tabs (GtkWidget *do_widget)
|
|||||||
|
|
||||||
tabs = pango_tab_array_new (3, TRUE);
|
tabs = pango_tab_array_new (3, TRUE);
|
||||||
pango_tab_array_set_tab (tabs, 0, PANGO_TAB_LEFT, 0);
|
pango_tab_array_set_tab (tabs, 0, PANGO_TAB_LEFT, 0);
|
||||||
pango_tab_array_set_tab (tabs, 1, PANGO_TAB_LEFT, 100);
|
pango_tab_array_set_tab (tabs, 1, PANGO_TAB_DECIMAL, 150);
|
||||||
pango_tab_array_set_tab (tabs, 2, PANGO_TAB_LEFT, 200);
|
pango_tab_array_set_decimal_point (tabs, 1, '.');
|
||||||
|
pango_tab_array_set_tab (tabs, 2, PANGO_TAB_RIGHT, 290);
|
||||||
gtk_text_view_set_tabs (GTK_TEXT_VIEW (view), tabs);
|
gtk_text_view_set_tabs (GTK_TEXT_VIEW (view), tabs);
|
||||||
pango_tab_array_free (tabs);
|
pango_tab_array_free (tabs);
|
||||||
|
|
||||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
||||||
gtk_text_buffer_set_text (buffer, "one\ttwo\tthree\nfour\tfive\tsix\nseven\teight\tnine", -1);
|
gtk_text_buffer_set_text (buffer, "one\t2.0\tthree\nfour\t5.555\tsix\nseven\t88.88\tnine", -1);
|
||||||
|
|
||||||
sw = gtk_scrolled_window_new ();
|
sw = gtk_scrolled_window_new ();
|
||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||||
GTK_POLICY_AUTOMATIC,
|
GTK_POLICY_NEVER,
|
||||||
GTK_POLICY_AUTOMATIC);
|
GTK_POLICY_AUTOMATIC);
|
||||||
gtk_window_set_child (GTK_WINDOW (window), sw);
|
gtk_window_set_child (GTK_WINDOW (window), sw);
|
||||||
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), view);
|
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), view);
|
||||||
|
@@ -72,7 +72,7 @@ about_activated (GSimpleAction *action,
|
|||||||
glib_micro_version);
|
glib_micro_version);
|
||||||
g_string_append_printf (s, "\tPango\t%s\n",
|
g_string_append_printf (s, "\tPango\t%s\n",
|
||||||
pango_version_string ());
|
pango_version_string ());
|
||||||
g_string_append_printf (s, "\tGTK\t%d.%d.%d\n",
|
g_string_append_printf (s, "\tGTK \t%d.%d.%d\n",
|
||||||
gtk_get_major_version (),
|
gtk_get_major_version (),
|
||||||
gtk_get_minor_version (),
|
gtk_get_minor_version (),
|
||||||
gtk_get_micro_version ());
|
gtk_get_micro_version ());
|
||||||
|
@@ -16,7 +16,7 @@ executable('gtk4-icon-browser',
|
|||||||
c_args: common_cflags,
|
c_args: common_cflags,
|
||||||
dependencies: [ libgtk_dep, demo_conf_h ],
|
dependencies: [ libgtk_dep, demo_conf_h ],
|
||||||
include_directories: confinc,
|
include_directories: confinc,
|
||||||
gui_app: true,
|
win_subsystem: 'windows',
|
||||||
link_args: extra_demo_ldflags,
|
link_args: extra_demo_ldflags,
|
||||||
install: true,
|
install: true,
|
||||||
)
|
)
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
<developer_name>Matthias Clasen and others</developer_name>
|
<developer_name>Matthias Clasen and others</developer_name>
|
||||||
<content_rating type="oars-1.1"/>
|
<content_rating type="oars-1.1"/>
|
||||||
<releases>
|
<releases>
|
||||||
<release version="@BUILD_VERSION@" date="@BUILD_DATE@">
|
<release version="@BUILD_VERSION@">
|
||||||
<description>
|
<description>
|
||||||
<p>A new build of GTK.</p>
|
<p>A new build of GTK.</p>
|
||||||
</description>
|
</description>
|
||||||
|
@@ -3,7 +3,7 @@ demo_profile = get_option('profile')
|
|||||||
|
|
||||||
demo_conf_h = declare_dependency(
|
demo_conf_h = declare_dependency(
|
||||||
sources: custom_target('demo-header',
|
sources: custom_target('demo-header',
|
||||||
command: [gen_demo_header, meson.source_root(), demo_profile],
|
command: [gen_demo_header, meson.project_source_root(), demo_profile],
|
||||||
capture: true,
|
capture: true,
|
||||||
output: 'demo_conf.h',
|
output: 'demo_conf.h',
|
||||||
build_by_default: true,
|
build_by_default: true,
|
||||||
@@ -12,19 +12,9 @@ demo_conf_h = declare_dependency(
|
|||||||
)
|
)
|
||||||
|
|
||||||
# appdata
|
# appdata
|
||||||
today = 'unknown'
|
|
||||||
date = find_program('date',
|
|
||||||
required: false)
|
|
||||||
if date.found()
|
|
||||||
r = run_command(date, '-I')
|
|
||||||
if r.returncode() == 0
|
|
||||||
today = r.stdout().strip()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
appdata_config = configuration_data()
|
appdata_config = configuration_data()
|
||||||
appdata_config.set('BUILD_VERSION', meson.project_version())
|
appdata_config.set('BUILD_VERSION', meson.project_version())
|
||||||
appdata_config.set('BUILD_DATE', today)
|
|
||||||
|
|
||||||
subdir('constraint-editor')
|
subdir('constraint-editor')
|
||||||
subdir('gtk-demo')
|
subdir('gtk-demo')
|
||||||
|
@@ -17,14 +17,26 @@ executable('gtk4-node-editor',
|
|||||||
c_args: [
|
c_args: [
|
||||||
'-DNODE_EDITOR_SOURCE_DIR="@0@/../../testsuite/gsk/compare/"'.format(meson.current_source_dir())
|
'-DNODE_EDITOR_SOURCE_DIR="@0@/../../testsuite/gsk/compare/"'.format(meson.current_source_dir())
|
||||||
] + common_cflags,
|
] + common_cflags,
|
||||||
gui_app: true,
|
win_subsystem: 'windows',
|
||||||
link_args: extra_demo_ldflags,
|
link_args: extra_demo_ldflags,
|
||||||
install: false,
|
install: true,
|
||||||
)
|
)
|
||||||
|
|
||||||
# icons, don't install them until we decide to install gtk4-node-editor
|
# icons
|
||||||
#icontheme_dir = join_paths(gtk_datadir, 'icons/hicolor')
|
icontheme_dir = join_paths(gtk_datadir, 'icons/hicolor')
|
||||||
|
|
||||||
|
foreach size: ['scalable', 'symbolic']
|
||||||
|
install_subdir('data/' + size, install_dir: icontheme_dir)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
# desktop file
|
||||||
|
install_data('org.gtk.gtk4.NodeEditor.desktop', install_dir: gtk_applicationsdir)
|
||||||
|
|
||||||
|
# appdata
|
||||||
|
configure_file(
|
||||||
|
input: 'org.gtk.gtk4.NodeEditor.appdata.xml.in',
|
||||||
|
output: 'org.gtk.gtk4.NodeEditor.appdata.xml',
|
||||||
|
configuration: appdata_config,
|
||||||
|
install_dir: gtk_appdatadir
|
||||||
|
)
|
||||||
|
|
||||||
#foreach size: ['scalable', 'symbolic']
|
|
||||||
# install_subdir('data/' + size, install_dir: icontheme_dir)
|
|
||||||
#endforeach
|
|
||||||
|
@@ -79,7 +79,7 @@ activate_about (GSimpleAction *action,
|
|||||||
glib_micro_version);
|
glib_micro_version);
|
||||||
g_string_append_printf (s, "\tPango\t%s\n",
|
g_string_append_printf (s, "\tPango\t%s\n",
|
||||||
pango_version_string ());
|
pango_version_string ());
|
||||||
g_string_append_printf (s, "\tGTK\t%d.%d.%d\n",
|
g_string_append_printf (s, "\tGTK \t%d.%d.%d\n",
|
||||||
gtk_get_major_version (),
|
gtk_get_major_version (),
|
||||||
gtk_get_minor_version (),
|
gtk_get_minor_version (),
|
||||||
gtk_get_micro_version ());
|
gtk_get_micro_version ());
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
#include "gtkrendererpaintableprivate.h"
|
#include "gtkrendererpaintableprivate.h"
|
||||||
|
|
||||||
#include "gsk/gskrendernodeparserprivate.h"
|
#include "gsk/gskrendernodeparserprivate.h"
|
||||||
#include "gsk/ngl/gsknglrenderer.h"
|
#include "gsk/gl/gskglrenderer.h"
|
||||||
#ifdef GDK_WINDOWING_BROADWAY
|
#ifdef GDK_WINDOWING_BROADWAY
|
||||||
#include "gsk/broadway/gskbroadwayrenderer.h"
|
#include "gsk/broadway/gskbroadwayrenderer.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -57,6 +57,7 @@ struct _NodeEditorWindow
|
|||||||
GtkWidget *testcase_cairo_checkbutton;
|
GtkWidget *testcase_cairo_checkbutton;
|
||||||
GtkWidget *testcase_name_entry;
|
GtkWidget *testcase_name_entry;
|
||||||
GtkWidget *testcase_save_button;
|
GtkWidget *testcase_save_button;
|
||||||
|
GtkWidget *scale_scale;
|
||||||
|
|
||||||
GtkWidget *renderer_listbox;
|
GtkWidget *renderer_listbox;
|
||||||
GListStore *renderers;
|
GListStore *renderers;
|
||||||
@@ -171,6 +172,7 @@ text_changed (GtkTextBuffer *buffer,
|
|||||||
GBytes *bytes;
|
GBytes *bytes;
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
GtkTextIter start, end;
|
GtkTextIter start, end;
|
||||||
|
float scale;
|
||||||
|
|
||||||
g_array_remove_range (self->errors, 0, self->errors->len);
|
g_array_remove_range (self->errors, 0, self->errors->len);
|
||||||
text = get_current_text (self->text_buffer);
|
text = get_current_text (self->text_buffer);
|
||||||
@@ -181,6 +183,17 @@ text_changed (GtkTextBuffer *buffer,
|
|||||||
|
|
||||||
/* If this is too slow, go fix the parser performance */
|
/* If this is too slow, go fix the parser performance */
|
||||||
self->node = gsk_render_node_deserialize (bytes, deserialize_error_func, self);
|
self->node = gsk_render_node_deserialize (bytes, deserialize_error_func, self);
|
||||||
|
|
||||||
|
scale = gtk_scale_button_get_value (GTK_SCALE_BUTTON (self->scale_scale));
|
||||||
|
if (self->node && scale != 1.0)
|
||||||
|
{
|
||||||
|
GskRenderNode *node;
|
||||||
|
|
||||||
|
node = gsk_transform_node_new (self->node, gsk_transform_scale (NULL, scale, scale));
|
||||||
|
gsk_render_node_unref (self->node);
|
||||||
|
self->node = node;
|
||||||
|
}
|
||||||
|
|
||||||
g_bytes_unref (bytes);
|
g_bytes_unref (bytes);
|
||||||
if (self->node)
|
if (self->node)
|
||||||
{
|
{
|
||||||
@@ -277,6 +290,14 @@ text_changed (GtkTextBuffer *buffer,
|
|||||||
&start, &end);
|
&start, &end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
scale_changed (GObject *object,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
NodeEditorWindow *self)
|
||||||
|
{
|
||||||
|
text_changed (self->text_buffer, self);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
text_view_query_tooltip_cb (GtkWidget *widget,
|
text_view_query_tooltip_cb (GtkWidget *widget,
|
||||||
int x,
|
int x,
|
||||||
@@ -336,12 +357,39 @@ text_view_query_tooltip_cb (GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
load_bytes (NodeEditorWindow *self,
|
||||||
|
GBytes *bytes);
|
||||||
|
|
||||||
|
static void
|
||||||
|
load_error (NodeEditorWindow *self,
|
||||||
|
const char *error_message)
|
||||||
|
{
|
||||||
|
PangoLayout *layout;
|
||||||
|
GtkSnapshot *snapshot;
|
||||||
|
GskRenderNode *node;
|
||||||
|
GBytes *bytes;
|
||||||
|
|
||||||
|
layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), error_message);
|
||||||
|
pango_layout_set_width (layout, 300 * PANGO_SCALE);
|
||||||
|
snapshot = gtk_snapshot_new ();
|
||||||
|
gtk_snapshot_append_layout (snapshot, layout, &(GdkRGBA) { 0.7, 0.13, 0.13, 1.0 });
|
||||||
|
node = gtk_snapshot_free_to_node (snapshot);
|
||||||
|
bytes = gsk_render_node_serialize (node);
|
||||||
|
|
||||||
|
load_bytes (self, bytes);
|
||||||
|
|
||||||
|
gsk_render_node_unref (node);
|
||||||
|
g_object_unref (layout);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
load_bytes (NodeEditorWindow *self,
|
load_bytes (NodeEditorWindow *self,
|
||||||
GBytes *bytes)
|
GBytes *bytes)
|
||||||
{
|
{
|
||||||
if (!g_utf8_validate (g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), NULL))
|
if (!g_utf8_validate (g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), NULL))
|
||||||
{
|
{
|
||||||
|
load_error (self, "Invalid UTF-8");
|
||||||
g_bytes_unref (bytes);
|
g_bytes_unref (bytes);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -359,11 +407,16 @@ static gboolean
|
|||||||
load_file_contents (NodeEditorWindow *self,
|
load_file_contents (NodeEditorWindow *self,
|
||||||
GFile *file)
|
GFile *file)
|
||||||
{
|
{
|
||||||
|
GError *error = NULL;
|
||||||
GBytes *bytes;
|
GBytes *bytes;
|
||||||
|
|
||||||
bytes = g_file_load_bytes (file, NULL, NULL, NULL);
|
bytes = g_file_load_bytes (file, NULL, NULL, &error);
|
||||||
if (bytes == NULL)
|
if (bytes == NULL)
|
||||||
return FALSE;
|
{
|
||||||
|
load_error (self, error->message);
|
||||||
|
g_clear_error (&error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
return load_bytes (self, bytes);
|
return load_bytes (self, bytes);
|
||||||
}
|
}
|
||||||
@@ -473,17 +526,18 @@ node_editor_window_load (NodeEditorWindow *self,
|
|||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
|
g_clear_object (&self->file_monitor);
|
||||||
|
|
||||||
if (!load_file_contents (self, file))
|
if (!load_file_contents (self, file))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
g_clear_object (&self->file_monitor);
|
|
||||||
self->file_monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &error);
|
self->file_monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &error);
|
||||||
|
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
g_warning ("couldn't monitor file: %s", error->message);
|
g_warning ("couldn't monitor file: %s", error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
|
g_clear_object (&self->file_monitor);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -646,7 +700,6 @@ create_cairo_texture (NodeEditorWindow *self)
|
|||||||
GskRenderer *renderer;
|
GskRenderer *renderer;
|
||||||
GskRenderNode *node;
|
GskRenderNode *node;
|
||||||
GdkTexture *texture;
|
GdkTexture *texture;
|
||||||
GdkSurface *surface;
|
|
||||||
|
|
||||||
paintable = gtk_picture_get_paintable (GTK_PICTURE (self->picture));
|
paintable = gtk_picture_get_paintable (GTK_PICTURE (self->picture));
|
||||||
if (paintable == NULL ||
|
if (paintable == NULL ||
|
||||||
@@ -659,9 +712,8 @@ create_cairo_texture (NodeEditorWindow *self)
|
|||||||
if (node == NULL)
|
if (node == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
surface = gtk_native_get_surface (gtk_widget_get_native (GTK_WIDGET (self)));
|
|
||||||
renderer = gsk_cairo_renderer_new ();
|
renderer = gsk_cairo_renderer_new ();
|
||||||
gsk_renderer_realize (renderer, surface, NULL);
|
gsk_renderer_realize (renderer, NULL, NULL);
|
||||||
|
|
||||||
texture = gsk_renderer_render_texture (renderer, node, NULL);
|
texture = gsk_renderer_render_texture (renderer, node, NULL);
|
||||||
gsk_render_node_unref (node);
|
gsk_render_node_unref (node);
|
||||||
@@ -839,16 +891,18 @@ node_editor_window_add_renderer (NodeEditorWindow *self,
|
|||||||
GskRenderer *renderer,
|
GskRenderer *renderer,
|
||||||
const char *description)
|
const char *description)
|
||||||
{
|
{
|
||||||
GdkSurface *surface;
|
|
||||||
GdkPaintable *paintable;
|
GdkPaintable *paintable;
|
||||||
|
|
||||||
surface = gtk_native_get_surface (GTK_NATIVE (self));
|
if (!gsk_renderer_realize (renderer, NULL, NULL))
|
||||||
g_assert (surface != NULL);
|
|
||||||
|
|
||||||
if (renderer != NULL && !gsk_renderer_realize (renderer, surface, NULL))
|
|
||||||
{
|
{
|
||||||
g_object_unref (renderer);
|
GdkSurface *surface = gtk_native_get_surface (GTK_NATIVE (self));
|
||||||
return;
|
g_assert (surface != NULL);
|
||||||
|
|
||||||
|
if (!gsk_renderer_realize (renderer, surface, NULL))
|
||||||
|
{
|
||||||
|
g_object_unref (renderer);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
paintable = gtk_renderer_paintable_new (renderer, gtk_picture_get_paintable (GTK_PICTURE (self->picture)));
|
paintable = gtk_renderer_paintable_new (renderer, gtk_picture_get_paintable (GTK_PICTURE (self->picture)));
|
||||||
@@ -872,7 +926,7 @@ node_editor_window_realize (GtkWidget *widget)
|
|||||||
"Default");
|
"Default");
|
||||||
#endif
|
#endif
|
||||||
node_editor_window_add_renderer (self,
|
node_editor_window_add_renderer (self,
|
||||||
gsk_ngl_renderer_new (),
|
gsk_gl_renderer_new (),
|
||||||
"OpenGL");
|
"OpenGL");
|
||||||
#ifdef GDK_RENDERING_VULKAN
|
#ifdef GDK_RENDERING_VULKAN
|
||||||
node_editor_window_add_renderer (self,
|
node_editor_window_add_renderer (self,
|
||||||
@@ -929,6 +983,7 @@ node_editor_window_class_init (NodeEditorWindowClass *class)
|
|||||||
gtk_widget_class_bind_template_child (widget_class, NodeEditorWindow, testcase_cairo_checkbutton);
|
gtk_widget_class_bind_template_child (widget_class, NodeEditorWindow, testcase_cairo_checkbutton);
|
||||||
gtk_widget_class_bind_template_child (widget_class, NodeEditorWindow, testcase_name_entry);
|
gtk_widget_class_bind_template_child (widget_class, NodeEditorWindow, testcase_name_entry);
|
||||||
gtk_widget_class_bind_template_child (widget_class, NodeEditorWindow, testcase_save_button);
|
gtk_widget_class_bind_template_child (widget_class, NodeEditorWindow, testcase_save_button);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, NodeEditorWindow, scale_scale);
|
||||||
|
|
||||||
gtk_widget_class_bind_template_callback (widget_class, text_view_query_tooltip_cb);
|
gtk_widget_class_bind_template_callback (widget_class, text_view_query_tooltip_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, open_cb);
|
gtk_widget_class_bind_template_callback (widget_class, open_cb);
|
||||||
@@ -1035,6 +1090,7 @@ node_editor_window_init (NodeEditorWindow *self)
|
|||||||
|
|
||||||
self->text_buffer = gtk_text_buffer_new (self->tag_table);
|
self->text_buffer = gtk_text_buffer_new (self->tag_table);
|
||||||
g_signal_connect (self->text_buffer, "changed", G_CALLBACK (text_changed), self);
|
g_signal_connect (self->text_buffer, "changed", G_CALLBACK (text_changed), self);
|
||||||
|
g_signal_connect (self->scale_scale, "notify::value", G_CALLBACK (scale_changed), self);
|
||||||
gtk_text_view_set_buffer (GTK_TEXT_VIEW (self->text_view), self->text_buffer);
|
gtk_text_view_set_buffer (GTK_TEXT_VIEW (self->text_view), self->text_buffer);
|
||||||
|
|
||||||
/* Default */
|
/* Default */
|
||||||
|
@@ -157,13 +157,31 @@
|
|||||||
<signal name="notify::active" handler="dark_mode_cb" swapped="0"/>
|
<signal name="notify::active" handler="dark_mode_cb" swapped="0"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<child type="end">
|
||||||
|
<object class="GtkScaleButton" id="scale_scale">
|
||||||
|
<property name="focus-on-click">0</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="adjustment">
|
||||||
|
<object class="GtkAdjustment">
|
||||||
|
<property name="lower">1</property>
|
||||||
|
<property name="value">1</property>
|
||||||
|
<property name="upper">10</property>
|
||||||
|
<property name="step-increment">0.1</property>
|
||||||
|
<property name="page-increment">0.5</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="icons">zoom-in-symbolic</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Scale the image</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkPaned">
|
<object class="GtkPaned">
|
||||||
|
<property name="shrink-start-child">false</property>
|
||||||
<property name="shrink-end-child">false</property>
|
<property name="shrink-end-child">false</property>
|
||||||
<property name="position">400</property>
|
<property name="position">400</property>
|
||||||
<child>
|
<property name="start-child">
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="hscrollbar-policy">never</property>
|
<property name="hscrollbar-policy">never</property>
|
||||||
<property name="hexpand">1</property>
|
<property name="hexpand">1</property>
|
||||||
@@ -184,8 +202,8 @@
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</property>
|
||||||
<child>
|
<property name="end-child">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
@@ -231,7 +249,7 @@
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
|
40
demos/node-editor/org.gtk.gtk4.NodeEditor.appdata.xml.in
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<component type="desktop">
|
||||||
|
<id>org.gtk.gtk4.NodeEditor</id>
|
||||||
|
<launchable type="desktop-id">org.gtk.gtk4.NodeEditor.desktop</launchable>
|
||||||
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
<project_license>LGPL-2.1-or-later</project_license>
|
||||||
|
<name>GTK Node Editor</name>
|
||||||
|
<summary>Program to edit render node files</summary>
|
||||||
|
<description>
|
||||||
|
<p>
|
||||||
|
GTK Node Editor is a simple application to show and edit
|
||||||
|
render node files.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Render node files can e.g. be created by the GTK inspector.
|
||||||
|
</p>
|
||||||
|
</description>
|
||||||
|
<screenshots>
|
||||||
|
<screenshot>
|
||||||
|
<image>https://static.gnome.org/appdata/gtk4-node-editor/gtk4-node-editor.png</image>
|
||||||
|
<caption>Node Editor</caption>
|
||||||
|
</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
<kudos>
|
||||||
|
<kudo>HiDpiIcon</kudo>
|
||||||
|
<kudo>ModernToolkit</kudo>
|
||||||
|
</kudos>
|
||||||
|
<url type="homepage">https://www.gtk.org</url>
|
||||||
|
<translation type="gettext">gtk-4.0</translation>
|
||||||
|
<update_contact>matthias.clasen_at_gmail.com</update_contact>
|
||||||
|
<developer_name>Matthias Clasen and others</developer_name>
|
||||||
|
<content_rating type="oars-1.1"/>
|
||||||
|
<releases>
|
||||||
|
<release version="@BUILD_VERSION@">
|
||||||
|
<description>
|
||||||
|
<p>A new build of GTK.</p>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
</releases>
|
||||||
|
</component>
|
9
demos/node-editor/org.gtk.gtk4.NodeEditor.desktop
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Node Editor
|
||||||
|
Comment=An application that edits render nodes
|
||||||
|
Exec=gtk4-node-editor
|
||||||
|
Icon=org.gtk.gtk4.NodeEditor
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
StartupNotify=true
|
||||||
|
Categories=Development;GTK;
|
@@ -3,7 +3,7 @@ executable('gtk4-print-editor',
|
|||||||
c_args: common_cflags,
|
c_args: common_cflags,
|
||||||
dependencies: [ libgtk_dep, demo_conf_h ],
|
dependencies: [ libgtk_dep, demo_conf_h ],
|
||||||
include_directories: confinc,
|
include_directories: confinc,
|
||||||
gui_app: true,
|
win_subsystem: 'windows',
|
||||||
link_args: extra_demo_ldflags,
|
link_args: extra_demo_ldflags,
|
||||||
install: true,
|
install: true,
|
||||||
)
|
)
|
||||||
|
@@ -42,7 +42,7 @@ update_statusbar (void)
|
|||||||
const char *print_str;
|
const char *print_str;
|
||||||
|
|
||||||
gtk_statusbar_pop (GTK_STATUSBAR (statusbar), 0);
|
gtk_statusbar_pop (GTK_STATUSBAR (statusbar), 0);
|
||||||
|
|
||||||
gtk_text_buffer_get_iter_at_mark (buffer,
|
gtk_text_buffer_get_iter_at_mark (buffer,
|
||||||
&iter,
|
&iter,
|
||||||
gtk_text_buffer_get_insert (buffer));
|
gtk_text_buffer_get_insert (buffer));
|
||||||
@@ -56,7 +56,7 @@ update_statusbar (void)
|
|||||||
GtkPrintOperation *op = active_prints->data;
|
GtkPrintOperation *op = active_prints->data;
|
||||||
print_str = gtk_print_operation_get_status_string (op);
|
print_str = gtk_print_operation_get_status_string (op);
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = g_strdup_printf ("%d, %d%s %s",
|
msg = g_strdup_printf ("%d, %d%s %s",
|
||||||
row, col,
|
row, col,
|
||||||
file_changed?" - Modified":"",
|
file_changed?" - Modified":"",
|
||||||
@@ -188,10 +188,10 @@ save_file (GFile *save_filename)
|
|||||||
"Error saving to file %s:\n%s",
|
"Error saving to file %s:\n%s",
|
||||||
display_name,
|
display_name,
|
||||||
error->message);
|
error->message);
|
||||||
|
|
||||||
g_signal_connect (error_dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
|
g_signal_connect (error_dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
|
||||||
gtk_widget_show (error_dialog);
|
gtk_widget_show (error_dialog);
|
||||||
|
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
g_object_unref (info);
|
g_object_unref (info);
|
||||||
}
|
}
|
||||||
@@ -229,7 +229,7 @@ begin_print (GtkPrintOperation *operation,
|
|||||||
pango_font_description_free (desc);
|
pango_font_description_free (desc);
|
||||||
|
|
||||||
pango_layout_set_width (print_data->layout, width * PANGO_SCALE);
|
pango_layout_set_width (print_data->layout, width * PANGO_SCALE);
|
||||||
|
|
||||||
pango_layout_set_text (print_data->layout, print_data->text, -1);
|
pango_layout_set_text (print_data->layout, print_data->text, -1);
|
||||||
|
|
||||||
num_lines = pango_layout_get_line_count (print_data->layout);
|
num_lines = pango_layout_get_line_count (print_data->layout);
|
||||||
@@ -241,7 +241,7 @@ begin_print (GtkPrintOperation *operation,
|
|||||||
{
|
{
|
||||||
PangoRectangle ink_rect, logical_rect;
|
PangoRectangle ink_rect, logical_rect;
|
||||||
double line_height;
|
double line_height;
|
||||||
|
|
||||||
layout_line = pango_layout_get_line (print_data->layout, line);
|
layout_line = pango_layout_get_line (print_data->layout, line);
|
||||||
pango_layout_line_get_extents (layout_line, &ink_rect, &logical_rect);
|
pango_layout_line_get_extents (layout_line, &ink_rect, &logical_rect);
|
||||||
|
|
||||||
@@ -258,7 +258,7 @@ begin_print (GtkPrintOperation *operation,
|
|||||||
|
|
||||||
page_breaks = g_list_reverse (page_breaks);
|
page_breaks = g_list_reverse (page_breaks);
|
||||||
gtk_print_operation_set_n_pages (operation, g_list_length (page_breaks) + 1);
|
gtk_print_operation_set_n_pages (operation, g_list_length (page_breaks) + 1);
|
||||||
|
|
||||||
print_data->page_breaks = page_breaks;
|
print_data->page_breaks = page_breaks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,11 +287,11 @@ draw_page (GtkPrintOperation *operation,
|
|||||||
end = pango_layout_get_line_count (print_data->layout);
|
end = pango_layout_get_line_count (print_data->layout);
|
||||||
else
|
else
|
||||||
end = GPOINTER_TO_INT (pagebreak->data);
|
end = GPOINTER_TO_INT (pagebreak->data);
|
||||||
|
|
||||||
cr = gtk_print_context_get_cairo_context (context);
|
cr = gtk_print_context_get_cairo_context (context);
|
||||||
|
|
||||||
cairo_set_source_rgb (cr, 0, 0, 0);
|
cairo_set_source_rgb (cr, 0, 0, 0);
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
start_pos = 0;
|
start_pos = 0;
|
||||||
iter = pango_layout_get_iter (print_data->layout);
|
iter = pango_layout_get_iter (print_data->layout);
|
||||||
@@ -307,12 +307,12 @@ draw_page (GtkPrintOperation *operation,
|
|||||||
|
|
||||||
pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
|
pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
|
||||||
baseline = pango_layout_iter_get_baseline (iter);
|
baseline = pango_layout_iter_get_baseline (iter);
|
||||||
|
|
||||||
if (i == start)
|
if (i == start)
|
||||||
start_pos = logical_rect.y / 1024.0;
|
start_pos = logical_rect.y / 1024.0;
|
||||||
|
|
||||||
cairo_move_to (cr, logical_rect.x / 1024.0, baseline / 1024.0 - start_pos);
|
cairo_move_to (cr, logical_rect.x / 1024.0, baseline / 1024.0 - start_pos);
|
||||||
|
|
||||||
pango_cairo_show_layout_line (cr, line);
|
pango_cairo_show_layout_line (cr, line);
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
@@ -383,9 +383,9 @@ print_done (GtkPrintOperation *op,
|
|||||||
{
|
{
|
||||||
|
|
||||||
GtkWidget *error_dialog;
|
GtkWidget *error_dialog;
|
||||||
|
|
||||||
gtk_print_operation_get_error (op, &error);
|
gtk_print_operation_get_error (op, &error);
|
||||||
|
|
||||||
error_dialog = gtk_message_dialog_new (GTK_WINDOW (main_window),
|
error_dialog = gtk_message_dialog_new (GTK_WINDOW (main_window),
|
||||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||||
GTK_MESSAGE_ERROR,
|
GTK_MESSAGE_ERROR,
|
||||||
@@ -405,13 +405,13 @@ print_done (GtkPrintOperation *op,
|
|||||||
g_free (print_data->text);
|
g_free (print_data->text);
|
||||||
g_free (print_data->font);
|
g_free (print_data->font);
|
||||||
g_free (print_data);
|
g_free (print_data);
|
||||||
|
|
||||||
if (!gtk_print_operation_is_finished (op))
|
if (!gtk_print_operation_is_finished (op))
|
||||||
{
|
{
|
||||||
g_object_ref (op);
|
g_object_ref (op);
|
||||||
active_prints = g_list_append (active_prints, op);
|
active_prints = g_list_append (active_prints, op);
|
||||||
update_statusbar ();
|
update_statusbar ();
|
||||||
|
|
||||||
/* This ref is unref:ed when we get the final state change */
|
/* This ref is unref:ed when we get the final state change */
|
||||||
g_signal_connect (op, "status_changed",
|
g_signal_connect (op, "status_changed",
|
||||||
G_CALLBACK (status_changed_cb), NULL);
|
G_CALLBACK (status_changed_cb), NULL);
|
||||||
@@ -628,7 +628,7 @@ activate_about (GSimpleAction *action,
|
|||||||
glib_micro_version);
|
glib_micro_version);
|
||||||
g_string_append_printf (sysinfo, "\tPango\t%s\n",
|
g_string_append_printf (sysinfo, "\tPango\t%s\n",
|
||||||
pango_version_string ());
|
pango_version_string ());
|
||||||
g_string_append_printf (sysinfo, "\tGTK\t%d.%d.%d\n",
|
g_string_append_printf (sysinfo, "\tGTK \t%d.%d.%d\n",
|
||||||
gtk_get_major_version (),
|
gtk_get_major_version (),
|
||||||
gtk_get_minor_version (),
|
gtk_get_minor_version (),
|
||||||
gtk_get_micro_version ());
|
gtk_get_micro_version ());
|
||||||
@@ -871,7 +871,7 @@ activate (GApplication *app)
|
|||||||
|
|
||||||
update_ui ();
|
update_ui ();
|
||||||
|
|
||||||
gtk_widget_show (main_window);
|
gtk_window_present (GTK_WINDOW (main_window));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -1,16 +1,84 @@
|
|||||||
# demos/widget-factory
|
# demos/widget-factory
|
||||||
|
|
||||||
widgetfactory_resources = gnome.compile_resources('widgetfactory_resources',
|
objcopy_supports_add_symbol = false
|
||||||
'widget-factory.gresource.xml',
|
objcopy = find_program('objcopy', required : false)
|
||||||
source_dir: '.',
|
if objcopy.found()
|
||||||
)
|
objcopy_supports_add_symbol = run_command(objcopy, '--help').stdout().contains('--add-symbol')
|
||||||
|
endif
|
||||||
|
|
||||||
|
ld = find_program('ld', required : false)
|
||||||
|
|
||||||
|
if not meson.is_cross_build() and build_machine.cpu_family() != 'arm' and build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
|
||||||
|
glib_compile_resources = find_program('glib-compile-resources')
|
||||||
|
|
||||||
|
# Create the resource blob
|
||||||
|
widgetfactory_gresource = custom_target('widgetfactory.gresource',
|
||||||
|
input : 'widget-factory.gresource.xml',
|
||||||
|
output : 'widgetfactory.gresource',
|
||||||
|
depfile: 'widgetfactory.gresource.d',
|
||||||
|
command : [glib_compile_resources,
|
||||||
|
'--generate',
|
||||||
|
'--internal',
|
||||||
|
'--target=@OUTPUT@',
|
||||||
|
'--dependency-file=@DEPFILE@',
|
||||||
|
'--sourcedir=' + meson.current_source_dir(),
|
||||||
|
'--sourcedir=' + meson.current_build_dir(),
|
||||||
|
'@INPUT@'])
|
||||||
|
|
||||||
|
# Create resource data file
|
||||||
|
widgetfactory_resources_c = custom_target('widgetfactory_resources.c',
|
||||||
|
input : 'widget-factory.gresource.xml',
|
||||||
|
output : 'widgetfactory_resources.c',
|
||||||
|
depfile: 'widgetfactory_resources.c.d',
|
||||||
|
command : [glib_compile_resources,
|
||||||
|
'--generate-source',
|
||||||
|
'--internal',
|
||||||
|
'--target=@OUTPUT@',
|
||||||
|
'--dependency-file=@DEPFILE@',
|
||||||
|
'--sourcedir=' + meson.current_source_dir(),
|
||||||
|
'--sourcedir=' + meson.current_build_dir(),
|
||||||
|
'--external-data',
|
||||||
|
'--c-name', '_g_binary_widgetfactory',
|
||||||
|
'@INPUT@'])
|
||||||
|
|
||||||
|
# Create object file containing resource data
|
||||||
|
widgetfactory_resources_binary = custom_target('widgetfactory_resources.o',
|
||||||
|
input : widgetfactory_gresource,
|
||||||
|
output : 'widgetfactory_resources.o',
|
||||||
|
command : [ld,
|
||||||
|
'-z', 'noexecstack',
|
||||||
|
'-r',
|
||||||
|
'-b','binary',
|
||||||
|
'@INPUT@',
|
||||||
|
'-o','@OUTPUT@'])
|
||||||
|
|
||||||
|
# Rename symbol to match the one in the C file
|
||||||
|
widgetfactory_resources_o = custom_target('widgetfactory_resources2.o',
|
||||||
|
input : widgetfactory_resources_binary,
|
||||||
|
output : 'widgetfactory_resources2.o',
|
||||||
|
command : [objcopy,
|
||||||
|
'--strip-all',
|
||||||
|
'--add-symbol','_g_binary_widgetfactory_resource_data=.data:0',
|
||||||
|
'@INPUT@',
|
||||||
|
'@OUTPUT@'])
|
||||||
|
|
||||||
|
widgetfactory_resources = [
|
||||||
|
widgetfactory_resources_c,
|
||||||
|
widgetfactory_resources_o,
|
||||||
|
]
|
||||||
|
else
|
||||||
|
widgetfactory_resources = gnome.compile_resources('widgetfactory_resources',
|
||||||
|
'widget-factory.gresource.xml',
|
||||||
|
source_dir: '.',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
executable('gtk4-widget-factory',
|
executable('gtk4-widget-factory',
|
||||||
sources: ['widget-factory.c', widgetfactory_resources],
|
sources: ['widget-factory.c', widgetfactory_resources],
|
||||||
c_args: common_cflags,
|
c_args: common_cflags,
|
||||||
dependencies: [ libgtk_dep, demo_conf_h ],
|
dependencies: [ libgtk_dep, demo_conf_h ],
|
||||||
include_directories: confinc,
|
include_directories: confinc,
|
||||||
gui_app: true,
|
win_subsystem: 'windows',
|
||||||
link_args: extra_demo_ldflags,
|
link_args: extra_demo_ldflags,
|
||||||
install: true,
|
install: true,
|
||||||
)
|
)
|
||||||
|
@@ -34,7 +34,7 @@
|
|||||||
<developer_name>Matthias Clasen and others</developer_name>
|
<developer_name>Matthias Clasen and others</developer_name>
|
||||||
<content_rating type="oars-1.1"/>
|
<content_rating type="oars-1.1"/>
|
||||||
<releases>
|
<releases>
|
||||||
<release version="@BUILD_VERSION@" date="@BUILD_DATE@">
|
<release version="@BUILD_VERSION@">
|
||||||
<description>
|
<description>
|
||||||
<p>A new build of GTK.</p>
|
<p>A new build of GTK.</p>
|
||||||
</description>
|
</description>
|
||||||
|
@@ -78,6 +78,21 @@ change_theme_state (GSimpleAction *action,
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
change_fullscreen (GSimpleAction *action,
|
||||||
|
GVariant *state,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GtkWindow *window = user_data;
|
||||||
|
|
||||||
|
if (g_variant_get_boolean (state))
|
||||||
|
gtk_window_fullscreen (window);
|
||||||
|
else
|
||||||
|
gtk_window_unfullscreen (window);
|
||||||
|
|
||||||
|
g_simple_action_set_state (action, state);
|
||||||
|
}
|
||||||
|
|
||||||
static GtkWidget *page_stack;
|
static GtkWidget *page_stack;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -283,7 +298,7 @@ activate_about (GSimpleAction *action,
|
|||||||
glib_micro_version);
|
glib_micro_version);
|
||||||
g_string_append_printf (s, "\tPango\t%s\n",
|
g_string_append_printf (s, "\tPango\t%s\n",
|
||||||
pango_version_string ());
|
pango_version_string ());
|
||||||
g_string_append_printf (s, "\tGTK\t%d.%d.%d\n",
|
g_string_append_printf (s, "\tGTK \t%d.%d.%d\n",
|
||||||
gtk_get_major_version (),
|
gtk_get_major_version (),
|
||||||
gtk_get_minor_version (),
|
gtk_get_minor_version (),
|
||||||
gtk_get_micro_version ());
|
gtk_get_micro_version ());
|
||||||
@@ -384,7 +399,7 @@ print_operation_done (GtkPrintOperation *op,
|
|||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
break;
|
break;
|
||||||
case GTK_PRINT_OPERATION_RESULT_APPLY:
|
case GTK_PRINT_OPERATION_RESULT_APPLY:
|
||||||
break;
|
break;
|
||||||
case GTK_PRINT_OPERATION_RESULT_CANCEL:
|
case GTK_PRINT_OPERATION_RESULT_CANCEL:
|
||||||
g_print ("Printing was canceled\n");
|
g_print ("Printing was canceled\n");
|
||||||
break;
|
break;
|
||||||
@@ -2012,11 +2027,12 @@ activate (GApplication *app)
|
|||||||
GMenuModel *model;
|
GMenuModel *model;
|
||||||
static GActionEntry win_entries[] = {
|
static GActionEntry win_entries[] = {
|
||||||
{ "dark", NULL, NULL, "false", change_dark_state },
|
{ "dark", NULL, NULL, "false", change_dark_state },
|
||||||
{ "theme", NULL, "s", "'current'", change_theme_state },
|
{ "theme", NULL, "s", "'current'", change_theme_state },
|
||||||
{ "transition", NULL, NULL, "true", change_transition_state },
|
{ "transition", NULL, NULL, "true", change_transition_state },
|
||||||
{ "search", activate_search, NULL, NULL, NULL },
|
{ "search", activate_search, NULL, NULL, NULL },
|
||||||
{ "delete", activate_delete, NULL, NULL, NULL },
|
{ "delete", activate_delete, NULL, NULL, NULL },
|
||||||
{ "busy", get_busy, NULL, NULL, NULL },
|
{ "busy", get_busy, NULL, NULL, NULL },
|
||||||
|
{ "fullscreen", NULL, NULL, "false", change_fullscreen },
|
||||||
{ "background", activate_background, NULL, NULL, NULL },
|
{ "background", activate_background, NULL, NULL, NULL },
|
||||||
{ "open", activate_open, NULL, NULL, NULL },
|
{ "open", activate_open, NULL, NULL, NULL },
|
||||||
{ "record", activate_record, NULL, NULL, NULL },
|
{ "record", activate_record, NULL, NULL, NULL },
|
||||||
@@ -2037,6 +2053,7 @@ activate (GApplication *app)
|
|||||||
{ "win.open", { "<Control>o", NULL } },
|
{ "win.open", { "<Control>o", NULL } },
|
||||||
{ "win.record", { "<Control>r", NULL } },
|
{ "win.record", { "<Control>r", NULL } },
|
||||||
{ "win.lock", { "<Control>l", NULL } },
|
{ "win.lock", { "<Control>l", NULL } },
|
||||||
|
{ "win.fullscreen", { "F11", NULL } },
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
const char *action_and_target;
|
const char *action_and_target;
|
||||||
@@ -2182,7 +2199,7 @@ activate (GApplication *app)
|
|||||||
g_object_set_data (G_OBJECT (window), "searchbar", widget);
|
g_object_set_data (G_OBJECT (window), "searchbar", widget);
|
||||||
|
|
||||||
widget = (GtkWidget *)gtk_builder_get_object (builder, "infobar");
|
widget = (GtkWidget *)gtk_builder_get_object (builder, "infobar");
|
||||||
g_signal_connect (widget, "response", G_CALLBACK (info_bar_response), NULL);
|
g_signal_connect (widget, "response", G_CALLBACK (info_bar_response), NULL);
|
||||||
g_object_set_data (G_OBJECT (window), "infobar", widget);
|
g_object_set_data (G_OBJECT (window), "infobar", widget);
|
||||||
|
|
||||||
dialog = (GtkWidget *)gtk_builder_get_object (builder, "info_dialog");
|
dialog = (GtkWidget *)gtk_builder_get_object (builder, "info_dialog");
|
||||||
@@ -2343,7 +2360,7 @@ activate (GApplication *app)
|
|||||||
model = (GMenuModel *)gtk_builder_get_object (builder, "new_style_context_menu_model");
|
model = (GMenuModel *)gtk_builder_get_object (builder, "new_style_context_menu_model");
|
||||||
set_up_context_popover (widget, model);
|
set_up_context_popover (widget, model);
|
||||||
|
|
||||||
gtk_widget_show (GTK_WIDGET (window));
|
gtk_window_present (window);
|
||||||
|
|
||||||
g_object_unref (builder);
|
g_object_unref (builder);
|
||||||
}
|
}
|
||||||
|
@@ -5,22 +5,23 @@ repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
|
|||||||
website_url = "https://www.gtk.org"
|
website_url = "https://www.gtk.org"
|
||||||
authors = "GTK Development Team"
|
authors = "GTK Development Team"
|
||||||
logo_url = "gtk-logo.svg"
|
logo_url = "gtk-logo.svg"
|
||||||
license = "GPL-2.1-or-later"
|
license = "LGPL-2.1-or-later"
|
||||||
description = "The GTK toolkit"
|
description = "The GTK toolkit"
|
||||||
dependencies = [ "GObject-2.0" ]
|
|
||||||
devhelp = true
|
devhelp = true
|
||||||
|
|
||||||
[dependencies."GObject-2.0"]
|
dependencies = ["Gdk-4.0"]
|
||||||
name = "GObject"
|
|
||||||
description = "The base type system library"
|
[dependencies."Gdk-4.0"]
|
||||||
docs_url = "https://docs.gtk.org/gobject/"
|
name = "GDK"
|
||||||
|
description = "The GTK drawing kit"
|
||||||
|
docs_url = "https://docs.gtk.org/gdk/"
|
||||||
|
|
||||||
[theme]
|
[theme]
|
||||||
name = "basic"
|
name = "basic"
|
||||||
show_index_summary = true
|
show_index_summary = true
|
||||||
|
|
||||||
[source-location]
|
[source-location]
|
||||||
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/"
|
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/main/"
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
content_images = [
|
content_images = [
|
||||||
|
@@ -5,22 +5,22 @@ repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
|
|||||||
website_url = "https://www.gtk.org"
|
website_url = "https://www.gtk.org"
|
||||||
authors = "GTK Development Team"
|
authors = "GTK Development Team"
|
||||||
logo_url = "gtk-logo.svg"
|
logo_url = "gtk-logo.svg"
|
||||||
license = "GPL-2.1-or-later"
|
license = "LGPL-2.1-or-later"
|
||||||
description = "The GTK toolkit"
|
description = "The GTK toolkit"
|
||||||
dependencies = [ "GObject-2.0" ]
|
dependencies = ["Gdk-4.0"]
|
||||||
devhelp = true
|
devhelp = true
|
||||||
|
|
||||||
[dependencies."GObject-2.0"]
|
[dependencies."Gdk-4.0"]
|
||||||
name = "GObject"
|
name = "GDK"
|
||||||
description = "The base type system library"
|
description = "The GTK drawing kit"
|
||||||
docs_url = "https://docs.gtk.org/gobject/"
|
docs_url = "https://docs.gtk.org/gdk4/"
|
||||||
|
|
||||||
[theme]
|
[theme]
|
||||||
name = "basic"
|
name = "basic"
|
||||||
show_index_summary = true
|
show_index_summary = true
|
||||||
|
|
||||||
[source-location]
|
[source-location]
|
||||||
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/"
|
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/main/"
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
content_images = [
|
content_images = [
|
||||||
|
@@ -3,11 +3,12 @@ version = "@version@"
|
|||||||
browse_url = "https://gitlab.gnome.org/GNOME/gtk/"
|
browse_url = "https://gitlab.gnome.org/GNOME/gtk/"
|
||||||
repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
|
repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
|
||||||
website_url = "https://www.gtk.org"
|
website_url = "https://www.gtk.org"
|
||||||
|
docs_url = "https://docs.gtk.org/gdk4/"
|
||||||
authors = "GTK Development Team"
|
authors = "GTK Development Team"
|
||||||
logo_url = "gtk-logo.svg"
|
logo_url = "gtk-logo.svg"
|
||||||
license = "LGPL-2.1-or-later"
|
license = "LGPL-2.1-or-later"
|
||||||
description = "The GTK toolkit"
|
description = "The GTK toolkit"
|
||||||
dependencies = [ "GObject-2.0", "cairo-1.0", "Pango-1.0", "GdkWayland-4.0", "GdkX11-4.0" ]
|
dependencies = ["GObject-2.0", "Gio-2.0", "cairo-1.0", "Pango-1.0", "GdkPixbuf-2.0"]
|
||||||
devhelp = true
|
devhelp = true
|
||||||
search_index = true
|
search_index = true
|
||||||
|
|
||||||
@@ -16,6 +17,11 @@ search_index = true
|
|||||||
description = "The base type system library"
|
description = "The base type system library"
|
||||||
docs_url = "https://docs.gtk.org/gobject/"
|
docs_url = "https://docs.gtk.org/gobject/"
|
||||||
|
|
||||||
|
[dependencies."Gio-2.0"]
|
||||||
|
name = "GIO"
|
||||||
|
description = "GObject Interfaces and Objects, Networking, IPC, and I/O"
|
||||||
|
docs_url = "https://docs.gtk.org/gio/"
|
||||||
|
|
||||||
[dependencies."cairo-1.0"]
|
[dependencies."cairo-1.0"]
|
||||||
name = "Cairo"
|
name = "Cairo"
|
||||||
description = "A 2D graphics library with support for multiple output devices"
|
description = "A 2D graphics library with support for multiple output devices"
|
||||||
@@ -26,12 +32,19 @@ search_index = true
|
|||||||
description = "Text shaping and rendering"
|
description = "Text shaping and rendering"
|
||||||
docs_url = "https://docs.gtk.org/Pango/"
|
docs_url = "https://docs.gtk.org/Pango/"
|
||||||
|
|
||||||
[dependencies."GdkWayland-4.0"]
|
[dependencies."GdkPixbuf-2.0"]
|
||||||
|
name = "GdkPixbuf"
|
||||||
|
description = "Image data loading"
|
||||||
|
docs_url = "https://docs.gtk.org/gdk-pixbuf/"
|
||||||
|
|
||||||
|
related = ["GdkWayland-4.0", "GdkX11-4.0"]
|
||||||
|
|
||||||
|
[related."GdkWayland-4.0"]
|
||||||
name = "GdkWayland"
|
name = "GdkWayland"
|
||||||
description = "GDK Wayland Backend"
|
description = "GDK Wayland Backend"
|
||||||
docs_url = "https://docs.gtk.org/gdk4-wayland/"
|
docs_url = "https://docs.gtk.org/gdk4-wayland/"
|
||||||
|
|
||||||
[dependencies."GdkX11-4.0"]
|
[related."GdkX11-4.0"]
|
||||||
name = "GdkX11"
|
name = "GdkX11"
|
||||||
description = "GDK X11 Backend"
|
description = "GDK X11 Backend"
|
||||||
docs_url = "https://docs.gtk.org/gdk4-x11/"
|
docs_url = "https://docs.gtk.org/gdk4-x11/"
|
||||||
@@ -42,7 +55,7 @@ show_index_summary = true
|
|||||||
show_class_hierarchy = true
|
show_class_hierarchy = true
|
||||||
|
|
||||||
[source-location]
|
[source-location]
|
||||||
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/"
|
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/main/"
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
content_files = [
|
content_files = [
|
||||||
|
@@ -33,7 +33,7 @@ calls to different backends, and error out on unsupported windowing systems:
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
#ifdef GDK_WINDOWING_WAYLAND
|
#ifdef GDK_WINDOWING_WAYLAND
|
||||||
if (GTK_IS_WAYLAND_DISPLAY (display))
|
if (GDK_IS_WAYLAND_DISPLAY (display))
|
||||||
{
|
{
|
||||||
// make Wayland-specific calls here
|
// make Wayland-specific calls here
|
||||||
}
|
}
|
||||||
|
@@ -16,12 +16,10 @@ if get_option('gtk_doc')
|
|||||||
command: [
|
command: [
|
||||||
gidocgen,
|
gidocgen,
|
||||||
'generate',
|
'generate',
|
||||||
'--quiet',
|
gidocgen_common_args,
|
||||||
'--fatal-warnings',
|
|
||||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
|
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
|
||||||
'--config=@INPUT0@',
|
'--config=@INPUT0@',
|
||||||
'--output-dir=@OUTPUT@',
|
'--output-dir=@OUTPUT@',
|
||||||
'--no-namespace-dir',
|
|
||||||
'--content-dir=@0@'.format(meson.current_source_dir()),
|
'--content-dir=@0@'.format(meson.current_source_dir()),
|
||||||
'@INPUT1@',
|
'@INPUT1@',
|
||||||
],
|
],
|
||||||
@@ -46,12 +44,10 @@ if get_option('gtk_doc')
|
|||||||
command: [
|
command: [
|
||||||
gidocgen,
|
gidocgen,
|
||||||
'generate',
|
'generate',
|
||||||
'--quiet',
|
gidocgen_common_args,
|
||||||
'--fatal-warnings',
|
|
||||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
|
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
|
||||||
'--config=@INPUT0@',
|
'--config=@INPUT0@',
|
||||||
'--output-dir=@OUTPUT@',
|
'--output-dir=@OUTPUT@',
|
||||||
'--no-namespace-dir',
|
|
||||||
'--content-dir=@0@'.format(meson.current_source_dir()),
|
'--content-dir=@0@'.format(meson.current_source_dir()),
|
||||||
'@INPUT1@',
|
'@INPUT1@',
|
||||||
],
|
],
|
||||||
@@ -78,12 +74,10 @@ if get_option('gtk_doc')
|
|||||||
command: [
|
command: [
|
||||||
gidocgen,
|
gidocgen,
|
||||||
'generate',
|
'generate',
|
||||||
'--quiet',
|
gidocgen_common_args,
|
||||||
'--fatal-warnings',
|
|
||||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
|
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
|
||||||
'--config=@INPUT0@',
|
'--config=@INPUT0@',
|
||||||
'--output-dir=@OUTPUT@',
|
'--output-dir=@OUTPUT@',
|
||||||
'--no-namespace-dir',
|
|
||||||
'--content-dir=@0@'.format(meson.current_source_dir()),
|
'--content-dir=@0@'.format(meson.current_source_dir()),
|
||||||
'@INPUT1@',
|
'@INPUT1@',
|
||||||
],
|
],
|
||||||
|
@@ -13,4 +13,5 @@ baseURLs = [
|
|||||||
[ 'Gtk', 'https://docs.gtk.org/gtk4/' ],
|
[ 'Gtk', 'https://docs.gtk.org/gtk4/' ],
|
||||||
[ 'Pango', 'https://docs.gtk.org/Pango/' ],
|
[ 'Pango', 'https://docs.gtk.org/Pango/' ],
|
||||||
[ 'PangoCairo', 'https://docs.gtk.org/PangoCairo/' ],
|
[ 'PangoCairo', 'https://docs.gtk.org/PangoCairo/' ],
|
||||||
|
[ 'GdkPixbuf', 'https://docs.gtk.org/gdk-pixbuf/' ],
|
||||||
]
|
]
|
||||||
|
@@ -23,7 +23,7 @@ calls to different backends, and error out on unsupported windowing systems:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GDK_WINDOWING_WAYLAND
|
#ifdef GDK_WINDOWING_WAYLAND
|
||||||
if (GTK_IS_WAYLAND_DISPLAY (display))
|
if (GDK_IS_WAYLAND_DISPLAY (display))
|
||||||
{
|
{
|
||||||
// make Wayland-specific calls here
|
// make Wayland-specific calls here
|
||||||
}
|
}
|
||||||
|
@@ -29,7 +29,7 @@ calls to different backends, and error out on unsupported windowing systems:
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
#ifdef GDK_WINDOWING_WAYLAND
|
#ifdef GDK_WINDOWING_WAYLAND
|
||||||
if (GTK_IS_WAYLAND_DISPLAY (display))
|
if (GDK_IS_WAYLAND_DISPLAY (display))
|
||||||
{
|
{
|
||||||
// make Wayland-specific calls here
|
// make Wayland-specific calls here
|
||||||
}
|
}
|
||||||
|
@@ -3,29 +3,21 @@ version = "@version@"
|
|||||||
browse_url = "https://gitlab.gnome.org/GNOME/gtk/"
|
browse_url = "https://gitlab.gnome.org/GNOME/gtk/"
|
||||||
repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
|
repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
|
||||||
website_url = "https://www.gtk.org"
|
website_url = "https://www.gtk.org"
|
||||||
|
docs_url = "https://docs.gtk.org/gsk4/"
|
||||||
authors = "GTK Development Team"
|
authors = "GTK Development Team"
|
||||||
logo_url = "gtk-logo.svg"
|
logo_url = "gtk-logo.svg"
|
||||||
license = "LGPL-2.1-or-later"
|
license = "LGPL-2.1-or-later"
|
||||||
description = "The GTK toolkit"
|
description = "The GTK toolkit"
|
||||||
dependencies = [ "GObject-2.0", "Graphene-1.0", "Pango-1.0", "Gdk-4.0" ]
|
|
||||||
devhelp = true
|
devhelp = true
|
||||||
search_index = true
|
search_index = true
|
||||||
|
|
||||||
[dependencies."GObject-2.0"]
|
dependencies = ["Graphene-1.0", "Gdk-4.0"]
|
||||||
name = "GObject"
|
|
||||||
description = "The base type system library"
|
|
||||||
docs_url = "https://docs.gtk.org/gobject/"
|
|
||||||
|
|
||||||
[dependencies."Graphene-1.0"]
|
[dependencies."Graphene-1.0"]
|
||||||
name = "Graphene"
|
name = "Graphene"
|
||||||
description = "A thin layer of mathematical types for 3D libraries"
|
description = "A thin layer of mathematical types for 3D libraries"
|
||||||
docs_url = "https://ebassi.github.io/graphene/docs/"
|
docs_url = "https://ebassi.github.io/graphene/docs/"
|
||||||
|
|
||||||
[dependencies."Pango-1.0"]
|
|
||||||
name = "Pango"
|
|
||||||
description = "Text shaping and rendering"
|
|
||||||
docs_url = "https://docs.gtk.org/Pango/"
|
|
||||||
|
|
||||||
[dependencies."Gdk-4.0"]
|
[dependencies."Gdk-4.0"]
|
||||||
name = "GDK"
|
name = "GDK"
|
||||||
description = "The GTK windowing system abstraction"
|
description = "The GTK windowing system abstraction"
|
||||||
@@ -37,7 +29,7 @@ show_index_summary = true
|
|||||||
show_class_hierarchy = true
|
show_class_hierarchy = true
|
||||||
|
|
||||||
[source-location]
|
[source-location]
|
||||||
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/"
|
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/main/"
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
content_images = [
|
content_images = [
|
||||||
|
@@ -13,12 +13,10 @@ if get_option('gtk_doc')
|
|||||||
command: [
|
command: [
|
||||||
gidocgen,
|
gidocgen,
|
||||||
'generate',
|
'generate',
|
||||||
'--quiet',
|
gidocgen_common_args,
|
||||||
'--fatal-warnings',
|
|
||||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
|
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
|
||||||
'--config=@INPUT0@',
|
'--config=@INPUT0@',
|
||||||
'--output-dir=@OUTPUT@',
|
'--output-dir=@OUTPUT@',
|
||||||
'--no-namespace-dir',
|
|
||||||
'--content-dir=@0@'.format(meson.current_source_dir()),
|
'--content-dir=@0@'.format(meson.current_source_dir()),
|
||||||
'@INPUT1@',
|
'@INPUT1@',
|
||||||
],
|
],
|
||||||
|
@@ -13,4 +13,5 @@ baseURLs = [
|
|||||||
[ 'Gtk', 'https://docs.gtk.org/gtk4/' ],
|
[ 'Gtk', 'https://docs.gtk.org/gtk4/' ],
|
||||||
[ 'Pango', 'https://docs.gtk.org/Pango/' ],
|
[ 'Pango', 'https://docs.gtk.org/Pango/' ],
|
||||||
[ 'PangoCairo', 'https://docs.gtk.org/PangoCairo/' ],
|
[ 'PangoCairo', 'https://docs.gtk.org/PangoCairo/' ],
|
||||||
|
[ 'GdkPixbuf', 'https://docs.gtk.org/gdk-pixbuf/' ],
|
||||||
]
|
]
|
||||||
|
@@ -3,13 +3,13 @@ Slug: gtk-getting-started
|
|||||||
|
|
||||||
GTK is a [widget toolkit](http://en.wikipedia.org/wiki/Widget_toolkit).
|
GTK is a [widget toolkit](http://en.wikipedia.org/wiki/Widget_toolkit).
|
||||||
Each user interface created by GTK consists of widgets. This is implemented
|
Each user interface created by GTK consists of widgets. This is implemented
|
||||||
in C using [GObject](#gobject), an object-oriented framework for C. Widgets
|
in C using [class@GObject.Object], an object-oriented framework for C. Widgets
|
||||||
are organized in a hierarchy. The window widget is the main container.
|
are organized in a hierarchy. The window widget is the main container.
|
||||||
The user interface is then built by adding buttons, drop-down menus, input
|
The user interface is then built by adding buttons, drop-down menus, input
|
||||||
fields, and other widgets to the window. If you are creating complex user
|
fields, and other widgets to the window. If you are creating complex user
|
||||||
interfaces it is recommended to use GtkBuilder and its GTK-specific markup
|
interfaces it is recommended to use GtkBuilder and its GTK-specific markup
|
||||||
description language, instead of assembling the interface manually. You can
|
description language, instead of assembling the interface manually. You can
|
||||||
also use a visual user interface editor, like [glade](https://glade.gnome.org/).
|
also use a visual user interface editor, like [Glade](https://glade.gnome.org/).
|
||||||
|
|
||||||
GTK is event-driven. The toolkit listens for events such as a click
|
GTK is event-driven. The toolkit listens for events such as a click
|
||||||
on a button, and passes the event to your application.
|
on a button, and passes the event to your application.
|
||||||
@@ -17,7 +17,7 @@ on a button, and passes the event to your application.
|
|||||||
This chapter contains some tutorial information to get you started with
|
This chapter contains some tutorial information to get you started with
|
||||||
GTK programming. It assumes that you have GTK, its dependencies and a C
|
GTK programming. It assumes that you have GTK, its dependencies and a C
|
||||||
compiler installed and ready to use. If you need to build GTK itself first,
|
compiler installed and ready to use. If you need to build GTK itself first,
|
||||||
refer to the [Compiling the GTK libraries](#gtk-compiling) section in this
|
refer to the [Compiling the GTK libraries](building.html) section in this
|
||||||
reference.
|
reference.
|
||||||
|
|
||||||
## Basics
|
## Basics
|
||||||
@@ -68,7 +68,7 @@ gcc $( pkg-config --cflags gtk4 ) -o example-0 example-0.c $( pkg-config --libs
|
|||||||
```
|
```
|
||||||
|
|
||||||
For more information on how to compile a GTK application, please
|
For more information on how to compile a GTK application, please
|
||||||
refer to the [Compiling GTK Applications](#gtk-compiling)
|
refer to the [Compiling GTK Applications](compiling.html)
|
||||||
section in this reference.
|
section in this reference.
|
||||||
|
|
||||||
All GTK applications will, of course, include `gtk/gtk.h`, which declares
|
All GTK applications will, of course, include `gtk/gtk.h`, which declares
|
||||||
@@ -106,16 +106,16 @@ The call to [ctor@Gtk.ApplicationWindow.new] will create a new
|
|||||||
window will have a frame, a title bar, and window controls depending on the
|
window will have a frame, a title bar, and window controls depending on the
|
||||||
platform.
|
platform.
|
||||||
|
|
||||||
A window title is set using [method@Gtk.Window.set_title]. This function
|
A window title is set using [`method@Gtk.Window.set_title`]. This function
|
||||||
takes a `GtkWindow` pointer and a string as input. As our `window` pointer
|
takes a `GtkWindow` pointer and a string as input. As our `window` pointer
|
||||||
is a `GtkWidget` pointer, we need to cast it to `GtkWindow`; instead of
|
is a `GtkWidget` pointer, we need to cast it to `GtkWindow`; instead of
|
||||||
casting `window` via a typical C cast like `(GtkWindow*)`, `window` can be
|
casting `window` via a typical C cast like `(GtkWindow*)`, `window` can be
|
||||||
cast using the macro `GTK_WINDOW()`. `GTK_WINDOW()` will check if the
|
cast using the macro `GTK_WINDOW()`. `GTK_WINDOW()` will check if the
|
||||||
pointer is an instance of the `GtkWindow` class, before casting, and emit a
|
pointer is an instance of the `GtkWindow` class, before casting, and emit a
|
||||||
warning if the check fails. More information about this convention can be
|
warning if the check fails. More information about this convention can be
|
||||||
found [here](https://developer.gnome.org/gobject/stable/gtype-conventions.html).
|
found [in the GObject documentation](https://docs.gtk.org/gobject/concepts.html#conventions).
|
||||||
|
|
||||||
Finally the window size is set using [method@Gtk.Window.set_default_size]
|
Finally the window size is set using [`method@Gtk.Window.set_default_size`]
|
||||||
and the window is then shown by GTK via [method@Gtk.Widget.show].
|
and the window is then shown by GTK via [method@Gtk.Widget.show].
|
||||||
|
|
||||||
When you close the window, by (for example) pressing the X button, the
|
When you close the window, by (for example) pressing the X button, the
|
||||||
@@ -161,19 +161,24 @@ activate (GtkApplication *app,
|
|||||||
{
|
{
|
||||||
GtkWidget *window;
|
GtkWidget *window;
|
||||||
GtkWidget *button;
|
GtkWidget *button;
|
||||||
|
GtkWidget *box;
|
||||||
|
|
||||||
window = gtk_application_window_new (app);
|
window = gtk_application_window_new (app);
|
||||||
gtk_window_set_title (GTK_WINDOW (window), "Window");
|
gtk_window_set_title (GTK_WINDOW (window), "Window");
|
||||||
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
|
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
|
||||||
|
|
||||||
|
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||||
|
gtk_widget_set_halign (box, GTK_ALIGN_CENTER);
|
||||||
|
gtk_widget_set_valign (box, GTK_ALIGN_CENTER);
|
||||||
|
|
||||||
|
gtk_window_set_child (GTK_WINDOW (window), box);
|
||||||
|
|
||||||
button = gtk_button_new_with_label ("Hello World");
|
button = gtk_button_new_with_label ("Hello World");
|
||||||
gtk_widget_set_halign (button, GTK_ALIGN_CENTER);
|
|
||||||
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
|
|
||||||
|
|
||||||
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
|
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
|
||||||
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_destroy), window);
|
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_destroy), window);
|
||||||
|
|
||||||
gtk_window_set_child (GTK_WINDOW (window), button);
|
gtk_box_append (GTK_BOX (box), button);
|
||||||
|
|
||||||
gtk_widget_show (window);
|
gtk_widget_show (window);
|
||||||
}
|
}
|
||||||
@@ -212,10 +217,10 @@ The `GtkBox` widget is created with [ctor@Gtk.Box.new], which takes a
|
|||||||
this box will contain can either be laid out horizontally or vertically.
|
this box will contain can either be laid out horizontally or vertically.
|
||||||
This does not matter in this particular case, as we are dealing with only
|
This does not matter in this particular case, as we are dealing with only
|
||||||
one button. After initializing box with the newly created `GtkBox`, the code
|
one button. After initializing box with the newly created `GtkBox`, the code
|
||||||
adds the box widget to the window widget using [method@Gtk.Window.set_child].
|
adds the box widget to the window widget using [`method@Gtk.Window.set_child`].
|
||||||
|
|
||||||
Next the `button` variable is initialized in similar manner.
|
Next the `button` variable is initialized in similar manner.
|
||||||
[ctor@Gtk.Button.new_with_label] is called which returns a
|
[`ctor@Gtk.Button.new_with_label`] is called which returns a
|
||||||
[class@Gtk.Button] to be stored in `button`. Afterwards `button` is added to
|
[class@Gtk.Button] to be stored in `button`. Afterwards `button` is added to
|
||||||
our `box`.
|
our `box`.
|
||||||
|
|
||||||
@@ -241,8 +246,8 @@ More information about creating buttons can be found
|
|||||||
[here](https://wiki.gnome.org/HowDoI/Buttons).
|
[here](https://wiki.gnome.org/HowDoI/Buttons).
|
||||||
|
|
||||||
The rest of the code in `example-1.c` is identical to `example-0.c`. The next
|
The rest of the code in `example-1.c` is identical to `example-0.c`. The next
|
||||||
section will elaborate further on how to add several GtkWidgets to your GTK
|
section will elaborate further on how to add several [class@Gtk.Widget]s to your
|
||||||
application.
|
GTK application.
|
||||||
|
|
||||||
## Packing
|
## Packing
|
||||||
|
|
||||||
@@ -251,10 +256,18 @@ a window. When you do so, it becomes important to control how each widget is
|
|||||||
positioned and sized. This is where packing comes in.
|
positioned and sized. This is where packing comes in.
|
||||||
|
|
||||||
GTK comes with a large variety of _layout containers_ whose purpose it
|
GTK comes with a large variety of _layout containers_ whose purpose it
|
||||||
is to control the layout of the child widgets that are added to them.
|
is to control the layout of the child widgets that are added to them, like:
|
||||||
See [Layout containers](#LayoutContainers) for an overview.
|
|
||||||
|
|
||||||
The following example shows how the GtkGrid container lets you
|
- [class@Gtk.Box]
|
||||||
|
- [class@Gtk.Grid]
|
||||||
|
- [class@Gtk.Revealer]
|
||||||
|
- [class@Gtk.Stack]
|
||||||
|
- [class@Gtk.Overlay]
|
||||||
|
- [class@Gtk.Paned]
|
||||||
|
- [class@Gtk.Expander]
|
||||||
|
- [class@Gtk.Fixed]
|
||||||
|
|
||||||
|
The following example shows how the [class@Gtk.Grid] container lets you
|
||||||
arrange several buttons:
|
arrange several buttons:
|
||||||
|
|
||||||

|

|
||||||
@@ -353,11 +366,11 @@ draw function.
|
|||||||
The contents of a widget often need to be partially or fully redrawn, e.g.
|
The contents of a widget often need to be partially or fully redrawn, e.g.
|
||||||
when another window is moved and uncovers part of the widget, or when the
|
when another window is moved and uncovers part of the widget, or when the
|
||||||
window containing it is resized. It is also possible to explicitly cause a
|
window containing it is resized. It is also possible to explicitly cause a
|
||||||
widget to be redrawn, by calling [method@Gtk.Widget.queue_draw]. GTK takes
|
widget to be redrawn, by calling [`method@Gtk.Widget.queue_draw`]. GTK takes
|
||||||
care of most of the details by providing a ready-to-use cairo context to the
|
care of most of the details by providing a ready-to-use cairo context to the
|
||||||
draw function.
|
draw function.
|
||||||
|
|
||||||
The following example shows how to use a draw function with GtkDrawingArea.
|
The following example shows how to use a draw function with [class@Gtk.DrawingArea].
|
||||||
It is a bit more complicated than the previous examples, since it also
|
It is a bit more complicated than the previous examples, since it also
|
||||||
demonstrates input event handling with event controllers.
|
demonstrates input event handling with event controllers.
|
||||||
|
|
||||||
@@ -402,9 +415,9 @@ resize_cb (GtkWidget *widget,
|
|||||||
if (gtk_native_get_surface (gtk_widget_get_native (widget)))
|
if (gtk_native_get_surface (gtk_widget_get_native (widget)))
|
||||||
{
|
{
|
||||||
surface = gdk_surface_create_similar_surface (gtk_native_get_surface (gtk_widget_get_native (widget)),
|
surface = gdk_surface_create_similar_surface (gtk_native_get_surface (gtk_widget_get_native (widget)),
|
||||||
CAIRO_CONTENT_COLOR,
|
CAIRO_CONTENT_COLOR,
|
||||||
gtk_widget_get_width (widget),
|
gtk_widget_get_width (widget),
|
||||||
gtk_widget_get_height (widget));
|
gtk_widget_get_height (widget));
|
||||||
|
|
||||||
/* Initialize the surface to white */
|
/* Initialize the surface to white */
|
||||||
clear_surface ();
|
clear_surface ();
|
||||||
@@ -690,16 +703,16 @@ gcc $( pkg-config --cflags gtk4 ) -o example-3 example-3.c $( pkg-config --libs
|
|||||||
|
|
||||||
Note that `GtkBuilder` can also be used to construct objects that are
|
Note that `GtkBuilder` can also be used to construct objects that are
|
||||||
not widgets, such as tree models, adjustments, etc. That is the reason
|
not widgets, such as tree models, adjustments, etc. That is the reason
|
||||||
the method we use here is called [method@Gtk.Builder.get_object] and returns
|
the method we use here is called [`method@Gtk.Builder.get_object`] and
|
||||||
a `GObject` instead of a `GtkWidget`.
|
returns a `GObject` instead of a `GtkWidget`.
|
||||||
|
|
||||||
Normally, you would pass a full path to [method@Gtk.Builder.add_from_file] to
|
Normally, you would pass a full path to [`method@Gtk.Builder.add_from_file`] to
|
||||||
make the execution of your program independent of the current directory.
|
make the execution of your program independent of the current directory.
|
||||||
A common location to install UI descriptions and similar data is
|
A common location to install UI descriptions and similar data is
|
||||||
`/usr/share/appname`.
|
`/usr/share/appname`.
|
||||||
|
|
||||||
It is also possible to embed the UI description in the source code as a
|
It is also possible to embed the UI description in the source code as a
|
||||||
string and use [method@Gtk.Builder.add_from_string] to load it. But keeping the
|
string and use [`method@Gtk.Builder.add_from_string`] to load it. But keeping the
|
||||||
UI description in a separate file has several advantages: It is then possible
|
UI description in a separate file has several advantages: It is then possible
|
||||||
to make minor adjustments to the UI without recompiling your program, and,
|
to make minor adjustments to the UI without recompiling your program, and,
|
||||||
more importantly, graphical UI editors such as [Glade](http://glade.gnome.org)
|
more importantly, graphical UI editors such as [Glade](http://glade.gnome.org)
|
||||||
@@ -739,7 +752,7 @@ templates, resources, application menus, settings, [class@Gtk.HeaderBar], [class
|
|||||||
|
|
||||||
The full, buildable sources for these examples can be found in the
|
The full, buildable sources for these examples can be found in the
|
||||||
`examples` directory of the GTK source distribution, or
|
`examples` directory of the GTK source distribution, or
|
||||||
[online](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples) in the GTK
|
[online](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples) in the GTK
|
||||||
source code repository. You can build each example separately by using make
|
source code repository. You can build each example separately by using make
|
||||||
with the `Makefile.example` file. For more information, see the `README`
|
with the `Makefile.example` file. For more information, see the `README`
|
||||||
included in the examples directory.
|
included in the examples directory.
|
||||||
@@ -762,17 +775,17 @@ main (int argc, char *argv[])
|
|||||||
```
|
```
|
||||||
|
|
||||||
All the application logic is in the application class, which is a subclass of
|
All the application logic is in the application class, which is a subclass of
|
||||||
GtkApplication. Our example does not yet have any interesting functionality.
|
`GtkApplication`. Our example does not yet have any interesting functionality.
|
||||||
All it does is open a window when it is activated without arguments, and open
|
All it does is open a window when it is activated without arguments, and open
|
||||||
the files it is given, if it is started with arguments.
|
the files it is given, if it is started with arguments.
|
||||||
|
|
||||||
To handle these two cases, we override the activate() vfunc, which gets
|
To handle these two cases, we override the `activate()` vfunc, which gets
|
||||||
called when the application is launched without commandline arguments, and
|
called when the application is launched without commandline arguments, and
|
||||||
the `open()` virtual function, which gets called when the application is
|
the `open()` virtual function, which gets called when the application is
|
||||||
launched with commandline arguments.
|
launched with commandline arguments.
|
||||||
|
|
||||||
To learn more about `GApplication` entry points, consult the GIO
|
To learn more about `GApplication` entry points, consult the GIO
|
||||||
[documentation](https://developer.gnome.org/gio/stable/GApplication.html#GApplication.description).
|
[documentation](https://docs.gtk.org/gio/class.Application.html).
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
@@ -841,8 +854,8 @@ example_app_new (void)
|
|||||||
```
|
```
|
||||||
|
|
||||||
Another important class that is part of the application support in GTK is
|
Another important class that is part of the application support in GTK is
|
||||||
`GtkApplicationWindow`. It is typically subclassed as well. Our subclass does
|
[class@Gtk.ApplicationWindow]. It is typically subclassed as well. Our
|
||||||
not do anything yet, so we will just get an empty window.
|
subclass does not do anything yet, so we will just get an empty window.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
@@ -907,10 +920,10 @@ and it accepts files as commandline arguments.
|
|||||||
|
|
||||||
### Populating the window
|
### Populating the window
|
||||||
|
|
||||||
In this step, we use a GtkBuilder template to associate a
|
In this step, we use a `GtkBuilder` template to associate a
|
||||||
GtkBuilder ui file with our application window class.
|
`GtkBuilder` ui file with our application window class.
|
||||||
|
|
||||||
Our simple ui file gives the window a title, and puts a GtkStack
|
Our simple ui file gives the window a title, and puts a `GtkStack`
|
||||||
widget as the main content.
|
widget as the main content.
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
@@ -934,9 +947,9 @@ widget as the main content.
|
|||||||
|
|
||||||
To make use of this file in our application, we revisit our
|
To make use of this file in our application, we revisit our
|
||||||
`GtkApplicationWindow` subclass, and call
|
`GtkApplicationWindow` subclass, and call
|
||||||
`gtk_widget_class_set_template_from_resource()` from the class init
|
[`method@Gtk.WidgetClass.set_template_from_resource`] from the class init
|
||||||
function to set the ui file as template for this class. We also
|
function to set the ui file as template for this class. We also
|
||||||
add a call to `gtk_widget_init_template()` in the instance init
|
add a call to [`method@Gtk.Widget.init_template`] in the instance init
|
||||||
function to instantiate the template for each instance of our
|
function to instantiate the template for each instance of our
|
||||||
class.
|
class.
|
||||||
|
|
||||||
@@ -959,11 +972,11 @@ example_app_window_class_init (ExampleAppWindowClass *class)
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application2/exampleappwin.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application2/exampleappwin.c))
|
||||||
|
|
||||||
You may have noticed that we used the `_from_resource()` variant of the function
|
You may have noticed that we used the `_from_resource()` variant of the function
|
||||||
that sets a template. Now we need to use
|
that sets a template. Now we need to use
|
||||||
[GLib's resource functionality](https://developer.gnome.org/gio/stable/GResource.html)
|
[GLib's resource functionality](https://docs.gtk.org/gio/struct.Resource.html)
|
||||||
to include the ui file in the binary. This is commonly done by listing all resources
|
to include the ui file in the binary. This is commonly done by listing all resources
|
||||||
in a `.gresource.xml` file, such as this:
|
in a `.gresource.xml` file, such as this:
|
||||||
|
|
||||||
@@ -985,7 +998,7 @@ glib-compile-resources exampleapp.gresource.xml --target=resources.c --generate-
|
|||||||
```
|
```
|
||||||
|
|
||||||
The gnome module of the [Meson build system](https://mesonbuild.com)
|
The gnome module of the [Meson build system](https://mesonbuild.com)
|
||||||
provides the [gnome.compile_resources()](https://mesonbuild.com/Gnome-module.html#gnomecompile_resources)
|
provides the [`gnome.compile_resources()`](https://mesonbuild.com/Gnome-module.html#gnomecompile_resources)
|
||||||
method for this task.
|
method for this task.
|
||||||
|
|
||||||
Our application now looks like this:
|
Our application now looks like this:
|
||||||
@@ -1001,7 +1014,7 @@ To this end, we add a member to the struct of our application window subclass
|
|||||||
and keep a reference to the `GtkStack` there. The first member of the struct
|
and keep a reference to the `GtkStack` there. The first member of the struct
|
||||||
should be the parent type from which the class is derived. Here,
|
should be the parent type from which the class is derived. Here,
|
||||||
`ExampleAppWindow` is derived from `GtkApplicationWindow`. The
|
`ExampleAppWindow` is derived from `GtkApplicationWindow`. The
|
||||||
`gtk_widget_class_bind_template_child()` function arranges things so that after
|
[`func@Gtk.widget_class_bind_template_child`] function arranges things so that after
|
||||||
instantiating the template, the `stack` member of the struct will point to the
|
instantiating the template, the `stack` member of the struct will point to the
|
||||||
widget of the same name from the template.
|
widget of the same name from the template.
|
||||||
|
|
||||||
@@ -1030,7 +1043,7 @@ example_app_window_class_init (ExampleAppWindowClass *class)
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application3/exampleappwin.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application3/exampleappwin.c))
|
||||||
|
|
||||||
Now we revisit the `example_app_window_open()` function that is called for each
|
Now we revisit the `example_app_window_open()` function that is called for each
|
||||||
commandline argument, and construct a GtkTextView that we then add as a page
|
commandline argument, and construct a GtkTextView that we then add as a page
|
||||||
@@ -1074,14 +1087,14 @@ example_app_window_open (ExampleAppWindow *win,
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application3/exampleappwin.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application3/exampleappwin.c))
|
||||||
|
|
||||||
Lastly, we add a [class@Gtk.StackSwitcher] to the titlebar area in the UI file, and we
|
Lastly, we add a [class@Gtk.StackSwitcher] to the titlebar area in the UI file, and we
|
||||||
tell it to display information about our stack.
|
tell it to display information about our stack.
|
||||||
|
|
||||||
The stack switcher gets all its information it needs to display tabs from
|
The stack switcher gets all its information it needs to display tabs from
|
||||||
the stack that it belongs to. Here, we are passing the label to show for
|
the stack that it belongs to. Here, we are passing the label to show for
|
||||||
each file as the last argument to the [method@Gtk.Stack.add_titled]
|
each file as the last argument to the [`method@Gtk.Stack.add_titled`]
|
||||||
function.
|
function.
|
||||||
|
|
||||||
Our application is beginning to take shape:
|
Our application is beginning to take shape:
|
||||||
@@ -1121,7 +1134,7 @@ resulting menu model with the menu button that we've added to the headerbar.
|
|||||||
Since menus work by activating GActions, we also have to add a suitable set
|
Since menus work by activating GActions, we also have to add a suitable set
|
||||||
of actions to our application.
|
of actions to our application.
|
||||||
|
|
||||||
Adding the actions is best done in the startup() vfunc, which is guaranteed
|
Adding the actions is best done in the `startup()` vfunc, which is guaranteed
|
||||||
to be called once for each primary application instance:
|
to be called once for each primary application instance:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
@@ -1175,11 +1188,11 @@ example_app_class_init (ExampleAppClass *class)
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application4/exampleapp.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application4/exampleapp.c))
|
||||||
|
|
||||||
Our preferences menu item does not do anything yet, but the Quit menu item
|
Our preferences menu item does not do anything yet, but the Quit menu item
|
||||||
is fully functional. Note that it can also be activated by the usual Ctrl-Q
|
is fully functional. Note that it can also be activated by the usual Ctrl-Q
|
||||||
shortcut. The shortcut was added with `gtk_application_set_accels_for_action()`.
|
shortcut. The shortcut was added with [`method@Gtk.Application.set_accels_for_action`].
|
||||||
|
|
||||||
The application menu looks like this:
|
The application menu looks like this:
|
||||||
|
|
||||||
@@ -1191,7 +1204,7 @@ A typical application will have a some preferences that should be remembered
|
|||||||
from one run to the next. Even for our simple example application, we may
|
from one run to the next. Even for our simple example application, we may
|
||||||
want to change the font that is used for the content.
|
want to change the font that is used for the content.
|
||||||
|
|
||||||
We are going to use `GSettings` to store our preferences. `GSettings` requires
|
We are going to use [class@Gio.Settings] to store our preferences. `GSettings` requires
|
||||||
a schema that describes our settings:
|
a schema that describes our settings:
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
@@ -1218,10 +1231,9 @@ a schema that describes our settings:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Before we can make use of this schema in our application, we need to compile
|
Before we can make use of this schema in our application, we need to compile
|
||||||
it into the binary form that GSettings expects. GIO provides
|
it into the binary form that GSettings expects. GIO provides macros to do
|
||||||
[macros](https://developer.gnome.org/gio/2.36/ch31s06.html) to do this in
|
this in Autotools-based projects, and the gnome module of the Meson build
|
||||||
autotools-based projects, and the gnome module of the Meson build system
|
system provides the [`gnome.compile_schemas()`](https://mesonbuild.com/Gnome-module.html#gnomecompile_schemas)
|
||||||
provides the [gnome.compile_schemas()](https://mesonbuild.com/Gnome-module.html#gnomecompile_schemas)
|
|
||||||
method for this task.
|
method for this task.
|
||||||
|
|
||||||
Next, we need to connect our settings to the widgets that they are supposed
|
Next, we need to connect our settings to the widgets that they are supposed
|
||||||
@@ -1246,7 +1258,7 @@ example_app_window_init (ExampleAppWindow *win)
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application5/exampleappwin.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application5/exampleappwin.c))
|
||||||
|
|
||||||
The code to connect the font setting is a little more involved, since there
|
The code to connect the font setting is a little more involved, since there
|
||||||
is no simple object property that it corresponds to, so we are not going to
|
is no simple object property that it corresponds to, so we are not going to
|
||||||
@@ -1417,7 +1429,7 @@ preferences_activated (GSimpleAction *action,
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application6/exampleapp.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application6/exampleapp.c))
|
||||||
|
|
||||||
After all this work, our application can now show a preference dialog
|
After all this work, our application can now show a preference dialog
|
||||||
like this:
|
like this:
|
||||||
@@ -1537,7 +1549,7 @@ example_app_window_init (ExampleAppWindow *win)
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application7/exampleappwin.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application7/exampleappwin.c))
|
||||||
|
|
||||||
With the search bar, our application now looks like this:
|
With the search bar, our application now looks like this:
|
||||||
|
|
||||||
@@ -1670,7 +1682,7 @@ example_app_window_init (ExampleAppWindow *win)
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application8/exampleappwin.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application8/exampleappwin.c))
|
||||||
|
|
||||||
What our application looks like now:
|
What our application looks like now:
|
||||||
|
|
||||||
@@ -1681,7 +1693,8 @@ What our application looks like now:
|
|||||||
Widgets and other objects have many useful properties.
|
Widgets and other objects have many useful properties.
|
||||||
|
|
||||||
Here we show some ways to use them in new and flexible ways, by wrapping
|
Here we show some ways to use them in new and flexible ways, by wrapping
|
||||||
them in actions with `GPropertyAction` or by binding them with `GBinding`.
|
them in actions with [class@Gio.PropertyAction] or by binding them with
|
||||||
|
[class@GObject.Binding].
|
||||||
|
|
||||||
To set this up, we add two labels to the header bar in our window template,
|
To set this up, we add two labels to the header bar in our window template,
|
||||||
named `lines_label` and `lines`, and bind them to struct members in the
|
named `lines_label` and `lines`, and bind them to struct members in the
|
||||||
@@ -1747,10 +1760,10 @@ example_app_window_init (ExampleAppWindow *win)
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application9/exampleappwin.c))
|
([full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application9/exampleappwin.c))
|
||||||
|
|
||||||
We also need a function that counts the lines of the currently active tab,
|
We also need a function that counts the lines of the currently active tab,
|
||||||
and updates the `lines` label. See the [full source](https://gitlab.gnome.org/GNOME/gtk/blob/master/examples/application9/exampleappwin.c)
|
and updates the `lines` label. See the [full source](https://gitlab.gnome.org/GNOME/gtk/blob/main/examples/application9/exampleappwin.c)
|
||||||
if you are interested in the details.
|
if you are interested in the details.
|
||||||
|
|
||||||
This brings our example application to this appearance:
|
This brings our example application to this appearance:
|
||||||
|
57
docs/reference/gtk/gtk4-broadwayd.rst
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
.. _gtk4-broadwayd(1):
|
||||||
|
|
||||||
|
==============
|
||||||
|
gtk4-broadwayd
|
||||||
|
==============
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
The Broadway display server
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
| **gtk4-broadwayd** [OPTIONS...] <DISPLAY>
|
||||||
|
| **gtk4-broadwayd** --port=PORT --address=ADDRESS <DISPLAY>
|
||||||
|
| **gtk4-broadwayd** --unixaddress=ADDRESS <DISPLAY>
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-broadwayd`` is a display server for the Broadway GDK backend. It allows
|
||||||
|
multiple GTK applications to display their windows in the same web browser, by
|
||||||
|
connecting to gtk4-broadwayd.
|
||||||
|
|
||||||
|
When using gtk4-broadwayd, specify the display number to use, prefixed with a
|
||||||
|
colon, similar to X. The default display number is 0.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
gtk4-broadwayd :5
|
||||||
|
|
||||||
|
|
||||||
|
Then point your web browser at ``http://127.0.0.1:8085``.
|
||||||
|
|
||||||
|
Start your applications like this:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
GDK_BACKEND=broadway BROADWAY_DISPLAY=:5 gtk4-demo
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
``--port PORT``
|
||||||
|
|
||||||
|
Use the given ``PORT`` for the HTTP connection, instead of the default ``8080 + (DISPLAY - 1)``.
|
||||||
|
|
||||||
|
``--address ADDRESS``
|
||||||
|
|
||||||
|
Use the given ``address`` for the HTTP connection, instead of the default ``http://127.0.0.1``.
|
||||||
|
|
||||||
|
``--unixsocket ADDRESS``
|
||||||
|
|
||||||
|
Use the given ``address`` as the unix domain socket address. This option
|
||||||
|
overrides ``--address`` and ``--port``, and it is available only on Unix-like
|
||||||
|
systems.
|
@@ -1,84 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-broadwayd">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-broadwayd</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Alexander</firstname>
|
|
||||||
<surname>Larsson</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-broadwayd</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-broadwayd</refname>
|
|
||||||
<refpurpose>Broadway display server</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-broadwayd</command>
|
|
||||||
<arg choice="opt">--port <replaceable>PORT</replaceable></arg>
|
|
||||||
<arg choice="opt">--address <replaceable>ADDRESS</replaceable></arg>
|
|
||||||
<arg choice="opt">--unixsocket <replaceable>ADDRESS</replaceable></arg>
|
|
||||||
<arg choice="opt"><replaceable>:DISPLAY</replaceable></arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-broadwayd</command> is a display server for the Broadway
|
|
||||||
GDK backend. It allows multiple GTK applications to display their
|
|
||||||
windows in the same web browser, by connecting to gtk4-broadwayd.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
When using gtk4-broadwayd, specify the display number to use, prefixed
|
|
||||||
with a colon, similar to X. The default display number is 0.
|
|
||||||
<programlisting>
|
|
||||||
gtk4-broadwayd :5
|
|
||||||
</programlisting>
|
|
||||||
Then point your web browser at <literal>http://127.0.0.1:8085</literal>.
|
|
||||||
Start your applications like this:
|
|
||||||
<programlisting>
|
|
||||||
GDK_BACKEND=broadway BROADWAY_DISPLAY=:5 gtk4-demo
|
|
||||||
</programlisting>
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Options</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>--port</term>
|
|
||||||
<listitem><para>Use <replaceable>PORT</replaceable> as the HTTP
|
|
||||||
port, instead of the default 8080 + (<replaceable>DISPLAY</replaceable> - 1).
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>--address</term>
|
|
||||||
<listitem><para>Use <replaceable>ADDRESS</replaceable> as the HTTP
|
|
||||||
address, instead of the default <literal>http://127.0.0.1:<replaceable>PORT</replaceable></literal>.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>--unixsocket</term>
|
|
||||||
<listitem><para>Use <replaceable>ADDRESS</replaceable> as the unix domain socket
|
|
||||||
address. This option overrides <literal>--address</literal> and <literal>--port</literal>.
|
|
||||||
It is available only on Unix-like systems.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
113
docs/reference/gtk/gtk4-builder-tool.rst
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
.. _gtk4-builder-tool(1):
|
||||||
|
|
||||||
|
=================
|
||||||
|
gtk4-builder-tool
|
||||||
|
=================
|
||||||
|
|
||||||
|
-----------------------
|
||||||
|
GtkBuilder File Utility
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
| **gtk4-builder-tool** <COMMAND> [OPTIONS...] <FILE>
|
||||||
|
|
|
||||||
|
| **gtk4-builder-tool** validate <FILE>
|
||||||
|
| **gtk4-builder-tool** enumerate <FILE>
|
||||||
|
| **gtk4-builder-tool** simplify [OPTIONS...] <FILE>
|
||||||
|
| **gtk4-builder-tool** preview [OPTIONS...] <FILE>
|
||||||
|
| **gtk4-builder-tool** screenshot [OPTIONS...] <FILE>
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-builder-tool`` can perform various operations on GtkBuilder UI definition
|
||||||
|
files.
|
||||||
|
|
||||||
|
COMMANDS
|
||||||
|
--------
|
||||||
|
|
||||||
|
Validation
|
||||||
|
^^^^^^^^^^
|
||||||
|
|
||||||
|
The ``validate`` command validates the given UI definition file and reports
|
||||||
|
errors to ``stderr``.
|
||||||
|
|
||||||
|
Enumeration
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
The ``enumerate`` command lists all the named objects that are present in the UI
|
||||||
|
definition file.
|
||||||
|
|
||||||
|
Preview
|
||||||
|
^^^^^^^
|
||||||
|
|
||||||
|
The ``preview`` command displays the UI definition file.
|
||||||
|
|
||||||
|
This command accepts options to specify the ID of the toplevel object and a CSS
|
||||||
|
file to use.
|
||||||
|
|
||||||
|
``--id=ID``
|
||||||
|
|
||||||
|
The ID of the object to preview. If not specified, gtk4-builder-tool will
|
||||||
|
choose a suitable object on its own.
|
||||||
|
|
||||||
|
``--css=FILE``
|
||||||
|
|
||||||
|
Load style information from the given CSS file.
|
||||||
|
|
||||||
|
Screenshot
|
||||||
|
^^^^^^^^^^
|
||||||
|
|
||||||
|
The ``screenshot`` command saves a rendering of the UI definition file
|
||||||
|
as a png image or node file. The name of the file to write can be specified as
|
||||||
|
a second FILE argument.
|
||||||
|
|
||||||
|
This command accepts options to specify the ID of the toplevel object and a CSS
|
||||||
|
file to use.
|
||||||
|
|
||||||
|
``--id=ID``
|
||||||
|
|
||||||
|
The ID of the object to preview. If not specified, gtk4-builder-tool will
|
||||||
|
choose a suitable object on its own.
|
||||||
|
|
||||||
|
``--css=FILE``
|
||||||
|
|
||||||
|
Load style information from the given CSS file.
|
||||||
|
|
||||||
|
``--node``
|
||||||
|
|
||||||
|
Write a serialized node file instead of a png image.
|
||||||
|
|
||||||
|
``--force``
|
||||||
|
|
||||||
|
Overwrite an existing file.
|
||||||
|
|
||||||
|
Simplification
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The ``simplify`` command simplifies the UI definition file by removing
|
||||||
|
properties that are set to their default values and writes the resulting XML to
|
||||||
|
the standard output, or back to the input file.
|
||||||
|
|
||||||
|
When the ``--3to4`` option is specified, the ``simplify`` command interprets the
|
||||||
|
input as a GTK 3 UI definuition file and attempts to convert it to GTK 4
|
||||||
|
equivalents. It performs various conversions, such as renaming properties,
|
||||||
|
translating child properties to layout properties, rewriting the setup for
|
||||||
|
GtkNotebook, GtkStack, GtkAssistant or changing toolbars into boxes.
|
||||||
|
|
||||||
|
You should always test the modified UI definition files produced by
|
||||||
|
gtk4-builder-tool before using them in production.
|
||||||
|
|
||||||
|
Note in particular that the conversion done with ``--3to4`` is meant as a
|
||||||
|
starting point for a port from GTK 3 to GTK 4. It is expected that you will have
|
||||||
|
to do manual fixups after the initial conversion.
|
||||||
|
|
||||||
|
``--replace``
|
||||||
|
|
||||||
|
Write the content back to the UI definition file instead of using the standard
|
||||||
|
output.
|
||||||
|
|
||||||
|
``--3to4``
|
||||||
|
|
||||||
|
Transform a GTK 3 UI definition file to the equivalent GTK 4 definitions.
|
@@ -1,110 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-builder-tool">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-builder-tool</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Matthias</firstname>
|
|
||||||
<surname>Clasen</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-builder-tool</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-builder-tool</refname>
|
|
||||||
<refpurpose>GtkBuilder file utility</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-builder-tool</command>
|
|
||||||
<arg choice="opt"><replaceable>COMMAND</replaceable></arg>
|
|
||||||
<arg choice="opt" rep="repeat"><replaceable>OPTION</replaceable></arg>
|
|
||||||
<arg choice="plain"><replaceable>FILE</replaceable></arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-builder-tool</command> can perform various operations
|
|
||||||
on GtkBuilder .ui files.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The <option>validate</option> command validates the .ui file and reports
|
|
||||||
errors to stderr.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The <option>enumerate</option> command lists all the named objects that
|
|
||||||
are created in the .ui file.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The <option>preview</option> command displays the .ui file. This command
|
|
||||||
accepts options to specify the ID of the toplevel object and a .css file
|
|
||||||
to use.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The <option>simplify</option> command simplifies the .ui file by removing
|
|
||||||
properties that are set to their default values and writes the resulting XML
|
|
||||||
to stdout, or back to the input file.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
When the <option>--3to4</option> is specified, <option>simplify</option>
|
|
||||||
interprets the input as a GTK 3 ui file and attempts to convert it to GTK 4
|
|
||||||
equivalents. It performs various conversions, such as renaming properties,
|
|
||||||
translating child properties to layout properties, rewriting the setup for
|
|
||||||
GtkNotebook, GtkStack, GtkAssistant or changing toolbars into boxes.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
You should always test the modified .ui files produced by gtk4-builder-tool
|
|
||||||
before using them in production.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
Note in particular that the conversion
|
|
||||||
done with <option>--3to4</option> is meant as a starting point for a port
|
|
||||||
from GTK 3 to GTK 4. It is expected that you will have to do manual fixups
|
|
||||||
after the initial conversion.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Simplify Options</title>
|
|
||||||
<para>The <option>simplify</option> command accepts the following options:</para>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--replace</option></term>
|
|
||||||
<listitem><para>Write the content back to the .ui file instead of stdout.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--3to4</option></term>
|
|
||||||
<listitem><para>Transform a GTK 3 ui file to GTK 4</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Preview Options</title>
|
|
||||||
<para>The <option>preview</option> command accepts the following options:</para>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--id=<arg choice="plain">ID</arg></option></term>
|
|
||||||
<listitem><para>The ID of the object to preview. If not specified,
|
|
||||||
gtk4-builder-tool will choose a suitable object on its own.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--css=<arg choice="plain">FILE</arg></option></term>
|
|
||||||
<listitem><para>Load style information from the given .css file.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
22
docs/reference/gtk/gtk4-demo-application.rst
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
.. _gtk4-demo-application(1):
|
||||||
|
|
||||||
|
=====================
|
||||||
|
gtk4-demo-application
|
||||||
|
=====================
|
||||||
|
|
||||||
|
--------------------------
|
||||||
|
Demonstrate GtkApplication
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
| **gtk4-demo-application**
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-demo-application`` is an example application used by ``gtk4-demo``.
|
||||||
|
|
||||||
|
There is no need to call it manually.
|
@@ -1,44 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-demo-application">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-demo-application</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Matthias</firstname>
|
|
||||||
<surname>Clasen</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-demo-application</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-demo-application</refname>
|
|
||||||
<refpurpose>Demonstrate GtkApplication</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-demo-application</command>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-demo-application</command> is an example application
|
|
||||||
used by <command>gtk4-demo</command>. There is no need to call it
|
|
||||||
manually.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
48
docs/reference/gtk/gtk4-demo.rst
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
.. _gtk4-demo(1):
|
||||||
|
|
||||||
|
=========
|
||||||
|
gtk4-demo
|
||||||
|
=========
|
||||||
|
|
||||||
|
-----------------------
|
||||||
|
Demonstrate GTK widgets
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
| **gtk4-demo** [OPTIONS...]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-demo`` is a collection of examples.
|
||||||
|
|
||||||
|
Its purpose is to demonstrate many GTK widgets in a form that is useful to
|
||||||
|
application developers.
|
||||||
|
|
||||||
|
The application shows the source code for each example, as well as other used
|
||||||
|
resources, such as UI description files and image assets.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
``-h, --help``
|
||||||
|
|
||||||
|
Show help options.
|
||||||
|
|
||||||
|
``--version``
|
||||||
|
|
||||||
|
Show program version.
|
||||||
|
|
||||||
|
``--list``
|
||||||
|
|
||||||
|
List available examples.
|
||||||
|
|
||||||
|
``--run EXAMPLE``
|
||||||
|
|
||||||
|
Run the named example. Use ``--list`` to see the available examples.
|
||||||
|
|
||||||
|
``--autoquit``
|
||||||
|
|
||||||
|
Quit after a short timeout. This is intended for use with ``--run``, e.g. when profiling.
|
@@ -1,81 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-demo">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-demo</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Matthias</firstname>
|
|
||||||
<surname>Clasen</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-demo</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-demo</refname>
|
|
||||||
<refpurpose>Demonstrate GTK widgets</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-demo</command>
|
|
||||||
<arg choice="opt">--help</arg>
|
|
||||||
<arg choice="opt">--version</arg>
|
|
||||||
<arg choice="opt">--list</arg>
|
|
||||||
<arg choice="opt">--run <replaceable>EXAMPLE</replaceable></arg>
|
|
||||||
<arg choice="opt">--autoquit</arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-demo</command> is a collection of examples.
|
|
||||||
Its purpose is to demonstrate many GTK widgets in a form
|
|
||||||
that is useful to application developers.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The application shows the source code for each example, as well as
|
|
||||||
other used resources, such as ui files and icons.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Options</title>
|
|
||||||
<para>The following options are understood:</para>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>-h</option>, <option>--help</option></term>
|
|
||||||
<listitem><para>Show help options</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--version</option></term>
|
|
||||||
<listitem><para>Show program version</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--list</option></term>
|
|
||||||
<listitem><para>List available examples.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>-run <replaceable>EXAMPLE</replaceable></option></term>
|
|
||||||
<listitem><para>Run the named example. Use <option>--list</option> to
|
|
||||||
see the available examples.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--autoquit</option></term>
|
|
||||||
<listitem><para>Quit after a short timeout. This is intended for use
|
|
||||||
with <option>--run</option>, e.g. when profiling.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
40
docs/reference/gtk/gtk4-encode-symbolic-svg.rst
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
.. _gtk4-encode-symbolic-svg(1):
|
||||||
|
|
||||||
|
========================
|
||||||
|
gtk4-encode-symbolic-svg
|
||||||
|
========================
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
Symbolic icon conversion utility
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
| **gtk4-encode-symbolic-svg** [OPTIONS...] <PATH> <WIDTH>x<HEIGHT>
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-encode-symbolic-svg`` converts symbolic SVG icons into specially prepared
|
||||||
|
PNG files. GTK can load and recolor these PNGs, just like original SVGs, but
|
||||||
|
loading them is much faster.
|
||||||
|
|
||||||
|
``PATH`` is the name of a symbolic SVG file, ``WIDTH`` x ``HEIGHT`` are the
|
||||||
|
desired dimensions for the generated PNG file.
|
||||||
|
|
||||||
|
To distinguish them from ordinary PNGs, the generated files have the extension
|
||||||
|
``.symbolic.png``.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
``-o, --output DIRECTORY``
|
||||||
|
|
||||||
|
Write png files to ``DIRECTORY`` instead of the current working directory.
|
||||||
|
|
||||||
|
``--debug``
|
||||||
|
|
||||||
|
Generate PNG files of the various channels during the conversion. If these
|
||||||
|
files are not monochrome green, they are often helpful in pinpointing the
|
||||||
|
problematic parts of the source SVG.
|
@@ -1,74 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-encode-symbolic-svg">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-encode-symbolic-svg</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Alexander</firstname>
|
|
||||||
<surname>Larsson</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-encode-symbolic-svg</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-encode-symbolic-svg</refname>
|
|
||||||
<refpurpose>Symbolic icon conversion utility</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-encode-symbolic-svg</command>
|
|
||||||
<arg choice="opt">OPTION...</arg>
|
|
||||||
<arg choice="plain"><replaceable>PATH</replaceable></arg>
|
|
||||||
<arg choice="plain"><replaceable>WIDTH</replaceable>x<replaceable>HEIGHT</replaceable></arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-encode-symbolic-svg</command> converts symbolic svg icons into
|
|
||||||
specially prepared png files. GTK can load and recolor these pngs, just like
|
|
||||||
original svgs, but loading them is much faster.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
<replaceable>PATH</replaceable> is the name of a symbolic svg file,
|
|
||||||
<replaceable>WIDTH</replaceable>x<replaceable>HEIGHT</replaceable> are the
|
|
||||||
desired dimensions for the generated png file.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
To distinguish them from ordinary pngs, the generated files have the extension
|
|
||||||
<filename>.symbolic.png</filename>.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Options</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>-o <replaceable>DIRECTORY</replaceable></term>
|
|
||||||
<term>--output <replaceable>DIRECTORY</replaceable></term>
|
|
||||||
<listitem><para>Write png files to <replaceable>DIRECTORY</replaceable>
|
|
||||||
instead of the current working directory.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>--debug</term>
|
|
||||||
<listitem><para>Generate png files of the various channels during
|
|
||||||
the conversion. If these files are not monochrome green, they
|
|
||||||
are often helpful in pinpointing the problematic parts of
|
|
||||||
the source svg.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
28
docs/reference/gtk/gtk4-icon-browser.rst
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
.. _gtk4-icon-browser(1):
|
||||||
|
|
||||||
|
=================
|
||||||
|
gtk4-icon-browser
|
||||||
|
=================
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
List themed icons
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
| **gtk4-icon-browser** [OPTIONS...]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-icon-browser`` is a utility to explore the icons in the current icon
|
||||||
|
theme. It shows icons in various sizes, their symbolic variants where available,
|
||||||
|
as well as a description of the icon and its context.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
``-h, --help``
|
||||||
|
|
||||||
|
Show the application help.
|
@@ -1,55 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-icon-browser">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-icon-browser</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Matthias</firstname>
|
|
||||||
<surname>Clasen</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-icon-browser</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-icon-browser</refname>
|
|
||||||
<refpurpose>List themed icons</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-icon-browser</command>
|
|
||||||
<arg choice="opt">--help</arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-icon-browser</command> is a utility to explore the icons
|
|
||||||
in the current icon theme. It shows icons in various sizes, their symbolic
|
|
||||||
variants where available, as well as a description of the icon and its context.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Options</title>
|
|
||||||
<para>The following options are understood:</para>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>-h</option>, <option>--help</option></term>
|
|
||||||
<listitem><para>Show help options</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
50
docs/reference/gtk/gtk4-launch.rst
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
.. _gtk4-launch(1):
|
||||||
|
|
||||||
|
===========
|
||||||
|
gtk4-launch
|
||||||
|
===========
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
Launch an application
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
| **gtk4-launch** [OPTIONS...] <APPLICATION> [URI...]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-launch`` launches an application using the given name. The application is
|
||||||
|
started with proper startup notification on a default display, unless specified
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
``gtk4-launch`` takes at least one argument, the name of the application to
|
||||||
|
launch. The name should match application desktop file name, as residing in the
|
||||||
|
applications subdirectories of the XDG data directories, with or without the
|
||||||
|
``.desktop`` suffix.
|
||||||
|
|
||||||
|
If called with more than one argument, the rest of them besides the application
|
||||||
|
name are considered URI locations and are passed as arguments to the launched
|
||||||
|
application.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
``-?, -h, --help``
|
||||||
|
|
||||||
|
Print the command's help and exit.
|
||||||
|
|
||||||
|
``--version``
|
||||||
|
|
||||||
|
Print the command's version and exit.
|
||||||
|
|
||||||
|
ENVIRONMENT
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Some environment variables affect the behavior of ``gtk4-launch``:
|
||||||
|
|
||||||
|
``XDG_DATA_HOME, XDG_DATA_DIRS``
|
||||||
|
|
||||||
|
The environment variables specifying the XDG data directories.
|
@@ -1,85 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-launch">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-launch</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Tomáš</firstname>
|
|
||||||
<surname>Bžatek</surname>
|
|
||||||
<email>tbzatek@redhat.com</email>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-launch</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-launch</refname>
|
|
||||||
<refpurpose>Launch an application</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-launch</command>
|
|
||||||
<arg choice="opt" rep="repeat">OPTION</arg>
|
|
||||||
<arg choice="plain">APPLICATION</arg>
|
|
||||||
<arg choice="opt" rep="repeat">URI</arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-launch</command> launches an application using the given name.
|
|
||||||
The application is started with proper startup notification on a default
|
|
||||||
display, unless specified otherwise.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-launch</command> takes at least one argument, the name of
|
|
||||||
the application to launch. The name should match application desktop file name,
|
|
||||||
as residing in the applications subdirectories of the XDG data directories, with
|
|
||||||
or without the '.desktop' suffix.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
If called with more than one argument, the rest of them besides the application
|
|
||||||
name are considered URI locations and are passed as arguments to the launched
|
|
||||||
application.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Options</title>
|
|
||||||
<para>The following options are understood:</para>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>-?</option>, <option>--help</option></term>
|
|
||||||
<listitem><para>Prints a short help text and exits.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--version</option></term>
|
|
||||||
<listitem><para>Prints the program version and exits.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Environment</title>
|
|
||||||
<para>Some environment variables affect the behavior of <command>gtk4-launch</command>.</para>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>XDG_DATA_HOME</option>, <option>XDG_DATA_DIRS</option></term>
|
|
||||||
<listitem><para>The environment variables specifying the XDG dta directories.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
27
docs/reference/gtk/gtk4-node-editor.rst
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
.. _gtk4-node-editor(1):
|
||||||
|
|
||||||
|
=================
|
||||||
|
gtk4-node-editor
|
||||||
|
=================
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
Editor render nodes
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
| **gtk4-node-editor** [OPTIONS...]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-node-editor`` is a utility to show and edit render node files.
|
||||||
|
Such render node files can be obtained e.g. from the GTK inspector.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
``-h, --help``
|
||||||
|
|
||||||
|
Show the application help.
|
21
docs/reference/gtk/gtk4-query-settings.rst
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
.. _gtk4-query-settings(1):
|
||||||
|
|
||||||
|
===================
|
||||||
|
gtk4-query-settings
|
||||||
|
===================
|
||||||
|
|
||||||
|
------------------------------------
|
||||||
|
Print name and value of GTK settings
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
| **gtk4-query-settings** [PATTERN]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-query-settings`` prints both name and value of all properties available
|
||||||
|
in the ``GtkSettings`` class. Optionally, you can filter which properties to
|
||||||
|
list by specifying a ``PATTERN``.
|
@@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-query-settings">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-query-settings</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Timm</firstname>
|
|
||||||
<surname>Bäder</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-query-settings</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-query-settings</refname>
|
|
||||||
<refpurpose>Utility to print name and value of all GtkSettings properties</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-query-settings</command>
|
|
||||||
<arg choice="opt"><replaceable>PATTERN</replaceable></arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-query-settings</command> prints both name and value of all properties
|
|
||||||
available in the GtkSettings class. Optionally, you can filter which properties
|
|
||||||
to list by specifying a PATTERN.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
65
docs/reference/gtk/gtk4-update-icon-cache.rst
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
.. _gtk4-update-icon-cache(1):
|
||||||
|
|
||||||
|
======================
|
||||||
|
gtk4-update-icon-cache
|
||||||
|
======================
|
||||||
|
|
||||||
|
--------------------------
|
||||||
|
Icon theme caching utility
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
| **gtk4-update-icon-cache** [OPTIONS...] <PATH>
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-update-icon-cache`` creates ``mmap(2)``-able cache files for icon themes.
|
||||||
|
|
||||||
|
It expects to be given the ``PATH`` to an icon theme directory containing an
|
||||||
|
``index.theme``, e.g. ``/usr/share/icons/hicolor``, and writes a
|
||||||
|
``icon-theme.cache`` containing cached information about the icons in the
|
||||||
|
directory tree below the given directory.
|
||||||
|
|
||||||
|
GTK can use the cache files created by ``gtk4-update-icon-cache`` to avoid a lot
|
||||||
|
of system call and disk seek overhead when the application starts. Since the
|
||||||
|
format of the cache files allows them to be shared across multiple processes,
|
||||||
|
for instance using the POSIX ``mmap(2)`` system call, the overall memory
|
||||||
|
consumption is reduced as well.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
``-f, --force``
|
||||||
|
|
||||||
|
Overwrite an existing cache file even if it appears to be up-to-date.
|
||||||
|
|
||||||
|
``-t, --ignore-theme-index``
|
||||||
|
|
||||||
|
Don't check for the existence of ``index.theme`` in the icon theme directory.
|
||||||
|
Without this option, ``gtk4-update-icon-cache`` refuses to create an icon
|
||||||
|
cache in a directory which does not appear to be the toplevel directory of an
|
||||||
|
icon theme.
|
||||||
|
|
||||||
|
``-i, --index-only``
|
||||||
|
|
||||||
|
Don't include image data in the cache.
|
||||||
|
|
||||||
|
``--include-image-data``
|
||||||
|
|
||||||
|
Include image data in the cache.
|
||||||
|
|
||||||
|
``-c, --source <NAME>``
|
||||||
|
|
||||||
|
Output a C header file declaring a constant ``NAME`` with the contents of the
|
||||||
|
icon cache.
|
||||||
|
|
||||||
|
``-q, --quiet``
|
||||||
|
|
||||||
|
Turn off verbose output.
|
||||||
|
|
||||||
|
``-v, --validate``
|
||||||
|
|
||||||
|
Validate existing icon cache.
|
@@ -1,123 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-update-icon-cache">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-update-icon-cache</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Matthias</firstname>
|
|
||||||
<surname>Clasen</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-update-icon-cache</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-update-icon-cache</refname>
|
|
||||||
<refpurpose>Icon theme caching utility</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-update-icon-cache</command>
|
|
||||||
<arg choice="opt">--force</arg>
|
|
||||||
<arg choice="opt">--ignore-theme-index</arg>
|
|
||||||
<group>
|
|
||||||
<arg choice="plain">--index-only</arg>
|
|
||||||
<arg choice="plain">--include-image-data</arg>
|
|
||||||
</group>
|
|
||||||
<arg choice="opt">--source <arg choice="plain"><replaceable>NAME</replaceable></arg></arg>
|
|
||||||
<arg choice="opt">--quiet</arg>
|
|
||||||
<arg choice="opt">--validate</arg>
|
|
||||||
<arg choice="plain"><replaceable>PATH</replaceable></arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-update-icon-cache</command> creates mmapable cache
|
|
||||||
files for icon themes.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
It expects to be given the <replaceable>PATH</replaceable> to an icon theme
|
|
||||||
directory containing an <filename>index.theme</filename>, e.g.
|
|
||||||
<filename>/usr/share/icons/hicolor</filename>, and writes a
|
|
||||||
<filename>icon-theme.cache</filename> containing cached information about
|
|
||||||
the icons in the directory tree below the given directory.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
GTK can use the cache files created by <command>gtk4-update-icon-cache</command>
|
|
||||||
to avoid a lot of system call and disk seek overhead when the application
|
|
||||||
starts. Since the format of the cache files allows them to be shared across
|
|
||||||
multiple processes, for instance using the POSIX <command>mmap()</command> system
|
|
||||||
call, the overall memory consumption is reduced as well.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Options</title>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>--force</term>
|
|
||||||
<term>-f</term>
|
|
||||||
<listitem><para>Overwrite an existing cache file even if it appears to be
|
|
||||||
up-to-date.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>--ignore-theme-index</term>
|
|
||||||
<term>-t</term>
|
|
||||||
<listitem><para>Don't check for the existence of <filename>index.theme</filename>
|
|
||||||
in the icon theme directory. Without this option, <command>gtk4-update-icon-cache</command>
|
|
||||||
refuses to create an icon cache in a directory which does not appear to
|
|
||||||
be the toplevel directory of an icon theme.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>--index-only</term>
|
|
||||||
<term>-i</term>
|
|
||||||
<listitem><para>Don't include image data in the cache.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>--include-image-data</term>
|
|
||||||
<listitem><para>Include image data in the cache.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>--source</term>
|
|
||||||
<term>-c</term>
|
|
||||||
<listitem><para>Output a C header file declaring a constant
|
|
||||||
<replaceable>NAME</replaceable> with the contents of the icon
|
|
||||||
cache.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>--quiet</term>
|
|
||||||
<term>-q</term>
|
|
||||||
<listitem><para>Turn off verbose output.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>--validate</term>
|
|
||||||
<term>-v</term>
|
|
||||||
<listitem><para>Validate existing icon cache.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
34
docs/reference/gtk/gtk4-widget-factory.rst
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
.. _gtk4-widget-factory(1):
|
||||||
|
|
||||||
|
===================
|
||||||
|
gtk4-widget-factory
|
||||||
|
===================
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
Showcase GTK widgets and styles
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
| **gtk4-widget-factory** [OPTIONS...]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
``gtk4-widget-factory`` is a collection of examples.
|
||||||
|
|
||||||
|
Its purpose is to demonstrate many GTK widgets in a form that is useful to GTK theme developers.
|
||||||
|
|
||||||
|
The application shows widgets in different, typical combinations and states.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
``-h, --help``
|
||||||
|
|
||||||
|
Show the application help.
|
||||||
|
|
||||||
|
``--version``
|
||||||
|
|
||||||
|
Show the application version.
|
@@ -1,63 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
||||||
]>
|
|
||||||
<refentry id="gtk4-widget-factory">
|
|
||||||
|
|
||||||
<refentryinfo>
|
|
||||||
<title>gtk4-widget-factory</title>
|
|
||||||
<productname>GTK</productname>
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<contrib>Developer</contrib>
|
|
||||||
<firstname>Matthias</firstname>
|
|
||||||
<surname>Clasen</surname>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
</refentryinfo>
|
|
||||||
|
|
||||||
<refmeta>
|
|
||||||
<refentrytitle>gtk4-widget-factory</refentrytitle>
|
|
||||||
<manvolnum>1</manvolnum>
|
|
||||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
|
||||||
</refmeta>
|
|
||||||
|
|
||||||
<refnamediv>
|
|
||||||
<refname>gtk4-widget-factory</refname>
|
|
||||||
<refpurpose>Demonstrate GTK widgets</refpurpose>
|
|
||||||
</refnamediv>
|
|
||||||
|
|
||||||
<refsynopsisdiv>
|
|
||||||
<cmdsynopsis>
|
|
||||||
<command>gtk4-widget-factory</command>
|
|
||||||
<arg choice="opt">--help</arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
|
||||||
|
|
||||||
<refsect1><title>Description</title>
|
|
||||||
<para>
|
|
||||||
<command>gtk4-widget-factory</command> is a collection of examples.
|
|
||||||
Its purpose is to demonstrate many GTK widgets in a form
|
|
||||||
that is useful to GTK theme developers.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The application shows widgets in different, typical combinations
|
|
||||||
and states.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1><title>Options</title>
|
|
||||||
<para>The following options are understood:</para>
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>-h</option>, <option>--help</option></term>
|
|
||||||
<listitem><para>Show help options</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--version</option></term>
|
|
||||||
<listitem><para>Show program version</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
</refentry>
|
|
@@ -3,28 +3,15 @@ version = "@version@"
|
|||||||
browse_url = "https://gitlab.gnome.org/GNOME/gtk/"
|
browse_url = "https://gitlab.gnome.org/GNOME/gtk/"
|
||||||
repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
|
repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
|
||||||
website_url = "https://www.gtk.org"
|
website_url = "https://www.gtk.org"
|
||||||
|
docs_url = "https://docs.gtk.org/gtk4/"
|
||||||
authors = "GTK Development Team"
|
authors = "GTK Development Team"
|
||||||
logo_url = "gtk-logo.svg"
|
logo_url = "gtk-logo.svg"
|
||||||
license = "LGPL-2.1-or-later"
|
license = "LGPL-2.1-or-later"
|
||||||
description = "The GTK toolkit"
|
description = "The GTK toolkit"
|
||||||
dependencies = [ "GObject-2.0", "Graphene-1.0", "Pango-1.0", "Gdk-4.0", "Gsk-4.0" ]
|
|
||||||
devhelp = true
|
devhelp = true
|
||||||
search_index = true
|
search_index = true
|
||||||
|
|
||||||
[dependencies."GObject-2.0"]
|
dependencies = ["Gdk-4.0", "Gsk-4.0"]
|
||||||
name = "GObject"
|
|
||||||
description = "The base type system library"
|
|
||||||
docs_url = "https://docs.gtk.org/gobject/"
|
|
||||||
|
|
||||||
[dependencies."Graphene-1.0"]
|
|
||||||
name = "Graphene"
|
|
||||||
description = "A thin layer of mathematical types for 3D libraries"
|
|
||||||
docs_url = "https://ebassi.github.io/graphene/docs"
|
|
||||||
|
|
||||||
[dependencies."Pango-1.0"]
|
|
||||||
name = "Pango"
|
|
||||||
description = "Text shaping and rendering"
|
|
||||||
docs_url = "https://docs.gtk.org/Pango/"
|
|
||||||
|
|
||||||
[dependencies."Gdk-4.0"]
|
[dependencies."Gdk-4.0"]
|
||||||
name = "GDK"
|
name = "GDK"
|
||||||
@@ -36,13 +23,35 @@ search_index = true
|
|||||||
description = "The GTK rendering abstraction"
|
description = "The GTK rendering abstraction"
|
||||||
docs_url = "https://docs.gtk.org/gsk4/"
|
docs_url = "https://docs.gtk.org/gsk4/"
|
||||||
|
|
||||||
|
related = ["Pango-1.0", "Graphene-1.0", "GObject-2.0", "Gio-2.0"]
|
||||||
|
|
||||||
|
[related."GObject-2.0"]
|
||||||
|
name = "GObject"
|
||||||
|
description = "The base type system library"
|
||||||
|
docs_url = "https://docs.gtk.org/gobject/"
|
||||||
|
|
||||||
|
[related."Gio-2.0"]
|
||||||
|
name = "GIO"
|
||||||
|
description = "GObject Interfaces and Objects, Networking, IPC, and I/O"
|
||||||
|
docs_url = "https://docs.gtk.org/gio/"
|
||||||
|
|
||||||
|
[related."Graphene-1.0"]
|
||||||
|
name = "Graphene"
|
||||||
|
description = "A thin layer of mathematical types for 3D libraries"
|
||||||
|
docs_url = "https://ebassi.github.io/graphene/docs"
|
||||||
|
|
||||||
|
[related."Pango-1.0"]
|
||||||
|
name = "Pango"
|
||||||
|
description = "Text shaping and rendering"
|
||||||
|
docs_url = "https://docs.gtk.org/Pango/"
|
||||||
|
|
||||||
[theme]
|
[theme]
|
||||||
name = "basic"
|
name = "basic"
|
||||||
show_index_summary = true
|
show_index_summary = true
|
||||||
show_class_hierarchy = true
|
show_class_hierarchy = true
|
||||||
|
|
||||||
[source-location]
|
[source-location]
|
||||||
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/"
|
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/main/"
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
# The same order will be used when generating the index
|
# The same order will be used when generating the index
|
||||||
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 23 KiB |
16
docs/reference/gtk/images/aboutdialog.ui
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<object class="GtkAboutDialog">
|
||||||
|
<property name="program-name">GTK Code Demos</property>
|
||||||
|
<property name="version">4.8.0</property>
|
||||||
|
<property name="copyright">© 1997-2022 The GTK Team</property>
|
||||||
|
<property name="comments">Program to demonstrate GTK functions</property>
|
||||||
|
<property name="logo">gtk-logo.png</property>
|
||||||
|
<property name="title">About GTK Code Demos</property>
|
||||||
|
<property name="authors">Peter Mattis
|
||||||
|
Spencer Kimball
|
||||||
|
Josh MacDonald
|
||||||
|
and many more…
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</interface>
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.4 KiB |
47
docs/reference/gtk/images/action-bar.ui
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<object class="GtkWindow">
|
||||||
|
<property name="decorated">0</property>
|
||||||
|
<property name="resizable">0</property>
|
||||||
|
<property name="default-width">280</property>
|
||||||
|
<property name="default-height">120</property>
|
||||||
|
<style>
|
||||||
|
<class name="nobackground"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<style>
|
||||||
|
<class name="shadow"/>
|
||||||
|
<class name="background"/>
|
||||||
|
<class name="frame"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="hexpand">1</property>
|
||||||
|
<property name="vexpand">1</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTextView">
|
||||||
|
<property name="vexpand">1</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkActionBar">
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton">
|
||||||
|
<property name="icon-name">object-select-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton">
|
||||||
|
<property name="icon-name">call-start-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 6.4 KiB |
43
docs/reference/gtk/images/appchooserbutton.ui
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<object class="GtkWindow">
|
||||||
|
<property name="decorated">0</property>
|
||||||
|
<property name="resizable">0</property>
|
||||||
|
<property name="default-width">280</property>
|
||||||
|
<property name="default-height">120</property>
|
||||||
|
<style>
|
||||||
|
<class name="nobackground"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<style>
|
||||||
|
<class name="shadow"/>
|
||||||
|
<class name="background"/>
|
||||||
|
<class name="frame"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">3</property>
|
||||||
|
<property name="hexpand">1</property>
|
||||||
|
<property name="vexpand">1</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkAppChooserButton">
|
||||||
|
<property name="content-type">text/plain</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label">Application Button</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 29 KiB |
8
docs/reference/gtk/images/appchooserdialog.ui
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<object class="GtkAppChooserDialog">
|
||||||
|
<property name="content-type">image/png</property>
|
||||||
|
<property name="default-width">200</property>
|
||||||
|
<property name="default-height">300</property>
|
||||||
|
</object>
|
||||||
|
</interface>
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.7 KiB |
30
docs/reference/gtk/images/assistant.ui
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<object class="GtkAssistant">
|
||||||
|
<property name="resizable">0</property>
|
||||||
|
<property name="default-width">300</property>
|
||||||
|
<property name="default-height">140</property>
|
||||||
|
<property name="title">Assistant</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkAssistantPage">
|
||||||
|
<property name="title">Assistant page</property>
|
||||||
|
<property name="complete">1</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label">Assistant</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkAssistantPage">
|
||||||
|
<property name="page-type">confirm</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label">You sure?</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.9 KiB |