Compare commits
2365 Commits
filter-ima
...
text-rende
Author | SHA1 | Date | |
---|---|---|---|
|
ce09db1401 | ||
|
ed96414483 | ||
|
e6de8a1746 | ||
|
db1fc454ee | ||
|
850aebea5d | ||
|
26e632e549 | ||
|
64d2d7074f | ||
|
062a15310a | ||
|
299c7c3514 | ||
|
6599cb001f | ||
|
f1347f5841 | ||
|
f3ccf62463 | ||
|
44fea33c5d | ||
|
8b48cf11f9 | ||
|
e681fdd958 | ||
|
d4b7a78c54 | ||
|
a45cbad553 | ||
|
16b9a30655 | ||
|
82a184a7b7 | ||
|
9e198a59b6 | ||
|
c002678085 | ||
|
486cffc361 | ||
|
67495fcc77 | ||
|
b26a370ce4 | ||
|
4dc0e67ac7 | ||
|
2c060663cf | ||
|
76a8eb4960 | ||
|
ad3dad1965 | ||
|
172d97de05 | ||
|
4c967d5b45 | ||
|
b244f31337 | ||
|
8550a04bf4 | ||
|
cb38ead48e | ||
|
9713c3394d | ||
|
fa57b006c9 | ||
|
9f73f0234a | ||
|
a4f067481c | ||
|
733fb527fa | ||
|
3667c6b053 | ||
|
1071818df8 | ||
|
11c2d9ea30 | ||
|
52cdf3056d | ||
|
32899a1edd | ||
|
119458f13e | ||
|
2863095f06 | ||
|
cbc050b9ed | ||
|
18affbd390 | ||
|
0b7a36ce33 | ||
|
1957915940 | ||
|
552b71d4e2 | ||
|
480112f9aa | ||
|
9a2f4d8026 | ||
|
3b15f32335 | ||
|
7404a6fc4f | ||
|
91d1ec41c2 | ||
|
9237c8be67 | ||
|
6c87d362c5 | ||
|
4f31d3587d | ||
|
29a2f4021a | ||
|
e2d321a16a | ||
|
7366f5099a | ||
|
4fbef5f466 | ||
|
2e48ff3362 | ||
|
7cdbdb663c | ||
|
1b390d3857 | ||
|
2808f9c75b | ||
|
49d109c29e | ||
|
36dd959bf9 | ||
|
2f9a67b8a1 | ||
|
6d5d9ea073 | ||
|
1cfd340cae | ||
|
369ccfc34f | ||
|
e556513de6 | ||
|
79dc1a2a4d | ||
|
9e5a501c73 | ||
|
2db8d7f6a2 | ||
|
94c3f4d4fc | ||
|
3fa26861cd | ||
|
ef2b0ccd6c | ||
|
f1702d24e7 | ||
|
3a50ff57d8 | ||
|
8ac2e8d495 | ||
|
e56cf85fd1 | ||
|
1c6aef1862 | ||
|
4653cbe56e | ||
|
93148d302f | ||
|
a443ba91ce | ||
|
d8daef2de7 | ||
|
845d43c77a | ||
|
f8dbcc472b | ||
|
0f0f75f6b1 | ||
|
4e2e2d84fc | ||
|
887885b6e0 | ||
|
a868a5c434 | ||
|
a0c147d246 | ||
|
38040c96d6 | ||
|
989ecf69ad | ||
|
9d26399143 | ||
|
b9cad7cc54 | ||
|
357b97b5a6 | ||
|
318160d836 | ||
|
5e90d63373 | ||
|
0b7f1e488f | ||
|
e281bbbb55 | ||
|
892bacee52 | ||
|
2f1db4b77c | ||
|
f90e9b26f8 | ||
|
ad71f454bd | ||
|
c66bd791c4 | ||
|
40bceef3ca | ||
|
9d79f55dc9 | ||
|
c5c1cf6d55 | ||
|
9eb8aa9a32 | ||
|
95931a7e6c | ||
|
d9daaed43f | ||
|
b9c51e65c1 | ||
|
da5eb92f47 | ||
|
03ed585f6f | ||
|
51f953a1aa | ||
|
93fb07d808 | ||
|
5e311d4d85 | ||
|
e652054d50 | ||
|
58c31b8627 | ||
|
b945033b41 | ||
|
92d2867170 | ||
|
5d38c8c558 | ||
|
552a4b2c82 | ||
|
7a4afb08bd | ||
|
c5cd1ac630 | ||
|
90edb76415 | ||
|
8f397502df | ||
|
1cb17d8613 | ||
|
88e796bb45 | ||
|
1310bf0218 | ||
|
4efeaa844f | ||
|
24685612a9 | ||
|
bf21df4195 | ||
|
417b3f9c6b | ||
|
2d84a1c63e | ||
|
5ab9a29bc4 | ||
|
383ea0d86a | ||
|
df8f75bb8f | ||
|
ba95ef63da | ||
|
bea4aa31ea | ||
|
6c19a8352f | ||
|
e3df89b524 | ||
|
a9003f7ac0 | ||
|
2cc06f60c5 | ||
|
4759afcc3e | ||
|
66b297e408 | ||
|
bbd2b255a3 | ||
|
8b2f28eee3 | ||
|
ae767dc5bf | ||
|
d923402934 | ||
|
9667f889b3 | ||
|
d2ea7af335 | ||
|
f95e9407a9 | ||
|
7be3c2974a | ||
|
5444f604cb | ||
|
94e68b0e36 | ||
|
910d86f958 | ||
|
fd885e42b0 | ||
|
ea31ae31c1 | ||
|
00763e5af3 | ||
|
1bf5aab18c | ||
|
210a709246 | ||
|
5feba67a3d | ||
|
e9e373913e | ||
|
f1f197e3b9 | ||
|
cedb6183e9 | ||
|
0415d46c0f | ||
|
68388331c7 | ||
|
92817b0603 | ||
|
f8a1726ffa | ||
|
be34f27026 | ||
|
12c5518e2b | ||
|
d8ab5c3c45 | ||
|
36d1c9e8b7 | ||
|
45c047f5c0 | ||
|
da1232caaf | ||
|
fff5a83957 | ||
|
f5b6488eb2 | ||
|
c02bae9e08 | ||
|
58e65ae7dd | ||
|
3977518f00 | ||
|
8adee3dace | ||
|
09ad930da4 | ||
|
52f7bb6950 | ||
|
68db945e47 | ||
|
b54f4cf5d4 | ||
|
9a8a9451b1 | ||
|
fffa903ce9 | ||
|
ab08885a32 | ||
|
ad3995b1b9 | ||
|
75cc0710ac | ||
|
7cec7054e2 | ||
|
fe280e578f | ||
|
a32973f56b | ||
|
7762311911 | ||
|
edd73ffbed | ||
|
fca87d93e9 | ||
|
c2fe2c0385 | ||
|
8aa25046dc | ||
|
27a07ed89c | ||
|
071a6bcc06 | ||
|
f98ac6590d | ||
|
6b733d2943 | ||
|
6f165efcdb | ||
|
7bc1c9a562 | ||
|
1596fdeba3 | ||
|
1599b659cf | ||
|
bb65564c7d | ||
|
03031b3dc1 | ||
|
b7636ebbc0 | ||
|
5707b80a69 | ||
|
81e5d4c327 | ||
|
f8111125ef | ||
|
c020e83890 | ||
|
f6659fea8d | ||
|
a06858ccd9 | ||
|
c6c48d327c | ||
|
5d0f188615 | ||
|
78fcc8feb8 | ||
|
27cad85247 | ||
|
ad0c1d4dbe | ||
|
00abaed89a | ||
|
342f02711b | ||
|
d9c48a8d01 | ||
|
d757696116 | ||
|
528ebfabf0 | ||
|
2ebde276d1 | ||
|
04f3c8054b | ||
|
ea07bf7536 | ||
|
80e6f1ca8c | ||
|
54d29568ec | ||
|
4e1ea58503 | ||
|
90c429a91c | ||
|
4b28e038e0 | ||
|
8df694a358 | ||
|
eb8778e1cd | ||
|
256f3a0d60 | ||
|
54c087e7ec | ||
|
69a99b89f9 | ||
|
f328ab9d83 | ||
|
8acce5f294 | ||
|
bdbe0acd1f | ||
|
fc701baef8 | ||
|
a457a81fd9 | ||
|
4cc7977d36 | ||
|
e5e7f5dd88 | ||
|
916886312a | ||
|
8ff94ea1f2 | ||
|
053bd0cd31 | ||
|
a3ce574193 | ||
|
ef92adc87d | ||
|
46a9538b6a | ||
|
ca547b8716 | ||
|
04ea51e843 | ||
|
f7dc0dda4e | ||
|
8713843022 | ||
|
6563b05d60 | ||
|
d119c55b72 | ||
|
253e25a73c | ||
|
c63774967f | ||
|
bbc36448fb | ||
|
5df323fb64 | ||
|
0f2c5f13be | ||
|
58180ad3be | ||
|
fb0229890b | ||
|
9099888398 | ||
|
882855f865 | ||
|
f59d2ae89d | ||
|
7c3a53a171 | ||
|
1e22572716 | ||
|
8a25f54e1f | ||
|
c51f2fc0ec | ||
|
2a528df977 | ||
|
84684bd56e | ||
|
e1606ce8eb | ||
|
47072e0441 | ||
|
915c229396 | ||
|
0bf46b4845 | ||
|
a7a2dbc3ea | ||
|
7e8f586859 | ||
|
bb9dccd773 | ||
|
7b743e662e | ||
|
769dc53c05 | ||
|
1a4554daf3 | ||
|
6c0633ef61 | ||
|
4d020a3875 | ||
|
316cc55e69 | ||
|
95f2634ea9 | ||
|
95c032f531 | ||
|
744955753f | ||
|
ae5e7dc65d | ||
|
ed41c46926 | ||
|
a460fb2734 | ||
|
39ddce6ba3 | ||
|
8da7e3bdc3 | ||
|
eff53c023a | ||
|
99e4a6a2d6 | ||
|
c06817b951 | ||
|
e765aaa3f4 | ||
|
1728aa581c | ||
|
c50475de34 | ||
|
5d7ecb7a6e | ||
|
06348a8517 | ||
|
c4dbb8f01e | ||
|
e67b2cb54b | ||
|
908b1e5e12 | ||
|
539391ce6c | ||
|
7fc90aed26 | ||
|
23e79d2eb2 | ||
|
0c7b1431d7 | ||
|
b6c0155836 | ||
|
76d67b586c | ||
|
914edb1472 | ||
|
dbf5033f94 | ||
|
cc6ecc8b62 | ||
|
b7e6922605 | ||
|
05eaffb9f2 | ||
|
67b568f464 | ||
|
19b534f7de | ||
|
bc386c9a60 | ||
|
db8b3419c2 | ||
|
0f5ba5192a | ||
|
108c423d70 | ||
|
dded10a396 | ||
|
1b080826db | ||
|
910f23ea19 | ||
|
f1b50baba1 | ||
|
4453597946 | ||
|
192bfa10cb | ||
|
0781429dc5 | ||
|
d760332f00 | ||
|
131be5f2e8 | ||
|
57a95c540c | ||
|
09deb1d757 | ||
|
5c4aba4b9c | ||
|
6a5d555f58 | ||
|
f5dc71021f | ||
|
39005461c5 | ||
|
4dc4c00267 | ||
|
d76460343a | ||
|
0d8dd0c664 | ||
|
ee6491f717 | ||
|
7044951dab | ||
|
98986a25f9 | ||
|
ae3e586714 | ||
|
0ef12193f9 | ||
|
b695ef9168 | ||
|
7fb1389648 | ||
|
f88efb811b | ||
|
466d33ca69 | ||
|
d44ce1987d | ||
|
527b2c5ab1 | ||
|
4d0c2997cf | ||
|
6f04ec9dae | ||
|
00cc99818d | ||
|
e51fdc1c9b | ||
|
8d5ef4ab30 | ||
|
7bdda15b86 | ||
|
4c41ef8de3 | ||
|
7aec3b0fa1 | ||
|
fce23c981b | ||
|
351819b570 | ||
|
a10b1b7341 | ||
|
02c6226741 | ||
|
620ccdabb5 | ||
|
4b12dc6547 | ||
|
bd69d7e23f | ||
|
8648486400 | ||
|
6c00117119 | ||
|
9c4c4eaaa1 | ||
|
969b3257a7 | ||
|
65c6af31e1 | ||
|
6b8bc83420 | ||
|
30aaab5c6c | ||
|
72e2a46c05 | ||
|
e06e0e8555 | ||
|
9f1d6e1f44 | ||
|
15ed1a329e | ||
|
505436340b | ||
|
a27434a8a7 | ||
|
2c987861a6 | ||
|
c7320df0c9 | ||
|
dd666e4fe4 | ||
|
e4f0418003 | ||
|
430b6f8fb1 | ||
|
ba3e80cbfa | ||
|
7cd4282bad | ||
|
01e9fa9adb | ||
|
581e01b2da | ||
|
5a3b4de1b7 | ||
|
74288eceaf | ||
|
37ba057128 | ||
|
6d5ba9590b | ||
|
215f792851 | ||
|
1c55b32879 | ||
|
82eb947f41 | ||
|
485dae9f25 | ||
|
eb3423312f | ||
|
04c2093d5c | ||
|
ccd5992a83 | ||
|
ca8d9fbe0b | ||
|
62bac44a21 | ||
|
0ddd06113d | ||
|
b1fbc2ef24 | ||
|
c787fe7ecb | ||
|
bdb49720be | ||
|
1d448a2b8a | ||
|
c5df081904 | ||
|
8a2f3e1fe5 | ||
|
8dfc627e46 | ||
|
0fce30070f | ||
|
8bfe82f686 | ||
|
7d32ec51e7 | ||
|
5784f8c2f9 | ||
|
74e01ddec5 | ||
|
1347573139 | ||
|
f2b41e708d | ||
|
a5555943ed | ||
|
2c023cdaed | ||
|
bcc7028640 | ||
|
bdee75cd0f | ||
|
94eb3d7ac0 | ||
|
0ae2acfb1a | ||
|
afc5f46ca9 | ||
|
e544c891ca | ||
|
af0c95c11a | ||
|
4d5dc18a57 | ||
|
9f6fb161e2 | ||
|
3883a98771 | ||
|
9b44965f13 | ||
|
aa6a9de6ba | ||
|
8669e8a498 | ||
|
ead31db096 | ||
|
69fda941c7 | ||
|
67c9e7a4a8 | ||
|
4e4f57e091 | ||
|
ac64d2d910 | ||
|
49a76257cd | ||
|
77829cf3ed | ||
|
4d10ab3d35 | ||
|
e609ede597 | ||
|
2ba69abe39 | ||
|
a76f515569 | ||
|
a663b8c313 | ||
|
f66fa16bd1 | ||
|
8390363abe | ||
|
6ff85d287a | ||
|
94c2072be8 | ||
|
64b9d53472 | ||
|
a5e7b92c5d | ||
|
2da9ba63e2 | ||
|
5d02a8f5db | ||
|
834d3749c6 | ||
|
1c90bb522e | ||
|
b70b058b66 | ||
|
b99beeb552 | ||
|
c799452973 | ||
|
fd48afb77d | ||
|
aaa68954c3 | ||
|
433233258b | ||
|
3eed61deba | ||
|
87e2a02e0c | ||
|
264d592012 | ||
|
0ad5094119 | ||
|
67952a9142 | ||
|
ca3d942b9b | ||
|
5470a1344d | ||
|
4390f8102b | ||
|
92129a2011 | ||
|
54dffa07f3 | ||
|
1cff4bb27a | ||
|
8087250476 | ||
|
485dc052ca | ||
|
45d39c2802 | ||
|
3b4b1c6878 | ||
|
ff4f07d76f | ||
|
fb6c8cd466 | ||
|
8464b0484f | ||
|
bee58fd09d | ||
|
d25557a5ef | ||
|
da3ca6604b | ||
|
74cba6c3b2 | ||
|
c09718b731 | ||
|
eacfa2a966 | ||
|
e7f228e240 | ||
|
fab82a7c25 | ||
|
fc9c34897a | ||
|
28cdd3f497 | ||
|
a009e26e95 | ||
|
ab908c23f4 | ||
|
ae21f66fe5 | ||
|
2d092ea280 | ||
|
0f9d39cdfd | ||
|
a64087d481 | ||
|
c85f3f4942 | ||
|
d7553279ff | ||
|
c86631b8a9 | ||
|
c1af63de9b | ||
|
2784b03b2d | ||
|
10bdf8c645 | ||
|
d63d9b2319 | ||
|
d5f2b69d0c | ||
|
6818eee859 | ||
|
e7f1398d85 | ||
|
880c01f8cc | ||
|
337c5e5e59 | ||
|
af52ea78c6 | ||
|
fe633d9ef9 | ||
|
e6cce283a7 | ||
|
c920236c54 | ||
|
6f86b4d220 | ||
|
a085e174c5 | ||
|
d3c08789a3 | ||
|
630488210b | ||
|
873f6ccfea | ||
|
af15f5d004 | ||
|
f328175e2f | ||
|
fc65d6393a | ||
|
271afb7eab | ||
|
76133dbea7 | ||
|
6efe31e6f5 | ||
|
9885bedb7d | ||
|
b6edb517e4 | ||
|
f023695f31 | ||
|
749ea8c30c | ||
|
c79f289d67 | ||
|
e516ce428a | ||
|
1ae259aecb | ||
|
c609e2fef9 | ||
|
8ff9c851ce | ||
|
5ef2b9fd54 | ||
|
511dc7a182 | ||
|
c668586caf | ||
|
390447862a | ||
|
7f2648a013 | ||
|
3227aa2c45 | ||
|
c88dc98b7c | ||
|
ed5b42071c | ||
|
804d9ee828 | ||
|
a90f721b74 | ||
|
106417ada7 | ||
|
fd0d3283e0 | ||
|
3e63e683a9 | ||
|
e415f25c8f | ||
|
e596e1fa7d | ||
|
d8ab2e6d03 | ||
|
e9d3d3e3cf | ||
|
3a5983e387 | ||
|
4efb661ae6 | ||
|
bcdb9c937c | ||
|
f45c0b9609 | ||
|
9ea162034a | ||
|
192e779db2 | ||
|
bda7557783 | ||
|
dc50c7539a | ||
|
bf97dfd998 | ||
|
c7f4131402 | ||
|
bd5e5beee0 | ||
|
7a493f151d | ||
|
0ea73c384f | ||
|
d8c416e8b2 | ||
|
9bf3724d25 | ||
|
fd49d39184 | ||
|
0fd790eb8d | ||
|
b18e95d6b3 | ||
|
47b5c68df4 | ||
|
ac3b246858 | ||
|
51a754547e | ||
|
76df60db2b | ||
|
f3befe530b | ||
|
59d4333e23 | ||
|
92177d9663 | ||
|
6a29b64850 | ||
|
73cb60d053 | ||
|
47bd998e94 | ||
|
e2cfa7bd11 | ||
|
006633082d | ||
|
bbf7454fc9 | ||
|
85cb5509c4 | ||
|
0e29f52841 | ||
|
02893e37d3 | ||
|
1dbb5188ba | ||
|
a4d35ace78 | ||
|
981a638b01 | ||
|
3969d8b028 | ||
|
889709213e | ||
|
333a92bcff | ||
|
cd39e417e1 | ||
|
1cebf406aa | ||
|
d7915fbca8 | ||
|
9169315cc1 | ||
|
3b70cd3226 | ||
|
a6101f0181 | ||
|
92c6485adf | ||
|
4df9314039 | ||
|
c8ad4d5deb | ||
|
13a2db2238 | ||
|
e8f9fb0f86 | ||
|
634bd2de48 | ||
|
f58fc6b22e | ||
|
fb052c8d25 | ||
|
e35490ba5b | ||
|
be1b979e51 | ||
|
3fd931d392 | ||
|
6c1dce2878 | ||
|
ad1260505d | ||
|
d92f8a1b8e | ||
|
22827f2cc7 | ||
|
b64370cd48 | ||
|
6c8e176cc0 | ||
|
057bda6cd7 | ||
|
8df2cce5c1 | ||
|
352898ae9e | ||
|
1bda665662 | ||
|
fad4c60499 | ||
|
47bb556327 | ||
|
4d00f1903a | ||
|
7344a03aa3 | ||
|
64af90111e | ||
|
3254a3feab | ||
|
d5054f9b99 | ||
|
db93090ea8 | ||
|
15c65595b8 | ||
|
e59e9ad6a9 | ||
|
e6c4dbfc6d | ||
|
424dd8a463 | ||
|
7b1a7629bc | ||
|
df1116a010 | ||
|
11916bac7e | ||
|
d675ae5cc5 | ||
|
43eeff8f15 | ||
|
ece9e7e240 | ||
|
1abbf00dcf | ||
|
10564514e8 | ||
|
ba7ec29dc0 | ||
|
85b595bd14 | ||
|
56c486abbf | ||
|
96fc5dc3a7 | ||
|
b09087d634 | ||
|
5e99513507 | ||
|
0a9d2f248e | ||
|
16ff055b42 | ||
|
89f57d4ff6 | ||
|
c4a2234a28 | ||
|
a3882763d8 | ||
|
787fa6bd0d | ||
|
a6b4e53dca | ||
|
00d25ae89c | ||
|
5776fcd955 | ||
|
86b5dba43b | ||
|
e888364d3c | ||
|
276f85c9e3 | ||
|
68eb422333 | ||
|
c0f54f899d | ||
|
65212535df | ||
|
106ac7c782 | ||
|
bc7b6a0e53 | ||
|
e5b89569fd | ||
|
938bfff3dd | ||
|
6835fcf3cf | ||
|
2554ee27d9 | ||
|
007cdf8787 | ||
|
a526daf310 | ||
|
ee34e1acc5 | ||
|
a08fbfa586 | ||
|
d29f57fd1d | ||
|
a4c5d1d94d | ||
|
17f1bb1632 | ||
|
3418504b4b | ||
|
0a78a592ff | ||
|
208c527fb3 | ||
|
28990285e2 | ||
|
c7ad8d29e9 | ||
|
dba8d1ff77 | ||
|
143770f16d | ||
|
8a890238f5 | ||
|
71be3a8de1 | ||
|
17373c3e77 | ||
|
078ada75d4 | ||
|
51a60b88b7 | ||
|
193903ce4a | ||
|
386002597b | ||
|
e5a6d4a1c8 | ||
|
06caa57f9a | ||
|
5ef6944a41 | ||
|
2e415e266f | ||
|
970bb804de | ||
|
915388cfdb | ||
|
1bf7f5eacb | ||
|
6a86acb9ce | ||
|
e35e7bcd4a | ||
|
517b5173f9 | ||
|
37acfcfcd5 | ||
|
c2f2a45227 | ||
|
621e0a13e9 | ||
|
92fcd37a19 | ||
|
d8bde48b87 | ||
|
825ffb9422 | ||
|
046ef010b3 | ||
|
b71ec6cb59 | ||
|
b1beb3650b | ||
|
fca19e72ad | ||
|
98d2320c93 | ||
|
effc7a619d | ||
|
0ec017fcc0 | ||
|
94ad177176 | ||
|
4616104742 | ||
|
a3a24b81c8 | ||
|
debcc62775 | ||
|
b11f31afea | ||
|
db2e5648c9 | ||
|
46d1f04a7c | ||
|
fe774c1ad8 | ||
|
08ee36e7c4 | ||
|
1605ec0a44 | ||
|
4b46e11b22 | ||
|
9993e91add | ||
|
9ac22c1088 | ||
|
47400e4bd8 | ||
|
8981ba4bd2 | ||
|
74a41eeb70 | ||
|
ff874318c0 | ||
|
a4598567b9 | ||
|
8f95661167 | ||
|
e437c55142 | ||
|
ff01067b8b | ||
|
7f4630abac | ||
|
4c9bd6ed9a | ||
|
b6cd97be1e | ||
|
c4cbd6ec1b | ||
|
312289fb11 | ||
|
036dd60a4e | ||
|
10c6c93f40 | ||
|
4d894e08f7 | ||
|
31407d0a4c | ||
|
bb53cf53e7 | ||
|
da9cd4659e | ||
|
d3e6e303fc | ||
|
a0c23b1c3d | ||
|
50b3a952c8 | ||
|
15b24a000d | ||
|
6a509608f9 | ||
|
df6a52520c | ||
|
578db92973 | ||
|
3ab97fac1f | ||
|
e8852c9a25 | ||
|
fa0b379d30 | ||
|
1565053842 | ||
|
8288d9e87c | ||
|
a900b30bcf | ||
|
9b671d1f79 | ||
|
c2d82c23e6 | ||
|
a88b4f517e | ||
|
f9f9fa6dc6 | ||
|
a1789ee2b8 | ||
|
ffb7df2cc4 | ||
|
c2ca246aee | ||
|
80c33ca2dd | ||
|
7307c6fdfb | ||
|
039fc2e567 | ||
|
1dcf9d5c95 | ||
|
742482e0e1 | ||
|
80497debbb | ||
|
bffc6c5b9a | ||
|
95747b1a40 | ||
|
775dbec2e6 | ||
|
25ee6d3f47 | ||
|
1f3f2f1dca | ||
|
c848a51395 | ||
|
7d3c3cb653 | ||
|
9c79b8b877 | ||
|
c137f4017f | ||
|
c92b21b5fd | ||
|
44f07f7708 | ||
|
b85b4f2cd6 | ||
|
d1a7a55d7e | ||
|
75868dfee4 | ||
|
44bc9a24f8 | ||
|
c9785c4cd3 | ||
|
9f93883dc9 | ||
|
4362f7e6e2 | ||
|
90a829f25a | ||
|
d0e29cc901 | ||
|
8ebdd256a5 | ||
|
4b5f8e6ceb | ||
|
ffbfafb189 | ||
|
994a38c7ad | ||
|
0268c9d642 | ||
|
f729912913 | ||
|
6179886b14 | ||
|
3aa34c1211 | ||
|
24f0ae1d39 | ||
|
c0ca3c642a | ||
|
b2b044ce95 | ||
|
8f4b0cd30d | ||
|
cbe2aa716d | ||
|
23ea33b656 | ||
|
ee80a22db4 | ||
|
d32c343657 | ||
|
90d8c94819 | ||
|
e13da35d4d | ||
|
f50450485c | ||
|
264d08abc4 | ||
|
8c441756df | ||
|
cdf2a9ddce | ||
|
a196a35d1d | ||
|
aeda5b2f58 | ||
|
02672a521a | ||
|
da1e43c1e6 | ||
|
6d06b0f076 | ||
|
7da2e86d4b | ||
|
1f99723a9f | ||
|
c3c16bd2be | ||
|
4c2761302a | ||
|
3d19b1108a | ||
|
4728d7b70b | ||
|
cbd34cd239 | ||
|
d0ca4a1255 | ||
|
16623d4e71 | ||
|
dab7ceaa24 | ||
|
a74420bc1a | ||
|
b05f3f5614 | ||
|
808e5421a9 | ||
|
f1f225c6b3 | ||
|
16f307b305 | ||
|
ccdec5da77 | ||
|
52d1c0c271 | ||
|
943559da67 | ||
|
21057fb857 | ||
|
281bb5e2c4 | ||
|
eb61f0fc63 | ||
|
105b12f807 | ||
|
882893259d | ||
|
052917a67d | ||
|
226edf1f91 | ||
|
be944053e0 | ||
|
71aac48042 | ||
|
8bcc6b1d96 | ||
|
40f292cb13 | ||
|
601a8de422 | ||
|
fe564318b6 | ||
|
09244edc15 | ||
|
f5f8f83e3e | ||
|
74a39bbae0 | ||
|
3ab34ffdc0 | ||
|
13a93489b7 | ||
|
b35e02db20 | ||
|
6cb4dda5d6 | ||
|
2d12a7d9ee | ||
|
9a7e4f4304 | ||
|
876104835e | ||
|
786e28fec0 | ||
|
b617ba1c82 | ||
|
252edbdbc6 | ||
|
0bba3610c5 | ||
|
fc9f580fd3 | ||
|
91f7b9663f | ||
|
2d266d107b | ||
|
fff2b3c710 | ||
|
5af6c37f8c | ||
|
2d0957b732 | ||
|
0996552708 | ||
|
620787e56b | ||
|
f5bd9f721c | ||
|
345edb8a89 | ||
|
4a0d3d7acc | ||
|
7fe0610b68 | ||
|
8ba16eb4f1 | ||
|
ab6a5be0f8 | ||
|
94b0907534 | ||
|
0017b4b69a | ||
|
430be6f2a9 | ||
|
bff7ac4a1d | ||
|
fb6c6c85bf | ||
|
894adea2f7 | ||
|
0e1d6fbbbc | ||
|
bad01edd2c | ||
|
e9ca8d689f | ||
|
c5eb2f5d16 | ||
|
7db87a8889 | ||
|
12a9a0faf7 | ||
|
fc321d8282 | ||
|
7d27c615b7 | ||
|
7de266a620 | ||
|
4cbc5ed20a | ||
|
c18a1ac1a1 | ||
|
ab6e4bfc8d | ||
|
6b7b232114 | ||
|
0a5d21ca9e | ||
|
f003a4c6cc | ||
|
53df32e6cf | ||
|
8670034c86 | ||
|
c1fbf654a0 | ||
|
9066078928 | ||
|
4f16e661cf | ||
|
45b85767c4 | ||
|
d56711b5d8 | ||
|
df28a57ae3 | ||
|
04bac8ef2a | ||
|
7ad193787e | ||
|
27e662cfd1 | ||
|
661a572d82 | ||
|
66b4f0cac4 | ||
|
81e0206465 | ||
|
cb1babeeba | ||
|
67dc778b8f | ||
|
bbd4ee2986 | ||
|
42b2eae532 | ||
|
0902f45d71 | ||
|
c51eb7665e | ||
|
1a426d6fff | ||
|
07b5072c9c | ||
|
3a0febfe79 | ||
|
8e7bc8d742 | ||
|
809299f9e4 | ||
|
c391cf38e2 | ||
|
8c75e6896e | ||
|
b3d6928f35 | ||
|
3d8ba93f59 | ||
|
889bf83020 | ||
|
6c63f7b0e2 | ||
|
3872c3a127 | ||
|
5be785bff8 | ||
|
bf454e948d | ||
|
e66ec84c1e | ||
|
6537728c7b | ||
|
95f3f8f3c4 | ||
|
ae9b4f8940 | ||
|
8ef353a970 | ||
|
6d33e9058c | ||
|
78852b181a | ||
|
2588f9cee6 | ||
|
abc2d7e4a9 | ||
|
6189e343f3 | ||
|
8bfa182ed9 | ||
|
ea162ed016 | ||
|
e2aa161590 | ||
|
a723baec4b | ||
|
6120519e8e | ||
|
69856a9aac | ||
|
564d835fba | ||
|
c35a6725b9 | ||
|
a57f79006a | ||
|
6600b0b507 | ||
|
9a19e3c741 | ||
|
8924d614c0 | ||
|
03f76eccf5 | ||
|
b13c2e17f1 | ||
|
7c1c8c53e7 | ||
|
497b843e76 | ||
|
7745f67583 | ||
|
374225ae6a | ||
|
7259be35b0 | ||
|
1601e204f4 | ||
|
43e33b2990 | ||
|
7ebd9291d9 | ||
|
5d59415c2d | ||
|
c5d2d89930 | ||
|
0108ffe059 | ||
|
087935f160 | ||
|
fef9f1187d | ||
|
83c9a24855 | ||
|
435a8f6337 | ||
|
2c8e4573f2 | ||
|
b45721373a | ||
|
e0ebf4e401 | ||
|
dc878f24d2 | ||
|
be1f9b2cb0 | ||
|
0769dfbd32 | ||
|
081e127377 | ||
|
17a799aeb2 | ||
|
a3f5283018 | ||
|
633d783f0c | ||
|
451a5fb6d4 | ||
|
3ad7d304bd | ||
|
7b2b8b86e1 | ||
|
1f8985e476 | ||
|
efb875daef | ||
|
59cc3a9f86 | ||
|
febd143ac8 | ||
|
e00785e958 | ||
|
4a4525a65d | ||
|
c98dd1afb9 | ||
|
12d591178e | ||
|
bd7b29a6c4 | ||
|
13b94dab10 | ||
|
ba3cbac21a | ||
|
d94c386320 | ||
|
4e2a263c1f | ||
|
6a24e0c7c3 | ||
|
c8eeb46aa5 | ||
|
d143f76568 | ||
|
930ff499ee | ||
|
f4dc24c3da | ||
|
399fb76652 | ||
|
de056a3319 | ||
|
bafa23fa2c | ||
|
ab725b4ba9 | ||
|
d8f44c06e8 | ||
|
e40c869d0d | ||
|
3591da517a | ||
|
014fb41448 | ||
|
24072f26ca | ||
|
65017a0031 | ||
|
dc5aab62c8 | ||
|
a3cccbeb53 | ||
|
cee6525213 | ||
|
4f81dc1eaf | ||
|
0e58bfe90e | ||
|
e3e0342db7 | ||
|
b1f12a0535 | ||
|
60f4b07196 | ||
|
4c60dac9cb | ||
|
8d14bd3339 | ||
|
48d95d2d7a | ||
|
670a2be782 | ||
|
f3633d46ca | ||
|
e56754d27c | ||
|
40ebed3a03 | ||
|
14ac4903b6 | ||
|
da613c504b | ||
|
7ac3507be2 | ||
|
316c783fce | ||
|
9e952bc7ff | ||
|
e4832a9e94 | ||
|
70ee86c951 | ||
|
ed97339ef1 | ||
|
b012a5c67e | ||
|
642f32e14d | ||
|
7b735b88b4 | ||
|
167134e1a8 | ||
|
0fa4b7a249 | ||
|
f413d5ef22 | ||
|
be4216e051 | ||
|
fa10264759 | ||
|
5fbfe5203c | ||
|
f472cb53ae | ||
|
a49ff5a1c4 | ||
|
faf56a8abe | ||
|
e510538f37 | ||
|
b2bf48c3f0 | ||
|
cf0330d601 | ||
|
2f51f5affe | ||
|
a69ae36a99 | ||
|
6863528df1 | ||
|
e2722f03ac | ||
|
1be4684441 | ||
|
4a96e790b1 | ||
|
f9d6134247 | ||
|
dfecc8fe02 | ||
|
2b0c474117 | ||
|
0f74798a82 | ||
|
ead06fdb35 | ||
|
687e589950 | ||
|
945b32ca1b | ||
|
0768cfb7df | ||
|
b5e245762d | ||
|
4c6c0b9099 | ||
|
23af39b5b4 | ||
|
a5cab71c9b | ||
|
d4f43f1a7c | ||
|
7ab8109ef8 | ||
|
0f49a5068a | ||
|
a6e0b6e5ce | ||
|
bf563e0926 | ||
|
03ca7081df | ||
|
97afffba4e | ||
|
6b6246f7b4 | ||
|
f1e006c88c | ||
|
32280090fe | ||
|
cdd8f7cd53 | ||
|
d69ac108d4 | ||
|
c1b614772c | ||
|
ec38e53249 | ||
|
e473e7a83a | ||
|
5636384449 | ||
|
f72ca060b5 | ||
|
6482954c6e | ||
|
e1a0e4bfbe | ||
|
ae3ae428a0 | ||
|
be42644091 | ||
|
66e7f3b404 | ||
|
604d171d56 | ||
|
65575fe0d0 | ||
|
ac5f0ba341 | ||
|
e637ed739f | ||
|
29382360ed | ||
|
2a610267eb | ||
|
1635998ac3 | ||
|
82f8fc3bee | ||
|
f37662c655 | ||
|
1a12ea6e5a | ||
|
1be899459c | ||
|
f34e3c573b | ||
|
b23529d940 | ||
|
2c34abed20 | ||
|
b3b63a2c8f | ||
|
4a1a9b1f44 | ||
|
215d4cbfe5 | ||
|
8cd8aa2cb3 | ||
|
b3b9dd493e | ||
|
8909ad1859 | ||
|
aa569acaa1 | ||
|
1c1c030b8e | ||
|
628d5406d7 | ||
|
5d563fcde6 | ||
|
b2f3a3220e | ||
|
4e66e782ea | ||
|
d225f14657 | ||
|
13f9ca60d5 | ||
|
8789e78796 | ||
|
be927d9ce6 | ||
|
dcb5a74275 | ||
|
8f70f1449d | ||
|
b25bc36d33 | ||
|
da4e2a2976 | ||
|
f8dcda80cf | ||
|
01d81ffc17 | ||
|
c78ec37d83 | ||
|
a2cd21cab6 | ||
|
760e60fa04 | ||
|
81914f466d | ||
|
ebd8338795 | ||
|
11d637f869 | ||
|
b24fedda49 | ||
|
57cc2c4918 | ||
|
15483ac9df | ||
|
142984cbf7 | ||
|
8f9145109b | ||
|
5587ee0c30 | ||
|
99750ac7ed | ||
|
f89bad7f33 | ||
|
b97d0a3940 | ||
|
639932ad8a | ||
|
1a944b2824 | ||
|
ae83b79984 | ||
|
5f2c08cef1 | ||
|
119d0b666c | ||
|
ce2a433ca1 | ||
|
a455db01a0 | ||
|
9e8187bdc4 | ||
|
9fbd11e1be | ||
|
aa09737d4d | ||
|
435ed3158c | ||
|
72600516b9 | ||
|
fbc8317c5c | ||
|
ae7f380396 | ||
|
2e031e47dd | ||
|
dbe4543969 | ||
|
b27ec5ebde | ||
|
6622ebb310 | ||
|
1530c90e37 | ||
|
a804e4bd8c | ||
|
a04ce41799 | ||
|
5e3e1dd6ba | ||
|
379bb6c9f5 | ||
|
3df3a0499f | ||
|
0d308d09f3 | ||
|
1331d5cf97 | ||
|
91f3f5c63b | ||
|
486a2c9651 | ||
|
05af726446 | ||
|
36347b21e6 | ||
|
db8bf5e7b9 | ||
|
5bbdf3a807 | ||
|
08b101ace8 | ||
|
5e53c0473a | ||
|
9d1e5aa0dc | ||
|
4d19de4e03 | ||
|
153019a794 | ||
|
8df32e93be | ||
|
14632e11da | ||
|
24cd05672e | ||
|
74a68a5803 | ||
|
9f6b3e179f | ||
|
20fb64704d | ||
|
9b7f927b3c | ||
|
eb3df6a2e8 | ||
|
c6483d431f | ||
|
e5b0d225de | ||
|
d1d009b491 | ||
|
4465ee5414 | ||
|
6f11165dd1 | ||
|
ddeabc7e19 | ||
|
f5d90826f3 | ||
|
11154ba119 | ||
|
c66b030427 | ||
|
0c3dd0cf30 | ||
|
4164abd9f7 | ||
|
b0990aa8e2 | ||
|
a871a1bdb5 | ||
|
31e08d4629 | ||
|
f98353c20b | ||
|
13ece4ee9b | ||
|
6e40f4f357 | ||
|
ecfba2d31b | ||
|
367dfee36e | ||
|
5e7b5fe085 | ||
|
9d3aa2cfce | ||
|
8c156e6b80 | ||
|
4d1075a082 | ||
|
442f485591 | ||
|
74238b5429 | ||
|
f9fa92766b | ||
|
90d187894d | ||
|
03db2690e2 | ||
|
65b35457fd | ||
|
d5ced21264 | ||
|
6d6c8c59eb | ||
|
46ed7540b2 | ||
|
3ad56a762f | ||
|
21a1a40555 | ||
|
849692b24b | ||
|
f3bf4e4876 | ||
|
46270d3dcd | ||
|
da6096faaf | ||
|
2a7b5a5156 | ||
|
233e662294 | ||
|
ae41697d83 | ||
|
e2fb59798e | ||
|
d0fc3e166d | ||
|
e4ce46e75f | ||
|
e2420f62fe | ||
|
6712106c25 | ||
|
5b55138729 | ||
|
1d9c581f10 | ||
|
6bfb57db16 | ||
|
f8f2f2944f | ||
|
aaf17fd3d0 | ||
|
678e6fc6d6 | ||
|
fcf39170e1 | ||
|
187072c3fa | ||
|
e6599c6c4f | ||
|
87a8ff90d6 | ||
|
4a76abffd4 | ||
|
715449695c | ||
|
d15b0afca9 | ||
|
0d6bbc035d | ||
|
9313d4b6b4 | ||
|
ed412f43d1 | ||
|
bfe4aea981 | ||
|
0caa28c1de | ||
|
d8ba4b4114 | ||
|
e7963945bb | ||
|
e4a6101ae0 | ||
|
5d0a3bd4cb | ||
|
1c2238cc2a | ||
|
2d7169fd5f | ||
|
885a6b8ebc | ||
|
9d81c129fc | ||
|
38c6fe2ce4 | ||
|
7fe7b7ac7d | ||
|
ae7f52d301 | ||
|
8b1fcb58e8 | ||
|
cce36ae701 | ||
|
2f0a02eecb | ||
|
07167fdf22 | ||
|
99c7ba7840 | ||
|
5710df685b | ||
|
62f10b1b8f | ||
|
d50d55228b | ||
|
288a5d4151 | ||
|
748b8497c9 | ||
|
303ff60d5e | ||
|
b79eb55b34 | ||
|
0ca573142a | ||
|
a1ece16143 | ||
|
2e18f1b6e3 | ||
|
6cf712591f | ||
|
b32cd5d328 | ||
|
2af99bd65e | ||
|
5b0ea70d1c | ||
|
d719a3d877 | ||
|
b0df8910ba | ||
|
5b8bf04035 | ||
|
58e44e296f | ||
|
0334d002c0 | ||
|
d731ce49ad | ||
|
a93614409e | ||
|
214e2d14be | ||
|
67ee6b2740 | ||
|
07a3fb833c | ||
|
1c419f762b | ||
|
8d6c7b81e9 | ||
|
fcaadf6724 | ||
|
ff38d8cdc0 | ||
|
900a4e4d31 | ||
|
ee63b84b6a | ||
|
2f1ff307da | ||
|
a8e8e04496 | ||
|
91bcf6f0ba | ||
|
a228b2de64 | ||
|
cb18437908 | ||
|
23dab885cd | ||
|
e7284c23da | ||
|
1e1f199b56 | ||
|
efb5e793a4 | ||
|
f2edf40e48 | ||
|
7cb99a0866 | ||
|
36da7c3075 | ||
|
a3b69f1101 | ||
|
9f2d1ff264 | ||
|
8d603dfe99 | ||
|
3ff04976e3 | ||
|
54ff4fd45f | ||
|
0d135d90f0 | ||
|
ffa9814dd0 | ||
|
a2fec9134b | ||
|
8caadaf404 | ||
|
469228fcd7 | ||
|
fd329e0ec5 | ||
|
7f4041ec30 | ||
|
5cb5bdc4eb | ||
|
08913deba5 | ||
|
aceeef47f4 | ||
|
ddda0ca1db | ||
|
00923615f4 | ||
|
63945bc408 | ||
|
076f79745b | ||
|
8e9effcc1e | ||
|
7f4522a3f1 | ||
|
f98abe4400 | ||
|
2ee8f676c3 | ||
|
7216f71825 | ||
|
0bf3e4c25b | ||
|
e964e176f9 | ||
|
8938b09bc9 | ||
|
3654bcfbe8 | ||
|
0dcf95b898 | ||
|
405fab8b36 | ||
|
ef455f5c85 | ||
|
05e4cd1579 | ||
|
0ea96e3b0c | ||
|
1e9e7bf0d9 | ||
|
d7a5dedd4f | ||
|
2e65416270 | ||
|
13c22e4e2f | ||
|
65a061f3c2 | ||
|
fc63e6856f | ||
|
94747d53eb | ||
|
b5df1299ec | ||
|
7bfff6c51e | ||
|
3fdedce8f6 | ||
|
6f62107656 | ||
|
f9457af128 | ||
|
94f0a4ef2c | ||
|
53e75936cb | ||
|
5f0fe09423 | ||
|
9e402fa064 | ||
|
d84440969a | ||
|
e7dc82fa32 | ||
|
f1b3492700 | ||
|
6c95fc7e87 | ||
|
f4cc9a47ad | ||
|
ccbbc2f2ba | ||
|
8bc2ee63eb | ||
|
68d634b31c | ||
|
d1c66f75e3 | ||
|
eba9cd8775 | ||
|
9606945ed8 | ||
|
d50d382032 | ||
|
5da3308572 | ||
|
fb48699ba4 | ||
|
56d37ceed0 | ||
|
622bb9186e | ||
|
b77e05ce37 | ||
|
ba4e66d189 | ||
|
2c33550048 | ||
|
3add99a9a8 | ||
|
d4ea2e848d | ||
|
4c06889243 | ||
|
ef544a8c3b | ||
|
6db9215dd1 | ||
|
8b64f0147c | ||
|
5847f75c57 | ||
|
ce2c3efc91 | ||
|
2599c5aed3 | ||
|
bca39e2605 | ||
|
ca0e1be03e | ||
|
6569a877d8 | ||
|
38fff37dae | ||
|
06be1f8b52 | ||
|
43a1641dd7 | ||
|
b21fba117f | ||
|
37d5f93610 | ||
|
52aea624a6 | ||
|
711acb6aa7 | ||
|
3e94c5afa4 | ||
|
a75c038e09 | ||
|
146069058f | ||
|
2d5dd7b3d7 | ||
|
0904dd29c2 | ||
|
279b9347fd | ||
|
2a2ae16894 | ||
|
3e1a8aa286 | ||
|
db126a19b6 | ||
|
ffa50f4c24 | ||
|
e1866d8fbe | ||
|
d24a0e9606 | ||
|
b8693cc4f4 | ||
|
5d5adf6ee7 | ||
|
dda69bd16d | ||
|
926b855d14 | ||
|
afc3de6e04 | ||
|
45f4090eec | ||
|
4cf69fbc5e | ||
|
0c6da97147 | ||
|
8994635d39 | ||
|
7644605dfc | ||
|
97a9e23b85 | ||
|
478ecf8db4 | ||
|
0e857862ab | ||
|
2bb4859031 | ||
|
7aef77a21a | ||
|
e7f9d56da5 | ||
|
34883b7142 | ||
|
23706a4a6d | ||
|
c52c944e33 | ||
|
8540bea65e | ||
|
8ea4721d1e | ||
|
e8a6b504f3 | ||
|
06ab8f2167 | ||
|
b5558f3e97 | ||
|
bdd281c9ea | ||
|
c9ab7c5750 | ||
|
01f4e5c8cd | ||
|
8a567d7932 | ||
|
dbcd24adf4 | ||
|
f6f07ba238 | ||
|
3ab07203ce | ||
|
70e26d12fb | ||
|
6ba414216c | ||
|
775b45ef57 | ||
|
23cb72875d | ||
|
5940de98dd | ||
|
4028bd5bce | ||
|
b5608e93d2 | ||
|
1ea2ea520f | ||
|
922b2683b3 | ||
|
6dcef28e12 | ||
|
08f68cce40 | ||
|
7849590a82 | ||
|
c9b312c860 | ||
|
6110980012 | ||
|
019855a27f | ||
|
cdfdf031b5 | ||
|
f131d68fef | ||
|
3014649455 | ||
|
2496ab0902 | ||
|
50d42093b5 | ||
|
44481d355e | ||
|
6f82408056 | ||
|
cc64dbafbc | ||
|
50b70298c0 | ||
|
bd7df4b816 | ||
|
086e1ed39f | ||
|
fa57f20b87 | ||
|
e211740da6 | ||
|
0351bc766c | ||
|
5531906973 | ||
|
9d6190bc3c | ||
|
d5de73fb9d | ||
|
b539c92312 | ||
|
272d8a6800 | ||
|
f8a6a09896 | ||
|
6a66ccd3e6 | ||
|
1f6b556972 | ||
|
3668541eaa | ||
|
a6727326e3 | ||
|
1507099dc7 | ||
|
2bc7abceae | ||
|
a9a5622214 | ||
|
0560397aa8 | ||
|
4e06787a1b | ||
|
610ba0e764 | ||
|
80ba38a0b3 | ||
|
5d3af346dd | ||
|
d882def373 | ||
|
3761dbba8b | ||
|
ae7b19c760 | ||
|
157218c507 | ||
|
60325df7db | ||
|
64a62ebcfb | ||
|
a42a133a18 | ||
|
a41cd9b1fa | ||
|
8bfc6afe33 | ||
|
5b67e6817c | ||
|
48f87c1eea | ||
|
aced6030ee | ||
|
c5aa35f8ef | ||
|
7a56aa910e | ||
|
bd0df03248 | ||
|
df4b564d69 | ||
|
9640bfb3fe | ||
|
2e69273922 | ||
|
1e014f4291 | ||
|
fbe47106e7 | ||
|
ea93c40644 | ||
|
82b11623f4 | ||
|
1a3f2acb95 | ||
|
fb8592952d | ||
|
216a262651 | ||
|
0178cdbdf2 | ||
|
b84d959d31 | ||
|
3eca28e4b5 | ||
|
98a91a3290 | ||
|
3cfe69d711 | ||
|
b9da74590b | ||
|
b253aca883 | ||
|
5ac7f7c2f6 | ||
|
9981f19409 | ||
|
dae59112d7 | ||
|
f25beff7a6 | ||
|
130ed3d5e5 | ||
|
830efa6ce2 | ||
|
a33e32ef60 | ||
|
aaffd902fd | ||
|
972a06c038 | ||
|
1763ede9ce | ||
|
f5fb8a95f4 | ||
|
948e032072 | ||
|
21aa8ae29f | ||
|
4fce3ceffc | ||
|
95a5e7b438 | ||
|
8fdedbd73b | ||
|
b962a0f166 | ||
|
0f0ee97e1e | ||
|
af80f3a976 | ||
|
1536f6a59c | ||
|
574b0bf48a | ||
|
0b100229e3 | ||
|
19d9c78514 | ||
|
140b7f0a61 | ||
|
56daad9c35 | ||
|
eaf09a4625 | ||
|
a576bd190b | ||
|
2ce92085e1 | ||
|
e6b1443fbb | ||
|
60ccae000b | ||
|
7ecd004d50 | ||
|
6b48fb767d | ||
|
6d4f93bb7f | ||
|
cfe8c0e187 | ||
|
6d5657eee7 | ||
|
600cbdb7ba | ||
|
8b82993dde | ||
|
ea185cbdda | ||
|
ee837dfc12 | ||
|
1d888bff43 | ||
|
38ad068d9b | ||
|
45c8c6c77f | ||
|
ceed7d1ba4 | ||
|
74e2bb4cf1 | ||
|
cc6bb13242 | ||
|
50beae7541 | ||
|
0f6b91109e | ||
|
f279c7b1c2 | ||
|
08b27848e1 | ||
|
e3dcc3d369 | ||
|
568fe2e97b | ||
|
cd77485193 | ||
|
ec0e76dabd | ||
|
1eebf0ebd1 | ||
|
0a7af75639 | ||
|
72012113fd | ||
|
54b3048584 | ||
|
3daad8fe87 | ||
|
a1c1ad317b | ||
|
dbd19bf27a | ||
|
97fad45237 | ||
|
cbda61d3fb | ||
|
afe195a862 | ||
|
e6adee2403 | ||
|
1fd534ef1e | ||
|
cfc91b62b0 | ||
|
24ec2cc6a6 | ||
|
28de2eecc9 | ||
|
ed3f0012b1 | ||
|
51074ca5df | ||
|
8aac574d63 | ||
|
c1f98d6837 | ||
|
3f60c39de4 | ||
|
4aa570ba88 | ||
|
233969e9e4 | ||
|
19e3a6af5d | ||
|
29501f5398 | ||
|
3408240ba6 | ||
|
e6725aa16f | ||
|
f34c0f4a99 | ||
|
52c7fd166b | ||
|
346b29ad8f | ||
|
064947356a | ||
|
d2258fb316 | ||
|
dda66d580f | ||
|
1d773df9f2 | ||
|
9be2f130f0 | ||
|
e345f9a4db | ||
|
3a928c8980 | ||
|
42dfc21b2d | ||
|
daed57c30e | ||
|
de0860c1bf | ||
|
4fbc63f50a | ||
|
3e1524fade | ||
|
ebe30d851b | ||
|
f97ce21e59 | ||
|
0b7d8e19c3 | ||
|
0ee6868b7f | ||
|
6a30c6b01c | ||
|
06d5c8e72d | ||
|
3252f1e301 | ||
|
7f292d34bd | ||
|
7c29847fbf | ||
|
66f0547ebf | ||
|
e941e2be7d | ||
|
28e33bc26c | ||
|
372513a5e2 | ||
|
5c505aefc4 | ||
|
9b3ca7f6b1 | ||
|
c5ddf5b381 | ||
|
61712bfb3b | ||
|
c3eb3f2943 | ||
|
d13e592dbf | ||
|
686f65f267 | ||
|
bb2ee71cd8 | ||
|
816383e9ef | ||
|
90cf6bb686 | ||
|
e930433800 | ||
|
a6b2994f8b | ||
|
8d7103116a | ||
|
9d95c5a26d | ||
|
9fbe61e01f | ||
|
7c442c1736 | ||
|
48a3b4e7cd | ||
|
90ecf58a9c | ||
|
0a966e59e6 | ||
|
acb78afc2d | ||
|
d0ed62e747 | ||
|
44e977ef35 | ||
|
f93f975e42 | ||
|
9fa8b446cc | ||
|
e065b28d1a | ||
|
6108759d63 | ||
|
4e315b81cc | ||
|
802c976d07 | ||
|
a5018ed029 | ||
|
1a09c361f5 | ||
|
58f64c85ca | ||
|
9a6886e5e2 | ||
|
deef6425b3 | ||
|
9e3df3fac1 | ||
|
03e21fc957 | ||
|
3ed729e1d7 | ||
|
1cde6a2e08 | ||
|
f937fe4a87 | ||
|
190292a7da | ||
|
86d2a44850 | ||
|
ef429c587b | ||
|
f9cb67b32c | ||
|
f6932b885d | ||
|
b1ba7f4380 | ||
|
2eae3e8e78 | ||
|
077fe55d81 | ||
|
e92e14c845 | ||
|
8b7f39ead8 | ||
|
48a94ccbfc | ||
|
a9b163cd7f | ||
|
3236b1d1c9 | ||
|
d85fa8854e | ||
|
522ae8d02f | ||
|
7173223df5 | ||
|
186d2c2964 | ||
|
ccb40688ec | ||
|
8d888203f0 | ||
|
a63223b25b | ||
|
3cccb00f51 | ||
|
cc0df3c315 | ||
|
7b08e9b5d3 | ||
|
b019cabd0c | ||
|
260a4db854 | ||
|
8497f285c4 | ||
|
6925843221 | ||
|
a6a7799dc5 | ||
|
3205cc79a7 | ||
|
71fce93088 | ||
|
537d6e5e65 | ||
|
d0b1e2f7de | ||
|
eb675e3e7e | ||
|
3f201aeb21 | ||
|
da6b6d44c1 | ||
|
b873b83691 | ||
|
19f649ec1d | ||
|
a786af0c19 | ||
|
42e9cf88cf | ||
|
33d7aff67e | ||
|
4e4050813a | ||
|
2d55e3343a | ||
|
8d8fd63b93 | ||
|
e2cab4d406 | ||
|
3eeaef0834 | ||
|
4921497904 | ||
|
71ce79bfb8 | ||
|
c76bd17ddd | ||
|
ecd8d7596b | ||
|
97fd0fe889 | ||
|
96fe1218f2 | ||
|
14c45be89c | ||
|
d5d0cf61b9 | ||
|
7606329617 | ||
|
7a1da45fff | ||
|
4905f5e722 | ||
|
ca3363466f | ||
|
207c4cd9e1 | ||
|
6221d1b407 | ||
|
f6ff03bf09 | ||
|
ae315c1106 | ||
|
8164cbbc5f | ||
|
2d76ce829c | ||
|
e604c3b77c | ||
|
d4f2121bc2 | ||
|
f328e5ecc1 | ||
|
19df22f784 | ||
|
3556b605c9 | ||
|
c26ac6b695 | ||
|
9f08c50791 | ||
|
95b2107728 | ||
|
2915c72a26 | ||
|
207a45b7e0 | ||
|
32b3386d23 | ||
|
094d5d5260 | ||
|
8b26894759 | ||
|
f4ad0f32f8 | ||
|
ca74f46b3e | ||
|
d7e0af62e3 | ||
|
21f2a824ad | ||
|
6bd46779fc | ||
|
b3f6e95d62 | ||
|
39dac1ff22 | ||
|
30236be2fd | ||
|
a9d4b6a61c | ||
|
c1e10473fb | ||
|
e8bba52190 | ||
|
1a504feab9 | ||
|
406e4a6928 | ||
|
f89e1bce90 | ||
|
d1b472c1c8 | ||
|
cabe2f5f20 | ||
|
970ae74cd5 | ||
|
50139ad184 | ||
|
d74666de58 | ||
|
e0df1b3fd9 | ||
|
bf978ba5a6 | ||
|
05b13dca55 | ||
|
720f6e7a17 | ||
|
71649fce29 | ||
|
42aa2edf19 | ||
|
b66c74767f | ||
|
39394da850 | ||
|
da9a320a40 | ||
|
5bdcd66117 | ||
|
930912fd0d | ||
|
5ebd0edf72 | ||
|
dda6458142 | ||
|
5568025f1d | ||
|
5189d3b485 | ||
|
901f60bc54 | ||
|
9f90100019 | ||
|
8db6d6750c | ||
|
36f6a76272 | ||
|
8696b78e59 | ||
|
493d773c18 | ||
|
9247460c2f | ||
|
ebadece27b | ||
|
f4b498031a | ||
|
eb77ff9696 | ||
|
c11ec03642 | ||
|
7744be938f | ||
|
646a6726a8 | ||
|
460955d578 | ||
|
2e1114c9fa | ||
|
a814c3b3c4 | ||
|
5e41ea1d2f | ||
|
350a775963 | ||
|
c0da6b935d | ||
|
a9162d2218 | ||
|
102884faf1 | ||
|
497a399372 | ||
|
292643890b | ||
|
c46480fe7e | ||
|
29f2e5f84e | ||
|
9ab40d2899 | ||
|
cc03ca9df1 | ||
|
bcb0b36238 | ||
|
7e7c81c5d2 | ||
|
d7ce5c55c8 | ||
|
59c0bee4b8 | ||
|
33f611a596 | ||
|
495c3d9c44 | ||
|
b4ad1fa44f | ||
|
b093900e48 | ||
|
27b338a90b | ||
|
ca51d6dfd9 | ||
|
47c1b50eba | ||
|
5d68a23b55 | ||
|
9f6e4e60d0 | ||
|
7a60c66940 | ||
|
31245353d5 | ||
|
c91e141a6c | ||
|
87c0363cd5 | ||
|
71bad39f5a | ||
|
40574f9ca3 | ||
|
752477b1ae | ||
|
ad9849bf26 | ||
|
9bfe163cf1 | ||
|
22f072faea | ||
|
57c7d77cdf | ||
|
7ac7bb9543 | ||
|
c82b5b8d8a | ||
|
15aa7de547 | ||
|
ee62d19115 | ||
|
cdcabb7fb7 | ||
|
494bdad887 | ||
|
ef09696ee5 | ||
|
8da60587e1 | ||
|
3a7e9a28d3 | ||
|
3535b582a1 | ||
|
07573ef2a6 | ||
|
92838f9972 | ||
|
ca5f66b368 | ||
|
af6af482c4 | ||
|
c65239155f | ||
|
12f0d963d9 | ||
|
6ab8ca4669 | ||
|
d65a98f828 | ||
|
79417d8d40 | ||
|
8bdb2ea667 | ||
|
8e887fbbf4 | ||
|
dc42dcf962 | ||
|
68cd66b210 | ||
|
39a9bea066 | ||
|
0776f645fd | ||
|
b408dc0706 | ||
|
626ee40970 | ||
|
f86c8f2077 | ||
|
1a501e3d53 | ||
|
c611fcc709 | ||
|
de1101df19 | ||
|
aca07954af | ||
|
06a51c045c | ||
|
7f7231038d | ||
|
fd6faabe16 | ||
|
26ca77d01b | ||
|
b983133675 | ||
|
02fc352bfb | ||
|
180de1041b | ||
|
ded9903a83 | ||
|
921e8e02f4 | ||
|
9d536b9aef | ||
|
d11b263ac2 | ||
|
a710e64bad | ||
|
b257a58417 | ||
|
eca14b763c | ||
|
5225a0f253 | ||
|
60b3effce3 | ||
|
b3e7e31bb0 | ||
|
3ab954882d | ||
|
7dd436ab17 | ||
|
085b0b7c08 | ||
|
76fa6dcef6 | ||
|
dde3de34c9 | ||
|
e88f0d4b77 | ||
|
172ab2f20a | ||
|
0ca97cd218 | ||
|
645c951fb6 | ||
|
4bed24a816 | ||
|
9104420c87 | ||
|
0d238f4c99 | ||
|
9b9c9ae8d4 | ||
|
1f06cfd5d8 | ||
|
ddcb76ac2d | ||
|
e21156b30b | ||
|
166edeed91 | ||
|
465aca029e | ||
|
86604d8e01 | ||
|
bb393f6496 | ||
|
7a099604c9 | ||
|
92009413f2 | ||
|
7763fc55bb | ||
|
042af94048 | ||
|
d91fb26409 | ||
|
3124a784fe | ||
|
936a2c2c59 | ||
|
53d3b46d4a | ||
|
fc55478890 | ||
|
d41c3e3c2d | ||
|
886ba1680d | ||
|
11c5523142 | ||
|
c0be9c5b97 | ||
|
ad2dad6612 | ||
|
5950bcd754 | ||
|
067b43fb5b | ||
|
b39160243f | ||
|
b460ffd120 | ||
|
a61c677a0d | ||
|
7afc1291a8 | ||
|
cc2d9f0cb5 | ||
|
73b66428a7 | ||
|
3a62b28344 | ||
|
f3b16d0e9d | ||
|
e999773566 | ||
|
6aaa98f669 | ||
|
f800178e7f | ||
|
07a2b60f45 | ||
|
f5fe5c1fa6 | ||
|
e353cf38ec | ||
|
947ebee7d4 | ||
|
d4eb11142a | ||
|
e4054d62fe | ||
|
37855e2b53 | ||
|
08371b25dc | ||
|
26100ad5d1 | ||
|
69427e98d5 | ||
|
d3e8607f58 | ||
|
cf6f57b41c | ||
|
d5a024c7f8 | ||
|
67fdc0491a | ||
|
5d69584a53 | ||
|
ef5b781e0c | ||
|
72505acb9e | ||
|
d7b55cfd0c | ||
|
7803a09f31 | ||
|
4f36509e5f | ||
|
198c0be5e7 | ||
|
c0bd352c88 | ||
|
3a62913a97 | ||
|
abb951daf1 | ||
|
4131cb4c7b | ||
|
7450427757 | ||
|
b836707979 | ||
|
70f805cdfe | ||
|
458bc5500c | ||
|
22b375534e | ||
|
e60afc6011 | ||
|
30073de932 | ||
|
b674bba155 | ||
|
50df5e0ec2 | ||
|
693f3d6b41 | ||
|
e78302c4e5 | ||
|
0559e9e763 | ||
|
8eacbc3a20 | ||
|
3fd3187d8f | ||
|
723d979be2 | ||
|
0c56522de1 | ||
|
8db308be4d | ||
|
30d32a1f9d | ||
|
08509acc04 | ||
|
6ff78c99fa | ||
|
34443546a8 | ||
|
d5e9e10d0a | ||
|
d262f740b2 | ||
|
d886ab9229 | ||
|
6be66205cc | ||
|
abb6fe326f | ||
|
d6c763f2ae | ||
|
34533b544a | ||
|
d92647a92b | ||
|
553a959102 | ||
|
9a33a1852a | ||
|
ce83a0e5bb | ||
|
d724ea294d | ||
|
038006d582 | ||
|
4a4301be38 | ||
|
50fe533246 | ||
|
11022fc485 | ||
|
c51585bab1 | ||
|
701ebd55c7 | ||
|
4c50c312c1 | ||
|
55f1ed171a | ||
|
97c4e46e39 | ||
|
3ed2e94f29 | ||
|
e98ea46d87 | ||
|
a8a15d48ad | ||
|
6bc69a12cc | ||
|
c6b23f8f89 | ||
|
be93dd98f7 | ||
|
a8f36b8381 | ||
|
1fb5824e1e | ||
|
35e438a62e | ||
|
cf707cbfaa | ||
|
1eb9d699b5 | ||
|
da94b461e0 | ||
|
ec32ff04b8 | ||
|
8d12dce174 | ||
|
63dc97fb29 | ||
|
6c315b1b8a | ||
|
231a19abb9 | ||
|
99a3dbef00 | ||
|
9934f9c43b | ||
|
c4e43c1cd5 | ||
|
3549914d0f | ||
|
e034046724 | ||
|
c975216f47 | ||
|
18e5192a58 | ||
|
dc8ee5a992 | ||
|
e75c3d0380 | ||
|
47cb0771f5 | ||
|
6884a1a5c6 | ||
|
d028f7ed9a | ||
|
fc6f16cb61 | ||
|
1692b41b30 | ||
|
8e6b6ae26e | ||
|
9a16b1b971 | ||
|
895aa1d3ab | ||
|
da6861188b | ||
|
1dd240974b | ||
|
b6b30c9bcf | ||
|
47b9a554ac | ||
|
3d8c810ab7 | ||
|
dfb68fb13d | ||
|
f854136676 | ||
|
18f525f7b4 | ||
|
4ee4c88e43 | ||
|
ec78bf3309 | ||
|
4bf7bfb41a | ||
|
538f935d44 | ||
|
952fc31dbc | ||
|
93326164e2 | ||
|
b78895e449 | ||
|
205a13eaa0 | ||
|
a9dd352986 | ||
|
e82d090bf5 | ||
|
9132f1831c | ||
|
3d04c0f4be | ||
|
ca3120919f | ||
|
e5bed812f5 | ||
|
d88a4629f9 | ||
|
24c04b5bb9 | ||
|
4c3ea25745 | ||
|
231814a595 | ||
|
820f37be0b | ||
|
02ec00dc5a | ||
|
4d2e4309f0 | ||
|
d2ba09ec98 | ||
|
41ddce152a | ||
|
df9c469acd | ||
|
8cf04b3345 | ||
|
1072b56970 | ||
|
f94fc28eb5 | ||
|
3b42440805 | ||
|
dcf53bced2 | ||
|
76e9a7bbb4 | ||
|
12ccc68c99 | ||
|
834295dde0 | ||
|
b7f4f5d234 | ||
|
61d85f32a2 | ||
|
6d489a9e81 | ||
|
85774d2bcd | ||
|
03c5b680ec | ||
|
8de0a2c7c6 | ||
|
d58655b4ae | ||
|
f2b482ef65 | ||
|
a2e8bd24ca | ||
|
584e978840 | ||
|
f00f900224 | ||
|
b9a02b0c24 | ||
|
af8d8113eb | ||
|
e8b6e6cad0 | ||
|
701f1b837b | ||
|
6781de96a5 | ||
|
4fef62c38d | ||
|
3ef95b4065 | ||
|
d621a37a60 | ||
|
6f93e63d21 | ||
|
04fb95ce9f | ||
|
548280da9f | ||
|
b9f0cf1c8b | ||
|
abb33bd65f | ||
|
542b959933 | ||
|
b2a99642a9 | ||
|
6f7e933713 | ||
|
3c0f047597 | ||
|
a6da2db4ea | ||
|
f85b847410 | ||
|
a6ee0dd8aa | ||
|
0ba2a3a191 | ||
|
761c327ac5 | ||
|
3760051169 | ||
|
787830d360 | ||
|
4018417ceb | ||
|
386256a424 | ||
|
f3701ff961 | ||
|
27295bc555 | ||
|
e62f9e33a1 | ||
|
fe45f283af | ||
|
5556907194 | ||
|
9d51821e84 | ||
|
c696385130 | ||
|
0a9d075b47 | ||
|
b63c4d6722 | ||
|
221825394f | ||
|
124f60593b | ||
|
09af40faeb | ||
|
bf59ddd01d | ||
|
fea67dea6a | ||
|
9f18c138d1 | ||
|
bfa68223e1 | ||
|
629e70f89d | ||
|
405dc7f557 | ||
|
cba8c40aa0 | ||
|
98b13933d9 | ||
|
062383bfd3 | ||
|
91e94556ad | ||
|
07ca46e92c | ||
|
57e354c297 | ||
|
fb0814602e | ||
|
5f664dbbbb | ||
|
5d30569575 | ||
|
46d1fc1c24 | ||
|
2c05b758c7 | ||
|
5788338a14 | ||
|
d786e1d614 | ||
|
c60a316e22 | ||
|
b73c9e992f | ||
|
4980f620f9 | ||
|
87b800c11d | ||
|
6e903e13a5 | ||
|
83c466dcd1 | ||
|
676ea489cc | ||
|
70fbfd8ede | ||
|
6234ccc974 | ||
|
0cfe3d45f5 | ||
|
41371ccae6 | ||
|
5807fee893 | ||
|
b2c1d6bc9b | ||
|
5fd22e5981 | ||
|
d0dce4cfa1 | ||
|
4375f8e382 | ||
|
42b515a1e5 | ||
|
6ab779cd06 | ||
|
a261e9fca2 | ||
|
50ccab487f | ||
|
ddd5e5717d | ||
|
390a278606 | ||
|
00423c54b5 | ||
|
f8f90d85ad | ||
|
91932ada63 | ||
|
dbb264dfc9 | ||
|
3aa89efcf4 | ||
|
82f40a92c1 | ||
|
ae1a950a93 | ||
|
2228181b35 | ||
|
7357120c81 | ||
|
0942e863f2 | ||
|
08f3618a47 | ||
|
8e7e821033 | ||
|
11d6f2ddd0 | ||
|
490384c69f | ||
|
468242b13b | ||
|
d3d49ce7f1 | ||
|
c303ec1553 | ||
|
d28df0b87e | ||
|
d1fbfb9c4e | ||
|
ccae0e1732 | ||
|
447203ce52 | ||
|
feccdad9d2 | ||
|
35fceca157 | ||
|
97db959305 | ||
|
4b9aeaf9e3 | ||
|
053d7cfe9f | ||
|
2959f219e4 | ||
|
b368d3abde | ||
|
b533bba3f3 | ||
|
aae67b8fbd | ||
|
d79354dbf5 | ||
|
aa693159dc | ||
|
5fef637e84 | ||
|
208a53fa39 | ||
|
875a92b95f | ||
|
c23848c03e | ||
|
96ac85038b | ||
|
69f051798e | ||
|
1c6da51000 | ||
|
d6694a4408 | ||
|
0ccca910df | ||
|
fd2909abb2 | ||
|
d586410416 | ||
|
4721e760e7 | ||
|
72700d1644 | ||
|
c274c35583 | ||
|
d2c3f8f496 | ||
|
bffb666914 | ||
|
ab615104f5 | ||
|
9c2674ee1e | ||
|
68ced9b553 | ||
|
177f6b377d | ||
|
55f871c193 | ||
|
ce2835265b | ||
|
75ae0e04e1 | ||
|
1f284fcd70 | ||
|
718a95c1d2 | ||
|
cd2854a5c6 | ||
|
86151622db | ||
|
915e3f0e28 | ||
|
a4e7b03185 | ||
|
e9ed874231 | ||
|
2a38cecd33 | ||
|
9698d4aa2a | ||
|
dd2851a0ff | ||
|
adf9377b61 | ||
|
700f39bfca | ||
|
baec7079e0 | ||
|
f83644edee | ||
|
30d4417064 | ||
|
b428fafade | ||
|
63d1dc307a | ||
|
55bfadadc4 | ||
|
179fae32a5 | ||
|
e220b24b70 | ||
|
9061256122 | ||
|
ea0d487f0b | ||
|
b2fd09625c | ||
|
5797c72e9c | ||
|
d02cfceb3d | ||
|
451af280a2 | ||
|
516776b630 | ||
|
4d0a1a97cc | ||
|
3ee5354e0f | ||
|
07295ac169 | ||
|
447e6db847 | ||
|
d84a028455 | ||
|
4327a866f4 | ||
|
1fbdfe340e | ||
|
4a47bdf596 | ||
|
8e2f90e342 | ||
|
32c7ca50ea | ||
|
19b9967a72 | ||
|
da71a37945 | ||
|
05fe2441a7 | ||
|
35488959b4 | ||
|
af1981eda2 | ||
|
38da88908d | ||
|
41abda9f03 | ||
|
5a8e2a8c2d | ||
|
7390e2490c | ||
|
04daa236ad | ||
|
31ceb4ddfb | ||
|
c2f811dd29 | ||
|
189e0c05fd | ||
|
8ee4ea4282 | ||
|
edcd4c6207 | ||
|
f5bd591d89 | ||
|
67b5a34bad | ||
|
27071b5cfb | ||
|
19b9c42562 | ||
|
bf6a40f39b | ||
|
bb0a1b0cfe | ||
|
2ac5c3282f | ||
|
6b3c356eb7 | ||
|
5c5cd34c2f | ||
|
1c6cf7a3b6 | ||
|
6b29eeeb1c | ||
|
2f43b8dc49 | ||
|
7b4cfd38bc | ||
|
d2e074e36b | ||
|
2623932886 | ||
|
b0a82b1dfe | ||
|
f15aa2f3e5 | ||
|
5d6792137d | ||
|
52a2891933 | ||
|
7ebc3a9489 | ||
|
04fb1421dc | ||
|
a4f17eaa8b | ||
|
e0c48e74bd | ||
|
a810f600bf | ||
|
ad9c813ed1 | ||
|
aa1d08687d | ||
|
39f72b3834 | ||
|
7332b4f1d9 | ||
|
b948799778 | ||
|
aec738745a | ||
|
ea19f7c360 | ||
|
0222d389ee | ||
|
b3a055a9b7 | ||
|
bd877ccf06 | ||
|
a8d87f80f3 | ||
|
6601d79b2d | ||
|
5ff843f97d | ||
|
b1c1e02c28 | ||
|
0ce0402edf | ||
|
5d13bb7aa2 | ||
|
c5e69e83b5 | ||
|
bcfca52e9e | ||
|
919e06a831 | ||
|
0d5957b97a | ||
|
6e4bba3d75 | ||
|
3e426e4c5b | ||
|
8d4f4af8ef | ||
|
3aa3c21d69 | ||
|
9a540841fd | ||
|
0a3fa40923 | ||
|
9f10f9a595 | ||
|
560e27a3f4 | ||
|
4df7cc948c | ||
|
b74a9445af | ||
|
a63a2b26cf | ||
|
43fd9d16c5 | ||
|
78e3908a00 | ||
|
a9c616284a | ||
|
386d8326ca | ||
|
cf3f742ad8 | ||
|
3a3e029270 | ||
|
435d12680d | ||
|
504b5bbd1b | ||
|
f953dfef11 | ||
|
95d48ac2e8 | ||
|
965e74f902 | ||
|
0cc43e10a5 | ||
|
82ab039abe | ||
|
e823fa6665 | ||
|
8cd4b338db | ||
|
9af30aca35 | ||
|
6fab195643 | ||
|
c90ffc7363 | ||
|
3eb4ec89f3 | ||
|
6c85a4b2f5 | ||
|
befc2c3ed6 | ||
|
62788d5b0d | ||
|
3c91a2b0a8 | ||
|
d3096f079f | ||
|
dff2aa20ff | ||
|
dae42c8f55 | ||
|
da64856f37 | ||
|
461fe36707 | ||
|
4ce071721f | ||
|
3cdfb779c7 | ||
|
3a43663630 | ||
|
360a66e945 | ||
|
13e162c404 | ||
|
65296228d7 | ||
|
443d199868 | ||
|
86c5f2df6e | ||
|
09b447a9e1 | ||
|
161ddcfa92 | ||
|
226dc49602 | ||
|
207569c4ed | ||
|
cf61d96188 | ||
|
319755662f | ||
|
055cd9aaad | ||
|
15697d5c0c | ||
|
0cd2d01f3f | ||
|
67877e403f | ||
|
0bce63e3ab | ||
|
6396bf6d89 | ||
|
5b45f267d6 | ||
|
f26f15fced | ||
|
a37044f36c | ||
|
a93ab37ea9 | ||
|
5d7364960a | ||
|
a7ae94c06e | ||
|
39e136e9b7 | ||
|
652b892fc1 | ||
|
aec87a3514 |
@@ -7,6 +7,7 @@ stages:
|
||||
- analysis
|
||||
- docs
|
||||
- flatpak
|
||||
- publish
|
||||
- deploy
|
||||
|
||||
.cache-paths: &cache-paths
|
||||
@@ -24,9 +25,8 @@ variables:
|
||||
BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true"
|
||||
FEATURE_FLAGS: "-Dvulkan=enabled -Dcloudproviders=enabled"
|
||||
MESON_TEST_TIMEOUT_MULTIPLIER: 3
|
||||
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v27"
|
||||
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v33"
|
||||
FLATPAK_IMAGE: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master"
|
||||
DOCS_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora-docs:v25"
|
||||
|
||||
.only-default:
|
||||
only:
|
||||
@@ -58,8 +58,10 @@ style-check-diff:
|
||||
- "${CI_PROJECT_DIR}/_build/report*.xml"
|
||||
- "${CI_PROJECT_DIR}/_build/report*.html"
|
||||
- "${CI_PROJECT_DIR}/_build/testsuite/reftests/output/*/*.png"
|
||||
- "${CI_PROJECT_DIR}/_build/testsuite/tools/output/*/*"
|
||||
- "${CI_PROJECT_DIR}/_build/testsuite/gsk/compare/*/*/*.png"
|
||||
- "${CI_PROJECT_DIR}/_build/testsuite/css/output/*/*.syscap"
|
||||
- "${CI_PROJECT_DIR}/_build_hello/meson-logs"
|
||||
cache:
|
||||
key: "$CI_JOB_NAME"
|
||||
paths:
|
||||
@@ -77,10 +79,16 @@ fedora-x86_64:
|
||||
variables:
|
||||
EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both"
|
||||
script:
|
||||
- .gitlab-ci/show-info-linux.sh
|
||||
- meson subprojects update
|
||||
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS}
|
||||
- mkdir _install
|
||||
- meson --prefix=${CI_PROJECT_DIR}/_install
|
||||
${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS}
|
||||
_build
|
||||
- ninja -C _build
|
||||
- meson compile -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
|
||||
- meson compile -C _build_hello
|
||||
- .gitlab-ci/run-tests.sh _build x11
|
||||
- .gitlab-ci/run-tests.sh _build wayland
|
||||
- .gitlab-ci/run-tests.sh _build broadway
|
||||
@@ -92,6 +100,7 @@ release-build:
|
||||
variables:
|
||||
EXTRA_MESON_FLAGS: "--buildtype=release"
|
||||
script:
|
||||
- .gitlab-ci/show-info-linux.sh
|
||||
- meson subprojects update
|
||||
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS}
|
||||
_build
|
||||
@@ -106,6 +115,7 @@ installed-tests:
|
||||
EXTRA_MESON_FLAGS: "--prefix=/usr --libdir=/usr/lib64 -Dinstall-tests=true"
|
||||
G_TEST_ACCESSIBLE: 1
|
||||
script:
|
||||
- .gitlab-ci/show-info-linux.sh
|
||||
- meson subprojects update
|
||||
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS}
|
||||
_build
|
||||
@@ -155,12 +165,16 @@ macos:
|
||||
- macos
|
||||
needs: []
|
||||
before_script:
|
||||
- bash .gitlab-ci/show-execution-environment.sh
|
||||
- bash .gitlab-ci/show-info-osx.sh
|
||||
- pip3 install --user meson==0.56
|
||||
- pip3 install --user ninja
|
||||
- export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH
|
||||
- export MESON_FORCE_BACKTRACE=1
|
||||
script:
|
||||
- meson -Dx11-backend=false
|
||||
-Dbroadway-backend=true
|
||||
-Dmacos-backend=true
|
||||
-Dmedia-gstreamer=disabled
|
||||
-Dintrospection=disabled
|
||||
-Dcpp_std=c++11
|
||||
-Dpixman:tests=disabled
|
||||
@@ -171,6 +185,22 @@ macos:
|
||||
paths:
|
||||
- "${CI_PROJECT_DIR}/_build/meson-logs"
|
||||
|
||||
vs2017-x64:
|
||||
extends: .only-default
|
||||
# TODO: Uncomment this when ready to merge.
|
||||
#only:
|
||||
# - branches@GNOME/gtk
|
||||
stage: build
|
||||
tags:
|
||||
- win32-ps
|
||||
needs: []
|
||||
script:
|
||||
- .gitlab-ci/test-msvc.bat
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- "${CI_PROJECT_DIR}/_build/meson-logs"
|
||||
|
||||
.flatpak-defaults:
|
||||
image: $FLATPAK_IMAGE
|
||||
stage: flatpak
|
||||
@@ -282,29 +312,37 @@ asan-build:
|
||||
allow_failure: true
|
||||
|
||||
reference:
|
||||
image: $DOCS_IMAGE
|
||||
image: $FEDORA_IMAGE
|
||||
stage: docs
|
||||
needs: []
|
||||
variables:
|
||||
EXTRA_MESON_FLAGS: "--buildtype=release"
|
||||
EXTRA_MESON_FLAGS: "--buildtype=release --force-fallback-for=gdk-pixbuf,pango"
|
||||
script:
|
||||
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true _build
|
||||
- ninja -C _build gdk4-doc gsk4-doc gtk4-doc
|
||||
- meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} -Dgtk_doc=true -Dgdk-pixbuf:gtk_doc=true -Dpango:gtk_doc=true _build
|
||||
- meson compile -C _build
|
||||
- mkdir -p _reference/
|
||||
- mv _build/docs/reference/gdk/html/ _reference/gdk/
|
||||
- mv _build/docs/reference/gsk/html/ _reference/gsk/
|
||||
- mv _build/docs/reference/gtk/html/ _reference/gtk/
|
||||
- mv _build/docs/reference/gdk/gdk4/ _reference/gdk4/
|
||||
- mv _build/docs/reference/gdk/gdk4-x11/ _reference/gdk4-x11/
|
||||
- mv _build/docs/reference/gdk/gdk4-wayland/ _reference/gdk4-wayland/
|
||||
- mv _build/docs/reference/gsk/gsk4/ _reference/gsk4/
|
||||
- mv _build/docs/reference/gtk/gtk4/ _reference/gtk4/
|
||||
- mv _build/subprojects/pango/docs/Pango/ _reference/Pango/
|
||||
- mv _build/subprojects/pango/docs/PangoCairo/ _reference/PangoCairo/
|
||||
- mv _build/subprojects/pango/docs/PangoFc/ _reference/PangoFc/
|
||||
- mv _build/subprojects/pango/docs/PangoFT2/ _reference/PangoFT2/
|
||||
- mv _build/subprojects/pango/docs/PangoOT/ _reference/PangoOT/
|
||||
- mv _build/subprojects/pango/docs/PangoXft/ _reference/PangoXft/
|
||||
- mv _build/subprojects/gdk-pixbuf/docs/gdk-pixbuf/ _reference/gdk-pixbuf/
|
||||
- mv _build/subprojects/gdk-pixbuf/docs/gdk-pixdata/ _reference/gdk-pixdata/
|
||||
artifacts:
|
||||
paths:
|
||||
- _reference
|
||||
|
||||
pages:
|
||||
stage: deploy
|
||||
publish-docs:
|
||||
stage: publish
|
||||
needs: ['reference']
|
||||
script:
|
||||
- mv _reference/ public/
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
- "curl -X POST -F token=${PAGES_TRIGGER_TOKEN} -F ref=docs-gtk-org https://gitlab.gnome.org/api/v4/projects/665/trigger/pipeline"
|
||||
only:
|
||||
- master
|
||||
refs:
|
||||
- master
|
||||
|
@@ -17,8 +17,8 @@ branch, as well as their available versions.
|
||||
### Checklist for Updating a CI image
|
||||
|
||||
- [ ] Update the `${image}.Dockerfile` file with the dependencies
|
||||
- [ ] Run `./run-docker.sh build --base ${image} --base-version ${number}`
|
||||
- [ ] Run `./run-docker.sh push --base ${image} --base-version ${number}`
|
||||
- [ ] Run `./run-docker.sh build --base ${image} --version ${number}`
|
||||
- [ ] Run `./run-docker.sh push --base ${image} --version ${number}`
|
||||
once the Docker image is built; you may need to log in by using
|
||||
`docker login` or `podman login`
|
||||
- [ ] Update the `image` keys in the `.gitlab-ci.yml` file with the new
|
||||
@@ -30,8 +30,8 @@ branch, as well as their available versions.
|
||||
- [ ] Write a new `${image}.Dockerfile` with the instructions to set up
|
||||
a build environment
|
||||
- [ ] Add the `pip3 install meson` incantation
|
||||
- [ ] Run `./run-docker.sh build --base ${image} --base-version ${number}`
|
||||
- [ ] Run `./run-docker.sh push --base ${image} --base-version ${number}`
|
||||
- [ ] Run `./run-docker.sh build --base ${image} --version ${number}`
|
||||
- [ ] Run `./run-docker.sh push --base ${image} --version ${number}`
|
||||
- [ ] Add the new job to `.gitlab-ci.yml` referencing the image
|
||||
- [ ] Open a merge request with your changes and let it run
|
||||
|
||||
|
@@ -1,92 +0,0 @@
|
||||
FROM fedora:31
|
||||
|
||||
RUN dnf -y install \
|
||||
adwaita-icon-theme \
|
||||
atk-devel \
|
||||
at-spi2-atk-devel \
|
||||
avahi-gobject-devel \
|
||||
cairo-devel \
|
||||
cairo-gobject-devel \
|
||||
ccache \
|
||||
clang \
|
||||
clang-analyzer \
|
||||
colord-devel \
|
||||
cups-devel \
|
||||
dbus-daemon \
|
||||
dbus-x11 \
|
||||
dejavu-sans-mono-fonts \
|
||||
desktop-file-utils \
|
||||
diffutils \
|
||||
elfutils-libelf-devel \
|
||||
fribidi-devel \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
gdk-pixbuf2-devel \
|
||||
gdk-pixbuf2-modules \
|
||||
gettext \
|
||||
git \
|
||||
glib2-devel \
|
||||
glib2-static \
|
||||
glibc-devel \
|
||||
glibc-headers \
|
||||
gnome-desktop-testing \
|
||||
gobject-introspection-devel \
|
||||
graphene-devel \
|
||||
gstreamer1-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gtk-doc \
|
||||
hicolor-icon-theme \
|
||||
iso-codes \
|
||||
itstool \
|
||||
json-glib-devel \
|
||||
lcov \
|
||||
libasan \
|
||||
libattr-devel \
|
||||
libcloudproviders-devel \
|
||||
libepoxy-devel \
|
||||
libffi-devel \
|
||||
libmount-devel \
|
||||
librsvg2 \
|
||||
libselinux-devel \
|
||||
libubsan \
|
||||
libXcomposite-devel \
|
||||
libXcursor-devel \
|
||||
libXcursor-devel \
|
||||
libXdamage-devel \
|
||||
libXfixes-devel \
|
||||
libXi-devel \
|
||||
libXinerama-devel \
|
||||
libxkbcommon-devel \
|
||||
libXrandr-devel \
|
||||
libXrender-devel \
|
||||
libXtst-devel \
|
||||
libxslt \
|
||||
mesa-dri-drivers \
|
||||
mesa-libEGL-devel \
|
||||
mesa-libGLES-devel \
|
||||
mesa-libwayland-egl-devel \
|
||||
ninja-build \
|
||||
pango-devel \
|
||||
pcre-devel \
|
||||
pcre-static \
|
||||
python3 \
|
||||
python3-jinja2 \
|
||||
python3-pip \
|
||||
python3-pygments \
|
||||
python3-wheel \
|
||||
redhat-rpm-config \
|
||||
sassc \
|
||||
systemtap-sdt-devel \
|
||||
vulkan-devel \
|
||||
wayland-devel \
|
||||
wayland-protocols-devel \
|
||||
weston \
|
||||
weston-libs \
|
||||
which \
|
||||
xorg-x11-server-Xvfb \
|
||||
&& dnf clean all
|
||||
|
||||
RUN pip3 install meson==0.55.3
|
||||
|
@@ -1,12 +0,0 @@
|
||||
FROM registry.gitlab.gnome.org/gnome/gtk/fedora-base:v25
|
||||
|
||||
RUN dnf -y install pandoc
|
||||
|
||||
ARG HOST_USER_ID=5555
|
||||
ENV HOST_USER_ID ${HOST_USER_ID}
|
||||
RUN useradd -u $HOST_USER_ID -ms /bin/bash user
|
||||
|
||||
USER user
|
||||
WORKDIR /home/user
|
||||
|
||||
ENV LANG C.UTF-8
|
@@ -1,4 +1,99 @@
|
||||
FROM registry.gitlab.gnome.org/gnome/gtk/fedora-base:v27
|
||||
FROM fedora:34
|
||||
|
||||
RUN dnf -y install \
|
||||
adwaita-icon-theme \
|
||||
atk-devel \
|
||||
at-spi2-atk-devel \
|
||||
avahi-gobject-devel \
|
||||
cairo-devel \
|
||||
cairo-gobject-devel \
|
||||
ccache \
|
||||
clang \
|
||||
clang-analyzer \
|
||||
clang-tools-extra \
|
||||
colord-devel \
|
||||
cups-devel \
|
||||
dbus-daemon \
|
||||
dbus-x11 \
|
||||
dejavu-sans-mono-fonts \
|
||||
desktop-file-utils \
|
||||
diffutils \
|
||||
elfutils-libelf-devel \
|
||||
fribidi-devel \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
gdk-pixbuf2-devel \
|
||||
gdk-pixbuf2-modules \
|
||||
gettext \
|
||||
git \
|
||||
glib2-devel \
|
||||
glib2-static \
|
||||
glibc-devel \
|
||||
glibc-headers \
|
||||
gnome-desktop-testing \
|
||||
gobject-introspection-devel \
|
||||
graphene-devel \
|
||||
graphviz \
|
||||
gstreamer1-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
hicolor-icon-theme \
|
||||
iso-codes \
|
||||
itstool \
|
||||
json-glib-devel \
|
||||
lcov \
|
||||
libasan \
|
||||
libattr-devel \
|
||||
libcloudproviders-devel \
|
||||
libepoxy-devel \
|
||||
libffi-devel \
|
||||
libjpeg-turbo-devel \
|
||||
libmount-devel \
|
||||
libpng-devel \
|
||||
librsvg2 \
|
||||
libselinux-devel \
|
||||
libubsan \
|
||||
libXcomposite-devel \
|
||||
libXcursor-devel \
|
||||
libXcursor-devel \
|
||||
libXdamage-devel \
|
||||
libXfixes-devel \
|
||||
libXi-devel \
|
||||
libXinerama-devel \
|
||||
libxkbcommon-devel \
|
||||
libXrandr-devel \
|
||||
libXrender-devel \
|
||||
libXtst-devel \
|
||||
libxslt \
|
||||
mesa-dri-drivers \
|
||||
mesa-libEGL-devel \
|
||||
mesa-libGLES-devel \
|
||||
meson \
|
||||
ninja-build \
|
||||
pango-devel \
|
||||
pcre-devel \
|
||||
pcre-static \
|
||||
python3 \
|
||||
python3-gobject \
|
||||
python3-jinja2 \
|
||||
python3-markdown \
|
||||
python3-pip \
|
||||
python3-pygments \
|
||||
python3-toml \
|
||||
python3-typogrify \
|
||||
python3-wheel \
|
||||
redhat-rpm-config \
|
||||
sassc \
|
||||
systemtap-sdt-devel \
|
||||
vulkan-devel \
|
||||
wayland-devel \
|
||||
wayland-protocols-devel \
|
||||
weston \
|
||||
weston-libs \
|
||||
which \
|
||||
xorg-x11-server-Xvfb \
|
||||
&& dnf clean all
|
||||
|
||||
# Enable sudo for wheel users
|
||||
RUN sed -i -e 's/# %wheel/%wheel/' -e '0,/%wheel/{s/%wheel/# %wheel/}' /etc/sudoers
|
||||
|
@@ -24,6 +24,7 @@ flatpak build ${builddir} meson \
|
||||
-Dbuild-examples=false \
|
||||
-Dintrospection=disabled \
|
||||
-Ddemos=true \
|
||||
-Dprofile=devel \
|
||||
_flatpak_build
|
||||
|
||||
flatpak build ${builddir} ninja -C _flatpak_build install
|
||||
|
154
.gitlab-ci/pages/fonts.css
Normal file
@@ -0,0 +1,154 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021 GNOME Foundation
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
*/
|
||||
|
||||
/**
|
||||
* RedHat Fonts taken from https://github.com/RedHatOfficial/RedHatFont
|
||||
* License: SIL Open Font License 1.1 http://scripts.sil.org/OFL
|
||||
*/
|
||||
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif:ital,wght@0,400;0,700;1,400;1,700&family=Red+Hat+Display:ital,wght@0,400;0,500;0,700;0,900;1,400;1,500;1,700;1,900&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600&display=swap');
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatDisplayWeb";
|
||||
src: local('RedHatDisplayWeb'),
|
||||
url("RedHatDisplay-Regular.woff2") format("woff2"),
|
||||
url("RedHatDisplay-Regular.woff") format("woff");
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatDisplayWeb";
|
||||
src: local('RedHatDisplayWeb'),
|
||||
url("RedHatDisplay-RegularItalic.woff2") format("woff2"),
|
||||
url("RedHatDisplay-RegularItalic.woff") format("woff");
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatDisplayWeb";
|
||||
src: local('RedHatDisplayWeb'),
|
||||
url("RedHatDisplay-Medium.woff2") format("woff2"),
|
||||
url("RedHatDisplay-Medium.woff") format("woff");
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatDisplayWeb";
|
||||
src: local('RedHatDisplayWeb'),
|
||||
url("RedHatDisplay-MediumItalic.woff2") format("woff2"),
|
||||
url("RedHatDisplay-MediumItalic.woff") format("woff");
|
||||
font-style: italic;
|
||||
font-weight: 500;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatDisplayWeb";
|
||||
src: local('RedHatDisplayWeb'),
|
||||
url("RedHatDisplay-Bold.woff2") format("woff2"),
|
||||
url("RedHatDisplay-Bold.woff") format("woff");
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatDisplayWeb";
|
||||
src: local('RedHatDisplayWeb'),
|
||||
url("RedHatDisplay-BoldItalic.woff2") format("woff2"),
|
||||
url("RedHatDisplay-BoldItalic.woff") format("woff");
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatDisplayWeb";
|
||||
src: local('RedHatDisplayWeb'),
|
||||
url("RedHatDisplay-Black.woff2") format("woff2"),
|
||||
url("RedHatDisplay-Black.woff") format("woff");
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatDisplayWeb";
|
||||
src: local('RedHatDisplayWeb'),
|
||||
url("RedHatDisplay-BlackItalic.woff2") format("woff2"),
|
||||
url("RedHatDisplay-BlackItalic.woff") format("woff");
|
||||
font-style: italic;
|
||||
font-weight: 900;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatTextWeb";
|
||||
src: local('RedHatTextWeb'),
|
||||
url("RedHatText-Regular.woff2") format("woff2"),
|
||||
url("RedHatText-Regular.woff") format("woff");
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatTextWeb";
|
||||
src: local('RedHatTextWeb'),
|
||||
url("RedHatText-RegularItalic.woff2") format("woff2"),
|
||||
url("RedHatText-RegularItalic.woff") format("woff");
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatTextWeb";
|
||||
src: local('RedHatTextWeb'),
|
||||
url("RedHatText-Medium.woff2") format("woff2"),
|
||||
url("RedHatText-Medium.woff") format("woff");
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatTextWeb";
|
||||
src: local('RedHatTextWeb'),
|
||||
url("RedHatText-MediumItalic.woff2") format("woff2"),
|
||||
url("RedHatText-MediumItalic.woff") format("woff");
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatTextWeb";
|
||||
src: local('RedHatTextWeb'),
|
||||
url("RedHatText-Bold.woff2") format("woff2"),
|
||||
url("RedHatText-Bold.woff") format("woff");
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: fallback;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "RedHatTextWeb";
|
||||
src: local('RedHatTextWeb'),
|
||||
url("RedHatText-BoldItalic.woff2") format("woff2"),
|
||||
url("RedHatText-BoldItalic.woff") format("woff");
|
||||
font-style: italic;
|
||||
font-weight: 900;
|
||||
font-display: fallback;
|
||||
}
|
138
.gitlab-ci/pages/gtk-logo.svg
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="128"
|
||||
height="128"
|
||||
id="svg6843"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
version="1.0"
|
||||
sodipodi:docname="gtk-logo.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
inkscape:export-filename="/home/ebassi/Pictures/gtk-logo-256.png"
|
||||
inkscape:export-xdpi="192"
|
||||
inkscape:export-ydpi="192">
|
||||
<defs
|
||||
id="defs6845">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-50 : 600 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="700 : 600 : 1"
|
||||
inkscape:persp3d-origin="300 : 400 : 1"
|
||||
id="perspective13" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:cx="69.874353"
|
||||
inkscape:cy="64.313526"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
width="128px"
|
||||
height="128px"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1016"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid7947" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata6848">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<dc:date />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title />
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title />
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title />
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:identifier />
|
||||
<dc:source />
|
||||
<dc:relation />
|
||||
<dc:language />
|
||||
<dc:subject>
|
||||
<rdf:Bag />
|
||||
</dc:subject>
|
||||
<dc:coverage />
|
||||
<dc:description />
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title />
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
<cc:license
|
||||
rdf:resource="" />
|
||||
</cc:Work>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path6976"
|
||||
d="M 20.88413,30.82696 L 53.816977,55.527708 L 107.33282,39.060543 L 70.587303,17.177763 L 20.88413,30.82696 z"
|
||||
style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||
<path
|
||||
id="path6978"
|
||||
d="M 22.94243,82.287118 L 20.88413,30.82696 L 53.816977,55.527708 L 53.816977,111.10486 L 22.94243,82.287118 z"
|
||||
style="fill:#e40000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||
<path
|
||||
id="path6980"
|
||||
d="M 53.816977,111.10486 L 103.21619,90.5207 L 107.33282,39.060543 L 53.816977,55.527708 L 53.816977,111.10486 z"
|
||||
style="fill:#7fe719;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccc"
|
||||
id="path6982"
|
||||
d="M 23.216626,81.319479 L 70.48573,67.361442 L 103.38422,90.444516"
|
||||
style="opacity:1;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path6984"
|
||||
d="M 70.434539,17.875593 L 70.434539,66.984877"
|
||||
style="opacity:1;fill:#babdb6;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.8 KiB |
149
.gitlab-ci/pages/index.html
Normal file
@@ -0,0 +1,149 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2021 GNOME Foundation
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>GTK Documentation</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta property="og:site_name" content="https://docs.gtk.org"/>
|
||||
<meta property="og:title" content="GTK Documentation"/>
|
||||
<meta property="og:url" content="https://docs.gtk.org"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:description" content="API reference for GTK"/>
|
||||
|
||||
<meta name="twitter:title" content="GTK Documentation"/>
|
||||
<meta name="twitter:url" content="https://docs.gtk.org"/>
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
|
||||
<link rel="canonical" href="https://docs.gtk.org"/>
|
||||
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
|
||||
<script src="main.js"></script>
|
||||
|
||||
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="body-wrapper" tabindex="-1">
|
||||
|
||||
<nav class="sidebar">
|
||||
|
||||
<div class="section">
|
||||
<img src="gtk-logo.svg" class="logo"/>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h5>Sections</h5>
|
||||
<div class="links">
|
||||
<a href="#user-interface">User interface</a>
|
||||
<a href="#core-libraries">Core libraries</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
<button id="btn-to-top" class="hidden"><span class="up-arrow"></span></button>
|
||||
|
||||
<section id="main" class="content">
|
||||
<header>
|
||||
<h1>GTK Documentation</h1>
|
||||
</header>
|
||||
|
||||
<div class="toggle-wrapper">
|
||||
<h4 id="user-interface">
|
||||
User interface
|
||||
<a href="#user-interface" class="anchor"></a>
|
||||
</h4>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="gdk">GTK</h5>
|
||||
<p>GTK is the primary library used to construct user interfaces. It
|
||||
provides user interface controls and signal callbacks to respond to
|
||||
user actions.</p>
|
||||
<p><a href="https://docs.gtk.org/gtk4/">GTK API reference</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="gdk">GSK</h5>
|
||||
<p>An intermediate layer which provides a rendering API implemented using Cairo, OpenGL or Vulkan.</p>
|
||||
<p><a href="https://docs.gtk.org/gsk4/">GSK API reference</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="gdk">GDK</h5>
|
||||
<p>An intermediate layer which isolates GTK from the details of the windowing system.</p>
|
||||
<p><a href="https://docs.gtk.org/gdk4/">GDK API reference</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="pango">Pango</h5>
|
||||
<p>Pango is the core text and font handling library used in GTK
|
||||
applications. It has extensive support for the different writing
|
||||
systems used throughout the world.</p>
|
||||
<p><a href="https://docs.gtk.org/Pango/">Pango API reference</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="gdk-pixbuf">GdkPixbuf</h5>
|
||||
<p>GdkPixbuf is a library for image loading and manipulation.</p>
|
||||
<p><a href="https://docs.gtk.org/gdk-pixbuf/">GdkPixbuf API reference</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="cairo">Cairo</h5>
|
||||
<p>Cairo is a 2D graphics library with support for multiple output
|
||||
devices. It is designed to produce consistent, high quality output
|
||||
on all media.</p>
|
||||
<p><a href="https://www.cairographics.org/manual/" class="external">Cairo API reference</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="toggle-wrapper">
|
||||
<h4 id="core-libraries" style="display:flex;">
|
||||
Core libraries
|
||||
<a href="#core-libraries" class="anchor"></a>
|
||||
</h4>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="glib">GLib</h5>
|
||||
<p>GLib provides the core application building blocks for libraries
|
||||
and applications written in C. It provides common data types
|
||||
used in GTK, the main loop implementation, and a large set of
|
||||
utility functions for strings and general portability across
|
||||
different platforms.</p>
|
||||
<p><a href="https://developer.gnome.org/glib/" class="external">GLib API reference</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="gobject">GObject</h5>
|
||||
<p>GObject provides the object system used by GTK.</p>
|
||||
<p><a href="https://developer.gnome.org/gobject/" class="external">GObject API reference</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docblock">
|
||||
<h5 id="gio">GIO</h5>
|
||||
<p>GIO provides a portable, modern and easy-to-use file system
|
||||
abstraction API for accessing local and remote files; a set of
|
||||
low and high level abstractions over the <a href="https://www.freedesktop.org/wiki/Software/dbus/" class="external">DBus</a>
|
||||
IPC specification; an application settings API; portable networking
|
||||
abstractions; and additional utilities for writing asynchronous
|
||||
operations without blocking the user interface of your application.</p>
|
||||
<p><a href="https://developer.gnome.org/gio/" class="external">GIO API reference</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
140
.gitlab-ci/pages/main.js
Normal file
@@ -0,0 +1,140 @@
|
||||
// SPDX-FileCopyrightText: 2021 GNOME Foundation
|
||||
//
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function hasClass(elem, className) {
|
||||
return elem && elem.classList && elem.classList.contains(className);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function addClass(elem, className) {
|
||||
if (!elem || !elem.classList) {
|
||||
return;
|
||||
}
|
||||
elem.classList.add(className);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function removeClass(elem, className) {
|
||||
if (!elem || !elem.classList) {
|
||||
return;
|
||||
}
|
||||
elem.classList.remove(className);
|
||||
}
|
||||
|
||||
function insertAfter(newNode, referenceNode) {
|
||||
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
|
||||
}
|
||||
|
||||
function onEach(arr, func, reversed) {
|
||||
if (arr && arr.length > 0 && func) {
|
||||
var length = arr.length;
|
||||
var i;
|
||||
if (reversed !== true) {
|
||||
for (i = 0; i < length; ++i) {
|
||||
if (func(arr[i]) === true) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (i = length - 1; i >= 0; --i) {
|
||||
if (func(arr[i]) === true) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function onEachLazy(lazyArray, func, reversed) {
|
||||
return onEach(
|
||||
Array.prototype.slice.call(lazyArray),
|
||||
func,
|
||||
reversed);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function hasOwnProperty(obj, property) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, property);
|
||||
}
|
||||
|
||||
window.addEventListener("load", function() {
|
||||
"use strict;"
|
||||
|
||||
var main = document.getElementById("main");
|
||||
var btnToTop = document.getElementById("btn-to-top");
|
||||
|
||||
function labelForToggleButton(isCollapsed) {
|
||||
if (isCollapsed) {
|
||||
return "+";
|
||||
}
|
||||
return "\u2212";
|
||||
}
|
||||
|
||||
function createToggle(isCollapsed) {
|
||||
var toggle = document.createElement("a");
|
||||
toggle.href = "javascript:void(0)";
|
||||
toggle.className = "collapse-toggle";
|
||||
toggle.innerHTML = "[<span class=\"inner\">"
|
||||
+ labelForToggleButton(isCollapsed)
|
||||
+ "</span>]";
|
||||
|
||||
return toggle;
|
||||
}
|
||||
|
||||
function toggleClicked() {
|
||||
if (hasClass(this, "collapsed")) {
|
||||
removeClass(this, "collapsed");
|
||||
this.innerHTML = "[<span class=\"inner\">"
|
||||
+ labelForToggleButton(false)
|
||||
+ "</span>]";
|
||||
onEachLazy(this.parentNode.getElementsByClassName("docblock"), function(e) {
|
||||
removeClass(e, "hidden");
|
||||
});
|
||||
} else {
|
||||
addClass(this, "collapsed");
|
||||
this.innerHTML = "[<span class=\"inner\">"
|
||||
+ labelForToggleButton(true)
|
||||
+ "</span>]";
|
||||
onEachLazy(this.parentNode.getElementsByClassName("docblock"), function(e) {
|
||||
addClass(e, "hidden");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
onEachLazy(document.getElementsByClassName("toggle-wrapper"), function(e) {
|
||||
let sectionHeader = e.querySelector(".section-header");
|
||||
let fragmentMatches = sectionHeader !== null && location.hash === "#" + sectionHeader.getAttribute('id');
|
||||
collapsedByDefault = hasClass(e, "default-hide") && !fragmentMatches;
|
||||
var toggle = createToggle(collapsedByDefault);
|
||||
toggle.onclick = toggleClicked;
|
||||
e.insertBefore(toggle, e.firstChild);
|
||||
if (collapsedByDefault) {
|
||||
addClass(toggle, "collapsed");
|
||||
onEachLazy(e.getElementsByClassName("docblock"), function(d) {
|
||||
addClass(d, "hidden");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function scrollBackTop(e) {
|
||||
e.preventDefault();
|
||||
window.scroll({
|
||||
top: 0,
|
||||
behavior: 'smooth',
|
||||
});
|
||||
}
|
||||
|
||||
function toggleScrollButton() {
|
||||
if (window.scrollY < 400) {
|
||||
addClass(btnToTop, "hidden");
|
||||
} else {
|
||||
removeClass(btnToTop, "hidden");
|
||||
}
|
||||
}
|
||||
|
||||
window.onscroll = toggleScrollButton;
|
||||
btnToTop.onclick = scrollBackTop;
|
||||
}, false);
|
747
.gitlab-ci/pages/style.css
Normal file
@@ -0,0 +1,747 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021 GNOME Foundation
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
*/
|
||||
|
||||
@import url("fonts.css");
|
||||
|
||||
/*********************************
|
||||
* LIGHT THEME
|
||||
*********************************/
|
||||
:root {
|
||||
|
||||
/* colors */
|
||||
--text-color: #333;
|
||||
--text-color-muted: #999;
|
||||
--primary: rgb(28, 118, 228);
|
||||
--body-bg: #fff;
|
||||
--sidebar-primary: rgb(144, 194, 255);
|
||||
--sidebar-bg: #151515;
|
||||
--sidebar-selected-bg: var(--primary);
|
||||
--sidebar-text-color: #fafafa;
|
||||
--sidebar-padding: 1.5em;
|
||||
|
||||
/* boxes, e.g. code blocks */
|
||||
--box-bg: rgba(135, 135, 135, 0.085);
|
||||
--box-radius: 0.35rem;
|
||||
--box-padding: 0.75rem;
|
||||
--box-margin: 0.75rem 0;
|
||||
--box-text-color: #111;
|
||||
|
||||
/* typography */
|
||||
--body-font-family: "Noto Serif",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
|
||||
--body-font-scale: 0.95;
|
||||
--body-font-size: calc(var(--body-font-scale) * clamp(16px, 1vw, 20px));
|
||||
--body-font-weight: normal;
|
||||
|
||||
--monospace-font-family: "Source Code Pro", monospace;
|
||||
--monospace-font-size: calc(0.86 * var(--body-font-size)); /* Monospace fonts are very different in terms of font-sizes. Adjust this value to scale it */
|
||||
|
||||
--heading-font-family: "Red Hat Display", var(--body-font-family);
|
||||
--heading-weight: 900;
|
||||
--heading-font-scale: 1.05;
|
||||
|
||||
--heading-small-font-family: var(--heading-font-family);
|
||||
--heading-small-weight: 600;
|
||||
--heading-small-font-scale: 1;
|
||||
|
||||
--heading-table-font-family: var(--heading-font-family);
|
||||
--heading-table-weight: 600;
|
||||
|
||||
--heading-docblock-color: #6d6d6d; /* docblocks have headings from source comments. we want them to differ.*/
|
||||
--heading-docblock-scale: 0.9; /* docblocks have headings from source comments. we want them to differ.*/
|
||||
|
||||
--symbol-font-family: var(--heading-font-family);
|
||||
--symbol-font-weight: 500;
|
||||
--symbol-font-scale: 1;
|
||||
|
||||
--table-font-size: 0.92em; /* Tables often contain lots information. It's better to scale them down a big to get more sutff fitted inside */
|
||||
|
||||
/* misc */
|
||||
--prefered-content-width: 90ch; /* The preferred width for the readable content */
|
||||
--anchor-sign: "#";
|
||||
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* DARK THEME (overrides)
|
||||
*********************************/
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--primary: rgb(144, 194, 255);
|
||||
--text-color: #f6f6f6;
|
||||
--text-color-muted: #686868;
|
||||
--body-bg: #121212;
|
||||
--sidebar-primary: rgb(144, 194, 255);
|
||||
--sidebar-bg: #1e1e1e;
|
||||
--sidebar-selected-bg: rgb(17, 112, 228);
|
||||
--sidebar-text-color: #fafafa;
|
||||
--box-bg: rgba(135, 135, 135, 0.1);
|
||||
--box-text-color: #fff;
|
||||
--heading-docblock-color: #b7b7b7;
|
||||
}
|
||||
|
||||
/* fix dark theme syntax highlighting with a filter (for now) */
|
||||
.highlight pre span {
|
||||
filter: brightness(6);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* GENERAL STYLING
|
||||
*********************************/
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
::-moz-selection {
|
||||
color: white;
|
||||
background: var(--primary);
|
||||
}
|
||||
|
||||
::selection {
|
||||
color: white;
|
||||
background: var(--primary);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
border-radius: 10px;
|
||||
background: rgba(128, 128, 128, 0.6);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: rgba(128, 128, 128, 1);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: rgba(128, 128, 128, 0.15);
|
||||
}
|
||||
|
||||
* {
|
||||
scrollbar-width: initial;
|
||||
}
|
||||
|
||||
body {
|
||||
font: 16px/1.5 var(--body-font-family);
|
||||
font-weight: var(--body-font-weight);
|
||||
font-size: var(--body-font-size);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
|
||||
-webkit-font-feature-settings: "kern", "liga";
|
||||
-moz-font-feature-settings: "kern", "liga";
|
||||
font-feature-settings: "kern", "liga";
|
||||
color: var(--text-color);
|
||||
background: var(--body-bg);
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: var(--heading-font-family);
|
||||
font-weight: var(--heading-weight);
|
||||
margin: 1.75em 0 0.75em 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.75em * var(--heading-font-scale));
|
||||
}
|
||||
|
||||
|
||||
header h1 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.4em * var(--heading-font-scale));
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.2em * var(--heading-font-scale));
|
||||
}
|
||||
|
||||
header h3 {
|
||||
color: var(--text-color-muted);
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
h4, h5 {
|
||||
font-size: calc(1em * var(--heading-font-scale));
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: calc(1em * var(--heading-small-font-scale));
|
||||
font-family: var(--heading-small-font-family);
|
||||
font-weight: var(--heading-small-weight);
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
ul ul, ol ul, ul ol, ol ol {
|
||||
margin-bottom: .6em;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 .6em 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--primary);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
summary {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 3px solid var(--primary);
|
||||
background: var(--box-bg);
|
||||
padding: var(--box-padding);
|
||||
border-radius: var(--box-radius);
|
||||
margin: var(--box--margin);
|
||||
}
|
||||
|
||||
code,
|
||||
pre {
|
||||
font-family: var(--monospace-font-family);
|
||||
font-size: var(--monospace-font-size);
|
||||
color: var(--box-text-color);
|
||||
}
|
||||
|
||||
pre {
|
||||
background: var(--box-bg);
|
||||
padding: var(--box-padding);
|
||||
border-radius: var(--box-radius);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
code {
|
||||
background: var(--box-bg);
|
||||
padding: 0 0.35em;
|
||||
border-radius: 0.35rem;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
a > code {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
|
||||
pre pre,
|
||||
pre code {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 1em;
|
||||
background: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
font-family: inherit;
|
||||
font-weight: inherit;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
strong, b {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* fix unwanted margins in tables, code, lists and blockquotes */
|
||||
li > *:first-child,
|
||||
li > *:first-child > *:first-child,
|
||||
li > *:first-child > *:first-child > *:first-child,
|
||||
td > *:first-child,
|
||||
td > *:first-child > *:first-child,
|
||||
td > *:first-child > *:first-child > *:first-child,
|
||||
pre > *:first-child,
|
||||
pre > *:first-child > *:first-child,
|
||||
pre > *:first-child > *:first-child > *:first-child,
|
||||
blockquote > *:first-child,
|
||||
blockquote > *:first-child > *:first-child,
|
||||
blockquote > *:first-child > *:first-child > *:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
li > *:last-child,
|
||||
li > *:last-child > *:last-child,
|
||||
li > *:last-child > *:last-child > *:last-child,
|
||||
td > *:last-child,
|
||||
td > *:last-child > *:last-child,
|
||||
td > *:last-child > *:last-child > *:last-child,
|
||||
pre > *:last-child,
|
||||
pre > *:last-child > *:last-child,
|
||||
pre > *:last-child > *:last-child > *:last-child,
|
||||
blockquote > *:last-child,
|
||||
blockquote > *:last-child > *:last-child,
|
||||
blockquote > *:last-child > *:last-child > *:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* PAGE STRUCTURE
|
||||
*********************************/
|
||||
#body-wrapper {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#body-wrapper:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#main {
|
||||
position: relative;
|
||||
flex-grow: 1;
|
||||
min-width: 0;
|
||||
box-shadow: 0 0 134px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
footer {
|
||||
width: 100%;
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* Button
|
||||
*********************************/
|
||||
|
||||
#btn-to-top {
|
||||
position: fixed;
|
||||
bottom: 12px;
|
||||
right: 32px;
|
||||
z-index: 1000;
|
||||
border-radius: 50%;
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
border: 1px solid var(--primary);
|
||||
background: var(--box-bg);
|
||||
color: var(--text-color);
|
||||
cursor: pointer;
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
#btn-to-top > .up-arrow:after {
|
||||
content: "🡅"
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* SIDEBAR
|
||||
*********************************/
|
||||
.sidebar {
|
||||
scrollbar-width: thin;
|
||||
background: var(--sidebar-bg);
|
||||
border-right: 1px solid var(--sidebar-bg);
|
||||
min-width: 40ch;
|
||||
padding: var(--sidebar-padding);
|
||||
color: var(--sidebar-text-color);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 2;
|
||||
height: 100vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.sidebar a,
|
||||
.sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.sidebar .logo {
|
||||
display: block;
|
||||
margin: 2rem auto 0 auto;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.sidebar .section > ul > li {
|
||||
margin-right: -10px;
|
||||
}
|
||||
|
||||
.sidebar .section h3, .sidebar .section h5 {
|
||||
text-align: left;
|
||||
padding-left: 0.5rem;
|
||||
padding-right: 0.5rem;
|
||||
font-weight: var(--heading-weight);
|
||||
}
|
||||
|
||||
.sidebar .section h5 {
|
||||
font-size: 1em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.sidebar .namespace > h3 {
|
||||
margin-bottom: 0;
|
||||
padding: 0;
|
||||
font-size: 1.5em;
|
||||
text-transform: uppercase;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.sidebar .namespace > p {
|
||||
font-size: 0.9em;
|
||||
opacity: 0.8;
|
||||
padding-left: 0.5rem;
|
||||
}
|
||||
|
||||
.sidebar .section {
|
||||
padding-left: 0.5rem;
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
|
||||
.sidebar .links {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.sidebar .section a {
|
||||
display: block;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
transition: background-color 150ms ease;
|
||||
color: var(--sidebar-primary);
|
||||
border-radius: var(--box-radius);
|
||||
padding: 0.2rem 0.5rem;
|
||||
margin-bottom: 0.15rem;
|
||||
}
|
||||
|
||||
.sidebar .section a:hover {
|
||||
background-color: rgba(127, 127, 127, 0.2);
|
||||
color: var(--sidebar-text-color);
|
||||
}
|
||||
|
||||
.sidebar .section a.current {
|
||||
background-color: var(--sidebar-selected-bg);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.sidebar .search {
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sidebar .search input[type="text"] {
|
||||
border-color: transparent;
|
||||
width: 100%;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 50px;
|
||||
padding: 6px 12px;
|
||||
display: inline-block;
|
||||
font-size: 80%;
|
||||
box-shadow: inset 0 1px 3px #ddd;
|
||||
transition: border .3s linear;
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* ANCHORS & TOGGLERS
|
||||
*********************************/
|
||||
.anchor,
|
||||
.md-anchor {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-decoration: none;
|
||||
padding: 0 0.5em;
|
||||
color: var(--text-color-muted);
|
||||
}
|
||||
|
||||
.anchor:hover,
|
||||
.md-anchor:hover {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
.anchor:not([href]),
|
||||
.md-anchor:not([href]) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.anchor:before,
|
||||
.md-anchor:before {
|
||||
content: var(--anchor-sign); /*'§'*/
|
||||
}
|
||||
|
||||
.toggle-wrapper {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.collapse-toggle {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: -2em;
|
||||
white-space: nowrap;
|
||||
text-decoration: none;
|
||||
font-size: 0.8em;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.collapse-toggle > .inner {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
border-radius: calc(0.75 * var(--box-radius));
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
color: var(--box-text-color);
|
||||
position: relative;
|
||||
left: -0.25rem;
|
||||
font-family: monospace;
|
||||
font-size: 0.7rem;
|
||||
font-weight: bold;
|
||||
background: var(--box-bg);
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* UTILITY
|
||||
*********************************/
|
||||
.deprecated > h6 > a {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* CONTENT STYLING
|
||||
*********************************/
|
||||
.content {
|
||||
padding: 2em 4em;
|
||||
overflow: visible;
|
||||
max-width: calc(var(--prefered-content-width) + 8em);
|
||||
}
|
||||
|
||||
.content table:not(.table-display) {
|
||||
border-spacing: 0 0.25rem;
|
||||
}
|
||||
|
||||
.content td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.content td:first-child {
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
.content td p:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.content td h1, .content td h2 {
|
||||
margin-left: 0;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.content tr:first-child td {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
kbd {
|
||||
display: inline-block;
|
||||
padding: 3px 5px;
|
||||
font: 15px monospace;
|
||||
line-height: 10px;
|
||||
vertical-align: middle;
|
||||
border: solid 1px;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.content tr:first-child {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.35);
|
||||
}
|
||||
|
||||
.content td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.content td:first-child {
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
.content td p:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.content td h4, .content td h5 {
|
||||
margin-left: 0;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.content tr:first-child td {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.srclink {
|
||||
color: var(--text-color-muted);
|
||||
font-size: 1rem;
|
||||
font-weight: var(--body-font-weight);
|
||||
flex-grow: 0;
|
||||
text-decoration: none;
|
||||
margin-left: auto;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.meta tr > td:not(:first-child) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.meta tr > td:first-child {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* DOCBLOCK STYLING
|
||||
*********************************/
|
||||
.docblock {
|
||||
position: relative;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.docblock h1 {
|
||||
font-size: calc(1.3em * var(--heading-docblock-scale) * var(--heading-font-scale));
|
||||
}
|
||||
|
||||
.docblock h2 {
|
||||
font-size: calc(1.2em * var(--heading-docblock-scale) * var(--heading-font-scale));
|
||||
}
|
||||
|
||||
.docblock h3 {
|
||||
font-size: calc(1.1em * var(--heading-docblock-scale) * var(--heading-font-scale));
|
||||
}
|
||||
|
||||
.docblock h4 {
|
||||
font-size: calc(1.05em * var(--heading-docblock-scale) * var(--heading-font-scale));
|
||||
}
|
||||
|
||||
.docblock h1,
|
||||
.docblock h2,
|
||||
.docblock h3,
|
||||
.docblock h4,
|
||||
.docblock h5,
|
||||
.docblock h6 {
|
||||
color: var(--heading-docblock-color)
|
||||
}
|
||||
|
||||
.docblock table {
|
||||
margin: .25em 0;
|
||||
max-width: 100%;
|
||||
font-size: var(--table-font-size);
|
||||
}
|
||||
|
||||
.docblock table td {
|
||||
padding: .25em;
|
||||
}
|
||||
|
||||
.docblock table th {
|
||||
padding: .25em;
|
||||
text-align: left;
|
||||
font-family: var(--heading-table-font-family);
|
||||
font-weight: var(--heading-table-weight);
|
||||
}
|
||||
|
||||
.docblock table tr th:first-child,
|
||||
.docblock table tr td:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.docblock table tr th:last-child,
|
||||
.docblock table tr td:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
table.enum-members,
|
||||
table.results {
|
||||
border-radius: var(--box-radius);
|
||||
border: 1px solid var(--text-color-muted);
|
||||
border-spacing: 0 0 !important;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
table.enum-members tr th,
|
||||
table.results tr th {
|
||||
border-top-color: var(--body-bg);
|
||||
background-color: var(--box-bg);
|
||||
border-bottom: 1px solid var(--text-color-muted);
|
||||
}
|
||||
|
||||
table.enum-members tr th:first-child,
|
||||
table.enum-members tr td:first-child {
|
||||
min-width: 25em;
|
||||
padding-left: .5em;
|
||||
}
|
||||
|
||||
table.results tr th:first-child,
|
||||
table.results tr td:first-child {
|
||||
padding-left: .5em;
|
||||
}
|
||||
|
||||
table.enum-members tr th:last-child,
|
||||
table.enum-members tr td:last-child,
|
||||
table.results tr th:last-child,
|
||||
table.results tr td:last-child {
|
||||
max-width: 35em;
|
||||
padding-right: .5em;
|
||||
}
|
||||
|
||||
table.results tr td code {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.docblock ul li,
|
||||
.docblock ol li {
|
||||
padding-top: 0.15rem;
|
||||
padding-bottom: 0.15rem;
|
||||
}
|
||||
|
||||
.docblock ul.type {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.docblock ul.type li::before {
|
||||
content: "»";
|
||||
color: var(--text-color);
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
margin-left: -1em;
|
||||
}
|
||||
|
||||
/**************************
|
||||
RESPONSIVENESS
|
||||
**************************/
|
||||
@media (max-width: 700px) {
|
||||
body {
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
#body-wrapper {
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#main {
|
||||
width: 100%;
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
position: static;
|
||||
height: initial;
|
||||
order: 1;
|
||||
}
|
||||
}
|
@@ -32,7 +32,7 @@ while (($# > 0)); do
|
||||
list) list=1;;
|
||||
help) print_help=1;;
|
||||
--base|-b) read_arg base "$@" || shift;;
|
||||
--base-version) read_arg base_version "$@" || shift;;
|
||||
--version|-v) read_arg base_version "$@" || shift;;
|
||||
--no-login) no_login=1;;
|
||||
*) echo -e "\e[1;31mERROR\e[0m: Unknown option '$1'"; exit 1;;
|
||||
esac
|
||||
|
5
.gitlab-ci/show-info-linux.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#! /bin/sh
|
||||
|
||||
. /etc/os-release
|
||||
|
||||
echo $PRETTY_NAME
|
@@ -15,7 +15,7 @@ meson \
|
||||
-Dx11-backend=true \
|
||||
-Dwayland-backend=true \
|
||||
-Dbroadway-backend=true \
|
||||
-Dvulkan=yes \
|
||||
-Dvulkan=enabled \
|
||||
-Dprofiler=true \
|
||||
--werror \
|
||||
${EXTRA_MESON_FLAGS:-} \
|
||||
|
14
.gitlab-ci/test-msvc.bat
Normal file
@@ -0,0 +1,14 @@
|
||||
@echo on
|
||||
:: vcvarsall.bat sets various env vars like PATH, INCLUDE, LIB, LIBPATH for the
|
||||
:: specified build architecture
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
@echo on
|
||||
|
||||
:: FIXME: make warnings fatal
|
||||
pip3 install --upgrade --user meson==0.56.2 || goto :error
|
||||
meson -Dmedia-gstreamer=disabled _build || goto :error
|
||||
ninja -C _build || goto :error
|
||||
|
||||
goto :EOF
|
||||
:error
|
||||
exit /b 1
|
@@ -40,7 +40,7 @@ export CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
|
||||
# https://gitlab.gnome.org/GNOME/gtk/-/issues/2243
|
||||
# https://gitlab.gnome.org/GNOME/gtk/-/issues/3002
|
||||
|
||||
if ! pkg-config --atleast-version=2.65.0 glib-2.0; then
|
||||
if ! pkg-config --atleast-version=2.66.0 glib-2.0; then
|
||||
git clone https://gitlab.gnome.org/GNOME/glib.git _glib
|
||||
meson setup _glib_build _glib
|
||||
meson compile -C _glib_build
|
||||
@@ -48,7 +48,7 @@ if ! pkg-config --atleast-version=2.65.0 glib-2.0; then
|
||||
fi
|
||||
pkg-config --modversion glib-2.0
|
||||
|
||||
if ! pkg-config --atleast-version=1.47.0 pango; then
|
||||
if ! pkg-config --atleast-version=1.49.1 pango; then
|
||||
git clone https://gitlab.gnome.org/GNOME/pango.git _pango
|
||||
meson setup _pango_build _pango
|
||||
meson compile -C _pango_build
|
||||
|
560
NEWS
@@ -1,3 +1,563 @@
|
||||
Overview of Changes
|
||||
===================
|
||||
|
||||
* gsk:
|
||||
- Drop the GL renderer in favor of NGL
|
||||
|
||||
* css:
|
||||
- Add support for line-height
|
||||
- Add support for text-transform
|
||||
|
||||
* GtkTextView:
|
||||
- Add support for line height
|
||||
- Add support for text transforms
|
||||
|
||||
* Build:
|
||||
- Require Pango 1.49
|
||||
|
||||
|
||||
Overview of Changes in 4.4.0
|
||||
============================
|
||||
|
||||
* Input:
|
||||
- Match IBus for display of Compose sequences
|
||||
- Match IBus for handling of mismatches
|
||||
- Handle Escape in Compose sequences
|
||||
- Allow multiple dead keys
|
||||
- Support 32bit keysyms
|
||||
|
||||
* GtkCheckButton:
|
||||
- Activate when moving focus
|
||||
|
||||
* GtkLabel:
|
||||
- Propertly ignore double underscores for mnemonics
|
||||
|
||||
* GtkPopoverMenu:
|
||||
- Fix focus cycling
|
||||
|
||||
* GtkTextView:
|
||||
- Improve word selection
|
||||
- Fix block cursors on empty lines
|
||||
|
||||
* GdkToplevel:
|
||||
- Support the gnome-shell titlebar gesture protocol
|
||||
|
||||
* GdkDropTarget:
|
||||
- Allow creating drop targets in ui files
|
||||
|
||||
* gsk:
|
||||
- Handle partial color fonts correctly
|
||||
- Use harfbuzz for color font information
|
||||
- Avoid pango for glyph cache rendering
|
||||
- Shrink shadow extents
|
||||
|
||||
* Settings:
|
||||
- Change the default for gtk-split-cursor to FALSE
|
||||
|
||||
* Demos:
|
||||
- Small improvements to widget-factory
|
||||
- gtk-demo: Improve the hypertext demo
|
||||
- gtk-dem: Improve the clipboard demo
|
||||
|
||||
* X11:
|
||||
- Set WM_CLASS on toplevels
|
||||
|
||||
* Wayland:
|
||||
- Support wl_seat v7
|
||||
|
||||
* Windows:
|
||||
- Drop the local DND protocol
|
||||
- Avoid WGL if shaders don't work
|
||||
- Use WinPointer API
|
||||
|
||||
* Translation updates:
|
||||
Belarusian
|
||||
Friulian
|
||||
Hebrew
|
||||
Khmer
|
||||
Persian
|
||||
Polish
|
||||
|
||||
|
||||
Overview of Changes in 4.3.2
|
||||
============================
|
||||
|
||||
* GtkToggleButton:
|
||||
- Fix the actionable implementation
|
||||
|
||||
* GtkCheckButton:
|
||||
- Fix the actionable implementation
|
||||
- Cancel activation on when the pointer leaves
|
||||
|
||||
* GtkMenuButton:
|
||||
- Make activatable again
|
||||
- Add a way to have an icon + arrow
|
||||
|
||||
* GtkColorButton:
|
||||
- Make activatable again
|
||||
|
||||
* GtkFontButton:
|
||||
- Make activatable again
|
||||
|
||||
* GtkAppChooserButton:
|
||||
- Make activatable again
|
||||
|
||||
* GtkColumnView:
|
||||
- Fix double activation
|
||||
|
||||
* GtkLabel:
|
||||
- Fix mnemonics without markup
|
||||
|
||||
* GtkTreeView:
|
||||
- Clip header buttons
|
||||
|
||||
* GtkTextView:
|
||||
- Add api to get the RTL and LTR contexts
|
||||
- Fix some errors in text history grouping
|
||||
|
||||
* GtkText:
|
||||
- Don't show placeholder text on top of entry text
|
||||
- Add api to compute the cursor extents
|
||||
- Fix y coordinates for text selection
|
||||
|
||||
* GtkFileChooser:
|
||||
- Don't show Trash in the side bar
|
||||
|
||||
* GtkPopoverMenu:
|
||||
- Add scrollbars to long menus
|
||||
|
||||
* GtkActionMuxer:
|
||||
- Fix propagation of accel changes
|
||||
|
||||
* Introspection:
|
||||
- Annotate all filename arguments
|
||||
- Rename GtkMediaStream apis to avoid name collisions
|
||||
- Rename GtkDropTarget properties to avoid name collisions
|
||||
- Make GtkPasswordEntryBuffer introspectable
|
||||
|
||||
* Printing:
|
||||
- Remove the Google Cloud Print backend
|
||||
|
||||
* Theme:
|
||||
- Sync included icons with the Adwaita icon theme
|
||||
|
||||
* GSK:
|
||||
- Avoid overflowing the vertex counter
|
||||
- Handle negative scales correctly in the ngl renderer
|
||||
|
||||
* GDK:
|
||||
- Cleanup and simplify OpenGL setup code
|
||||
- Add a GdkDisplay::init_gl vfunc and gdk_display_prepare_gl() api
|
||||
- Require EGL 1.4
|
||||
- Fix EGL + NVidia
|
||||
|
||||
* Build:
|
||||
- Enable gstreamer by default
|
||||
- Disable Vulkan by default
|
||||
- Remove the sassc option
|
||||
- Remove options and checks for X11 extensions
|
||||
|
||||
* X11:
|
||||
- Stop using XComposite
|
||||
- Remove the Visual cache
|
||||
|
||||
* Wayland:
|
||||
- Fix some DND corner cases
|
||||
- Work with version 2 of pointer-gestures-v1
|
||||
- Look for cursor themes in $HOME/.icons
|
||||
|
||||
* Windows:
|
||||
- Fix SIGILL on x64 due to popcnt
|
||||
- Fix popup placement
|
||||
- Fix drag icon placement
|
||||
- Clean up HiDPI and WGL support
|
||||
- Default to WGL
|
||||
|
||||
* MacOs:
|
||||
- Fix input method support
|
||||
- Register known clipboard types for drop targets
|
||||
- Add initial DND support
|
||||
|
||||
* Translation updates:
|
||||
Brazilian Portuguese
|
||||
Portuguese
|
||||
Romanian
|
||||
Turkish
|
||||
Ukrainian
|
||||
|
||||
|
||||
Overview of Changes in 4.3.1
|
||||
============================
|
||||
|
||||
* GtkEmojiChooser:
|
||||
- Update data from CLDR 39
|
||||
- Load Emoji data for both language and territory
|
||||
|
||||
* GtkCalendar:
|
||||
- Fix an off-by-one error in day numbers
|
||||
|
||||
* GtkListView:
|
||||
- Add .activatable style class to activatable items
|
||||
|
||||
* GtkCheckButton:
|
||||
- Don't allow unchecking grouped radio buttons
|
||||
|
||||
*GtkToggleButton:
|
||||
- Fix mnemonic activation propagation
|
||||
|
||||
* GtkLabel:
|
||||
- Make mnemonics work even when invisible
|
||||
- Fix mnemonic activation propagation
|
||||
|
||||
* GtkMenuButton:
|
||||
- Add a property to mark primary menus and make F10 work
|
||||
|
||||
* GtkApplication:
|
||||
- Fix initial screensaver state async
|
||||
|
||||
* GtkEntry:
|
||||
- Apply xalign to placeholder text (as it was in GTK 3)
|
||||
|
||||
* GtkSpinButton:
|
||||
- Fix swipe gestures
|
||||
|
||||
* GtkStackSwitcher:
|
||||
- Implement GtkOrientable (as it was in GTK 3)
|
||||
- Fix a use-after-free problem with drag timeouts
|
||||
|
||||
* GtkFileChooser:
|
||||
- Add support for (case-insensitive) suffix matches in GtkFileFilter
|
||||
|
||||
* GtkPasswordEntry:
|
||||
- Make GtkPasswordEntryBuffer public, to make it easier
|
||||
to write your own password entry widget
|
||||
|
||||
* Input:
|
||||
- Fix interference between various obscure XKB features
|
||||
(e.g. overlays) and Compose sequences
|
||||
|
||||
* Action support:
|
||||
- Fix submenu-action handling
|
||||
|
||||
* Theme:
|
||||
- Update icons from the Adwaita icon theme
|
||||
- Fix icon names for GtkSwitch
|
||||
- Fix switch-off icon
|
||||
|
||||
* GSK:
|
||||
- Improve transformed offscreen rendering
|
||||
- Add padding between cached glyphs
|
||||
|
||||
* Wayland:
|
||||
- Fix monitor sizes in the presence of transforms
|
||||
- Add a getter for the EGLDisplay
|
||||
- Fix click-drag-release sequences for popovers
|
||||
|
||||
* X11:
|
||||
- Support EGL for X11. Fall back to GLX if EGL isn't available
|
||||
- Always fall back to GLX on NVidia
|
||||
- Add a getter for the EGLDisplay
|
||||
|
||||
* Broadway:
|
||||
- Add a setter for display scale
|
||||
|
||||
* Windows:
|
||||
- Add a getter for the EGLDisplay
|
||||
- Make GL work for media playback
|
||||
|
||||
* MacOS:
|
||||
- Fix menubar appearance
|
||||
|
||||
* Tools:
|
||||
- gtk4-builder-tool: Replace can-focus with focusable in 3-to-4 conversion
|
||||
|
||||
* Introspection:
|
||||
- Add missing annotations in a few places (e.g. gtk_free_view_row_activated)
|
||||
|
||||
* Build:
|
||||
- Only build one source file with -mf16c
|
||||
- Fix devel styling for ci flatpak builds
|
||||
- Generate appdata for demo flatpaks
|
||||
|
||||
* Docs:
|
||||
- Numerous fixes and additions
|
||||
|
||||
* Translation updates:
|
||||
Friulian
|
||||
Nepali
|
||||
Norwegian Bokmål
|
||||
Ukrainian
|
||||
|
||||
|
||||
Overview of Changes in 4.3.0
|
||||
============================
|
||||
|
||||
* GtkVideo:
|
||||
- Detect stream metadata when using gstreamer
|
||||
|
||||
* GtkFileChooser:
|
||||
- Fix a crash
|
||||
|
||||
* GtkButton:
|
||||
- Add back visual feedback for keynav activation
|
||||
|
||||
* GtkFontChooser:
|
||||
- Fix initial font selection
|
||||
|
||||
* Text widgets:
|
||||
- Replace squiggly error underlines by dotted lines
|
||||
- Support translucent selections
|
||||
|
||||
* GtkTextView:
|
||||
- Various improvements to rendering performance
|
||||
|
||||
* GtkScrolledWindow:
|
||||
- Stop using scroll cursors
|
||||
|
||||
* GtkMenuButton:
|
||||
- Make focus-on-click work
|
||||
|
||||
* GtkToggleButton:
|
||||
- Make grouped buttons mutually exclusive
|
||||
|
||||
* GtkPasswordEntry:
|
||||
- Use MADV_DONTDUMP for secure memory
|
||||
|
||||
* GtkListBox:
|
||||
- Allow repeated selection extension for MULTIPLE
|
||||
|
||||
* Themes:
|
||||
- Reorganize and rename included themes. The theme is now
|
||||
called Default, with dark, hc and hc-dark variants.
|
||||
Visually, the themes are unchanged.
|
||||
- The theme variants are also available as standalone
|
||||
themes called Default-dark, etc.
|
||||
- The theme named Adwaita is moving to libadwaita
|
||||
- Fix resize border sizing
|
||||
- Fix solid-csd window decorations
|
||||
|
||||
* Input:
|
||||
- Revert some Compose sequence changes (mainly around dead
|
||||
acute and apostrophe)
|
||||
- Consume all key events during preedit, to avoid unexpected
|
||||
interactions
|
||||
- Ignore more modifiers during preedit, to allow using 3rd and
|
||||
5th level choosers
|
||||
- Fix handling of cursor positions in non-ASCII preedit text
|
||||
- Fix a problem with deferred focus setting
|
||||
|
||||
* GdkClipboard:
|
||||
- Ensure strings are nul-terminated
|
||||
|
||||
* GSK:
|
||||
- Improvements to the ngl renderer
|
||||
- Fix offscreen rendering with transforms
|
||||
- Fix downscaled textures
|
||||
- Avoid huge intermediate textures
|
||||
- Use fp16 for colors
|
||||
- Optimize handling of underlines in text
|
||||
- Fix corner cases of shadow rendering
|
||||
- Reorganize shader resources
|
||||
- Make shadow rendering match across renderers
|
||||
|
||||
* Accessibility:
|
||||
- Various fixes to get Orca to speak (still a work in progress)
|
||||
|
||||
* Wayland:
|
||||
- Improve font settings fallback
|
||||
- Avoid unintentional rendering freezes with popovers
|
||||
- Support the xdg_activation_v1 protocol
|
||||
|
||||
* X11:
|
||||
- Don't beep on untrusted displays
|
||||
- Don't crash when popovers are outside the workarea
|
||||
|
||||
* Windows:
|
||||
- Fix using GL rendering with Mesa drivers
|
||||
|
||||
* Tools:
|
||||
- Add support for copy/paste in gtk4-node-editor
|
||||
- Make syntax highlighting work in the gtk4-demo flatpak
|
||||
|
||||
* Inspector:
|
||||
- Enable the inspector by default, in all cases
|
||||
- Show keyboard layouts
|
||||
- Improve monitor information
|
||||
|
||||
* Translation updates:
|
||||
Catalan
|
||||
Chinese (Taiwan)
|
||||
Dutch
|
||||
Nepali
|
||||
Polish
|
||||
Swedish
|
||||
Ukrainian
|
||||
|
||||
|
||||
Overview of Changes in 4.2.0
|
||||
============================
|
||||
|
||||
* GtkFileChooser: Make the location entry work again
|
||||
|
||||
* GtlLabel: Fix tooltips on links
|
||||
|
||||
* GtkTextView: Make scrolling work better with renderers
|
||||
|
||||
* X11:
|
||||
- Fix damage handling
|
||||
- Trap errors from the COW
|
||||
|
||||
* Windows:
|
||||
- Use a visible scroll cursor
|
||||
- Include more icons for icon-theme-less situations
|
||||
|
||||
* Wayland: Fix key event matching with mismatched layouts.
|
||||
This was causing keyboard accelerators to trigger unexpectedly
|
||||
|
||||
* Inspector: Allow inspecting Unicode
|
||||
|
||||
* Input:
|
||||
- Improve dead key handling
|
||||
- Regenerate compose sequence table
|
||||
|
||||
* gsk:
|
||||
- Fix a crash in the ngl renderer
|
||||
- Fix a rounding error in subpixel glyph positioning
|
||||
- ngl: Implement glyph cache eviction
|
||||
- ngl: Improve the glyph cache effectiveness
|
||||
- ngl: Fix uniform key mapping on Windows
|
||||
- Make the ngl renderer the default
|
||||
|
||||
* build:
|
||||
- Fix build with cairo as subproject
|
||||
- Disable g_assert in release builds
|
||||
- Include gi-docgen as subproject
|
||||
- Include generated docs
|
||||
|
||||
* Translation updates:
|
||||
Hebrew
|
||||
Hungarian
|
||||
Italian
|
||||
Polish
|
||||
Portuguese
|
||||
Swedish
|
||||
Ukrainian
|
||||
|
||||
|
||||
Overview of Changes in 4.1.2
|
||||
============================
|
||||
|
||||
* Input:
|
||||
- Ensure preedit-start and preedit-end
|
||||
are emitted properly
|
||||
- Support the Wayland text protocol better
|
||||
- Delete the selection when preedit starts
|
||||
|
||||
* Label: Fix a small issue with markup parsing
|
||||
and mnemonics
|
||||
|
||||
* Spinbutton: Interpret localized digits
|
||||
|
||||
* Textview: Fix blinking block cursors
|
||||
|
||||
* Tooltips: Don't pop up erroneous on popovers
|
||||
|
||||
* Window: Add a way to disable F10 handling
|
||||
|
||||
* Theme:
|
||||
- Use a regular focus ring for sidebar rows
|
||||
|
||||
* GSK
|
||||
- ngl: Performance improvements
|
||||
- vulkan: Add visible fallback rendering
|
||||
- vukan: Handle simple transforms when clipping
|
||||
|
||||
* Wayland:
|
||||
- Don't force a full redraw for every frame
|
||||
- Don't leak buffers when rendering with cairo
|
||||
|
||||
* Demos:
|
||||
- iconbrowser: Make search more useful
|
||||
|
||||
* Documentation:
|
||||
- Switch to building docs from gir files with gi-docgen
|
||||
|
||||
* build:
|
||||
- Allow GTK to be used as meson subproject
|
||||
|
||||
* Translation updates
|
||||
Catalan
|
||||
Czech
|
||||
Finnish
|
||||
French
|
||||
Indonesian
|
||||
Kazakh
|
||||
Latvian
|
||||
Norwegian Bokmål
|
||||
Polish
|
||||
Serbian
|
||||
Turkish
|
||||
|
||||
|
||||
Overview of Changes in 4.1.1
|
||||
============================
|
||||
|
||||
* Popover:
|
||||
- Support shadows on popover > contents
|
||||
|
||||
* Input:
|
||||
- Show preedit for compose sequences
|
||||
- Support long compose sequences
|
||||
- Support compose sequences producing multiple characters
|
||||
|
||||
* Themes:
|
||||
- Allow suggested and destructive actions in lists
|
||||
- Disable shadows on maximized, fullscreen and tiled windows
|
||||
- Fine-tune scrollbar transitions and size
|
||||
|
||||
* CSS:
|
||||
- Support drop-shadow filters
|
||||
- Correct blur filter spread interpretation
|
||||
|
||||
* Documentation:
|
||||
- Improvements and updates for dialogs and native dialog
|
||||
|
||||
* Printing:
|
||||
- Support Avahi-discovered printers better
|
||||
|
||||
* GSK:
|
||||
- Add another OpenGL render. It is not the default yet.
|
||||
To try it, use GSK_RENDERER=ngl
|
||||
|
||||
* Build:
|
||||
- Lots of static analysis fixes found by pvs
|
||||
- Add a -Dprofile=devel option for devel styling and
|
||||
use it for nightly flatpaks
|
||||
|
||||
* X11:
|
||||
- Fix DND of X11-specific types
|
||||
|
||||
* Wayland:
|
||||
- Fix lookup of font settings in flatpaks
|
||||
|
||||
* Windows:
|
||||
- Fix window resizing
|
||||
- Avoid UAC for gtk-update-icon-cache
|
||||
|
||||
* MacOs:
|
||||
- Use correct module file extension
|
||||
- Make OpenGL context opaque when possible
|
||||
- Fix window resizing
|
||||
|
||||
* Translation updates:
|
||||
British English
|
||||
Czech
|
||||
Danish
|
||||
Galician
|
||||
Hungarian
|
||||
Turkish
|
||||
|
||||
|
||||
Overview of Changes in 4.1.0
|
||||
============================
|
||||
|
||||
|
17
README.md
@@ -32,9 +32,16 @@ Discussion forum
|
||||
- https://discourse.gnome.org/c/platform/core/
|
||||
|
||||
Nightly documentation can be found at
|
||||
- Gtk: https://gnome.pages.gitlab.gnome.org/gtk/gtk/
|
||||
- Gdk: https://gnome.pages.gitlab.gnome.org/gtk/gdk/
|
||||
- Gsk: https://gnome.pages.gitlab.gnome.org/gtk/gsk/
|
||||
- Gtk: https://gnome.pages.gitlab.gnome.org/gtk/gtk4/
|
||||
- Gdk: https://gnome.pages.gitlab.gnome.org/gtk/gdk4/
|
||||
- Gsk: https://gnome.pages.gitlab.gnome.org/gtk/gsk4/
|
||||
|
||||
Nightly flatpaks of our demos can be installed from the
|
||||
[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 install gnome-nightly org.gtk.Demo4`
|
||||
- `flatpak install gnome-nightly org.gtk.WidgetFactory4`
|
||||
- `flatpak install gnome-nightly org.gtk.IconBrowser4`
|
||||
|
||||
Building and installing
|
||||
-----------------------
|
||||
@@ -150,8 +157,8 @@ Release notes
|
||||
The release notes for GTK are part of the migration guide in the API
|
||||
reference. See:
|
||||
|
||||
- [3.x release notes](https://developer.gnome.org/gtk3/unstable/gtk-migrating-2-to-3.html)
|
||||
- [4.x release notes](https://developer.gnome.org/gtk4/unstable/gtk-migrating-3-to-4.html)
|
||||
- [3.x release notes](https://developer.gnome.org/gtk3/stable/gtk-migrating-2-to-3.html)
|
||||
- [4.x release notes](https://docs.gtk.org/gtk4/migrating-3to4.html)
|
||||
|
||||
Licensing terms
|
||||
---------------
|
||||
|
43
build-aux/flatpak/lua-5.1.5-so.patch
Normal file
@@ -0,0 +1,43 @@
|
||||
diff -ur lua-5.1.4/src/Makefile lua-5.1.4-new/src/Makefile
|
||||
--- lua-5.1.4/src/Makefile 2008-01-19 20:37:58.000000000 +0100
|
||||
+++ lua-5.1.4-new/src/Makefile 2012-02-23 18:26:43.000000000 +0100
|
||||
@@ -23,6 +23,7 @@
|
||||
PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
|
||||
|
||||
LUA_A= liblua.a
|
||||
+LUA_SO= liblua.so
|
||||
CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
|
||||
lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \
|
||||
lundump.o lvm.o lzio.o
|
||||
@@ -36,7 +37,7 @@
|
||||
LUAC_O= luac.o print.o
|
||||
|
||||
ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)
|
||||
-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
|
||||
+ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)
|
||||
ALL_A= $(LUA_A)
|
||||
|
||||
default: $(PLAT)
|
||||
@@ -51,6 +52,11 @@
|
||||
$(AR) $@ $?
|
||||
$(RANLIB) $@
|
||||
|
||||
+$(LUA_SO): $(CORE_O) $(LIB_O)
|
||||
+ $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
|
||||
+ ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
|
||||
+ ln -sf $(LUA_SO).$(R) $(LUA_SO)
|
||||
+
|
||||
$(LUA_T): $(LUA_O) $(LUA_A)
|
||||
$(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
|
||||
|
||||
--- lua-5.1.4/Makefile 2008-08-12 02:40:48.000000000 +0200
|
||||
+++ lua-5.1.4-new/Makefile 2012-02-23 19:06:32.000000000 +0100
|
||||
@@ -53,7 +53,7 @@
|
||||
all: $(PLAT)
|
||||
|
||||
$(PLATS) clean:
|
||||
- cd src && $(MAKE) $@
|
||||
+ cd src && $(MAKE) $@ V=$(V) R=$(R)
|
||||
|
||||
test: dummy
|
||||
src/lua test/hello.lua
|
@@ -35,15 +35,15 @@
|
||||
"modules" : [
|
||||
{
|
||||
"name" : "wayland",
|
||||
"buildsystem" : "autotools",
|
||||
"buildsystem" : "meson",
|
||||
"builddir" : true,
|
||||
"config-opts" : [
|
||||
"--disable-documentation"
|
||||
"-Ddocumentation=false"
|
||||
],
|
||||
"sources" : [
|
||||
{
|
||||
"type" : "git",
|
||||
"url" : "https://github.com/wayland-project/wayland.git"
|
||||
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -93,6 +93,77 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "boost",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"./bootstrap.sh --prefix=/app --with-libraries=date_time,filesystem,iostreams,locale,regex,system,thread,python,program_options,test,serialization",
|
||||
"./b2 --build-type=minimal link=shared -j $FLATPAK_BUILDER_N_JOBS",
|
||||
"./b2 --build-type=minimal link=shared install"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://boostorg.jfrog.io/artifactory/main/release/1.69.0/source/boost_1_69_0.tar.bz2",
|
||||
"sha256": "8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "lua-5.1",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"make -j $FLATPAK_BUILDER_N_JOBS CFLAGS=\"$CFLAGS -fPIC -DLUA_USE_LINUX\" linux",
|
||||
"make INSTALL_TOP=$FLATPAK_DEST TO_LIB='liblua.a liblua.so.5.1.5' install",
|
||||
"ln -sf liblua.so.5.1.5 $FLATPAK_DEST/lib/liblua.so",
|
||||
"ln -sf liblua.so.5.1.5 $FLATPAK_DEST/lib/liblua.so.5.1",
|
||||
"install -Dm0644 etc/lua.pc $FLATPAK_DEST/lib/pkgconfig/lua.pc",
|
||||
"ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua51.pc",
|
||||
"ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua5.1.pc",
|
||||
"ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua-5.1.pc"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://www.lua.org/ftp/lua-5.1.5.tar.gz",
|
||||
"sha256": "2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333"
|
||||
},
|
||||
{
|
||||
"type": "patch",
|
||||
"path": "lua-5.1.5-so.patch"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"commands": [
|
||||
"sed -i \"s|/usr/local|$FLATPAK_DEST|\" etc/lua.pc src/luaconf.h"
|
||||
]
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
"*.a",
|
||||
"/bin",
|
||||
"/include",
|
||||
"/lib/pkgconfig",
|
||||
"/man"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "highlight",
|
||||
"buildsystem" : "simple",
|
||||
"builddir" : true,
|
||||
"build-commands" : [
|
||||
"sed -i -e 's#^PREFIX = /usr#PREFIX = /app#' makefile",
|
||||
"make",
|
||||
"make install"
|
||||
],
|
||||
"sources" : [
|
||||
{
|
||||
"type" : "archive",
|
||||
"url" : "http://www.andre-simon.de/zip/highlight-4.0.tar.bz2",
|
||||
"sha256" : "f40dcba26e011a2c67df874f4d9b0238c2c6b065163ce8de3d8371b9dfce864d"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "gtk",
|
||||
"buildsystem" : "meson",
|
||||
@@ -100,7 +171,8 @@
|
||||
"config-opts" : [
|
||||
"--libdir=/app/lib",
|
||||
"-Denable_vulkan=no",
|
||||
"-Dbuildtype=debugoptimized"
|
||||
"-Dbuildtype=debugoptimized",
|
||||
"-Dprofile=devel"
|
||||
],
|
||||
"sources" : [
|
||||
{
|
||||
|
@@ -35,15 +35,15 @@
|
||||
"modules" : [
|
||||
{
|
||||
"name" : "wayland",
|
||||
"buildsystem" : "autotools",
|
||||
"buildsystem" : "meson",
|
||||
"builddir" : true,
|
||||
"config-opts" : [
|
||||
"--disable-documentation"
|
||||
"-Ddocumentation=false"
|
||||
],
|
||||
"sources" : [
|
||||
{
|
||||
"type" : "git",
|
||||
"url" : "https://github.com/wayland-project/wayland.git"
|
||||
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -100,7 +100,8 @@
|
||||
"config-opts" : [
|
||||
"--libdir=/app/lib",
|
||||
"-Denable_vulkan=no",
|
||||
"-Dbuildtype=debugoptimized"
|
||||
"-Dbuildtype=debugoptimized",
|
||||
"-Dprofile=devel"
|
||||
],
|
||||
"sources" : [
|
||||
{
|
||||
|
@@ -35,15 +35,15 @@
|
||||
"modules" : [
|
||||
{
|
||||
"name" : "wayland",
|
||||
"buildsystem" : "autotools",
|
||||
"buildsystem" : "meson",
|
||||
"builddir" : true,
|
||||
"config-opts" : [
|
||||
"--disable-documentation"
|
||||
"-Ddocumentation=false"
|
||||
],
|
||||
"sources" : [
|
||||
{
|
||||
"type" : "git",
|
||||
"url" : "https://github.com/wayland-project/wayland.git"
|
||||
"url" : "https://gitlab.freedesktop.org/wayland/wayland.git"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -100,7 +100,8 @@
|
||||
"config-opts" : [
|
||||
"--libdir=/app/lib",
|
||||
"-Denable_vulkan=no",
|
||||
"-Dbuildtype=debugoptimized"
|
||||
"-Dbuildtype=debugoptimized",
|
||||
"-Dprofile=devel"
|
||||
],
|
||||
"sources" : [
|
||||
{
|
||||
|
39
build-aux/meson/dist-data.py
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
from pathlib import PurePath
|
||||
|
||||
|
||||
stylesheets = [
|
||||
'gtk/theme/Default/Default-light.css',
|
||||
'gtk/theme/Default/Default-dark.css',
|
||||
'gtk/theme/Default/Default-hc.css',
|
||||
'gtk/theme/Default/Default-hc-dark.css',
|
||||
]
|
||||
|
||||
references = [
|
||||
'docs/reference/gtk/gtk4',
|
||||
'docs/reference/gsk/gsk4',
|
||||
'docs/reference/gdk/gdk4',
|
||||
'docs/reference/gdk/gdk4-wayland',
|
||||
'docs/reference/gdk/gdk4-x11',
|
||||
]
|
||||
|
||||
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
|
||||
buildroot = os.environ.get('MESON_BUILD_ROOT')
|
||||
distroot = os.environ.get('MESON_DIST_ROOT')
|
||||
|
||||
for stylesheet in stylesheets:
|
||||
stylesheet_path = PurePath(stylesheet)
|
||||
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
|
||||
dst = PurePath(distroot, stylesheet_path)
|
||||
subprocess.call(['sassc', '-a', '-M', '-t', 'compact', src, dst])
|
||||
|
||||
for reference in references:
|
||||
src_path = os.path.join(buildroot, reference)
|
||||
if os.path.isdir(src_path):
|
||||
dst_path = os.path.join(distroot, reference)
|
||||
shutil.copytree(src_path, dst_path)
|
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
from pathlib import PurePath
|
||||
import subprocess
|
||||
|
||||
stylesheets = [ 'gtk/theme/Adwaita/Adwaita.css',
|
||||
'gtk/theme/Adwaita/Adwaita-dark.css',
|
||||
'gtk/theme/HighContrast/HighContrast.css',
|
||||
'gtk/theme/HighContrast/HighContrast-dark.css' ]
|
||||
|
||||
sourceroot = os.environ.get('MESON_SOURCE_ROOT')
|
||||
distroot = os.environ.get('MESON_DIST_ROOT')
|
||||
|
||||
for stylesheet in stylesheets:
|
||||
stylesheet_path = PurePath(stylesheet)
|
||||
src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss'))
|
||||
dst = PurePath(distroot, stylesheet_path)
|
||||
subprocess.call(['sassc', '-a', '-M', '-t', 'compact', src, dst])
|
26
build-aux/meson/gen-demo-header.py
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
repodir = sys.argv[1]
|
||||
profile = sys.argv[2]
|
||||
|
||||
sys.stdout.write("/* This file is auto-generated. Do not edit. */\n")
|
||||
sys.stdout.write("#pragma once\n")
|
||||
sys.stdout.write("\n")
|
||||
sys.stdout.write(f"#define PROFILE \"{profile}\"\n")
|
||||
|
||||
short_sha = os.environ.get('CI_COMMIT_SHORT_SHA')
|
||||
if short_sha is None:
|
||||
cmd = ["git", "-C", repodir, "rev-parse", "--short", "HEAD"]
|
||||
try:
|
||||
with subprocess.Popen(cmd, stdout=subprocess.PIPE) as p:
|
||||
short_sha = p.stdout.read().decode('utf-8').rstrip("\n")
|
||||
except FileNotFoundError:
|
||||
short_sha = ''
|
||||
if profile != 'default':
|
||||
short_sha = 'devel'
|
||||
|
||||
sys.stdout.write(f"#define VCS_TAG \"{short_sha}\"\n")
|
@@ -76,6 +76,9 @@
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#mesondefine HAVE_MMAP
|
||||
|
||||
/* Define to 1 if you have a working `madvise' system call. */
|
||||
#mesondefine HAVE_MADVISE
|
||||
|
||||
/* Define to 1 if you have the `posix_fallocate' function. */
|
||||
#mesondefine HAVE_POSIX_FALLOCATE
|
||||
|
||||
@@ -121,9 +124,6 @@
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#mesondefine HAVE_UNISTD_H
|
||||
|
||||
/* Have the XCOMPOSITE X extension */
|
||||
#mesondefine HAVE_XCOMPOSITE
|
||||
|
||||
/* Have the Xcursor library */
|
||||
#mesondefine HAVE_XCURSOR
|
||||
|
||||
@@ -279,3 +279,8 @@
|
||||
|
||||
/* Define if tracker3 is available */
|
||||
#mesondefine HAVE_TRACKER3
|
||||
|
||||
#mesondefine HAVE_F16C
|
||||
|
||||
/* Does the OS support GDesktopAppInfo? */
|
||||
#mesondefine HAVE_DESKTOPAPPINFO
|
||||
|
@@ -128,6 +128,9 @@
|
||||
<file>gtkfishbowl.c</file>
|
||||
<file>gtkfishbowl.h</file>
|
||||
</gresource>
|
||||
<gresource prefix="/frames">
|
||||
<file>frames.ui</file>
|
||||
</gresource>
|
||||
<gresource prefix="/gears">
|
||||
<file>gtkgears.c</file>
|
||||
<file>gtkgears.h</file>
|
||||
@@ -276,6 +279,7 @@
|
||||
<file>fishbowl.c</file>
|
||||
<file>fixed.c</file>
|
||||
<file>flowbox.c</file>
|
||||
<file>frames.c</file>
|
||||
<file>font_features.c</file>
|
||||
<file>fontplane.c</file>
|
||||
<file>fontrendering.c</file>
|
||||
@@ -317,6 +321,7 @@
|
||||
<file>paintable_emblem.c</file>
|
||||
<file>paintable_mediastream.c</file>
|
||||
<file>paintable_svg.c</file>
|
||||
<file>paintable_symbolic.c</file>
|
||||
<file>panes.c</file>
|
||||
<file>password_entry.c</file>
|
||||
<file>peg_solitaire.c</file>
|
||||
|
@@ -100,7 +100,11 @@ prepare_drag (GtkDragSource *source,
|
||||
DemoImage *demo = DEMO_IMAGE (widget);
|
||||
GdkPaintable *paintable = get_image_paintable (GTK_IMAGE (demo->image));
|
||||
|
||||
return gdk_content_provider_new_typed (GDK_TYPE_PAINTABLE, paintable);
|
||||
/* Textures can be serialized, paintables can't, so special case the textures */
|
||||
if (GDK_IS_TEXTURE (paintable))
|
||||
return gdk_content_provider_new_typed (GDK_TYPE_TEXTURE, paintable);
|
||||
else
|
||||
return gdk_content_provider_new_typed (GDK_TYPE_PAINTABLE, paintable);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -129,7 +133,11 @@ copy_image (GtkWidget *widget,
|
||||
GdkPaintable *paintable = get_image_paintable (GTK_IMAGE (demo->image));
|
||||
GValue value = G_VALUE_INIT;
|
||||
|
||||
g_value_init (&value, GDK_TYPE_PAINTABLE);
|
||||
/* Textures can be serialized, paintables can't, so special case the textures */
|
||||
if (GDK_IS_TEXTURE (paintable))
|
||||
g_value_init (&value, GDK_TYPE_TEXTURE);
|
||||
else
|
||||
g_value_init (&value, GDK_TYPE_PAINTABLE);
|
||||
g_value_set_object (&value, paintable);
|
||||
gdk_clipboard_set_value (clipboard, &value);
|
||||
g_value_unset (&value);
|
||||
@@ -138,24 +146,46 @@ copy_image (GtkWidget *widget,
|
||||
g_object_unref (paintable);
|
||||
}
|
||||
|
||||
static void
|
||||
paste_image_cb (GObject *source,
|
||||
GAsyncResult *result,
|
||||
gpointer data)
|
||||
{
|
||||
GdkClipboard *clipboard = GDK_CLIPBOARD (source);
|
||||
DemoImage *demo = DEMO_IMAGE (data);
|
||||
const GValue *value;
|
||||
|
||||
value = gdk_clipboard_read_value_finish (clipboard, result, NULL);
|
||||
if (value == NULL)
|
||||
{
|
||||
gtk_widget_error_bell (GTK_WIDGET (demo));
|
||||
g_object_unref (demo);
|
||||
return;
|
||||
}
|
||||
|
||||
gtk_image_set_from_paintable (GTK_IMAGE (demo->image), g_value_get_object (value));
|
||||
g_object_unref (demo);
|
||||
}
|
||||
|
||||
static void
|
||||
paste_image (GtkWidget *widget,
|
||||
const char *action_name,
|
||||
GVariant *parameter)
|
||||
{
|
||||
GdkClipboard *clipboard = gtk_widget_get_clipboard (widget);
|
||||
DemoImage *demo = DEMO_IMAGE (widget);
|
||||
GdkContentProvider *content = gdk_clipboard_get_content (clipboard);
|
||||
GValue value = G_VALUE_INIT;
|
||||
GdkPaintable *paintable;
|
||||
GType type;
|
||||
|
||||
g_value_init (&value, GDK_TYPE_PAINTABLE);
|
||||
if (!gdk_content_provider_get_value (content, &value, NULL))
|
||||
return;
|
||||
if (gdk_content_formats_contain_gtype (gdk_clipboard_get_formats (clipboard), GDK_TYPE_TEXTURE))
|
||||
type = GDK_TYPE_TEXTURE;
|
||||
else
|
||||
type = GDK_TYPE_PAINTABLE;
|
||||
|
||||
paintable = GDK_PAINTABLE (g_value_get_object (&value));
|
||||
gtk_image_set_from_paintable (GTK_IMAGE (demo->image), paintable);
|
||||
g_value_unset (&value);
|
||||
gdk_clipboard_read_value_async (clipboard,
|
||||
type,
|
||||
G_PRIORITY_DEFAULT,
|
||||
NULL,
|
||||
paste_image_cb,
|
||||
g_object_ref (widget));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -13,13 +13,13 @@
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="icon-name">pan-start-symbolic</property>
|
||||
<property name="icon-name">go-previous-symbolic</property>
|
||||
<signal name="clicked" handler="fishbowl_prev_button_clicked_cb" object="bowl" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="icon-name">pan-end-symbolic</property>
|
||||
<property name="icon-name">go-next-symbolic</property>
|
||||
<signal name="clicked" handler="fishbowl_next_button_clicked_cb" object="bowl" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@@ -10,12 +10,8 @@
|
||||
<object class="GtkButton" id="reset">
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text">Reset</property>
|
||||
<property name="icon-name">view-refresh-symbolic</property>
|
||||
<signal name="clicked" handler="font_features_reset_features" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="icon-name">view-refresh-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@@ -1136,7 +1136,7 @@ done:
|
||||
g_free (design_coords);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
font_features_font_changed (void)
|
||||
{
|
||||
update_script_combo ();
|
||||
@@ -1144,14 +1144,14 @@ font_features_font_changed (void)
|
||||
update_font_variations ();
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
font_features_script_changed (void)
|
||||
{
|
||||
update_features ();
|
||||
update_display ();
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
font_features_reset_features (void)
|
||||
{
|
||||
GList *l;
|
||||
@@ -1197,7 +1197,7 @@ switch_to_label (void)
|
||||
update_display ();
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
font_features_toggle_edit (void)
|
||||
{
|
||||
if (strcmp (gtk_stack_get_visible_child_name (GTK_STACK (stack)), "label") == 0)
|
||||
@@ -1206,7 +1206,7 @@ font_features_toggle_edit (void)
|
||||
switch_to_label ();
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
font_features_stop_edit (void)
|
||||
{
|
||||
g_signal_emit_by_name (edit_toggle, "clicked");
|
||||
|
@@ -131,6 +131,19 @@ insert_tags_for_attributes (GtkTextBuffer *buffer,
|
||||
gtk_text_buffer_apply_tag (buffer, tag, start, end); \
|
||||
}
|
||||
|
||||
#define VOID_ATTR(attr_name) \
|
||||
{ \
|
||||
tag = gtk_text_tag_table_lookup (table, #attr_name); \
|
||||
if (!tag) \
|
||||
{ \
|
||||
tag = gtk_text_tag_new (#attr_name); \
|
||||
g_object_set (tag, #attr_name, TRUE, NULL); \
|
||||
gtk_text_tag_table_add (table, tag); \
|
||||
g_object_unref (tag); \
|
||||
} \
|
||||
gtk_text_buffer_apply_tag (buffer, tag, start, end); \
|
||||
}
|
||||
|
||||
fg_alpha = bg_alpha = 1.;
|
||||
|
||||
attrs = pango_attr_iterator_get_attrs (iter);
|
||||
@@ -255,6 +268,29 @@ insert_tags_for_attributes (GtkTextBuffer *buffer,
|
||||
INT_ATTR (insert_hyphens);
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_LINE_HEIGHT:
|
||||
FLOAT_ATTR (line_height);
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_ABSOLUTE_LINE_HEIGHT:
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_WORD:
|
||||
VOID_ATTR (word);
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_SENTENCE:
|
||||
VOID_ATTR (sentence);
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_BASELINE_SHIFT:
|
||||
INT_ATTR (baseline_shift);
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_FONT_SCALE:
|
||||
INT_ATTR (font_scale);
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_SHAPE:
|
||||
case PANGO_ATTR_ABSOLUTE_SIZE:
|
||||
case PANGO_ATTR_GRAVITY:
|
||||
@@ -263,6 +299,10 @@ insert_tags_for_attributes (GtkTextBuffer *buffer,
|
||||
case PANGO_ATTR_BACKGROUND_ALPHA:
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_TEXT_TRANSFORM:
|
||||
INT_ATTR (text_transform);
|
||||
break;
|
||||
|
||||
case PANGO_ATTR_INVALID:
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
|
@@ -10,6 +10,7 @@ static GtkWidget *font_button = NULL;
|
||||
static GtkWidget *entry = NULL;
|
||||
static GtkWidget *image = NULL;
|
||||
static GtkWidget *hinting = NULL;
|
||||
static GtkWidget *anti_alias = NULL;
|
||||
static GtkWidget *hint_metrics = NULL;
|
||||
static GtkWidget *up_button = NULL;
|
||||
static GtkWidget *down_button = NULL;
|
||||
@@ -37,6 +38,7 @@ update_image (void)
|
||||
cairo_font_options_t *fopt;
|
||||
cairo_hint_style_t hintstyle;
|
||||
cairo_hint_metrics_t hintmetrics;
|
||||
cairo_antialias_t antialias;
|
||||
|
||||
if (!context)
|
||||
context = gtk_widget_create_pango_context (image);
|
||||
@@ -65,6 +67,13 @@ update_image (void)
|
||||
hintmetrics = CAIRO_HINT_METRICS_OFF;
|
||||
cairo_font_options_set_hint_metrics (fopt, hintmetrics);
|
||||
|
||||
if (gtk_check_button_get_active (GTK_CHECK_BUTTON (anti_alias)))
|
||||
antialias = CAIRO_ANTIALIAS_GRAY;
|
||||
else
|
||||
antialias = CAIRO_ANTIALIAS_NONE;
|
||||
cairo_font_options_set_antialias (fopt, antialias);
|
||||
|
||||
pango_context_set_round_glyph_positions (context, hintmetrics == CAIRO_HINT_METRICS_ON);
|
||||
pango_cairo_context_set_font_options (context, fopt);
|
||||
cairo_font_options_destroy (fopt);
|
||||
pango_context_changed (context);
|
||||
@@ -252,6 +261,7 @@ do_fontrendering (GtkWidget *do_widget)
|
||||
entry = GTK_WIDGET (gtk_builder_get_object (builder, "entry"));
|
||||
image = GTK_WIDGET (gtk_builder_get_object (builder, "image"));
|
||||
hinting = GTK_WIDGET (gtk_builder_get_object (builder, "hinting"));
|
||||
anti_alias = GTK_WIDGET (gtk_builder_get_object (builder, "antialias"));
|
||||
hint_metrics = GTK_WIDGET (gtk_builder_get_object (builder, "hint_metrics"));
|
||||
text_radio = GTK_WIDGET (gtk_builder_get_object (builder, "text_radio"));
|
||||
show_grid = GTK_WIDGET (gtk_builder_get_object (builder, "show_grid"));
|
||||
@@ -262,6 +272,7 @@ do_fontrendering (GtkWidget *do_widget)
|
||||
g_signal_connect (entry, "notify::text", G_CALLBACK (update_image), NULL);
|
||||
g_signal_connect (font_button, "notify::font-desc", G_CALLBACK (update_image), NULL);
|
||||
g_signal_connect (hinting, "notify::active", G_CALLBACK (update_image), NULL);
|
||||
g_signal_connect (anti_alias, "notify::active", G_CALLBACK (update_image), NULL);
|
||||
g_signal_connect (hint_metrics, "notify::active", G_CALLBACK (update_image), NULL);
|
||||
g_signal_connect (text_radio, "notify::active", G_CALLBACK (update_image), NULL);
|
||||
g_signal_connect (show_grid, "notify::active", G_CALLBACK (update_image), NULL);
|
||||
|
@@ -98,6 +98,15 @@
|
||||
</layout>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="antialias">
|
||||
<property name="label">Antialias</property>
|
||||
<layout>
|
||||
<property name="column">3</property>
|
||||
<property name="row">1</property>
|
||||
</layout>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="hinting">
|
||||
<property name="active">0</property>
|
||||
|
165
demos/gtk-demo/frames.c
Normal file
@@ -0,0 +1,165 @@
|
||||
/* Benchmark/Frames
|
||||
*
|
||||
* This demo is intentionally as simple as possible, to see what
|
||||
* framerate the windowing system can deliver on its own.
|
||||
*
|
||||
* It does nothing but change the drawn color, for every frame.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkWidget parent_instance;
|
||||
|
||||
GdkRGBA color1;
|
||||
GdkRGBA color2;
|
||||
guint64 time2;
|
||||
float t;
|
||||
|
||||
guint tick_cb;
|
||||
} ColorWidget;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkWidgetClass parent_class;
|
||||
} ColorWidgetClass;
|
||||
|
||||
G_DEFINE_TYPE (ColorWidget, color_widget, GTK_TYPE_WIDGET)
|
||||
|
||||
#define TIME_SPAN (3.0 * G_TIME_SPAN_SECOND)
|
||||
|
||||
static gboolean
|
||||
change_color (GtkWidget *widget,
|
||||
GdkFrameClock *frame_clock,
|
||||
gpointer data)
|
||||
{
|
||||
ColorWidget *color = (ColorWidget *)widget;
|
||||
gint64 time;
|
||||
|
||||
time = gdk_frame_clock_get_frame_time (frame_clock);
|
||||
|
||||
if (time >= color->time2)
|
||||
{
|
||||
color->time2 = time + TIME_SPAN;
|
||||
|
||||
color->color1 = color->color2;
|
||||
color->color2.red = g_random_double_range (0, 1);
|
||||
color->color2.green = g_random_double_range (0, 1);
|
||||
color->color2.blue = g_random_double_range (0, 1);
|
||||
color->color2.alpha = 1;
|
||||
}
|
||||
|
||||
color->t = 1 - (color->time2 - time) / TIME_SPAN;
|
||||
|
||||
gtk_widget_queue_draw (widget);
|
||||
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
static void
|
||||
color_widget_snapshot (GtkWidget *widget,
|
||||
GtkSnapshot *snapshot)
|
||||
{
|
||||
ColorWidget *color = (ColorWidget *)widget;
|
||||
float w, h;
|
||||
GdkRGBA c;
|
||||
|
||||
w = gtk_widget_get_width (widget);
|
||||
h = gtk_widget_get_height (widget);
|
||||
|
||||
c.red = (1 - color->t) * color->color1.red + color->t * color->color2.red;
|
||||
c.green = (1 - color->t) * color->color1.green + color->t * color->color2.green;
|
||||
c.blue = (1 - color->t) * color->color1.blue + color->t * color->color2.blue;
|
||||
c.alpha = 1;
|
||||
|
||||
gtk_snapshot_append_color (snapshot, &c, &GRAPHENE_RECT_INIT (0, 0, w, h));
|
||||
}
|
||||
|
||||
static void
|
||||
color_widget_init (ColorWidget *color)
|
||||
{
|
||||
gtk_widget_add_tick_callback (GTK_WIDGET (color), change_color, NULL, NULL);
|
||||
gtk_widget_set_hexpand (GTK_WIDGET (color), TRUE);
|
||||
gtk_widget_set_vexpand (GTK_WIDGET (color), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
color_widget_class_init (ColorWidgetClass *class)
|
||||
{
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
|
||||
|
||||
widget_class->snapshot = color_widget_snapshot;
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
color_widget_new (void)
|
||||
{
|
||||
return g_object_new (color_widget_get_type (), NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
update_fps_label (gpointer data)
|
||||
{
|
||||
GtkWidget *label = GTK_WIDGET (data);
|
||||
GdkFrameClock *frame_clock;
|
||||
|
||||
frame_clock = gtk_widget_get_frame_clock (label);
|
||||
|
||||
if (frame_clock)
|
||||
{
|
||||
char *fps;
|
||||
|
||||
fps = g_strdup_printf ("%.2f fps", gdk_frame_clock_get_fps (frame_clock));
|
||||
gtk_label_set_label (GTK_LABEL (label), fps);
|
||||
g_free (fps);
|
||||
}
|
||||
else
|
||||
gtk_label_set_label (GTK_LABEL (label), "");
|
||||
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
static void
|
||||
remove_id (gpointer data)
|
||||
{
|
||||
guint id = GPOINTER_TO_UINT (data);
|
||||
|
||||
g_source_remove (id);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_frames (GtkWidget *do_widget)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkBuilder *builder;
|
||||
GtkWidget *box;
|
||||
GtkWidget *label;
|
||||
guint id;
|
||||
|
||||
builder = gtk_builder_new_from_resource ("/frames/frames.ui");
|
||||
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_widget_get_display (do_widget));
|
||||
|
||||
label = GTK_WIDGET (gtk_builder_get_object (builder, "fps"));
|
||||
box = GTK_WIDGET (gtk_builder_get_object (builder, "box"));
|
||||
|
||||
gtk_box_append (GTK_BOX (box), color_widget_new ());
|
||||
|
||||
id = g_timeout_add (500, update_fps_label, label);
|
||||
g_object_set_data_full (G_OBJECT (label), "tick_cb",
|
||||
GUINT_TO_POINTER (id), remove_id);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
gtk_widget_show (window);
|
||||
else
|
||||
gtk_window_destroy (GTK_WINDOW (window));
|
||||
|
||||
return window;
|
||||
}
|
24
demos/gtk-demo/frames.ui
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<object class="GtkWindow" id="window">
|
||||
<property name="resizable">1</property>
|
||||
<property name="default-width">600</property>
|
||||
<property name="default-height">400</property>
|
||||
<property name="title">Frames</property>
|
||||
<child type="titlebar">
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<child type="end">
|
||||
<object class="GtkLabel" id="fps">
|
||||
<attributes>
|
||||
<attribute name="font-features" value="tnum=1"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="box">
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
@@ -23,13 +23,10 @@
|
||||
#include "gskshaderpaintable.h"
|
||||
|
||||
/**
|
||||
* SECTION:gskshaderpaintable
|
||||
* @Short_description: Drawing with shaders
|
||||
* @Title: GskShaderPaintable
|
||||
* @see_also: #GdkPaintable
|
||||
* GskShaderPaintable:
|
||||
*
|
||||
* GskShaderPaintable is an implementation of the #GdkPaintable interface
|
||||
* that uses a #GskGLShader to create pixels.
|
||||
* `GskShaderPaintable` is an implementation of the `GdkPaintable` interface
|
||||
* that uses a `GskGLShader` to create pixels.
|
||||
*
|
||||
* You can set the uniform data that the shader needs for rendering
|
||||
* using gsk_shader_paintable_set_args(). This function can
|
||||
@@ -38,7 +35,7 @@
|
||||
*
|
||||
* Commonly, time is passed to shaders as a float uniform containing
|
||||
* the elapsed time in seconds. The convenience API
|
||||
* gsk_shader_paintable_update_time() can be called from a #GtkTickCallback
|
||||
* gsk_shader_paintable_update_time() can be called from a `GtkTickCallback`
|
||||
* to update the time based on the frame time of the frame clock.
|
||||
*/
|
||||
|
||||
@@ -186,7 +183,7 @@ gsk_shader_paintable_init (GskShaderPaintable *self)
|
||||
* pixels. The shader must not require input textures.
|
||||
* If @data is %NULL, all uniform values are set to zero.
|
||||
*
|
||||
* Returns: (transfer full): a new #GskShaderPaintable
|
||||
* Returns: (transfer full): a new `GskShaderPaintable`
|
||||
*/
|
||||
GdkPaintable *
|
||||
gsk_shader_paintable_new (GskGLShader *shader,
|
||||
@@ -215,8 +212,8 @@ gsk_shader_paintable_new (GskGLShader *shader,
|
||||
|
||||
/**
|
||||
* gsk_shader_paintable_set_shader:
|
||||
* @self: a #GskShaderPaintable
|
||||
* @shader: the #GskGLShader to use
|
||||
* @self: a `GskShaderPaintable`
|
||||
* @shader: the `GskGLShader` to use
|
||||
*
|
||||
* Sets the shader that the paintable will use
|
||||
* to create pixels. The shader must not require
|
||||
@@ -241,11 +238,11 @@ gsk_shader_paintable_set_shader (GskShaderPaintable *self,
|
||||
|
||||
/**
|
||||
* gsk_shader_paintable_get_shader:
|
||||
* @self: a #GskShaderPaintable
|
||||
* @self: a `GskShaderPaintable`
|
||||
*
|
||||
* Returns the shader that the paintable is using.
|
||||
*
|
||||
* Returns: (transfer none): the #GskGLShader that is used
|
||||
* Returns: (transfer none): the `GskGLShader` that is used
|
||||
*/
|
||||
GskGLShader *
|
||||
gsk_shader_paintable_get_shader (GskShaderPaintable *self)
|
||||
@@ -257,12 +254,12 @@ gsk_shader_paintable_get_shader (GskShaderPaintable *self)
|
||||
|
||||
/**
|
||||
* gsk_shader_paintable_set_args:
|
||||
* @self: a #GskShaderPaintable
|
||||
* @self: a `GskShaderPaintable`
|
||||
* @data: Data block with uniform data for the shader
|
||||
*
|
||||
* Sets the uniform data that will be passed to the
|
||||
* shader when rendering. The @data will typically
|
||||
* be produced by a #GskUniformDataBuilder.
|
||||
* be produced by a `GskUniformDataBuilder`.
|
||||
*
|
||||
* Note that the @data should be considered immutable
|
||||
* after it has been passed to this function.
|
||||
@@ -284,7 +281,7 @@ gsk_shader_paintable_set_args (GskShaderPaintable *self,
|
||||
|
||||
/**
|
||||
* gsk_shader_paintable_get_args:
|
||||
* @self: a #GskShaderPaintable
|
||||
* @self: a `GskShaderPaintable`
|
||||
*
|
||||
* Returns the uniform data set with
|
||||
* gsk_shader_paintable_get_args().
|
||||
@@ -301,9 +298,9 @@ gsk_shader_paintable_get_args (GskShaderPaintable *self)
|
||||
|
||||
/**
|
||||
* gsk_shader_paintable_update_time:
|
||||
* @self: a #GskShaderPaintable
|
||||
* @self: a `GskShaderPaintable`
|
||||
* @time_idx: the index of the uniform for time in seconds as float
|
||||
* @frame_time: the current frame time, as returned by #GdkFrameClock
|
||||
* @frame_time: the current frame time, as returned by `GdkFrameClock`
|
||||
*
|
||||
* This function is a convenience wrapper for
|
||||
* gsk_shader_paintable_set_args() that leaves all
|
||||
@@ -311,7 +308,7 @@ gsk_shader_paintable_get_args (GskShaderPaintable *self)
|
||||
* index @time_idx, which will be set to the elapsed time
|
||||
* in seconds, since the first call to this function.
|
||||
*
|
||||
* This function is usually called from a #GtkTickCallback.
|
||||
* This function is usually called from a `GtkTickCallback`.
|
||||
*/
|
||||
void
|
||||
gsk_shader_paintable_update_time (GskShaderPaintable *self,
|
||||
|
@@ -74,9 +74,9 @@ gtk_fishbowl_init (GtkFishbowl *fishbowl)
|
||||
/**
|
||||
* gtk_fishbowl_new:
|
||||
*
|
||||
* Creates a new #GtkFishbowl.
|
||||
* Creates a new `GtkFishbowl`.
|
||||
*
|
||||
* Returns: a new #GtkFishbowl.
|
||||
* Returns: a new `GtkFishbowl`.
|
||||
*/
|
||||
GtkWidget*
|
||||
gtk_fishbowl_new (void)
|
||||
|
@@ -163,8 +163,8 @@ drag_update_cb (GtkGestureDrag *drag,
|
||||
|
||||
static void
|
||||
drag_end_cb (GtkGestureDrag *drag,
|
||||
gdouble dx,
|
||||
gdouble dy,
|
||||
double dx,
|
||||
double dy,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkShadertoy *shadertoy = GTK_SHADERTOY (user_data);
|
||||
|
@@ -18,8 +18,6 @@ do_headerbar (GtkWidget *do_widget)
|
||||
GtkWidget *header;
|
||||
GtkWidget *button;
|
||||
GtkWidget *box;
|
||||
GtkWidget *image;
|
||||
GIcon *icon;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
@@ -32,20 +30,14 @@ do_headerbar (GtkWidget *do_widget)
|
||||
|
||||
header = gtk_header_bar_new ();
|
||||
|
||||
button = gtk_button_new ();
|
||||
icon = g_themed_icon_new ("mail-send-receive-symbolic");
|
||||
image = gtk_image_new_from_gicon (icon);
|
||||
g_object_unref (icon);
|
||||
gtk_button_set_child (GTK_BUTTON (button), image);
|
||||
button = gtk_button_new_from_icon_name ("mail-send-receive-symbolic");
|
||||
gtk_header_bar_pack_end (GTK_HEADER_BAR (header), button);
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
gtk_widget_add_css_class (box, "linked");
|
||||
button = gtk_button_new ();
|
||||
gtk_button_set_child (GTK_BUTTON (button), gtk_image_new_from_icon_name ("pan-start-symbolic"));
|
||||
button = gtk_button_new_from_icon_name ("go-previous-symbolic");
|
||||
gtk_box_append (GTK_BOX (box), button);
|
||||
button = gtk_button_new ();
|
||||
gtk_button_set_child (GTK_BUTTON (button), gtk_image_new_from_icon_name ("pan-end-symbolic"));
|
||||
button = gtk_button_new_from_icon_name ("go-next-symbolic");
|
||||
gtk_box_append (GTK_BOX (box), button);
|
||||
|
||||
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), box);
|
||||
|
@@ -61,12 +61,26 @@ show_page (GtkTextView *text_view,
|
||||
int page)
|
||||
{
|
||||
GtkTextBuffer *buffer;
|
||||
GtkTextIter iter;
|
||||
GtkTextIter iter, start;
|
||||
GtkTextMark *mark;
|
||||
GtkWidget *child;
|
||||
GtkTextChildAnchor *anchor;
|
||||
GtkEventController *controller;
|
||||
GtkTextTag *bold, *mono, *nobreaks;
|
||||
|
||||
buffer = gtk_text_view_get_buffer (text_view);
|
||||
|
||||
bold = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"weight", PANGO_WEIGHT_BOLD,
|
||||
"scale", PANGO_SCALE_X_LARGE,
|
||||
NULL);
|
||||
mono = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"family", "monospace",
|
||||
NULL);
|
||||
nobreaks = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"allow-breaks", FALSE,
|
||||
NULL);
|
||||
|
||||
gtk_text_buffer_set_text (buffer, "", 0);
|
||||
gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
|
||||
gtk_text_buffer_begin_irreversible_action (buffer);
|
||||
@@ -104,17 +118,22 @@ show_page (GtkTextView *text_view,
|
||||
}
|
||||
else if (page == 2)
|
||||
{
|
||||
GtkTextTag *tag;
|
||||
mark = gtk_text_buffer_create_mark (buffer, "mark", &iter, TRUE);
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"weight", PANGO_WEIGHT_BOLD,
|
||||
"scale", PANGO_SCALE_X_LARGE,
|
||||
NULL);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, "tag", -1, tag, NULL);
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"family", "monospace",
|
||||
NULL);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, " / tag / ", -1, tag, NULL);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, "tag", -1, bold, NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " /", -1);
|
||||
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
|
||||
gtk_text_buffer_apply_tag (buffer, nobreaks, &start, &iter);
|
||||
gtk_text_buffer_insert (buffer, &iter, " ", -1);
|
||||
|
||||
gtk_text_buffer_move_mark (buffer, mark, &iter);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, "tag", -1, mono, NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " /", -1);
|
||||
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
|
||||
gtk_text_buffer_apply_tag (buffer, nobreaks, &start, &iter);
|
||||
gtk_text_buffer_insert (buffer, &iter, " ", -1);
|
||||
|
||||
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
|
||||
child = gtk_image_new_from_icon_name ("audio-volume-high-symbolic");
|
||||
@@ -132,20 +151,26 @@ show_page (GtkTextView *text_view,
|
||||
"behavior of mouse and key presses, “lock” a range of text so the "
|
||||
"user can't edit it, or countless other things.\n", -1);
|
||||
insert_link (buffer, &iter, "Go back", 1);
|
||||
|
||||
gtk_text_buffer_delete_mark (buffer, mark);
|
||||
}
|
||||
else if (page == 3)
|
||||
{
|
||||
GtkTextTag *tag;
|
||||
mark = gtk_text_buffer_create_mark (buffer, "mark", &iter, TRUE);
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"weight", PANGO_WEIGHT_BOLD,
|
||||
"scale", PANGO_SCALE_X_LARGE,
|
||||
NULL);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, "hypertext", -1, tag, NULL);
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"family", "monospace",
|
||||
NULL);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, " / ˈhaɪ pərˌtɛkst / ", -1, tag, NULL);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, "hypertext", -1, bold, NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " /", -1);
|
||||
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
|
||||
gtk_text_buffer_apply_tag (buffer, nobreaks, &start, &iter);
|
||||
gtk_text_buffer_insert (buffer, &iter, " ", -1);
|
||||
|
||||
gtk_text_buffer_move_mark (buffer, mark, &iter);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, "ˈhaɪ pərˌtɛkst", -1, mono, NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " /", -1);
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
|
||||
gtk_text_buffer_apply_tag (buffer, nobreaks, &start, &iter);
|
||||
gtk_text_buffer_insert (buffer, &iter, " ", -1);
|
||||
|
||||
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
|
||||
child = gtk_image_new_from_icon_name ("audio-volume-high-symbolic");
|
||||
@@ -159,6 +184,8 @@ show_page (GtkTextView *text_view,
|
||||
"Machine-readable text that is not sequential but is organized "
|
||||
"so that related items of information are connected.\n", -1);
|
||||
insert_link (buffer, &iter, "Go back", 1);
|
||||
|
||||
gtk_text_buffer_delete_mark (buffer, mark);
|
||||
}
|
||||
gtk_text_buffer_end_irreversible_action (buffer);
|
||||
}
|
||||
@@ -358,7 +385,7 @@ do_hypertext (GtkWidget *do_widget)
|
||||
|
||||
sw = gtk_scrolled_window_new ();
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_NEVER,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_window_set_child (GTK_WINDOW (window), sw);
|
||||
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), view);
|
||||
|
@@ -13,7 +13,7 @@ static GtkWidget *window = NULL;
|
||||
static GtkWidget *scrolledwindow;
|
||||
static int selected;
|
||||
|
||||
#define N_WIDGET_TYPES 7
|
||||
#define N_WIDGET_TYPES 8
|
||||
|
||||
|
||||
static int hincrement = 5;
|
||||
@@ -110,6 +110,46 @@ populate_text (gboolean highlight)
|
||||
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolledwindow), textview);
|
||||
}
|
||||
|
||||
static void
|
||||
populate_emoji_text (void)
|
||||
{
|
||||
GtkWidget *textview;
|
||||
GtkTextBuffer *buffer;
|
||||
GString *s;
|
||||
GtkTextIter iter;
|
||||
|
||||
s = g_string_sized_new (500 * 30 * 4);
|
||||
|
||||
for (int i = 0; i < 500; i++)
|
||||
{
|
||||
if (i % 2)
|
||||
g_string_append (s, "<span underline=\"single\" underline_color=\"red\">x</span>");
|
||||
for (int j = 0; j < 30; j++)
|
||||
{
|
||||
g_string_append (s, "💓");
|
||||
g_string_append (s, "<span underline=\"single\" underline_color=\"red\">x</span>");
|
||||
}
|
||||
g_string_append (s, "\n");
|
||||
}
|
||||
|
||||
buffer = gtk_text_buffer_new (NULL);
|
||||
gtk_text_buffer_get_start_iter (buffer, &iter);
|
||||
gtk_text_buffer_insert_markup (buffer, &iter, s->str, s->len);
|
||||
|
||||
g_string_free (s, TRUE);
|
||||
|
||||
textview = gtk_text_view_new ();
|
||||
gtk_text_view_set_buffer (GTK_TEXT_VIEW (textview), buffer);
|
||||
|
||||
hincrement = 0;
|
||||
vincrement = 5;
|
||||
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow),
|
||||
GTK_POLICY_NEVER,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolledwindow), textview);
|
||||
}
|
||||
|
||||
static void
|
||||
populate_image (void)
|
||||
{
|
||||
@@ -224,21 +264,26 @@ set_widget_type (int type)
|
||||
break;
|
||||
|
||||
case 3:
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Scrolling text with Emoji");
|
||||
populate_emoji_text ();
|
||||
break;
|
||||
|
||||
case 4:
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Scrolling a big image");
|
||||
populate_image ();
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case 5:
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Scrolling a list");
|
||||
populate_list ();
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case 6:
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Scrolling a columned list");
|
||||
populate_list2 ();
|
||||
break;
|
||||
|
||||
case 6:
|
||||
case 7:
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Scrolling a grid");
|
||||
populate_grid ();
|
||||
break;
|
||||
|
@@ -13,13 +13,13 @@
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="icon-name">pan-start-symbolic</property>
|
||||
<property name="icon-name">go-previous-symbolic</property>
|
||||
<signal name="clicked" handler="iconscroll_prev_clicked_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="icon-name">pan-end-symbolic</property>
|
||||
<property name="icon-name">go-next-symbolic</property>
|
||||
<signal name="clicked" handler="iconscroll_next_clicked_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@@ -8,8 +8,8 @@
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
/* This is the function that creates the #GListModel that we need.
|
||||
* GTK list widgets need a #GListModel to display, as models support change
|
||||
/* This is the function that creates the GListModel that we need.
|
||||
* GTK list widgets need a GListModel to display, as models support change
|
||||
* notifications.
|
||||
* Unfortunately various older APIs do not provide list models, so we create
|
||||
* our own.
|
||||
@@ -20,10 +20,10 @@ create_application_list (void)
|
||||
GListStore *store;
|
||||
GList *apps, *l;
|
||||
|
||||
/* We use a #GListStore here, which is a simple array-like list implementation
|
||||
/* We use a GListStore here, which is a simple array-like list implementation
|
||||
* for manual management.
|
||||
* List models need to know what type of data they provide, so we need to
|
||||
* provide the type here. As we want to do a list of applications, #GAppInfo
|
||||
* provide the type here. As we want to do a list of applications, GAppInfo
|
||||
* is the object we provide.
|
||||
*/
|
||||
store = g_list_store_new (G_TYPE_APP_INFO);
|
||||
@@ -39,7 +39,7 @@ create_application_list (void)
|
||||
}
|
||||
|
||||
/* This is the function we use for setting up new listitems to display.
|
||||
* We add just an #GtkImage and a #GtkKabel here to display the application's
|
||||
* We add just an GtkImage and a GtkLabel here to display the application's
|
||||
* icon and name, as this is just a simple demo.
|
||||
*/
|
||||
static void
|
||||
@@ -61,8 +61,8 @@ setup_listitem_cb (GtkListItemFactory *factory,
|
||||
|
||||
/* Here we need to prepare the listitem for displaying its item. We get the
|
||||
* listitem already set up from the previous function, so we can reuse the
|
||||
* #GtkImage widget we set up above.
|
||||
* We get the item - which we know is a #GAppInfo because it comes out of
|
||||
* GtkImage widget we set up above.
|
||||
* We get the item - which we know is a GAppInfo because it comes out of
|
||||
* the model we set up above, grab its icon and display it.
|
||||
*/
|
||||
static void
|
||||
@@ -85,7 +85,7 @@ bind_listitem_cb (GtkListItemFactory *factory,
|
||||
* the listitem, but this is simple code, so the default implementations are
|
||||
* enough. If we had connected signals, this step would have been necessary.
|
||||
*
|
||||
* The #GtkSignalListItemFactory documentation contains more information about
|
||||
* The GtkSignalListItemFactory documentation contains more information about
|
||||
* this step.
|
||||
*/
|
||||
|
||||
@@ -108,8 +108,8 @@ activate_cb (GtkListView *list,
|
||||
app_info = g_list_model_get_item (G_LIST_MODEL (gtk_list_view_get_model (list)), position);
|
||||
|
||||
/* Prepare the context for launching the application and launch it. This
|
||||
* code is explained in detail in the documentation for #GdkAppLaunchContext
|
||||
* and #GAppInfo.
|
||||
* code is explained in detail in the documentation for GdkAppLaunchContext
|
||||
* and GAppInfo.
|
||||
*/
|
||||
context = gdk_display_get_app_launch_context (gtk_widget_get_display (GTK_WIDGET (list)));
|
||||
if (!g_app_info_launch (app_info,
|
||||
@@ -155,13 +155,13 @@ do_listview_applauncher (GtkWidget *do_widget)
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Application Launcher");
|
||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *) &window);
|
||||
|
||||
/* The #GtkListitemFactory is what is used to create #GtkListItems
|
||||
/* The GtkListitemFactory is what is used to create GtkListItems
|
||||
* to display the data from the model. So it is absolutely necessary
|
||||
* to create one.
|
||||
* We will use a #GtkSignalListItemFactory because it is the simplest
|
||||
* We will use a GtkSignalListItemFactory because it is the simplest
|
||||
* one to use. Different ones are available for different use cases.
|
||||
* The most powerful one is #GtkBuilderListItemFactory which uses
|
||||
* #GtkBuilder .ui files, so it requires little code.
|
||||
* The most powerful one is GtkBuilderListItemFactory which uses
|
||||
* GtkBuilder .ui files, so it requires little code.
|
||||
*/
|
||||
factory = gtk_signal_list_item_factory_new ();
|
||||
g_signal_connect (factory, "setup", G_CALLBACK (setup_listitem_cb), NULL);
|
||||
@@ -184,7 +184,7 @@ do_listview_applauncher (GtkWidget *do_widget)
|
||||
*/
|
||||
g_signal_connect (list, "activate", G_CALLBACK (activate_cb), NULL);
|
||||
|
||||
/* List widgets should always be contained in a #GtkScrolledWindow,
|
||||
/* List widgets should always be contained in a GtkScrolledWindow,
|
||||
* because otherwise they might get too large or they might not
|
||||
* be scrollable.
|
||||
*/
|
||||
|
@@ -34,6 +34,7 @@ enum {
|
||||
};
|
||||
|
||||
#define FILE_BROWSER_TYPE_VIEW (file_browser_view_get_type ())
|
||||
G_MODULE_EXPORT
|
||||
G_DECLARE_FINAL_TYPE (FileBrowserView, file_browser_view, FILE_BROWSER, VIEW, GObject);
|
||||
|
||||
G_DEFINE_TYPE (FileBrowserView, file_browser_view, G_TYPE_OBJECT);
|
||||
@@ -159,7 +160,7 @@ static void file_browser_view_init (FileBrowserView *self)
|
||||
{
|
||||
}
|
||||
|
||||
char *
|
||||
G_MODULE_EXPORT char *
|
||||
filebrowser_get_display_name (GObject *object,
|
||||
GFileInfo *info)
|
||||
{
|
||||
@@ -169,7 +170,7 @@ filebrowser_get_display_name (GObject *object,
|
||||
return g_strdup (g_file_info_get_attribute_string (info, "standard::display-name"));
|
||||
}
|
||||
|
||||
char *
|
||||
G_MODULE_EXPORT char *
|
||||
filebrowser_get_content_type (GObject *object,
|
||||
GFileInfo *info)
|
||||
{
|
||||
@@ -179,7 +180,7 @@ filebrowser_get_content_type (GObject *object,
|
||||
return g_strdup (g_file_info_get_attribute_string (info, "standard::content-type"));
|
||||
}
|
||||
|
||||
char *
|
||||
G_MODULE_EXPORT char *
|
||||
filebrowser_get_size (GObject *object,
|
||||
GFileInfo *info)
|
||||
{
|
||||
@@ -189,7 +190,7 @@ filebrowser_get_size (GObject *object,
|
||||
return g_format_size (g_file_info_get_attribute_uint64 (info, "standard::size"));
|
||||
}
|
||||
|
||||
GIcon *
|
||||
G_MODULE_EXPORT GIcon *
|
||||
filebrowser_get_icon (GObject *object,
|
||||
GFileInfo *info)
|
||||
{
|
||||
@@ -206,7 +207,7 @@ filebrowser_get_icon (GObject *object,
|
||||
return icon;
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
filebrowser_up_clicked_cb (GtkButton *button,
|
||||
GtkDirectoryList *list)
|
||||
{
|
||||
@@ -219,7 +220,7 @@ filebrowser_up_clicked_cb (GtkButton *button,
|
||||
gtk_directory_list_set_file (list, file);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
filebrowser_view_activated_cb (GtkGridView *view,
|
||||
guint pos,
|
||||
GtkDirectoryList *list)
|
||||
|
@@ -25,6 +25,8 @@
|
||||
#include "demos.h"
|
||||
#include "fontify.h"
|
||||
|
||||
#include "demo_conf.h"
|
||||
|
||||
static GtkWidget *info_view;
|
||||
static GtkWidget *source_view;
|
||||
|
||||
@@ -196,16 +198,20 @@ activate_about (GSimpleAction *action,
|
||||
gtk_get_micro_version ());
|
||||
g_string_append_printf (s, "\nA link can appear here: <http://www.gtk.org>");
|
||||
|
||||
version = g_strdup_printf ("%s\nRunning against GTK %d.%d.%d",
|
||||
version = g_strdup_printf ("%s%s%s\nRunning against GTK %d.%d.%d",
|
||||
PACKAGE_VERSION,
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? "-" : "",
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? VCS_TAG : "",
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ());
|
||||
|
||||
gtk_show_about_dialog (GTK_WINDOW (gtk_application_get_active_window (app)),
|
||||
"program-name", "GTK Demo",
|
||||
"program-name", g_strcmp0 (PROFILE, "devel") == 0
|
||||
? "GTK Demo (Development)"
|
||||
: "GTK Demo",
|
||||
"version", version,
|
||||
"copyright", "© 1997—2020 The GTK Team",
|
||||
"copyright", "© 1997—2021 The GTK Team",
|
||||
"license-type", GTK_LICENSE_LGPL_2_1,
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to demonstrate GTK widgets",
|
||||
@@ -745,7 +751,6 @@ demo_filter_by_name (gpointer item,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkTreeListRow *row = item;
|
||||
GtkFilterListModel *model = user_data;
|
||||
GListModel *children;
|
||||
GtkDemo *demo;
|
||||
guint i, n;
|
||||
@@ -756,7 +761,7 @@ demo_filter_by_name (gpointer item,
|
||||
return TRUE;
|
||||
|
||||
g_assert (GTK_IS_TREE_LIST_ROW (row));
|
||||
g_assert (GTK_IS_FILTER_LIST_MODEL (model));
|
||||
g_assert (GTK_IS_FILTER_LIST_MODEL (user_data));
|
||||
|
||||
/* Show a row if itself of any parent matches */
|
||||
for (parent = row; parent; parent = gtk_tree_list_row_get_parent (parent))
|
||||
@@ -901,6 +906,9 @@ activate (GApplication *app)
|
||||
window = (GtkWidget *)gtk_builder_get_object (builder, "window");
|
||||
gtk_application_add_window (GTK_APPLICATION (app), GTK_WINDOW (window));
|
||||
|
||||
if (g_strcmp0 (PROFILE, "devel") == 0)
|
||||
gtk_widget_add_css_class (window, "devel");
|
||||
|
||||
action = g_simple_action_new ("run", NULL);
|
||||
g_signal_connect (action, "activate", G_CALLBACK (activate_run), window);
|
||||
g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (action));
|
||||
@@ -1043,10 +1051,10 @@ out:
|
||||
static void
|
||||
print_version (void)
|
||||
{
|
||||
g_print ("gtk4-demo %d.%d.%d\n",
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ());
|
||||
g_print ("gtk4-demo %s%s%s\n",
|
||||
PACKAGE_VERSION,
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? "-" : "",
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? VCS_TAG : "");
|
||||
}
|
||||
|
||||
static int
|
||||
|
@@ -25,6 +25,7 @@
|
||||
<object class="GtkButton">
|
||||
<property name="valign">center</property>
|
||||
<property name="action-name">win.run</property>
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="label" translatable="yes">Run</property>
|
||||
</object>
|
||||
</child>
|
||||
@@ -32,6 +33,7 @@
|
||||
<object class="GtkToggleButton">
|
||||
<property name="icon-name">edit-find-symbolic</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="active" bind-source="searchbar" bind-property="search-mode-enabled" bind-flags="bidirectional|sync-create"/>
|
||||
<accessibility>
|
||||
<property name="label" translatable="yes">Search</property>
|
||||
@@ -41,6 +43,7 @@
|
||||
<child type="end">
|
||||
<object class="GtkMenuButton" id="gear_menu_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="menu-model">gear_menu</property>
|
||||
<property name="icon-name">open-menu-symbolic</property>
|
||||
<accessibility>
|
||||
|
@@ -58,7 +58,7 @@ do_markup (GtkWidget *do_widget)
|
||||
window = gtk_window_new ();
|
||||
gtk_window_set_display (GTK_WINDOW (window),
|
||||
gtk_widget_get_display (do_widget));
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 450, 450);
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 680);
|
||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||
|
||||
stack = gtk_stack_new ();
|
||||
|
@@ -1,5 +1,9 @@
|
||||
|
||||
Text sizes: <span size="xx-small">tiny</span> <span size="x-small">very small</span> <span size="small">small</span> <span size="medium">normal</span> <span size="large">large</span> <span size="x-large">very large</span> <span size="xx-large">huge</span>
|
||||
Text sizes: <span size="xx-small">tiny </span><span size="x-small">very small </span><span size="small">small </span><span size="medium">normal </span><span size="large">large </span><span size="x-large">very large </span><span size="xx-large">huge</span>
|
||||
|
||||
Text styles: <span style="normal">Normal</span> <span style="italic">Italic</span> <span style="oblique">Olique</span>
|
||||
|
||||
Text weights: <span weight="thin">thin</span> <span weight="light">light</span> <span weight="normal">normal</span> <span weight="bold">bold</span> <span weight="ultraheavy">ultraheavy</span>
|
||||
|
||||
Text <span color="gray">c<span color="green">o</span>l<span color="tomato">o</span>rs</span> and <span background="pink">backgrounds</span>
|
||||
|
||||
@@ -15,6 +19,12 @@ OpenType font features: <span font_desc="sans regular" font_features="dlig=0">fe
|
||||
|
||||
Shortcuts: <tt>Monospace</tt> – <b>Bold</b> – <i>Italic</i> – <big>Big</big> – <small>Small</small> – <u>Underlined</u> – <s>Strikethrough</s> – Super<sup>script</sup> – Sub<sub>script</sub>
|
||||
|
||||
<span allow_breaks="false">A</span> hyphenation algorithm is a set of rules, especially one codified for implementation in a computer program, that decides at which points a word can be broken over two lines with a hyphen. For example, a hyphenation algorithm might decide that impeachment can be broken as <span allow_breaks="false">impeach‧ment</span> or <span allow_breaks="false">im‧peachment</span> but not <span allow_breaks="false">impe‧achment.</span>
|
||||
hyphenation algorithm is a <span allow_breaks="false" style="italic">set of rules</span>, especially one codified for implementation in a computer program, that decides at which points a word can be broken over two lines with a hyphen. For example, a hyphenation algorithm might decide that impeachment can be broken as impeach‧ment or im‧peachment but not impe‧achment.
|
||||
|
||||
<span insert_hyphens="false">one/two three/four five/six seven/eight nine/ten</span>
|
||||
|
||||
<span line_height='1.33'>Line height: This is an example of widely spaced text. It was achieved by setting the line-height factor to 1.33. You can set the line-height factor to any value between 0 and 10.
|
||||
Note that the line height affects the spacing between paragraphs as well as between the wrapped lines inside a paragraph.</span>
|
||||
|
||||
Transforms: <span text_transform='uppercase'>straße</span> <span text_transform='capitalize'>up, up and away</span>
|
||||
|
||||
|
@@ -21,8 +21,10 @@ do_menu (GtkWidget *do_widget)
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *box;
|
||||
GtkWidget *sw;
|
||||
GtkWidget *widget;
|
||||
GtkWidget *scale;
|
||||
|
||||
window = gtk_window_new ();
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Menu");
|
||||
@@ -31,11 +33,23 @@ do_menu (GtkWidget *do_widget)
|
||||
gtk_widget_get_display (do_widget));
|
||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_window_set_child (GTK_WINDOW (window), box);
|
||||
|
||||
sw = gtk_scrolled_window_new ();
|
||||
gtk_window_set_child (GTK_WINDOW (window), sw);
|
||||
gtk_widget_set_vexpand (sw, TRUE);
|
||||
gtk_box_append (GTK_BOX (box), sw);
|
||||
|
||||
widget = demo3_widget_new ("/transparent/portland-rose.jpg");
|
||||
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), widget);
|
||||
|
||||
scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0.01, 10.0, 0.1);
|
||||
gtk_range_set_value (GTK_RANGE (scale), 1.0);
|
||||
gtk_box_append (GTK_BOX (box), scale);
|
||||
|
||||
g_object_bind_property (gtk_range_get_adjustment (GTK_RANGE (scale)), "value",
|
||||
widget, "scale",
|
||||
G_BINDING_BIDIRECTIONAL);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
|
@@ -29,6 +29,7 @@ demos = files([
|
||||
'fishbowl.c',
|
||||
'fixed.c',
|
||||
'fontrendering.c',
|
||||
'frames.c',
|
||||
'gears.c',
|
||||
'gestures.c',
|
||||
'glarea.c',
|
||||
@@ -66,6 +67,7 @@ demos = files([
|
||||
'paintable_animated.c',
|
||||
'paintable_emblem.c',
|
||||
'paintable_mediastream.c',
|
||||
'paintable_symbolic.c',
|
||||
'panes.c',
|
||||
'password_entry.c',
|
||||
'peg_solitaire.c',
|
||||
@@ -167,6 +169,8 @@ foreach flag: common_cflags
|
||||
endif
|
||||
endforeach
|
||||
|
||||
gtkdemo_deps += [ demo_conf_h ]
|
||||
|
||||
executable('gtk4-demo',
|
||||
sources: [demos, demos_h, extra_demo_sources, gtkdemo_resources],
|
||||
c_args: gtkdemo_args + demo_cflags,
|
||||
@@ -202,4 +206,9 @@ install_data('org.gtk.Demo4.gschema.xml', install_dir: gtk_schemasdir)
|
||||
gnome.compile_schemas()
|
||||
|
||||
# appdata
|
||||
install_data('org.gtk.Demo4.appdata.xml', install_dir: gtk_appdatadir)
|
||||
configure_file(
|
||||
input: 'org.gtk.Demo4.appdata.xml.in',
|
||||
output: 'org.gtk.Demo4.appdata.xml',
|
||||
configuration: appdata_config,
|
||||
install_dir: gtk_appdatadir
|
||||
)
|
||||
|
@@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>org.gtk.Demo4.desktop</id>
|
||||
<id>org.gtk.Demo4</id>
|
||||
<launchable type="desktop-id">org.gtk.Demo4.desktop</launchable>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>LGPL-2.0+</project_license>
|
||||
<project_license>LGPL-2.1-or-later</project_license>
|
||||
<name>GTK Demo</name>
|
||||
<summary>Program to demonstrate GTK functions</summary>
|
||||
<description>
|
||||
@@ -30,15 +31,11 @@
|
||||
<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="3.99.0" date="2020-07-30">
|
||||
<release version="@BUILD_VERSION@" date="@BUILD_DATE@">
|
||||
<description>
|
||||
<p>A new developers snapshot towards GTK 4.0.</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="3.94.0" date="2018-06-25">
|
||||
<description>
|
||||
<p>A new developers snapshot towards GTK 4.0.</p>
|
||||
<p>A new build of GTK.</p>
|
||||
</description>
|
||||
</release>
|
||||
</releases>
|
@@ -45,26 +45,27 @@ struct _GtkNuclearIconClass
|
||||
* so that it can be called from all the other demos, too.
|
||||
*/
|
||||
void
|
||||
gtk_nuclear_snapshot (GtkSnapshot *snapshot,
|
||||
double width,
|
||||
double height,
|
||||
double rotation,
|
||||
gboolean draw_background)
|
||||
gtk_nuclear_snapshot (GtkSnapshot *snapshot,
|
||||
const GdkRGBA *foreground,
|
||||
const GdkRGBA *background,
|
||||
double width,
|
||||
double height,
|
||||
double rotation)
|
||||
{
|
||||
#define RADIUS 0.3
|
||||
cairo_t *cr;
|
||||
double size;
|
||||
|
||||
if (draw_background)
|
||||
gtk_snapshot_append_color (snapshot,
|
||||
&(GdkRGBA) { 0.9, 0.75, 0.15, 1.0 },
|
||||
&GRAPHENE_RECT_INIT (0, 0, width, height));
|
||||
gtk_snapshot_append_color (snapshot,
|
||||
background,
|
||||
&GRAPHENE_RECT_INIT (0, 0, width, height));
|
||||
|
||||
size = MIN (width, height);
|
||||
cr = gtk_snapshot_append_cairo (snapshot,
|
||||
&GRAPHENE_RECT_INIT ((width - size) / 2.0,
|
||||
(height - size) / 2.0,
|
||||
size, size));
|
||||
gdk_cairo_set_source_rgba (cr, foreground);
|
||||
cairo_translate (cr, width / 2.0, height / 2.0);
|
||||
cairo_scale (cr, size, size);
|
||||
cairo_rotate (cr, rotation);
|
||||
@@ -94,9 +95,10 @@ gtk_nuclear_icon_snapshot (GdkPaintable *paintable,
|
||||
*/
|
||||
|
||||
gtk_nuclear_snapshot (snapshot,
|
||||
&(GdkRGBA) { 0, 0, 0, 1 }, /* black */
|
||||
&(GdkRGBA) { 0.9, 0.75, 0.15, 1.0 }, /* yellow */
|
||||
width, height,
|
||||
nuclear->rotation,
|
||||
TRUE);
|
||||
nuclear->rotation);
|
||||
}
|
||||
|
||||
static GdkPaintableFlags
|
||||
|
@@ -4,10 +4,11 @@
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
void gtk_nuclear_snapshot (GtkSnapshot *snapshot,
|
||||
const GdkRGBA *foreground,
|
||||
const GdkRGBA *background,
|
||||
double width,
|
||||
double height,
|
||||
double rotation,
|
||||
gboolean draw_background);
|
||||
double rotation);
|
||||
|
||||
GdkPaintable * gtk_nuclear_icon_new (double rotation);
|
||||
GdkPaintable * gtk_nuclear_animation_new (gboolean draw_background);
|
||||
|
@@ -65,9 +65,12 @@ gtk_nuclear_animation_snapshot (GdkPaintable *paintable,
|
||||
|
||||
/* We call the function from the previous example here. */
|
||||
gtk_nuclear_snapshot (snapshot,
|
||||
&(GdkRGBA) { 0, 0, 0, 1 }, /* black */
|
||||
nuclear->draw_background
|
||||
? &(GdkRGBA) { 0.9, 0.75, 0.15, 1.0 } /* yellow */
|
||||
: &(GdkRGBA) { 0, 0, 0, 0 }, /* transparent */
|
||||
width, height,
|
||||
2 * G_PI * nuclear->progress / MAX_PROGRESS,
|
||||
nuclear->draw_background);
|
||||
2 * G_PI * nuclear->progress / MAX_PROGRESS);
|
||||
}
|
||||
|
||||
static GdkPaintable *
|
||||
|
@@ -73,9 +73,10 @@ gtk_nuclear_media_stream_snapshot (GdkPaintable *paintable,
|
||||
|
||||
/* We call the function from the previous example here. */
|
||||
gtk_nuclear_snapshot (snapshot,
|
||||
&(GdkRGBA) { 0, 0, 0, 1 }, /* black */
|
||||
&(GdkRGBA) { 0.9, 0.75, 0.15, 1.0 }, /* yellow */
|
||||
width, height,
|
||||
2 * G_PI * nuclear->progress / DURATION,
|
||||
TRUE);
|
||||
2 * G_PI * nuclear->progress / DURATION);
|
||||
}
|
||||
|
||||
static GdkPaintable *
|
||||
@@ -150,7 +151,7 @@ gtk_nuclear_media_stream_step (gpointer data)
|
||||
* call our pause function to pause the stream.
|
||||
*/
|
||||
if (nuclear->progress >= DURATION)
|
||||
gtk_media_stream_ended (GTK_MEDIA_STREAM (nuclear));
|
||||
gtk_media_stream_stream_ended (GTK_MEDIA_STREAM (nuclear));
|
||||
|
||||
/* The timeout function is removed by the pause function,
|
||||
* so we can just always return this value.
|
||||
@@ -267,11 +268,11 @@ gtk_nuclear_media_stream_init (GtkNuclearMediaStream *nuclear)
|
||||
* However, media streams need to tell GTK once they are initialized,
|
||||
* so we do that here.
|
||||
*/
|
||||
gtk_media_stream_prepared (GTK_MEDIA_STREAM (nuclear),
|
||||
FALSE,
|
||||
TRUE,
|
||||
TRUE,
|
||||
DURATION);
|
||||
gtk_media_stream_stream_prepared (GTK_MEDIA_STREAM (nuclear),
|
||||
FALSE,
|
||||
TRUE,
|
||||
TRUE,
|
||||
DURATION);
|
||||
}
|
||||
|
||||
/* And finally, we add the simple constructor we declared in the header. */
|
||||
|
208
demos/gtk-demo/paintable_symbolic.c
Normal file
@@ -0,0 +1,208 @@
|
||||
/* Paintable/Symbolic Paintable
|
||||
*
|
||||
* GdkPaintables can be made to follow the theme's colors. GTK calls
|
||||
* icons that do this symbolic icons, paintables that want to have
|
||||
* the same effect can implement the GtkSymbolicPaintable interface.
|
||||
*
|
||||
* We will adapt the original paintable example by adding the ability
|
||||
* to recolor the paintable based on the symbolic colors.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "paintable.h"
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
/* First, add the boilerplate for the object itself.
|
||||
* This part would normally go in the header.
|
||||
*/
|
||||
#define GTK_TYPE_NUCLEAR_SYMBOLIC (gtk_nuclear_symbolic_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (GtkNuclearSymbolic, gtk_nuclear_symbolic, GTK, NUCLEAR_SYMBOLIC, GObject)
|
||||
|
||||
/* Declare a few warning levels, so we can pick colors based on them */
|
||||
typedef enum
|
||||
{
|
||||
WARNING_NONE,
|
||||
WARNING_ALERT,
|
||||
WARNING_EMERGENCY
|
||||
} WarningLevel;
|
||||
|
||||
/* Declare the struct. */
|
||||
struct _GtkNuclearSymbolic
|
||||
{
|
||||
GObject parent_instance;
|
||||
|
||||
WarningLevel warning_level;
|
||||
};
|
||||
|
||||
struct _GtkNuclearSymbolicClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
};
|
||||
|
||||
/* Add a function to draw the nuclear icon in the given colors */
|
||||
static void
|
||||
gtk_nuclear_symbolic_snapshot_symbolic (GtkSymbolicPaintable *paintable,
|
||||
GdkSnapshot *snapshot,
|
||||
double width,
|
||||
double height,
|
||||
const GdkRGBA *colors,
|
||||
gsize n_colors)
|
||||
{
|
||||
GtkNuclearSymbolic *self = GTK_NUCLEAR_SYMBOLIC (paintable);
|
||||
static const GdkRGBA transparent = { 0, };
|
||||
const GdkRGBA *bg_color;
|
||||
|
||||
/* select the right background color from the warning level */
|
||||
switch (self->warning_level)
|
||||
{
|
||||
case WARNING_NONE:
|
||||
bg_color = &transparent;
|
||||
break;
|
||||
case WARNING_ALERT:
|
||||
bg_color = &colors[GTK_SYMBOLIC_COLOR_WARNING];
|
||||
break;
|
||||
case WARNING_EMERGENCY:
|
||||
bg_color = &colors[GTK_SYMBOLIC_COLOR_ERROR];
|
||||
break;
|
||||
default:
|
||||
/* This should never happen, but we better do defensive coding
|
||||
* with this critical icon */
|
||||
g_assert_not_reached ();
|
||||
bg_color = &transparent;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Draw the icon with the selected warning color */
|
||||
gtk_nuclear_snapshot (snapshot,
|
||||
&colors[GTK_SYMBOLIC_COLOR_FOREGROUND],
|
||||
bg_color,
|
||||
width, height,
|
||||
0);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_nuclear_symbolic_symbolic_paintable_init (GtkSymbolicPaintableInterface *iface)
|
||||
{
|
||||
iface->snapshot_symbolic = gtk_nuclear_symbolic_snapshot_symbolic;
|
||||
}
|
||||
|
||||
/* We need to implement the functionality required by the GdkPaintable interface */
|
||||
static void
|
||||
gtk_nuclear_symbolic_snapshot (GdkPaintable *paintable,
|
||||
GdkSnapshot *snapshot,
|
||||
double width,
|
||||
double height)
|
||||
{
|
||||
/* Calling this function without passing a color is a neat trick
|
||||
* to make GTK use default colors and otherwise forward the call
|
||||
* to the snapshotting function above.
|
||||
*/
|
||||
gtk_symbolic_paintable_snapshot_symbolic (GTK_SYMBOLIC_PAINTABLE (paintable),
|
||||
snapshot,
|
||||
width, height,
|
||||
NULL, 0);
|
||||
}
|
||||
|
||||
static GdkPaintableFlags
|
||||
gtk_nuclear_symbolic_get_flags (GdkPaintable *paintable)
|
||||
{
|
||||
/* This image has a static size, but the contents may change:
|
||||
* We draw different things when the warning level changes.
|
||||
*/
|
||||
return GDK_PAINTABLE_STATIC_SIZE;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_nuclear_symbolic_paintable_init (GdkPaintableInterface *iface)
|
||||
{
|
||||
iface->snapshot = gtk_nuclear_symbolic_snapshot;
|
||||
iface->get_flags = gtk_nuclear_symbolic_get_flags;
|
||||
}
|
||||
|
||||
/* When defining the GType, we need to implement bot the GdkPaintable
|
||||
* and the GtkSymbolicPaintable interface */
|
||||
G_DEFINE_TYPE_WITH_CODE (GtkNuclearSymbolic, gtk_nuclear_symbolic, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (GDK_TYPE_PAINTABLE,
|
||||
gtk_nuclear_symbolic_paintable_init)
|
||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_SYMBOLIC_PAINTABLE,
|
||||
gtk_nuclear_symbolic_symbolic_paintable_init))
|
||||
|
||||
static void
|
||||
gtk_nuclear_symbolic_class_init (GtkNuclearSymbolicClass *klass)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_nuclear_symbolic_init (GtkNuclearSymbolic *nuclear)
|
||||
{
|
||||
}
|
||||
|
||||
/* And finally, we add the simple constructor we declared in the header. */
|
||||
GdkPaintable *
|
||||
gtk_nuclear_symbolic_new (void)
|
||||
{
|
||||
return g_object_new (GTK_TYPE_NUCLEAR_SYMBOLIC, NULL);
|
||||
}
|
||||
|
||||
/* Add some fun feature to the button */
|
||||
static void
|
||||
nuclear_button_clicked (GtkButton *button,
|
||||
GtkNuclearSymbolic *nuclear)
|
||||
{
|
||||
if (nuclear->warning_level >= WARNING_EMERGENCY)
|
||||
{
|
||||
/* On maximum warning level, reset the warning */
|
||||
nuclear->warning_level = WARNING_NONE;
|
||||
/* And sometimes (but not always to confuse people)
|
||||
* close the window.
|
||||
*/
|
||||
if (g_random_boolean ())
|
||||
gtk_window_close (GTK_WINDOW (window));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Otherwise just increase the warning level */
|
||||
nuclear->warning_level++;
|
||||
}
|
||||
|
||||
/* Don't forget to emit the signal causing the paintable to redraw.
|
||||
* Changing the warning level changes the background color after all.
|
||||
*/
|
||||
gdk_paintable_invalidate_contents (GDK_PAINTABLE (nuclear));
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_paintable_symbolic (GtkWidget *do_widget)
|
||||
{
|
||||
GdkPaintable *nuclear;
|
||||
GtkWidget *image, *button;
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_window_new ();
|
||||
gtk_window_set_display (GTK_WINDOW (window),
|
||||
gtk_widget_get_display (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Don't click!");
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
|
||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||
|
||||
button = gtk_button_new ();
|
||||
gtk_window_set_child (GTK_WINDOW (window), button);
|
||||
|
||||
nuclear = gtk_nuclear_symbolic_new ();
|
||||
image = gtk_image_new_from_paintable (nuclear);
|
||||
|
||||
gtk_button_set_child (GTK_BUTTON (button), image);
|
||||
g_signal_connect (button, "clicked", G_CALLBACK (nuclear_button_clicked), nuclear);
|
||||
g_object_unref (nuclear);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
gtk_widget_show (window);
|
||||
else
|
||||
gtk_window_destroy (GTK_WINDOW (window));
|
||||
|
||||
return window;
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
/* Peg Solitaire
|
||||
* #Keywords: GtkGridView, game
|
||||
*
|
||||
* This demo demonstrates how to use drag'n'drop to implement peg solitaire.
|
||||
* This demo demonstrates how to use drag-and-drop to implement peg solitaire.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -98,7 +98,7 @@ solitaire_peg_init (SolitairePeg *peg)
|
||||
|
||||
/* Add a little setter for the peg's position.
|
||||
* We want to track those so that we can check for legal moves
|
||||
* during drag'n'drop operations.
|
||||
* during drag-and-drop operations.
|
||||
*/
|
||||
static void
|
||||
solitaire_peg_set_position (SolitairePeg *peg,
|
||||
|
@@ -25,43 +25,43 @@ show_shortcuts (GtkWidget *window,
|
||||
g_object_unref (builder);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
shortcuts_builder_shortcuts (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-builder", NULL);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
shortcuts_gedit_shortcuts (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-gedit", NULL);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
shortcuts_clocks_shortcuts (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-clocks", NULL);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
shortcuts_clocks_shortcuts_stopwatch (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-clocks", "stopwatch");
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
shortcuts_boxes_shortcuts (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-boxes", NULL);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
shortcuts_boxes_shortcuts_wizard (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-boxes", "wizard");
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
shortcuts_boxes_shortcuts_display (GtkWidget *window)
|
||||
{
|
||||
show_shortcuts (window, "shortcuts-boxes", "display");
|
||||
|
@@ -2,6 +2,7 @@
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
#include <glib.h>
|
||||
#include <assert.h>
|
||||
|
||||
/* See Golub and Reinsch,
|
||||
* "Handbook for Automatic Computation vol II - Linear Algebra",
|
||||
@@ -39,6 +40,9 @@ householder_reduction (double *A,
|
||||
double *pu, *pui, *pv, *pvi;
|
||||
double half_norm_squared;
|
||||
|
||||
assert (nrows >= 2);
|
||||
assert (ncols >= 2);
|
||||
|
||||
memcpy (U, A, sizeof (double) * nrows * ncols);
|
||||
|
||||
diagonal[0] = 0.0;
|
||||
@@ -205,6 +209,9 @@ givens_reduction (int nrows,
|
||||
int rotation_test;
|
||||
int iteration_count;
|
||||
|
||||
assert (nrows >= 2);
|
||||
assert (ncols >= 2);
|
||||
|
||||
for (i = 0, x = 0.0; i < ncols; i++)
|
||||
{
|
||||
y = fabs (diagonal[i]) + fabs (superdiagonal[i]);
|
||||
@@ -342,6 +349,9 @@ sort_singular_values (int nrows,
|
||||
double temp;
|
||||
double *p1, *p2;
|
||||
|
||||
assert (nrows >= 2);
|
||||
assert (ncols >= 2);
|
||||
|
||||
for (i = 0; i < ncols - 1; i++)
|
||||
{
|
||||
max_index = i;
|
||||
@@ -433,9 +443,12 @@ singular_value_decomposition_solve (double *U,
|
||||
double d;
|
||||
double tolerance;
|
||||
|
||||
assert (nrows >= 2);
|
||||
assert (ncols >= 2);
|
||||
|
||||
tolerance = DBL_EPSILON * S[0] * (double) ncols;
|
||||
|
||||
for ( i = 0, pv = V; i < ncols; i++, pv += ncols)
|
||||
for (i = 0, pv = V; i < ncols; i++, pv += ncols)
|
||||
{
|
||||
x[i] = 0.0;
|
||||
for (j = 0; j < ncols; j++)
|
||||
|
@@ -12,7 +12,7 @@
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
G_MODULE_EXPORT int
|
||||
spinbutton_hex_spin_input (GtkSpinButton *spin_button,
|
||||
double *new_val)
|
||||
{
|
||||
@@ -29,7 +29,7 @@ spinbutton_hex_spin_input (GtkSpinButton *spin_button,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
G_MODULE_EXPORT int
|
||||
spinbutton_hex_spin_output (GtkSpinButton *spin_button)
|
||||
{
|
||||
GtkAdjustment *adjustment;
|
||||
@@ -49,7 +49,7 @@ spinbutton_hex_spin_output (GtkSpinButton *spin_button)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
G_MODULE_EXPORT int
|
||||
spinbutton_time_spin_input (GtkSpinButton *spin_button,
|
||||
double *new_val)
|
||||
{
|
||||
@@ -88,7 +88,7 @@ spinbutton_time_spin_input (GtkSpinButton *spin_button,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
G_MODULE_EXPORT int
|
||||
spinbutton_time_spin_output (GtkSpinButton *spin_button)
|
||||
{
|
||||
GtkAdjustment *adjustment;
|
||||
@@ -122,7 +122,7 @@ static const char *month[12] = {
|
||||
"December"
|
||||
};
|
||||
|
||||
int
|
||||
G_MODULE_EXPORT int
|
||||
spinbutton_month_spin_input (GtkSpinButton *spin_button,
|
||||
double *new_val)
|
||||
{
|
||||
@@ -151,7 +151,7 @@ spinbutton_month_spin_input (GtkSpinButton *spin_button,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
G_MODULE_EXPORT int
|
||||
spinbutton_month_spin_output (GtkSpinButton *spin_button)
|
||||
{
|
||||
GtkAdjustment *adjustment;
|
||||
|
@@ -41,11 +41,26 @@ open_clicked_cb (GtkWidget *button,
|
||||
"_Open",
|
||||
"_Cancel");
|
||||
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_add_pattern (filter, "*");
|
||||
gtk_file_filter_set_name (filter, "All Files");
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
g_object_unref (filter);
|
||||
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_add_mime_type (filter, "image/*");
|
||||
gtk_file_filter_set_name (filter, "Images");
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
g_object_unref (filter);
|
||||
|
||||
filter = gtk_file_filter_new ();
|
||||
gtk_file_filter_add_mime_type (filter, "video/*");
|
||||
gtk_file_filter_set_name (filter, "Video");
|
||||
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
|
||||
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
|
||||
g_object_unref (filter);
|
||||
|
||||
gtk_native_dialog_set_modal (GTK_NATIVE_DIALOG (dialog), TRUE);
|
||||
g_signal_connect (dialog, "response", G_CALLBACK (open_dialog_response_cb), video);
|
||||
gtk_native_dialog_show (GTK_NATIVE_DIALOG (dialog));
|
||||
|
@@ -4,6 +4,8 @@
|
||||
#include "iconbrowserapp.h"
|
||||
#include "iconbrowserwin.h"
|
||||
|
||||
#include "demo_conf.h"
|
||||
|
||||
struct _IconBrowserApp
|
||||
{
|
||||
GtkApplication parent;
|
||||
@@ -75,21 +77,25 @@ about_activated (GSimpleAction *action,
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ());
|
||||
g_string_append_printf (s, "\nIcon theme\n\t%s", icon_theme);
|
||||
version = g_strdup_printf ("%s\nRunning against GTK %d.%d.%d",
|
||||
version = g_strdup_printf ("%s%s%s\nRunning against GTK %d.%d.%d",
|
||||
PACKAGE_VERSION,
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? "-" : "",
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? VCS_TAG : "",
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ());
|
||||
|
||||
gtk_show_about_dialog (GTK_WINDOW (gtk_application_get_active_window (app)),
|
||||
"program-name", "GTK Icon Browser",
|
||||
"program-name", g_strcmp0 (PROFILE, "devel") == 0
|
||||
? "GTK Icon Browser (Development)"
|
||||
: "GTK Icon Browser",
|
||||
"version", version,
|
||||
"copyright", "© 1997—2020 The GTK Team",
|
||||
"copyright", "© 1997—2021 The GTK Team",
|
||||
"license-type", GTK_LICENSE_LGPL_2_1,
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to browse themed icons",
|
||||
"authors", authors,
|
||||
"logo-icon-name", "org.gtk.Demo4",
|
||||
"logo-icon-name", "org.gtk.IconBrowser4",
|
||||
"title", "About GTK Icon Browser",
|
||||
"system-information", s->str,
|
||||
NULL);
|
||||
@@ -129,6 +135,10 @@ icon_browser_app_activate (GApplication *app)
|
||||
IconBrowserWindow *win;
|
||||
|
||||
win = icon_browser_window_new (ICON_BROWSER_APP (app));
|
||||
|
||||
if (g_strcmp0 (PROFILE, "devel") == 0)
|
||||
gtk_widget_add_css_class (GTK_WIDGET (win), "devel");
|
||||
|
||||
gtk_window_present (GTK_WINDOW (win));
|
||||
}
|
||||
|
||||
|
@@ -14,8 +14,10 @@ struct _IconBrowserWindow
|
||||
GtkWidget *searchbar;
|
||||
GListModel *icon_filter_model;
|
||||
GListStore *icon_store;
|
||||
GListModel *context_model;
|
||||
GListStore *context_store;
|
||||
GtkFilter *name_filter;
|
||||
GtkFilter *search_mode_filter;
|
||||
GtkWidget *details;
|
||||
GtkWidget *image1;
|
||||
GtkWidget *image2;
|
||||
@@ -354,6 +356,28 @@ setup_scalable_image_dnd (GtkWidget *image)
|
||||
gtk_widget_add_controller (image, GTK_EVENT_CONTROLLER (source));
|
||||
}
|
||||
|
||||
static void
|
||||
search_mode_toggled (GtkSearchBar *searchbar,
|
||||
GParamSpec *pspec,
|
||||
IconBrowserWindow *win)
|
||||
{
|
||||
if (gtk_search_bar_get_search_mode (searchbar))
|
||||
gtk_single_selection_set_selected (GTK_SINGLE_SELECTION (win->context_model), GTK_INVALID_LIST_POSITION);
|
||||
else if (gtk_single_selection_get_selected (GTK_SINGLE_SELECTION (win->context_model)) == GTK_INVALID_LIST_POSITION)
|
||||
gtk_single_selection_set_selected (GTK_SINGLE_SELECTION (win->context_model), 0);
|
||||
|
||||
gtk_filter_changed (win->search_mode_filter, GTK_FILTER_CHANGE_DIFFERENT);
|
||||
}
|
||||
|
||||
static void
|
||||
selected_name_changed (GtkSingleSelection *selection,
|
||||
GParamSpec *pspec,
|
||||
IconBrowserWindow *win)
|
||||
{
|
||||
if (gtk_single_selection_get_selected (selection) != GTK_INVALID_LIST_POSITION)
|
||||
gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (win->searchbar), FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
icon_browser_window_init (IconBrowserWindow *win)
|
||||
{
|
||||
@@ -380,6 +404,9 @@ icon_browser_window_init (IconBrowserWindow *win)
|
||||
win->name_filter = GTK_FILTER (gtk_custom_filter_new (filter_by_icon_name, NULL, NULL));
|
||||
|
||||
gtk_multi_filter_append (GTK_MULTI_FILTER (filter), g_object_ref (win->name_filter));
|
||||
|
||||
g_signal_connect (win->searchbar, "notify::search-mode-enabled", G_CALLBACK (search_mode_toggled), win);
|
||||
g_signal_connect (win->context_model, "notify::selected", G_CALLBACK (selected_name_changed), win);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -409,6 +436,7 @@ icon_browser_window_class_init (IconBrowserWindowClass *class)
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, searchbar);
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, icon_store);
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, icon_filter_model);
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, context_model);
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, context_store);
|
||||
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, details);
|
||||
@@ -422,6 +450,7 @@ icon_browser_window_class_init (IconBrowserWindowClass *class)
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, image8);
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, label8);
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, description);
|
||||
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), IconBrowserWindow, search_mode_filter);
|
||||
|
||||
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), item_activated);
|
||||
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), copy_to_clipboard);
|
||||
|
@@ -14,7 +14,7 @@ iconbrowser_resources = gnome.compile_resources('iconbrowser_resources',
|
||||
executable('gtk4-icon-browser',
|
||||
sources: [iconbrowser_sources, iconbrowser_resources],
|
||||
c_args: common_cflags,
|
||||
dependencies: libgtk_dep,
|
||||
dependencies: [ libgtk_dep, demo_conf_h ],
|
||||
include_directories: confinc,
|
||||
gui_app: true,
|
||||
link_args: extra_demo_ldflags,
|
||||
@@ -32,5 +32,10 @@ endforeach
|
||||
install_data('org.gtk.IconBrowser4.desktop', install_dir: gtk_applicationsdir)
|
||||
|
||||
# appdata
|
||||
install_data('org.gtk.IconBrowser4.appdata.xml', install_dir: gtk_appdatadir)
|
||||
configure_file(
|
||||
input: 'org.gtk.IconBrowser4.appdata.xml.in',
|
||||
output: 'org.gtk.IconBrowser4.appdata.xml',
|
||||
configuration: appdata_config,
|
||||
install_dir: gtk_appdatadir
|
||||
)
|
||||
|
||||
|
@@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>org.gtk.IconBrowser4.desktop</id>
|
||||
<id>org.gtk.IconBrowser4</id>
|
||||
<launchable type="desktop-id">org.gtk.IconBrowser4.desktop</launchable>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>LGPL-2.0+</project_license>
|
||||
<project_license>LGPL-2.1-or-later</project_license>
|
||||
<name>GTK Icon Browser</name>
|
||||
<summary>Program to browse themed icons</summary>
|
||||
<description>
|
||||
@@ -29,15 +30,11 @@
|
||||
<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="3.99.0" date="2020-07-30">
|
||||
<release version="@BUILD_VERSION@" date="@BUILD_DATE@">
|
||||
<description>
|
||||
<p>A new developers snapshot towards GTK 4.0.</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="3.94.0" date="2018-06-25">
|
||||
<description>
|
||||
<p>A new developers snapshot towards GTK 4.0.</p>
|
||||
<p>A new build of GTK.</p>
|
||||
</description>
|
||||
</release>
|
||||
</releases>
|
@@ -25,12 +25,14 @@
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkToggleButton" id="normal_radio">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="label" translatable="yes">Normal</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkToggleButton" id="symbolic_radio">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="label" translatable="yes">Symbolic</property>
|
||||
<property name="group">normal_radio</property>
|
||||
<signal name="notify::active" handler="symbolic_toggled" swapped="yes" after="yes"/>
|
||||
@@ -40,6 +42,7 @@
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkMenuButton" id="gear_menu_button">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="menu-model">gear_menu</property>
|
||||
<property name="icon-name">open-menu-symbolic</property>
|
||||
@@ -47,6 +50,7 @@
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkToggleButton" id="search">
|
||||
<property name="focus-on-click">0</property>
|
||||
<style>
|
||||
<class name="image-button"/>
|
||||
</style>
|
||||
@@ -151,19 +155,32 @@
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStringFilter">
|
||||
<property name="ignore-case">0</property>
|
||||
<property name="match-mode">exact</property>
|
||||
<property name="expression">
|
||||
<lookup name="context" type="IbIcon"/>
|
||||
</property>
|
||||
<binding name="search">
|
||||
<lookup name="id" type="IbContext">
|
||||
<lookup name="selected-item" type="GtkSingleSelection">
|
||||
context_model
|
||||
</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
<object class="GtkAnyFilter">
|
||||
<child>
|
||||
<object class="GtkBoolFilter" id="search_mode_filter">
|
||||
<property name="expression">
|
||||
<lookup name="search-mode-enabled">
|
||||
searchbar
|
||||
</lookup>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkStringFilter">
|
||||
<property name="ignore-case">0</property>
|
||||
<property name="match-mode">exact</property>
|
||||
<property name="expression">
|
||||
<lookup name="context" type="IbIcon"/>
|
||||
</property>
|
||||
<binding name="search">
|
||||
<lookup name="id" type="IbContext">
|
||||
<lookup name="selected-item" type="GtkSingleSelection">
|
||||
context_model
|
||||
</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@@ -1,3 +1,31 @@
|
||||
gen_demo_header = find_program('../build-aux/meson/gen-demo-header.py')
|
||||
demo_profile = get_option('profile')
|
||||
|
||||
demo_conf_h = declare_dependency(
|
||||
sources: custom_target('demo-header',
|
||||
command: [gen_demo_header, meson.source_root(), demo_profile],
|
||||
capture: true,
|
||||
output: 'demo_conf.h',
|
||||
build_by_default: true,
|
||||
build_always_stale: true,
|
||||
)
|
||||
)
|
||||
|
||||
# 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.set('BUILD_VERSION', meson.project_version())
|
||||
appdata_config.set('BUILD_DATE', today)
|
||||
|
||||
subdir('constraint-editor')
|
||||
subdir('gtk-demo')
|
||||
subdir('icon-browser')
|
||||
|
@@ -2,8 +2,8 @@
|
||||
<interface>
|
||||
<object class="GtkWindow" id="window">
|
||||
<property name="title" translatable="yes">Help</property>
|
||||
<property name="default-width">720</property>
|
||||
<property name="default-height">520</property>
|
||||
<property name="default-width">920</property>
|
||||
<property name="default-height">600</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<child>
|
||||
|
@@ -12,7 +12,7 @@ node_editor_resources = gnome.compile_resources('node_editor_resources',
|
||||
|
||||
executable('gtk4-node-editor',
|
||||
sources: [node_editor_sources, node_editor_resources],
|
||||
dependencies: libgtk_dep,
|
||||
dependencies: [ libgtk_dep, demo_conf_h ],
|
||||
include_directories: confinc,
|
||||
c_args: [
|
||||
'-DNODE_EDITOR_SOURCE_DIR="@0@/../../testsuite/gsk/compare/"'.format(meson.current_source_dir())
|
||||
|
@@ -23,6 +23,8 @@
|
||||
|
||||
#include "node-editor-window.h"
|
||||
|
||||
#include "demo_conf.h"
|
||||
|
||||
static const char *css =
|
||||
"textview.editor {"
|
||||
" color: rgb(192, 197, 206);"
|
||||
@@ -94,22 +96,26 @@ activate_about (GSimpleAction *action,
|
||||
|
||||
g_string_append_printf (s, "\nRenderer\n\t%s", renderer);
|
||||
|
||||
version = g_strdup_printf ("%s\nRunning against GTK %d.%d.%d",
|
||||
version = g_strdup_printf ("%s%s%s\nRunning against GTK %d.%d.%d",
|
||||
PACKAGE_VERSION,
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? "-" : "",
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? VCS_TAG : "",
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ());
|
||||
|
||||
dialog = g_object_new (GTK_TYPE_ABOUT_DIALOG,
|
||||
"transient-for", gtk_application_get_active_window (app),
|
||||
"program-name", "GTK Node Editor",
|
||||
"program-name", g_strcmp0 (PROFILE, "devel") == 0
|
||||
? "GTK Node Editor (Development)"
|
||||
: "GTK Node Editor",
|
||||
"version", version,
|
||||
"copyright", "© 2019—2020 The GTK Team",
|
||||
"copyright", "© 2019—2021 The GTK Team",
|
||||
"license-type", GTK_LICENSE_LGPL_2_1,
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to test GTK rendering",
|
||||
"authors", (const char *[]){ "Benjamin Otte", "Timm Bäder", NULL},
|
||||
"logo-icon-name", "org.gtk.gtk4.NodeEditor.Devel",
|
||||
"logo-icon-name", "org.gtk.gtk4.NodeEditor",
|
||||
"title", "About GTK Node Editor",
|
||||
"system-information", s->str,
|
||||
NULL);
|
||||
@@ -207,6 +213,10 @@ node_editor_application_activate (GApplication *app)
|
||||
NodeEditorWindow *win;
|
||||
|
||||
win = node_editor_window_new (NODE_EDITOR_APPLICATION (app));
|
||||
|
||||
if (g_strcmp0 (PROFILE, "devel") == 0)
|
||||
gtk_widget_add_css_class (GTK_WIDGET (win), "devel");
|
||||
|
||||
gtk_window_present (GTK_WINDOW (win));
|
||||
}
|
||||
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#include "gtkrendererpaintableprivate.h"
|
||||
|
||||
#include "gsk/gskrendernodeparserprivate.h"
|
||||
#include "gsk/gl/gskglrenderer.h"
|
||||
#include "gsk/ngl/gsknglrenderer.h"
|
||||
#ifdef GDK_WINDOWING_BROADWAY
|
||||
#include "gsk/broadway/gskbroadwayrenderer.h"
|
||||
#endif
|
||||
@@ -60,7 +60,7 @@ struct _NodeEditorWindow
|
||||
|
||||
GtkWidget *renderer_listbox;
|
||||
GListStore *renderers;
|
||||
GdkPaintable *paintable;
|
||||
GskRenderNode *node;
|
||||
|
||||
GFileMonitor *file_monitor;
|
||||
|
||||
@@ -167,7 +167,6 @@ static void
|
||||
text_changed (GtkTextBuffer *buffer,
|
||||
NodeEditorWindow *self)
|
||||
{
|
||||
GskRenderNode *node;
|
||||
char *text;
|
||||
GBytes *bytes;
|
||||
GtkTextIter iter;
|
||||
@@ -178,10 +177,12 @@ text_changed (GtkTextBuffer *buffer,
|
||||
text_buffer_remove_all_tags (self->text_buffer);
|
||||
bytes = g_bytes_new_take (text, strlen (text));
|
||||
|
||||
g_clear_pointer (&self->node, gsk_render_node_unref);
|
||||
|
||||
/* If this is too slow, go fix the parser performance */
|
||||
node = gsk_render_node_deserialize (bytes, deserialize_error_func, self);
|
||||
self->node = gsk_render_node_deserialize (bytes, deserialize_error_func, self);
|
||||
g_bytes_unref (bytes);
|
||||
if (node)
|
||||
if (self->node)
|
||||
{
|
||||
/* XXX: Is this code necessary or can we have API to turn nodes into paintables? */
|
||||
GtkSnapshot *snapshot;
|
||||
@@ -190,10 +191,9 @@ text_changed (GtkTextBuffer *buffer,
|
||||
guint i;
|
||||
|
||||
snapshot = gtk_snapshot_new ();
|
||||
gsk_render_node_get_bounds (node, &bounds);
|
||||
gsk_render_node_get_bounds (self->node, &bounds);
|
||||
gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (- bounds.origin.x, - bounds.origin.y));
|
||||
gtk_snapshot_append_node (snapshot, node);
|
||||
gsk_render_node_unref (node);
|
||||
gtk_snapshot_append_node (snapshot, self->node);
|
||||
paintable = gtk_snapshot_free_to_paintable (snapshot, &bounds.size);
|
||||
gtk_picture_set_paintable (GTK_PICTURE (self->picture), paintable);
|
||||
for (i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (self->renderers)); i++)
|
||||
@@ -337,15 +337,9 @@ text_view_query_tooltip_cb (GtkWidget *widget,
|
||||
}
|
||||
|
||||
static gboolean
|
||||
load_file_contents (NodeEditorWindow *self,
|
||||
GFile *file)
|
||||
load_bytes (NodeEditorWindow *self,
|
||||
GBytes *bytes)
|
||||
{
|
||||
GBytes *bytes;
|
||||
|
||||
bytes = g_file_load_bytes (file, NULL, NULL, NULL);
|
||||
if (bytes == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (!g_utf8_validate (g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), NULL))
|
||||
{
|
||||
g_bytes_unref (bytes);
|
||||
@@ -361,6 +355,105 @@ load_file_contents (NodeEditorWindow *self,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
load_file_contents (NodeEditorWindow *self,
|
||||
GFile *file)
|
||||
{
|
||||
GBytes *bytes;
|
||||
|
||||
bytes = g_file_load_bytes (file, NULL, NULL, NULL);
|
||||
if (bytes == NULL)
|
||||
return FALSE;
|
||||
|
||||
return load_bytes (self, bytes);
|
||||
}
|
||||
|
||||
static GdkContentProvider *
|
||||
on_picture_drag_prepare_cb (GtkDragSource *source,
|
||||
double x,
|
||||
double y,
|
||||
NodeEditorWindow *self)
|
||||
{
|
||||
if (self->node == NULL)
|
||||
return NULL;
|
||||
|
||||
return gdk_content_provider_new_typed (GSK_TYPE_RENDER_NODE, self->node);
|
||||
}
|
||||
|
||||
static void
|
||||
on_picture_drop_read_done_cb (GObject *source,
|
||||
GAsyncResult *res,
|
||||
gpointer data)
|
||||
{
|
||||
NodeEditorWindow *self = data;
|
||||
GOutputStream *stream = G_OUTPUT_STREAM (source);
|
||||
GdkDrop *drop = g_object_get_data (source, "drop");
|
||||
GdkDragAction action = 0;
|
||||
GBytes *bytes;
|
||||
|
||||
if (g_output_stream_splice_finish (stream, res, NULL) >= 0)
|
||||
{
|
||||
bytes = g_memory_output_stream_steal_as_bytes (G_MEMORY_OUTPUT_STREAM (stream));
|
||||
if (load_bytes (self, bytes))
|
||||
action = GDK_ACTION_COPY;
|
||||
}
|
||||
|
||||
g_object_unref (self);
|
||||
gdk_drop_finish (drop, action);
|
||||
g_object_unref (drop);
|
||||
return;
|
||||
}
|
||||
|
||||
static void
|
||||
on_picture_drop_read_cb (GObject *source,
|
||||
GAsyncResult *res,
|
||||
gpointer data)
|
||||
{
|
||||
NodeEditorWindow *self = data;
|
||||
GdkDrop *drop = GDK_DROP (source);
|
||||
GInputStream *input;
|
||||
GOutputStream *output;
|
||||
|
||||
input = gdk_drop_read_finish (drop, res, NULL, NULL);
|
||||
if (input == NULL)
|
||||
{
|
||||
g_object_unref (self);
|
||||
gdk_drop_finish (drop, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
output = g_memory_output_stream_new_resizable ();
|
||||
g_object_set_data (G_OBJECT (output), "drop", drop);
|
||||
g_object_ref (drop);
|
||||
|
||||
g_output_stream_splice_async (output,
|
||||
input,
|
||||
G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE | G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET,
|
||||
G_PRIORITY_DEFAULT,
|
||||
NULL,
|
||||
on_picture_drop_read_done_cb,
|
||||
self);
|
||||
g_object_unref (output);
|
||||
g_object_unref (input);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_picture_drop_cb (GtkDropTargetAsync *dest,
|
||||
GdkDrop *drop,
|
||||
double x,
|
||||
double y,
|
||||
NodeEditorWindow *self)
|
||||
{
|
||||
gdk_drop_read_async (drop,
|
||||
(const char *[2]) { "application/x-gtk-render-node", NULL },
|
||||
G_PRIORITY_DEFAULT,
|
||||
NULL,
|
||||
on_picture_drop_read_cb,
|
||||
g_object_ref (self));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
file_changed_cb (GFileMonitor *monitor,
|
||||
GFile *file,
|
||||
@@ -634,6 +727,24 @@ export_image_cb (GtkWidget *button,
|
||||
gtk_widget_show (dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
clip_image_cb (GtkWidget *button,
|
||||
NodeEditorWindow *self)
|
||||
{
|
||||
GdkTexture *texture;
|
||||
GdkClipboard *clipboard;
|
||||
|
||||
texture = create_texture (self);
|
||||
if (texture == NULL)
|
||||
return;
|
||||
|
||||
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (self));
|
||||
|
||||
gdk_clipboard_set_texture (clipboard, texture);
|
||||
|
||||
g_object_unref (texture);
|
||||
}
|
||||
|
||||
static void
|
||||
testcase_name_entry_changed_cb (GtkWidget *button,
|
||||
GParamSpec *pspec,
|
||||
@@ -717,6 +828,7 @@ node_editor_window_finalize (GObject *object)
|
||||
|
||||
g_array_free (self->errors, TRUE);
|
||||
|
||||
g_clear_pointer (&self->node, gsk_render_node_unref);
|
||||
g_clear_object (&self->renderers);
|
||||
|
||||
G_OBJECT_CLASS (node_editor_window_parent_class)->finalize (object);
|
||||
@@ -760,7 +872,7 @@ node_editor_window_realize (GtkWidget *widget)
|
||||
"Default");
|
||||
#endif
|
||||
node_editor_window_add_renderer (self,
|
||||
gsk_gl_renderer_new (),
|
||||
gsk_ngl_renderer_new (),
|
||||
"OpenGL");
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
node_editor_window_add_renderer (self,
|
||||
@@ -822,9 +934,12 @@ node_editor_window_class_init (NodeEditorWindowClass *class)
|
||||
gtk_widget_class_bind_template_callback (widget_class, open_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, save_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, export_image_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, clip_image_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, testcase_save_clicked_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, testcase_name_entry_changed_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, dark_mode_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, on_picture_drag_prepare_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, on_picture_drop_cb);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
@@ -927,7 +1042,7 @@ node_editor_window_init (NodeEditorWindow *self)
|
||||
"shadow {\n"
|
||||
" child: texture {\n"
|
||||
" bounds: 0 0 128 128;\n"
|
||||
" texture: url(\"resource:///org/gtk/gtk4/node-editor/icons/apps/org.gtk.gtk4.NodeEditor.Devel.svg\");\n"
|
||||
" texture: url(\"resource:///org/gtk/gtk4/node-editor/icons/apps/org.gtk.gtk4.NodeEditor.svg\");\n"
|
||||
" }\n"
|
||||
" shadows: rgba(0,0,0,0.5) 0 1 12;\n"
|
||||
"}\n"
|
||||
|
@@ -102,6 +102,7 @@
|
||||
<object class="GtkHeaderBar" id="header">
|
||||
<child type="start">
|
||||
<object class="GtkButton">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="icon-name">document-open-symbolic</property>
|
||||
<property name="tooltip-text">Open node file</property>
|
||||
<signal name="clicked" handler="open_cb"/>
|
||||
@@ -109,6 +110,7 @@
|
||||
</child>
|
||||
<child type="start">
|
||||
<object class="GtkButton">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="icon-name">document-save-symbolic</property>
|
||||
<property name="tooltip-text">Save to node file</property>
|
||||
<signal name="clicked" handler="save_cb"/>
|
||||
@@ -116,24 +118,30 @@
|
||||
</child>
|
||||
<child type="start">
|
||||
<object class="GtkButton">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="icon-name">insert-image-symbolic</property>
|
||||
<property name="tooltip-text">Export to image</property>
|
||||
<signal name="clicked" handler="export_image_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
<child type="start">
|
||||
<object class="GtkSeparator">
|
||||
<property name="orientation">vertical</property>
|
||||
<object class="GtkButton">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="icon-name">edit-copy-symbolic</property>
|
||||
<property name="tooltip-text">Copy image to clipboard</property>
|
||||
<signal name="clicked" handler="clip_image_cb"/>
|
||||
</object>
|
||||
</child>
|
||||
<child type="start">
|
||||
<object class="GtkMenuButton">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="label">Save Testcase</property>
|
||||
<property name="popover">testcase_popover</property>
|
||||
</object>
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkMenuButton" id="gear_menu_button">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="menu-model">gear_menu</property>
|
||||
<property name="icon-name">open-menu-symbolic</property>
|
||||
@@ -141,6 +149,7 @@
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkToggleButton" id="dark_bg_button">
|
||||
<property name="focus-on-click">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="has-frame">0</property>
|
||||
<property name="icon-name">display-brightness-symbolic</property>
|
||||
@@ -191,6 +200,19 @@
|
||||
<property name="can-shrink">0</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<object class="GtkDragSource">
|
||||
<property name="actions">copy</property>
|
||||
<signal name="prepare" handler="on_picture_drag_prepare_cb" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkDropTargetAsync">
|
||||
<property name="actions">copy</property>
|
||||
<property name="formats">application/x-gtk-render-node</property>
|
||||
<signal name="drop" handler="on_picture_drop_cb" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@@ -4,6 +4,6 @@
|
||||
<file preprocess="xml-stripblanks">node-editor-window.ui</file>
|
||||
<file preprocess="xml-stripblanks">help-window.ui</file>
|
||||
<file>node-format.md</file>
|
||||
<file alias='icons/apps/org.gtk.gtk4.NodeEditor.Devel.svg'>data/scalable/apps/org.gtk.gtk4.NodeEditor.Devel.svg</file>
|
||||
<file alias='icons/apps/org.gtk.gtk4.NodeEditor.svg'>data/scalable/apps/org.gtk.gtk4.NodeEditor.svg</file>
|
||||
</gresource>
|
||||
</gresources>
|
||||
|
@@ -42,9 +42,9 @@ Creates a node like `gsk_blur_node_new()` with the given properties.
|
||||
|
||||
| property | syntax | default | printed |
|
||||
| -------- | ---------------- | ---------------------- | ----------- |
|
||||
| color | `<color>{1,4}` | black | non-default |
|
||||
| colors | `<color>{1,4}` | black | non-default |
|
||||
| outline | `<rounded-rect>` | 50 | always |
|
||||
| width | `<number>{1,4}` | 1 | non-default |
|
||||
| widths | `<number>{1,4}` | 1 | non-default |
|
||||
|
||||
Creates a node like `gsk_border_node_new()` with the given properties.
|
||||
|
||||
@@ -121,7 +121,7 @@ Creates a node like `gsk_conic_gradient_node_new()` with the given properties.
|
||||
| property | syntax | default | printed |
|
||||
| -------- | ---------------- | ---------------------- | ----------- |
|
||||
| end | `<node>` | color { } | always |
|
||||
| mode | `<number>` | 0.5 | non-default |
|
||||
| progress | `<number>` | 0.5 | non-default |
|
||||
| start | `<node>` | color { } | always |
|
||||
|
||||
Creates a node like `gsk_cross_fade_node_new()` with the given properties.
|
||||
@@ -246,7 +246,7 @@ Creates a node like `gsk_rounded_clip_node_new()` with the given properties.
|
||||
| property | syntax | default | printed |
|
||||
| -------- | ---------------- | ---------------------- | ----------- |
|
||||
| child | `<node>` | color { } | always |
|
||||
| shadow | `<shadow>` | black 1 1 | always |
|
||||
| shadows | `<shadow>` | black 1 1 | always |
|
||||
|
||||
Creates a node like `gsk_shadow_node_new()` with the given properties.
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
executable('gtk4-print-editor',
|
||||
sources: ['print-editor.c'],
|
||||
c_args: common_cflags,
|
||||
dependencies: libgtk_dep,
|
||||
dependencies: [ libgtk_dep, demo_conf_h ],
|
||||
include_directories: confinc,
|
||||
gui_app: true,
|
||||
link_args: extra_demo_ldflags,
|
||||
|
@@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>org.gtk.PrintEditor4.desktop</id>
|
||||
<id>org.gtk.PrintEditor4</id>
|
||||
<launchable type="desktop-id">org.gtk.PrintEditor4.desktop</launchable>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>LGPL-2.0+</project_license>
|
||||
<project_license>LGPL-2.1-or-later</project_license>
|
||||
<name>GTK Print Editor</name>
|
||||
<summary>Program to demonstrate GTK printing</summary>
|
||||
<description>
|
||||
@@ -24,6 +25,7 @@
|
||||
<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="3.99.0" date="2020-07-30">
|
||||
<description>
|
||||
|
@@ -2,7 +2,7 @@
|
||||
Name=Print Editor
|
||||
Comment=A simple editor demonstrating GTK printing
|
||||
Exec=gtk4-print-editor %f
|
||||
Icon=org.gtk.PrintEditor4.Devel
|
||||
Icon=org.gtk.PrintEditor4
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
|
@@ -4,6 +4,8 @@
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "demo_conf.h"
|
||||
|
||||
static GtkWidget *main_window;
|
||||
static GFile *filename = NULL;
|
||||
static GtkPageSetup *page_setup = NULL;
|
||||
@@ -157,7 +159,7 @@ save_file (GFile *save_filename)
|
||||
|
||||
error = NULL;
|
||||
g_file_replace_contents (save_filename,
|
||||
text, -1,
|
||||
text, strlen (text),
|
||||
NULL, FALSE,
|
||||
G_FILE_CREATE_NONE,
|
||||
NULL,
|
||||
@@ -641,22 +643,26 @@ activate_about (GSimpleAction *action,
|
||||
g_strfreev (backends);
|
||||
g_free (setting);
|
||||
|
||||
version = g_strdup_printf ("%s\nRunning against GTK %d.%d.%d",
|
||||
version = g_strdup_printf ("%s%s%s\nRunning against GTK %d.%d.%d",
|
||||
PACKAGE_VERSION,
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? "-" : "",
|
||||
g_strcmp0 (PROFILE, "devel") == 0 ? VCS_TAG : "",
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ());
|
||||
|
||||
dialog = g_object_new (GTK_TYPE_ABOUT_DIALOG,
|
||||
"transient-for", main_window,
|
||||
"program-name", "GTK Print Editor",
|
||||
"program-name", g_strcmp0 (PROFILE, "devel") == 0
|
||||
? "GTK Print Editor (Development)"
|
||||
: "GTK Print Editor",
|
||||
"version", version,
|
||||
"copyright", "© 2006-2020 Red Hat, Inc",
|
||||
"copyright", "© 2006-2021 Red Hat, Inc",
|
||||
"license-type", GTK_LICENSE_LGPL_2_1,
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to demonstrate GTK printing",
|
||||
"authors", authors,
|
||||
"logo-icon-name", "org.gtk.PrintEditor4.Devel",
|
||||
"logo-icon-name", "org.gtk.PrintEditor4",
|
||||
"title", "About GTK Print Editor",
|
||||
"system-information", sysinfo->str,
|
||||
NULL);
|
||||
@@ -715,7 +721,6 @@ static const char ui_info[] =
|
||||
" <item>"
|
||||
" <attribute name='label'>_New</attribute>"
|
||||
" <attribute name='action'>app.new</attribute>"
|
||||
" <attribute name='accel'><Primary>n</attribute>"
|
||||
" </item>"
|
||||
" <item>"
|
||||
" <attribute name='label'>_Open</attribute>"
|
||||
@@ -724,12 +729,10 @@ static const char ui_info[] =
|
||||
" <item>"
|
||||
" <attribute name='label'>_Save</attribute>"
|
||||
" <attribute name='action'>app.save</attribute>"
|
||||
" <attribute name='accel'><Primary>s</attribute>"
|
||||
" </item>"
|
||||
" <item>"
|
||||
" <attribute name='label'>Save _As...</attribute>"
|
||||
" <attribute name='action'>app.save-as</attribute>"
|
||||
" <attribute name='accel'><Primary>s</attribute>"
|
||||
" </item>"
|
||||
" </section>"
|
||||
" <section>"
|
||||
@@ -750,7 +753,6 @@ static const char ui_info[] =
|
||||
" <item>"
|
||||
" <attribute name='label'>_Quit</attribute>"
|
||||
" <attribute name='action'>app.quit</attribute>"
|
||||
" <attribute name='accel'><Primary>q</attribute>"
|
||||
" </item>"
|
||||
" </section>"
|
||||
" </submenu>"
|
||||
@@ -760,7 +762,6 @@ static const char ui_info[] =
|
||||
" <item>"
|
||||
" <attribute name='label'>_About Print Editor</attribute>"
|
||||
" <attribute name='action'>app.about</attribute>"
|
||||
" <attribute name='accel'><Primary>a</attribute>"
|
||||
" </item>"
|
||||
" </section>"
|
||||
" </submenu>"
|
||||
@@ -788,6 +789,15 @@ startup (GApplication *app)
|
||||
{
|
||||
GtkBuilder *builder;
|
||||
GMenuModel *menubar;
|
||||
struct {
|
||||
const char *action_and_target;
|
||||
const char *accelerators[2];
|
||||
} accels[] = {
|
||||
{ "app.new", { "<Control>n", NULL } },
|
||||
{ "app.quit", { "<Control>q", NULL } },
|
||||
{ "app.save", { "<Control>s", NULL } },
|
||||
{ "app.about", { "<Control>a", NULL } },
|
||||
};
|
||||
|
||||
builder = gtk_builder_new ();
|
||||
gtk_builder_add_from_string (builder, ui_info, -1, NULL);
|
||||
@@ -796,6 +806,9 @@ startup (GApplication *app)
|
||||
|
||||
gtk_application_set_menubar (GTK_APPLICATION (app), menubar);
|
||||
|
||||
for (int i = 0; i < G_N_ELEMENTS (accels); i++)
|
||||
gtk_application_set_accels_for_action (GTK_APPLICATION (app), accels[i].action_and_target, accels[i].accelerators);
|
||||
|
||||
g_object_unref (builder);
|
||||
}
|
||||
|
||||
@@ -807,6 +820,10 @@ activate (GApplication *app)
|
||||
GtkWidget *contents;
|
||||
|
||||
main_window = gtk_application_window_new (GTK_APPLICATION (app));
|
||||
|
||||
if (g_strcmp0 (PROFILE, "devel") == 0)
|
||||
gtk_widget_add_css_class (GTK_WIDGET (main_window), "devel");
|
||||
|
||||
gtk_window_set_icon_name (GTK_WINDOW (main_window), "text-editor");
|
||||
gtk_window_set_default_size (GTK_WINDOW (main_window), 400, 600);
|
||||
gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (main_window), TRUE);
|
||||
|
BIN
demos/widget-factory/beach.jpg
Normal file
After Width: | Height: | Size: 3.2 MiB |
After Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 231 B |
After Width: | Height: | Size: 184 B |
After Width: | Height: | Size: 159 B |
After Width: | Height: | Size: 165 B |
After Width: | Height: | Size: 165 B |
After Width: | Height: | Size: 159 B |
After Width: | Height: | Size: 119 B |
After Width: | Height: | Size: 104 B |
After Width: | Height: | Size: 115 B |
After Width: | Height: | Size: 117 B |
After Width: | Height: | Size: 266 B |
After Width: | Height: | Size: 129 B |
After Width: | Height: | Size: 200 B |
After Width: | Height: | Size: 160 B |
After Width: | Height: | Size: 319 B |
After Width: | Height: | Size: 263 B |
After Width: | Height: | Size: 265 B |
After Width: | Height: | Size: 226 B |