Compare commits
500 Commits
wip/matthi
...
selection-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6d908b8aa | ||
|
|
c659910a83 | ||
|
|
1af097455c | ||
|
|
6873f63987 | ||
|
|
16b043a127 | ||
|
|
0b7f7028d9 | ||
|
|
5dba053ad1 | ||
|
|
cd8a810d69 | ||
|
|
8f63a5ab63 | ||
|
|
eb3381723f | ||
|
|
7e87ad1887 | ||
|
|
ef6babf896 | ||
|
|
7f9570b95b | ||
|
|
d8d8a71a7a | ||
|
|
2ff3e3d1e4 | ||
|
|
73f4f518b8 | ||
|
|
6e9dbba130 | ||
|
|
706aa93ab5 | ||
|
|
54deed9a5a | ||
|
|
0e70ddcab3 | ||
|
|
f2bdb1fb87 | ||
|
|
ec9fd76c87 | ||
|
|
bacaa5eb9a | ||
|
|
9a297516ba | ||
|
|
e9bff53015 | ||
|
|
3078b180fe | ||
|
|
556997f9df | ||
|
|
d375dce9f5 | ||
|
|
d7266b25ba | ||
|
|
2a43ce1705 | ||
|
|
3324a6e6b3 | ||
|
|
46423e614d | ||
|
|
f7b73b2e01 | ||
|
|
c85e424279 | ||
|
|
b146c48e23 | ||
|
|
3176d69009 | ||
|
|
89f7d841ab | ||
|
|
7e2fceebca | ||
|
|
1e00c887ec | ||
|
|
561d3c68a0 | ||
|
|
03601cb794 | ||
|
|
3108b8b4d3 | ||
|
|
d1afe32762 | ||
|
|
603dd72b09 | ||
|
|
e81ba8924a | ||
|
|
8832ab45d9 | ||
|
|
87d6e17bc7 | ||
|
|
a5033cd79b | ||
|
|
44cbf3d605 | ||
|
|
fb6288791e | ||
|
|
2160f52cbf | ||
|
|
8825e621c9 | ||
|
|
e22abd73f2 | ||
|
|
f77d4d7fc0 | ||
|
|
8243133ca7 | ||
|
|
63a4345d2c | ||
|
|
56685a483d | ||
|
|
b23f793753 | ||
|
|
2b19e2fc1f | ||
|
|
703f8b8136 | ||
|
|
5b18968867 | ||
|
|
e8c4e1205a | ||
|
|
bf5c540357 | ||
|
|
c03383d3e5 | ||
|
|
eaaa287078 | ||
|
|
554defaf1a | ||
|
|
659fe52b7b | ||
|
|
0970077af9 | ||
|
|
814c88fbc1 | ||
|
|
3b24c8a0a4 | ||
|
|
e34c7e6796 | ||
|
|
8c608e9c1c | ||
|
|
283c3b70dd | ||
|
|
93599c2c48 | ||
|
|
080e625090 | ||
|
|
26696a741e | ||
|
|
a209e54b8f | ||
|
|
8921dadaa1 | ||
|
|
47232acbd8 | ||
|
|
cbad8ec2e4 | ||
|
|
800170b47d | ||
|
|
97c5cb3514 | ||
|
|
081afc0477 | ||
|
|
e807fc3be0 | ||
|
|
a1bd3389ed | ||
|
|
03a3b5a0b1 | ||
|
|
1ee2d9a5fa | ||
|
|
2e07fcd680 | ||
|
|
d3365d5a60 | ||
|
|
9dbf99d91a | ||
|
|
0154a7f528 | ||
|
|
add47bebc6 | ||
|
|
514b62223d | ||
|
|
7884ab6161 | ||
|
|
bc542c5304 | ||
|
|
d66ac4981e | ||
|
|
9b647a47d1 | ||
|
|
b67ffe9650 | ||
|
|
2c519b006d | ||
|
|
852429d163 | ||
|
|
ee9c6bbf75 | ||
|
|
d9ece94377 | ||
|
|
486fbce42b | ||
|
|
ed92026632 | ||
|
|
05e614feb7 | ||
|
|
14059afdf1 | ||
|
|
9b294eb94e | ||
|
|
96d42cf1cc | ||
|
|
4786a16696 | ||
|
|
14bb12125f | ||
|
|
07e8dafcea | ||
|
|
ab67a81f11 | ||
|
|
aa76f7e210 | ||
|
|
0c15463e41 | ||
|
|
5df1356295 | ||
|
|
95fc81c565 | ||
|
|
378e594f75 | ||
|
|
86c7fceb09 | ||
|
|
b5e20a3e37 | ||
|
|
75a30b1f98 | ||
|
|
c64a021af4 | ||
|
|
9b64635925 | ||
|
|
7b76be5360 | ||
|
|
2e2336ffce | ||
|
|
76d80ef516 | ||
|
|
287d80bd36 | ||
|
|
77072b3eaa | ||
|
|
c7833bb090 | ||
|
|
899024cef7 | ||
|
|
4da3edd42e | ||
|
|
6b59626817 | ||
|
|
7c02ae00c2 | ||
|
|
80e29a3627 | ||
|
|
26163a4f30 | ||
|
|
dbd88fc210 | ||
|
|
2de31e4cac | ||
|
|
1bff328895 | ||
|
|
facf78a5b6 | ||
|
|
6b19fcd859 | ||
|
|
ca784e3e1a | ||
|
|
314c8558d7 | ||
|
|
af30a7fe06 | ||
|
|
9ffd7d1970 | ||
|
|
cb906c80eb | ||
|
|
96ce0eb600 | ||
|
|
0e476c1f28 | ||
|
|
f2924988db | ||
|
|
671435e07f | ||
|
|
b17cfb9b65 | ||
|
|
0385f1aaf4 | ||
|
|
8611faf338 | ||
|
|
7e19911d3f | ||
|
|
c1f5153f6d | ||
|
|
2bd87ce771 | ||
|
|
de0547ede7 | ||
|
|
14589c2a59 | ||
|
|
f678b3804d | ||
|
|
720c298786 | ||
|
|
f721d2de15 | ||
|
|
11f07cb5ad | ||
|
|
37d7ab88dc | ||
|
|
6cde64072d | ||
|
|
6a60b0f591 | ||
|
|
339d9f05e4 | ||
|
|
4e4207457f | ||
|
|
46bb3e3046 | ||
|
|
34008e6aab | ||
|
|
d6b3ac850d | ||
|
|
9742200ff6 | ||
|
|
ec10857b84 | ||
|
|
353d4d161c | ||
|
|
bcd650f169 | ||
|
|
72d66dfcdd | ||
|
|
5e97df5058 | ||
|
|
059d131e2b | ||
|
|
8f7c207c7c | ||
|
|
b9e8935037 | ||
|
|
5f33f4ae8e | ||
|
|
adf0e8b1e6 | ||
|
|
7500f9b255 | ||
|
|
a8d433dd26 | ||
|
|
ecaf6fced0 | ||
|
|
31a7cac4a6 | ||
|
|
5eec736b07 | ||
|
|
cf4a8e2152 | ||
|
|
31bb969cce | ||
|
|
f4a7c7f6bf | ||
|
|
495069c868 | ||
|
|
dfe470475b | ||
|
|
de56e892aa | ||
|
|
e518c1f2f3 | ||
|
|
c5ea59d7d1 | ||
|
|
22eccbdbb6 | ||
|
|
58e85c85e4 | ||
|
|
6b89148487 | ||
|
|
ddb9e428ec | ||
|
|
b7fa353db2 | ||
|
|
87b5eadb7c | ||
|
|
60a09e59e8 | ||
|
|
6f8e9bf3a9 | ||
|
|
90b7b84337 | ||
|
|
088b5fc57f | ||
|
|
a4cd974912 | ||
|
|
65359dcc59 | ||
|
|
ac8b398c50 | ||
|
|
aac2417893 | ||
|
|
ad8892df10 | ||
|
|
edc7977c4e | ||
|
|
8bf8ac5076 | ||
|
|
c36cbd5140 | ||
|
|
ee96bc7185 | ||
|
|
f94f325636 | ||
|
|
6c1217dd93 | ||
|
|
edb792503b | ||
|
|
3a43859286 | ||
|
|
c55dd104d4 | ||
|
|
497d137fb8 | ||
|
|
df01c5c7a4 | ||
|
|
2d1135fba6 | ||
|
|
f54ed6f7dc | ||
|
|
b7efd896b6 | ||
|
|
46eb51bc30 | ||
|
|
500dbaabc3 | ||
|
|
594ec3d822 | ||
|
|
f280508209 | ||
|
|
480b88c776 | ||
|
|
a4e63905b1 | ||
|
|
5666127dbc | ||
|
|
c1c110ba65 | ||
|
|
eb2a839892 | ||
|
|
1c537a6d2e | ||
|
|
c12261a6ec | ||
|
|
5af7d6bff3 | ||
|
|
de0f4b0f5b | ||
|
|
966ab1152d | ||
|
|
74a4432688 | ||
|
|
115d0cdc07 | ||
|
|
d0ec616fba | ||
|
|
38cce2bb18 | ||
|
|
9cb7002b98 | ||
|
|
eb9c91c0a9 | ||
|
|
be07153efa | ||
|
|
627ec82e60 | ||
|
|
ccc34ca06c | ||
|
|
2b5dd0082d | ||
|
|
7b36b339aa | ||
|
|
b7eb663b82 | ||
|
|
1b28353be5 | ||
|
|
a07c030d02 | ||
|
|
339cccdf53 | ||
|
|
577126e99c | ||
|
|
125ea5ee4a | ||
|
|
3c5afc06d1 | ||
|
|
f87c15f4f9 | ||
|
|
fe5c0e2fe3 | ||
|
|
c8421cfd82 | ||
|
|
fbf99b8d65 | ||
|
|
57312c9b79 | ||
|
|
35d2539ef8 | ||
|
|
08a4f4552c | ||
|
|
6502d3669f | ||
|
|
53831e67a7 | ||
|
|
e742fc1206 | ||
|
|
4ef5ee23e6 | ||
|
|
4a8330fda0 | ||
|
|
b4096cee64 | ||
|
|
032302c358 | ||
|
|
a888e1cb65 | ||
|
|
c80b33b2ad | ||
|
|
f32239df1f | ||
|
|
22c1b541df | ||
|
|
78a59c95fe | ||
|
|
7583d48266 | ||
|
|
f1188aaeac | ||
|
|
4dac5c222f | ||
|
|
0145809a94 | ||
|
|
2e6b8810c0 | ||
|
|
d8abcdb5a1 | ||
|
|
65ecfa20dd | ||
|
|
aa5ab02166 | ||
|
|
7ddbbb50ff | ||
|
|
f2eb036119 | ||
|
|
8a8b96bf4b | ||
|
|
bdcda2d8f0 | ||
|
|
ef3f997d55 | ||
|
|
b41d380230 | ||
|
|
0210850e86 | ||
|
|
053223bf65 | ||
|
|
746b84cc0f | ||
|
|
f1ad883e00 | ||
|
|
191e0e8d5e | ||
|
|
55217e2181 | ||
|
|
7c8cd23c5f | ||
|
|
6aafb81702 | ||
|
|
0578422612 | ||
|
|
ad04da84c9 | ||
|
|
333b013f7f | ||
|
|
b3dc517565 | ||
|
|
70e4dabe89 | ||
|
|
d3443d6f2a | ||
|
|
a508f68044 | ||
|
|
f191b64bbc | ||
|
|
e9efe77839 | ||
|
|
d98c0d32f2 | ||
|
|
dfa2dcceb8 | ||
|
|
d441e7106b | ||
|
|
4cd92f979c | ||
|
|
d1a068e5b1 | ||
|
|
4d90846182 | ||
|
|
986f721938 | ||
|
|
7903246355 | ||
|
|
0252ae2be3 | ||
|
|
fa90e42a38 | ||
|
|
2d36109565 | ||
|
|
de8258171a | ||
|
|
2ed6224778 | ||
|
|
e1a0171094 | ||
|
|
395521f3d3 | ||
|
|
8c95a84ea4 | ||
|
|
75db19c789 | ||
|
|
f00d2b30bb | ||
|
|
c0c5ce2f9b | ||
|
|
ee9f9ae05e | ||
|
|
387649ded4 | ||
|
|
be12131d74 | ||
|
|
896ebdc9d7 | ||
|
|
bc58bd0b83 | ||
|
|
8d4c87876b | ||
|
|
cebc99ddc7 | ||
|
|
1b62203f18 | ||
|
|
06dd8c2cfd | ||
|
|
5da21ca4dc | ||
|
|
3e16ef33b0 | ||
|
|
2746a2d929 | ||
|
|
e31bacf7be | ||
|
|
911ae64931 | ||
|
|
99a0b35705 | ||
|
|
89bf8af878 | ||
|
|
f3744c991a | ||
|
|
dcee15c0f1 | ||
|
|
2321e9de05 | ||
|
|
73dcda460f | ||
|
|
0f8bc67a98 | ||
|
|
379d830123 | ||
|
|
bc8bc68b80 | ||
|
|
8c4df51a14 | ||
|
|
06d67d2384 | ||
|
|
cc8bb5fc54 | ||
|
|
8fb1e33d0f | ||
|
|
0dc946da63 | ||
|
|
26a23d3e56 | ||
|
|
766f4bc8fe | ||
|
|
3d008d5929 | ||
|
|
0546e26434 | ||
|
|
e6d8eedc00 | ||
|
|
13b37b0ba4 | ||
|
|
779c71b66d | ||
|
|
8e73d007f5 | ||
|
|
e376d638fb | ||
|
|
52982a88aa | ||
|
|
422c1d9c0d | ||
|
|
ccc8ad8700 | ||
|
|
6b0eb970d8 | ||
|
|
775e35865c | ||
|
|
49ce680d53 | ||
|
|
463f3d3a52 | ||
|
|
f6347f18b0 | ||
|
|
2e959fe300 | ||
|
|
56f771ba29 | ||
|
|
32e96215b4 | ||
|
|
86f800e11d | ||
|
|
4d371b2b16 | ||
|
|
7e97c2513f | ||
|
|
2bf5a150e6 | ||
|
|
18c87faaa5 | ||
|
|
fdeda388bf | ||
|
|
ea2c27c640 | ||
|
|
dfc04a590d | ||
|
|
fe5b364675 | ||
|
|
9b73c55559 | ||
|
|
0b38a0663d | ||
|
|
e5c0716293 | ||
|
|
54a3293cad | ||
|
|
818287a7ce | ||
|
|
59119cd898 | ||
|
|
817da34f7e | ||
|
|
8fa44fc3e6 | ||
|
|
c7e94151b2 | ||
|
|
729ba44297 | ||
|
|
2a2a6879c5 | ||
|
|
e7b773b031 | ||
|
|
57a225681c | ||
|
|
ea07a92366 | ||
|
|
76290e8ddb | ||
|
|
26d83b1ab7 | ||
|
|
2bba856206 | ||
|
|
bf3382a89e | ||
|
|
3162e25671 | ||
|
|
3d931b4fe2 | ||
|
|
fc770a383a | ||
|
|
62c385a9dd | ||
|
|
7c4ad1a5c4 | ||
|
|
ac524bb13a | ||
|
|
66fa9380b5 | ||
|
|
b64eb6ca13 | ||
|
|
9b2d8ac362 | ||
|
|
2a90bc1a9b | ||
|
|
d4b868d9bc | ||
|
|
b54f6710a7 | ||
|
|
6bb7caf155 | ||
|
|
202348f9d0 | ||
|
|
1a613de2f6 | ||
|
|
665df37703 | ||
|
|
acad5e4e3d | ||
|
|
6267c8469b | ||
|
|
5a2f791bdd | ||
|
|
286a00a1db | ||
|
|
11dd602b28 | ||
|
|
35988d659d | ||
|
|
be3449b3ce | ||
|
|
2d8fddc1e9 | ||
|
|
644d522d19 | ||
|
|
a8b0125da1 | ||
|
|
acccac516e | ||
|
|
d65214fa4e | ||
|
|
1d96fc8237 | ||
|
|
882a87ca19 | ||
|
|
1dbb8df95f | ||
|
|
f6c2c2edbd | ||
|
|
c4e4de36f6 | ||
|
|
67cbb2a7d3 | ||
|
|
a979daa8ea | ||
|
|
fb14f50ec1 | ||
|
|
6099fbafc1 | ||
|
|
6f2f828bce | ||
|
|
795d3122cc | ||
|
|
5080730728 | ||
|
|
f75a3a0e95 | ||
|
|
b75db7d1c6 | ||
|
|
b03069bdf6 | ||
|
|
1c71e56e75 | ||
|
|
9332d0dcc8 | ||
|
|
9ad37583e6 | ||
|
|
69975627e9 | ||
|
|
b74a489aba | ||
|
|
599b807726 | ||
|
|
6510ca8bdd | ||
|
|
be20a04e04 | ||
|
|
92e5536335 | ||
|
|
c2da2f7ecd | ||
|
|
130bd5937c | ||
|
|
54bfd380a8 | ||
|
|
f01d695e6c | ||
|
|
619b2465c1 | ||
|
|
cc18191a8e | ||
|
|
1f8e7c8aab | ||
|
|
671daea262 | ||
|
|
76533513c2 | ||
|
|
0d3988365b | ||
|
|
0966636803 | ||
|
|
7c3b30036e | ||
|
|
988901294d | ||
|
|
43b9fc6981 | ||
|
|
25f670faae | ||
|
|
d0068a036f | ||
|
|
fae014eb45 | ||
|
|
f0ea0be15d | ||
|
|
9650236b23 | ||
|
|
c0e2d7c62f | ||
|
|
cc072eb7cd | ||
|
|
613213f597 | ||
|
|
e25c25fcb5 | ||
|
|
52666d6fe5 | ||
|
|
56b3669411 | ||
|
|
e3b5b76cdd | ||
|
|
bbb28196e5 | ||
|
|
72d3a9042c | ||
|
|
f2853ffa8e | ||
|
|
fca2ba963d | ||
|
|
806779769e | ||
|
|
82aa0d1f7c | ||
|
|
72f1d34eca | ||
|
|
c267a75eef | ||
|
|
2fb755e0c9 | ||
|
|
cd096819d8 | ||
|
|
83543423e2 | ||
|
|
d0bb72a2aa | ||
|
|
8cc2a44268 | ||
|
|
4800dd3f95 | ||
|
|
2534310ce9 | ||
|
|
3a4fbc5e50 | ||
|
|
89a67ac719 | ||
|
|
21b84b1890 | ||
|
|
20935f678b | ||
|
|
c41b4130c6 | ||
|
|
f1b010af66 | ||
|
|
ec1133d6e1 | ||
|
|
8fcf1b78a4 | ||
|
|
21f9148155 | ||
|
|
d4f0593b37 |
@@ -19,8 +19,8 @@ variables:
|
|||||||
COMMON_MESON_FLAGS: "--fatal-meson-warnings --werror"
|
COMMON_MESON_FLAGS: "--fatal-meson-warnings --werror"
|
||||||
BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true -Dvulkan=yes"
|
BACKEND_FLAGS: "-Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=true -Dvulkan=yes"
|
||||||
FEATURE_FLAGS: "-Dcloudproviders=true"
|
FEATURE_FLAGS: "-Dcloudproviders=true"
|
||||||
MESON_TEST_TIMEOUT_MULTIPLIER: 2
|
MESON_TEST_TIMEOUT_MULTIPLIER: 3
|
||||||
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v17"
|
FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora:v20"
|
||||||
FLATPAK_IMAGE: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master"
|
FLATPAK_IMAGE: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master"
|
||||||
DOCS_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora-docs:v19"
|
DOCS_IMAGE: "registry.gitlab.gnome.org/gnome/gtk/fedora-docs:v19"
|
||||||
|
|
||||||
@@ -180,6 +180,22 @@ static-scan:
|
|||||||
- _scan_build/meson-logs
|
- _scan_build/meson-logs
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
|
# Run tests with the address sanitizer. We need to turn off introspection,
|
||||||
|
# since it is incompatible with asan
|
||||||
|
asan-build:
|
||||||
|
image: $FEDORA_IMAGE
|
||||||
|
tags: [ asan ]
|
||||||
|
stage: analysis
|
||||||
|
variables:
|
||||||
|
script:
|
||||||
|
- CC=clang meson --buildtype=debugoptimized -Db_sanitize=address -Db_lundef=false -Dintrospection=false _build
|
||||||
|
- ninja -C _build
|
||||||
|
- .gitlab-ci/run-tests.sh _build wayland
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- _build/meson-logs
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
reference:
|
reference:
|
||||||
image: $DOCS_IMAGE
|
image: $DOCS_IMAGE
|
||||||
stage: docs
|
stage: docs
|
||||||
|
|||||||
0
.gitlab-ci/.lock
Normal file
0
.gitlab-ci/.lock
Normal file
@@ -35,4 +35,13 @@ branch, as well as their available versions.
|
|||||||
- [ ] Add the new job to `.gitlab-ci.yml` referencing the image
|
- [ ] Add the new job to `.gitlab-ci.yml` referencing the image
|
||||||
- [ ] Open a merge request with your changes and let it run
|
- [ ] Open a merge request with your changes and let it run
|
||||||
|
|
||||||
|
### Checklist for Adding a new dependency to a CI image
|
||||||
|
|
||||||
|
Our images are layered, and the base (called fedora-base) contains
|
||||||
|
all the rpm payload. Therefore, adding a new dependency is a 2-step
|
||||||
|
process:
|
||||||
|
|
||||||
|
1. [ ] Build and upload fedora-base:$version+1
|
||||||
|
1. [ ] Build and upload fedora:$version+1 based on fedora-base:version+1
|
||||||
|
|
||||||
[registry]: https://gitlab.gnome.org/GNOME/gtk/container_registry
|
[registry]: https://gitlab.gnome.org/GNOME/gtk/container_registry
|
||||||
|
|||||||
@@ -41,12 +41,14 @@ RUN dnf -y install \
|
|||||||
itstool \
|
itstool \
|
||||||
json-glib-devel \
|
json-glib-devel \
|
||||||
lcov \
|
lcov \
|
||||||
|
libasan \
|
||||||
libattr-devel \
|
libattr-devel \
|
||||||
libepoxy-devel \
|
libepoxy-devel \
|
||||||
libffi-devel \
|
libffi-devel \
|
||||||
libmount-devel \
|
libmount-devel \
|
||||||
librsvg2 \
|
librsvg2 \
|
||||||
libselinux-devel \
|
libselinux-devel \
|
||||||
|
libubsan \
|
||||||
libXcomposite-devel \
|
libXcomposite-devel \
|
||||||
libXcursor-devel \
|
libXcursor-devel \
|
||||||
libXcursor-devel \
|
libXcursor-devel \
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM registry.gitlab.gnome.org/gnome/gtk/fedora-base:v19
|
FROM registry.gitlab.gnome.org/gnome/gtk/fedora-base:v20
|
||||||
|
|
||||||
ARG HOST_USER_ID=5555
|
ARG HOST_USER_ID=5555
|
||||||
ENV HOST_USER_ID ${HOST_USER_ID}
|
ENV HOST_USER_ID ${HOST_USER_ID}
|
||||||
|
|||||||
@@ -7,10 +7,14 @@ srcdir=$( pwd )
|
|||||||
builddir=$1
|
builddir=$1
|
||||||
backend=$2
|
backend=$2
|
||||||
|
|
||||||
|
# Ignore memory leaks lower in dependencies
|
||||||
|
export LSAN_OPTIONS=suppressions=$srcdir/lsan.supp
|
||||||
|
|
||||||
case "${backend}" in
|
case "${backend}" in
|
||||||
x11)
|
x11)
|
||||||
xvfb-run -a -s "-screen 0 1024x768x24" \
|
xvfb-run -a -s "-screen 0 1024x768x24" \
|
||||||
meson test -C ${builddir} \
|
meson test -C ${builddir} \
|
||||||
|
--timeout-multiplier "${MESON_TEST_TIMEOUT_MULTIPLIER}" \
|
||||||
--print-errorlogs \
|
--print-errorlogs \
|
||||||
--setup=${backend} \
|
--setup=${backend} \
|
||||||
--suite=gtk \
|
--suite=gtk \
|
||||||
@@ -30,6 +34,7 @@ case "${backend}" in
|
|||||||
export WAYLAND_DISPLAY=wayland-5
|
export WAYLAND_DISPLAY=wayland-5
|
||||||
|
|
||||||
meson test -C ${builddir} \
|
meson test -C ${builddir} \
|
||||||
|
--timeout-multiplier "${MESON_TEST_TIMEOUT_MULTIPLIER}" \
|
||||||
--print-errorlogs \
|
--print-errorlogs \
|
||||||
--setup=${backend} \
|
--setup=${backend} \
|
||||||
--suite=gtk \
|
--suite=gtk \
|
||||||
@@ -48,6 +53,7 @@ case "${backend}" in
|
|||||||
export BROADWAY_DISPLAY=:5
|
export BROADWAY_DISPLAY=:5
|
||||||
|
|
||||||
meson test -C ${builddir} \
|
meson test -C ${builddir} \
|
||||||
|
--timeout-multiplier "${MESON_TEST_TIMEOUT_MULTIPLIER}" \
|
||||||
--print-errorlogs \
|
--print-errorlogs \
|
||||||
--setup=${backend} \
|
--setup=${backend} \
|
||||||
--suite=gtk \
|
--suite=gtk \
|
||||||
|
|||||||
86
NEWS
86
NEWS
@@ -1,3 +1,89 @@
|
|||||||
|
Overview of Changes in GTK 3.99.0
|
||||||
|
=================================
|
||||||
|
|
||||||
|
* Add GtkEditableLabel, a label that can be edited
|
||||||
|
|
||||||
|
* Add GtkBookmarkList, a list model for bookmarks
|
||||||
|
|
||||||
|
* Add GtkStringList, a list model for strings
|
||||||
|
|
||||||
|
* Add GtkBitset, and use it for representing selections
|
||||||
|
|
||||||
|
* GtkTreeView:
|
||||||
|
- Make cell editing work again
|
||||||
|
|
||||||
|
* GtkSpinButton:
|
||||||
|
- Make autosizing work again
|
||||||
|
|
||||||
|
* Printing:
|
||||||
|
- Use GtkDropDown in the print dialog
|
||||||
|
|
||||||
|
* GtkApplication
|
||||||
|
- Support opening files on OS X
|
||||||
|
|
||||||
|
* GtkFileChooser:
|
||||||
|
- Fix libcloudproviders support
|
||||||
|
- Turn GtkFileFilter into a GtkFilter
|
||||||
|
- Simplify the api
|
||||||
|
|
||||||
|
* GtkGridView, GtkListView:
|
||||||
|
- Improve scrolling behavior
|
||||||
|
- Autoscroll and autoexpand during DND
|
||||||
|
|
||||||
|
* GtkScrolledWindow:
|
||||||
|
- Make autoscrolling work again
|
||||||
|
|
||||||
|
* GtkFilterListModel:
|
||||||
|
- Add incremental filtering
|
||||||
|
|
||||||
|
* GtkSortListModel:
|
||||||
|
- Use timsort
|
||||||
|
- Add various tweaks that massively speed up sorting
|
||||||
|
- Add incremental sorting
|
||||||
|
|
||||||
|
* GtkWidget:
|
||||||
|
- Massively speed up action handling
|
||||||
|
|
||||||
|
* GtkEntry:
|
||||||
|
- Make entry completion work again
|
||||||
|
- Drop action support from GtkEntryCompletion
|
||||||
|
|
||||||
|
* Inspector:
|
||||||
|
- Improve list model support
|
||||||
|
- Add direct navigation between objects
|
||||||
|
|
||||||
|
* GDK:
|
||||||
|
- Compress scroll events
|
||||||
|
- Keep a scroll history
|
||||||
|
- Clean up GdkDevice api
|
||||||
|
- Improve frame clock accuracy
|
||||||
|
- Add a new macOS backend
|
||||||
|
|
||||||
|
* GSK:
|
||||||
|
- Use GL_ARB_framebuffer_object
|
||||||
|
|
||||||
|
* gtk-demo:
|
||||||
|
- Add incremental refill to the color grid
|
||||||
|
- Improve performance of the color grid
|
||||||
|
- Add an incrementally filtering word list
|
||||||
|
- Improve the sidebar
|
||||||
|
|
||||||
|
* Install print-editor as another demo
|
||||||
|
|
||||||
|
* Translation updates
|
||||||
|
Basque
|
||||||
|
Catalan
|
||||||
|
Chinese
|
||||||
|
Japanese
|
||||||
|
Kazakh
|
||||||
|
Lithuanian
|
||||||
|
Polish
|
||||||
|
Romanian
|
||||||
|
Spanish
|
||||||
|
Turkish
|
||||||
|
Ukrainian
|
||||||
|
|
||||||
|
|
||||||
Overview of Changes in GTK 3.98.5
|
Overview of Changes in GTK 3.98.5
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,38 @@
|
|||||||
{
|
{
|
||||||
"app-id": "org.gtk.WidgetFactory4",
|
"app-id" : "org.gtk.WidgetFactory4",
|
||||||
"runtime": "org.gnome.Platform",
|
"runtime" : "org.gnome.Platform",
|
||||||
"runtime-version": "master",
|
"runtime-version" : "master",
|
||||||
"sdk": "org.gnome.Sdk",
|
"sdk" : "org.gnome.Sdk",
|
||||||
"command": "gtk4-widget-factory",
|
"command" : "gtk4-widget-factory",
|
||||||
"tags": ["devel", "development", "nightly"],
|
"tags" : [
|
||||||
"desktop-file-name-prefix": "(Development) ",
|
"devel",
|
||||||
"finish-args": [
|
"development",
|
||||||
|
"nightly"
|
||||||
|
],
|
||||||
|
"desktop-file-name-prefix" : "(Development) ",
|
||||||
|
"finish-args" : [
|
||||||
"--device=dri",
|
"--device=dri",
|
||||||
"--share=ipc",
|
"--share=ipc",
|
||||||
"--socket=fallback-x11",
|
"--socket=fallback-x11",
|
||||||
"--socket=wayland",
|
"--socket=wayland",
|
||||||
"--talk-name=org.gtk.vfs", "--talk-name=org.gtk.vfs.*"
|
"--talk-name=org.gtk.vfs",
|
||||||
|
"--talk-name=org.gtk.vfs.*"
|
||||||
],
|
],
|
||||||
"cleanup": [
|
"cleanup" : [
|
||||||
"/include",
|
"/include",
|
||||||
"/lib/pkgconfig", "/share/pkgconfig",
|
"/lib/pkgconfig",
|
||||||
|
"/share/pkgconfig",
|
||||||
"/share/aclocal",
|
"/share/aclocal",
|
||||||
"/man", "/share/man", "/share/gtk-doc",
|
"/man",
|
||||||
"*.la", ".a",
|
"/share/man",
|
||||||
|
"/share/gtk-doc",
|
||||||
|
"*.la",
|
||||||
|
".a",
|
||||||
"/lib/girepository-1.0",
|
"/lib/girepository-1.0",
|
||||||
"/share/gir-1.0",
|
"/share/gir-1.0",
|
||||||
"/share/doc"
|
"/share/doc"
|
||||||
],
|
],
|
||||||
"modules": [
|
"modules" : [
|
||||||
{
|
{
|
||||||
"name" : "wayland",
|
"name" : "wayland",
|
||||||
"buildsystem" : "autotools",
|
"buildsystem" : "autotools",
|
||||||
@@ -39,18 +48,18 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "graphene",
|
"name" : "graphene",
|
||||||
"buildsystem": "meson",
|
"buildsystem" : "meson",
|
||||||
"builddir": true,
|
"builddir" : true,
|
||||||
"config-opts": [
|
"config-opts" : [
|
||||||
"--libdir=/app/lib",
|
"--libdir=/app/lib",
|
||||||
"-Dtests=false",
|
"-Dtests=false",
|
||||||
"-Dbenchmarks=false"
|
"-Dbenchmarks=false"
|
||||||
],
|
],
|
||||||
"sources": [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type": "git",
|
"type" : "git",
|
||||||
"url": "https://github.com/ebassi/graphene.git"
|
"url" : "https://github.com/ebassi/graphene.git"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -58,7 +67,7 @@
|
|||||||
"name" : "libsass",
|
"name" : "libsass",
|
||||||
"buildsystem" : "meson",
|
"buildsystem" : "meson",
|
||||||
"builddir" : true,
|
"builddir" : true,
|
||||||
"config-opts": [
|
"config-opts" : [
|
||||||
"--libdir=/app/lib"
|
"--libdir=/app/lib"
|
||||||
],
|
],
|
||||||
"sources" : [
|
"sources" : [
|
||||||
@@ -73,7 +82,7 @@
|
|||||||
"name" : "sassc",
|
"name" : "sassc",
|
||||||
"buildsystem" : "meson",
|
"buildsystem" : "meson",
|
||||||
"builddir" : true,
|
"builddir" : true,
|
||||||
"config-opts": [
|
"config-opts" : [
|
||||||
"--libdir=/app/lib"
|
"--libdir=/app/lib"
|
||||||
],
|
],
|
||||||
"sources" : [
|
"sources" : [
|
||||||
@@ -85,18 +94,23 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "gtk",
|
"name" : "gtk",
|
||||||
"buildsystem": "meson",
|
"buildsystem" : "meson",
|
||||||
"builddir": true,
|
"builddir" : true,
|
||||||
"config-opts": [
|
"config-opts" : [
|
||||||
"--libdir=/app/lib"
|
"--libdir=/app/lib"
|
||||||
],
|
],
|
||||||
"sources": [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type": "git",
|
"type" : "git",
|
||||||
"url": "https://gitlab.gnome.org/GNOME/gtk.git"
|
"url" : "https://gitlab.gnome.org/GNOME/gtk.git"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"build-options" : {
|
||||||
|
"env" : {
|
||||||
|
"DBUS_SESSION_BUS_ADDRESS" : "''"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,13 @@ if 'DESTDIR' not in os.environ:
|
|||||||
gtk_immodule_dir = os.path.join(gtk_moduledir, 'immodules')
|
gtk_immodule_dir = os.path.join(gtk_moduledir, 'immodules')
|
||||||
|
|
||||||
print('Compiling GSettings schemas...')
|
print('Compiling GSettings schemas...')
|
||||||
subprocess.call(['glib-compile-schemas',
|
glib_compile_schemas = subprocess.check_output(['pkg-config',
|
||||||
|
'--variable=glib_compile_schemas',
|
||||||
|
'gio-2.0']).strip()
|
||||||
|
if not os.path.exists(glib_compile_schemas):
|
||||||
|
# pkg-config variables only available since GLib 2.62.0.
|
||||||
|
glib_compile_schemas = 'glib-compile-schemas'
|
||||||
|
subprocess.call([glib_compile_schemas,
|
||||||
os.path.join(gtk_datadir, 'glib-2.0', 'schemas')])
|
os.path.join(gtk_datadir, 'glib-2.0', 'schemas')])
|
||||||
|
|
||||||
print('Updating icon cache...')
|
print('Updating icon cache...')
|
||||||
@@ -24,8 +30,14 @@ if 'DESTDIR' not in os.environ:
|
|||||||
|
|
||||||
print('Updating module cache for print backends...')
|
print('Updating module cache for print backends...')
|
||||||
os.makedirs(gtk_printmodule_dir, exist_ok=True)
|
os.makedirs(gtk_printmodule_dir, exist_ok=True)
|
||||||
subprocess.call(['gio-querymodules', gtk_printmodule_dir])
|
gio_querymodules = subprocess.check_output(['pkg-config',
|
||||||
|
'--variable=gio_querymodules',
|
||||||
|
'gio-2.0']).strip()
|
||||||
|
if not os.path.exists(gio_querymodules):
|
||||||
|
# pkg-config variables only available since GLib 2.62.0.
|
||||||
|
gio_querymodules = 'gio-querymodules'
|
||||||
|
subprocess.call([gio_querymodules, gtk_printmodule_dir])
|
||||||
|
|
||||||
print('Updating module cache for input methods...')
|
print('Updating module cache for input methods...')
|
||||||
os.makedirs(gtk_immodule_dir, exist_ok=True)
|
os.makedirs(gtk_immodule_dir, exist_ok=True)
|
||||||
subprocess.call(['gio-querymodules', gtk_immodule_dir])
|
subprocess.call([gio_querymodules, gtk_immodule_dir])
|
||||||
|
|||||||
@@ -81,11 +81,11 @@ constraint_editor_application_activate (GApplication *app)
|
|||||||
static void
|
static void
|
||||||
constraint_editor_application_open (GApplication *app,
|
constraint_editor_application_open (GApplication *app,
|
||||||
GFile **files,
|
GFile **files,
|
||||||
gint n_files,
|
int n_files,
|
||||||
const gchar *hint)
|
const char *hint)
|
||||||
{
|
{
|
||||||
ConstraintEditorWindow *win;
|
ConstraintEditorWindow *win;
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < n_files; i++)
|
for (i = 0; i < n_files; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ constraint_editor_window_load (ConstraintEditorWindow *self,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
open_response_cb (GtkNativeDialog *dialog,
|
open_response_cb (GtkNativeDialog *dialog,
|
||||||
gint response,
|
int response,
|
||||||
ConstraintEditorWindow *self)
|
ConstraintEditorWindow *self)
|
||||||
{
|
{
|
||||||
gtk_native_dialog_hide (dialog);
|
gtk_native_dialog_hide (dialog);
|
||||||
@@ -285,7 +285,7 @@ serialize_model (GListModel *list)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
save_response_cb (GtkNativeDialog *dialog,
|
save_response_cb (GtkNativeDialog *dialog,
|
||||||
gint response,
|
int response,
|
||||||
ConstraintEditorWindow *self)
|
ConstraintEditorWindow *self)
|
||||||
{
|
{
|
||||||
gtk_native_dialog_hide (dialog);
|
gtk_native_dialog_hide (dialog);
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
<property name="default-height">768</property>
|
<property name="default-height">768</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="header">
|
<object class="GtkHeaderBar" id="header">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child type="start">
|
<child type="start">
|
||||||
<object class="GtkButton">
|
<object class="GtkButton">
|
||||||
<property name="icon-name">document-open-symbolic</property>
|
<property name="icon-name">document-open-symbolic</property>
|
||||||
|
|||||||
@@ -174,28 +174,25 @@ constraint_view_init (ConstraintView *self)
|
|||||||
manager = gtk_constraint_layout_new ();
|
manager = gtk_constraint_layout_new ();
|
||||||
gtk_widget_set_layout_manager (GTK_WIDGET (self), manager);
|
gtk_widget_set_layout_manager (GTK_WIDGET (self), manager);
|
||||||
|
|
||||||
all_children = gtk_widget_observe_children (GTK_WIDGET (self));
|
|
||||||
all_constraints = gtk_constraint_layout_observe_constraints (GTK_CONSTRAINT_LAYOUT (manager));
|
|
||||||
guides = gtk_constraint_layout_observe_guides (GTK_CONSTRAINT_LAYOUT (manager));
|
guides = gtk_constraint_layout_observe_guides (GTK_CONSTRAINT_LAYOUT (manager));
|
||||||
|
|
||||||
|
all_constraints = gtk_constraint_layout_observe_constraints (GTK_CONSTRAINT_LAYOUT (manager));
|
||||||
filter = gtk_custom_filter_new (omit_internal, NULL, NULL);
|
filter = gtk_custom_filter_new (omit_internal, NULL, NULL);
|
||||||
constraints = (GListModel *)gtk_filter_list_model_new (all_constraints, filter);
|
constraints = (GListModel *)gtk_filter_list_model_new (all_constraints, filter);
|
||||||
g_object_unref (filter);
|
|
||||||
|
all_children = gtk_widget_observe_children (GTK_WIDGET (self));
|
||||||
filter = gtk_custom_filter_new (omit_internal, NULL, NULL);
|
filter = gtk_custom_filter_new (omit_internal, NULL, NULL);
|
||||||
children = (GListModel *)gtk_filter_list_model_new (all_children, filter);
|
children = (GListModel *)gtk_filter_list_model_new (all_children, filter);
|
||||||
g_object_unref (filter);
|
|
||||||
|
|
||||||
list = g_list_store_new (G_TYPE_LIST_MODEL);
|
list = g_list_store_new (G_TYPE_LIST_MODEL);
|
||||||
g_list_store_append (list, children);
|
g_list_store_append (list, children);
|
||||||
g_list_store_append (list, guides);
|
g_list_store_append (list, guides);
|
||||||
g_list_store_append (list, constraints);
|
g_list_store_append (list, constraints);
|
||||||
self->model = G_LIST_MODEL (gtk_flatten_list_model_new (G_TYPE_OBJECT, G_LIST_MODEL (list)));
|
|
||||||
g_object_unref (children);
|
g_object_unref (children);
|
||||||
g_object_unref (guides);
|
g_object_unref (guides);
|
||||||
g_object_unref (constraints);
|
g_object_unref (constraints);
|
||||||
g_object_unref (all_children);
|
|
||||||
g_object_unref (all_constraints);
|
|
||||||
g_object_unref (list);
|
|
||||||
|
|
||||||
|
self->model = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (list)));
|
||||||
|
|
||||||
controller = (GtkEventController *)gtk_gesture_drag_new ();
|
controller = (GtkEventController *)gtk_gesture_drag_new ();
|
||||||
g_signal_connect (controller, "drag-begin", G_CALLBACK (drag_begin), self);
|
g_signal_connect (controller, "drag-begin", G_CALLBACK (drag_begin), self);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ static void create_window (GApplication *app, const char *contents);
|
|||||||
static void
|
static void
|
||||||
show_action_dialog (GSimpleAction *action)
|
show_action_dialog (GSimpleAction *action)
|
||||||
{
|
{
|
||||||
const gchar *name;
|
const char *name;
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
|
|
||||||
name = g_action_get_name (G_ACTION (action));
|
name = g_action_get_name (G_ACTION (action));
|
||||||
@@ -58,9 +58,9 @@ show_action_infobar (GSimpleAction *action,
|
|||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
DemoApplicationWindow *window = data;
|
DemoApplicationWindow *window = data;
|
||||||
gchar *text;
|
char *text;
|
||||||
const gchar *name;
|
const char *name;
|
||||||
const gchar *value;
|
const char *value;
|
||||||
|
|
||||||
name = g_action_get_name (G_ACTION (action));
|
name = g_action_get_name (G_ACTION (action));
|
||||||
value = g_variant_get_string (parameter, NULL);
|
value = g_variant_get_string (parameter, NULL);
|
||||||
@@ -92,7 +92,7 @@ activate_new (GSimpleAction *action,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
open_response_cb (GtkNativeDialog *dialog,
|
open_response_cb (GtkNativeDialog *dialog,
|
||||||
gint response_id,
|
int response_id,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkFileChooserNative *native = user_data;
|
GtkFileChooserNative *native = user_data;
|
||||||
@@ -185,7 +185,7 @@ activate_about (GSimpleAction *action,
|
|||||||
{
|
{
|
||||||
GtkWidget *window = user_data;
|
GtkWidget *window = user_data;
|
||||||
|
|
||||||
const gchar *authors[] = {
|
const char *authors[] = {
|
||||||
"Peter Mattis",
|
"Peter Mattis",
|
||||||
"Spencer Kimball",
|
"Spencer Kimball",
|
||||||
"Josh MacDonald",
|
"Josh MacDonald",
|
||||||
@@ -193,7 +193,7 @@ activate_about (GSimpleAction *action,
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
const gchar *documentors[] = {
|
const char *documentors[] = {
|
||||||
"Owen Taylor",
|
"Owen Taylor",
|
||||||
"Tony Gale",
|
"Tony Gale",
|
||||||
"Matthias Clasen <mclasen@redhat.com>",
|
"Matthias Clasen <mclasen@redhat.com>",
|
||||||
@@ -244,9 +244,9 @@ static void
|
|||||||
update_statusbar (GtkTextBuffer *buffer,
|
update_statusbar (GtkTextBuffer *buffer,
|
||||||
DemoApplicationWindow *window)
|
DemoApplicationWindow *window)
|
||||||
{
|
{
|
||||||
gchar *msg;
|
char *msg;
|
||||||
gint row, col;
|
int row, col;
|
||||||
gint count;
|
int count;
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
|
|
||||||
/* clear any previous message, underflow is allowed */
|
/* clear any previous message, underflow is allowed */
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ static GtkWidget *placeholder;
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
on_name_appeared (GDBusConnection *connection,
|
on_name_appeared (GDBusConnection *connection,
|
||||||
const gchar *name,
|
const char *name,
|
||||||
const gchar *name_owner,
|
const char *name_owner,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
name_seen = TRUE;
|
name_seen = TRUE;
|
||||||
@@ -25,7 +25,7 @@ on_name_appeared (GDBusConnection *connection,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
on_name_vanished (GDBusConnection *connection,
|
on_name_vanished (GDBusConnection *connection,
|
||||||
const gchar *name,
|
const char *name,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
if (!name_seen)
|
if (!name_seen)
|
||||||
@@ -55,7 +55,7 @@ do_application_demo (GtkWidget *toplevel)
|
|||||||
|
|
||||||
if (placeholder == NULL)
|
if (placeholder == NULL)
|
||||||
{
|
{
|
||||||
const gchar *command;
|
const char *command;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
if (g_file_test ("./gtk4-demo-application" APP_EXTENSION, G_FILE_TEST_IS_EXECUTABLE))
|
if (g_file_test ("./gtk4-demo-application" APP_EXTENSION, G_FILE_TEST_IS_EXECUTABLE))
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ static GtkWidget *progress_bar = NULL;
|
|||||||
static gboolean
|
static gboolean
|
||||||
apply_changes_gradually (gpointer data)
|
apply_changes_gradually (gpointer data)
|
||||||
{
|
{
|
||||||
gdouble fraction;
|
double fraction;
|
||||||
|
|
||||||
/* Work, work, work... */
|
/* Work, work, work... */
|
||||||
fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));
|
fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));
|
||||||
@@ -47,8 +47,8 @@ on_assistant_close_cancel (GtkWidget *widget, gpointer data)
|
|||||||
static void
|
static void
|
||||||
on_assistant_prepare (GtkWidget *widget, GtkWidget *page, gpointer data)
|
on_assistant_prepare (GtkWidget *widget, GtkWidget *page, gpointer data)
|
||||||
{
|
{
|
||||||
gint current_page, n_pages;
|
int current_page, n_pages;
|
||||||
gchar *title;
|
char *title;
|
||||||
|
|
||||||
current_page = gtk_assistant_get_current_page (GTK_ASSISTANT (widget));
|
current_page = gtk_assistant_get_current_page (GTK_ASSISTANT (widget));
|
||||||
n_pages = gtk_assistant_get_n_pages (GTK_ASSISTANT (widget));
|
n_pages = gtk_assistant_get_n_pages (GTK_ASSISTANT (widget));
|
||||||
@@ -70,8 +70,8 @@ on_entry_changed (GtkWidget *widget, gpointer data)
|
|||||||
{
|
{
|
||||||
GtkAssistant *assistant = GTK_ASSISTANT (data);
|
GtkAssistant *assistant = GTK_ASSISTANT (data);
|
||||||
GtkWidget *current_page;
|
GtkWidget *current_page;
|
||||||
gint page_number;
|
int page_number;
|
||||||
const gchar *text;
|
const char *text;
|
||||||
|
|
||||||
page_number = gtk_assistant_get_current_page (assistant);
|
page_number = gtk_assistant_get_current_page (assistant);
|
||||||
current_page = gtk_assistant_get_nth_page (assistant, page_number);
|
current_page = gtk_assistant_get_nth_page (assistant, page_number);
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ create_icon_store (void)
|
|||||||
|
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
GtkListStore *store;
|
GtkListStore *store;
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
|
store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ set_sensitive (GtkCellLayout *cell_layout,
|
|||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GtkTreePath *path;
|
GtkTreePath *path;
|
||||||
gint *indices;
|
int *indices;
|
||||||
gboolean sensitive;
|
gboolean sensitive;
|
||||||
|
|
||||||
path = gtk_tree_model_get_path (tree_model, iter);
|
path = gtk_tree_model_get_path (tree_model, iter);
|
||||||
@@ -175,7 +175,7 @@ create_capital_store (void)
|
|||||||
|
|
||||||
GtkTreeIter iter, iter2;
|
GtkTreeIter iter, iter2;
|
||||||
GtkTreeStore *store;
|
GtkTreeStore *store;
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
store = gtk_tree_store_new (1, G_TYPE_STRING);
|
store = gtk_tree_store_new (1, G_TYPE_STRING);
|
||||||
|
|
||||||
|
|||||||
@@ -38,14 +38,14 @@ struct {
|
|||||||
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
|
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
|
||||||
static void
|
static void
|
||||||
update_css_for_blend_mode (GtkCssProvider *provider,
|
update_css_for_blend_mode (GtkCssProvider *provider,
|
||||||
const gchar *blend_mode)
|
const char *blend_mode)
|
||||||
{
|
{
|
||||||
GBytes *bytes;
|
GBytes *bytes;
|
||||||
gchar *css;
|
char *css;
|
||||||
|
|
||||||
bytes = g_resources_lookup_data ("/css_blendmodes/css_blendmodes.css", 0, NULL);
|
bytes = g_resources_lookup_data ("/css_blendmodes/css_blendmodes.css", 0, NULL);
|
||||||
|
|
||||||
css = g_strdup_printf ((gchar*) g_bytes_get_data (bytes, NULL),
|
css = g_strdup_printf ((char *) g_bytes_get_data (bytes, NULL),
|
||||||
blend_mode,
|
blend_mode,
|
||||||
blend_mode,
|
blend_mode,
|
||||||
blend_mode);
|
blend_mode);
|
||||||
@@ -62,7 +62,7 @@ row_activated (GtkListBox *listbox,
|
|||||||
GtkListBoxRow *row,
|
GtkListBoxRow *row,
|
||||||
GtkCssProvider *provider)
|
GtkCssProvider *provider)
|
||||||
{
|
{
|
||||||
const gchar *blend_mode;
|
const char *blend_mode;
|
||||||
|
|
||||||
blend_mode = blend_modes[gtk_list_box_row_get_index (row)].id;
|
blend_mode = blend_modes[gtk_list_box_row_get_index (row)].id;
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ setup_listbox (GtkBuilder *builder,
|
|||||||
{
|
{
|
||||||
GtkWidget *normal_row;
|
GtkWidget *normal_row;
|
||||||
GtkWidget *listbox;
|
GtkWidget *listbox;
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
normal_row = NULL;
|
normal_row = NULL;
|
||||||
listbox = gtk_list_box_new ();
|
listbox = gtk_list_box_new ();
|
||||||
|
|||||||
@@ -140,6 +140,7 @@
|
|||||||
</gresource>
|
</gresource>
|
||||||
<gresource prefix="/listview_colors">
|
<gresource prefix="/listview_colors">
|
||||||
<file compressed="true">color.names.txt</file>
|
<file compressed="true">color.names.txt</file>
|
||||||
|
<file>listview_colors.css</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
<gresource prefix="/shortcuts">
|
<gresource prefix="/shortcuts">
|
||||||
<file>shortcuts.ui</file>
|
<file>shortcuts.ui</file>
|
||||||
@@ -225,6 +226,7 @@
|
|||||||
<file>listview_minesweeper.c</file>
|
<file>listview_minesweeper.c</file>
|
||||||
<file>listview_settings.c</file>
|
<file>listview_settings.c</file>
|
||||||
<file>listview_weather.c</file>
|
<file>listview_weather.c</file>
|
||||||
|
<file>listview_words.c</file>
|
||||||
<file>list_store.c</file>
|
<file>list_store.c</file>
|
||||||
<file>markup.c</file>
|
<file>markup.c</file>
|
||||||
<file>modelbutton.c</file>
|
<file>modelbutton.c</file>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ G_DEFINE_TYPE(DemoImage, demo_image, GTK_TYPE_WIDGET)
|
|||||||
static GdkPaintable *
|
static GdkPaintable *
|
||||||
get_image_paintable (GtkImage *image)
|
get_image_paintable (GtkImage *image)
|
||||||
{
|
{
|
||||||
const gchar *icon_name;
|
const char *icon_name;
|
||||||
GtkIconTheme *icon_theme;
|
GtkIconTheme *icon_theme;
|
||||||
GtkIconPaintable *icon;
|
GtkIconPaintable *icon;
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ message_dialog_clicked (GtkButton *button,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
static gint i = 1;
|
static int i = 1;
|
||||||
|
|
||||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||||
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||||
|
|||||||
@@ -597,6 +597,83 @@ css_button_new (const char *class)
|
|||||||
return button;
|
return button;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
GtkWidget parent_instance;
|
||||||
|
GdkRGBA color;
|
||||||
|
} ColorSwatch;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
GtkWidgetClass parent_class;
|
||||||
|
} ColorSwatchClass;
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (ColorSwatch, color_swatch, GTK_TYPE_WIDGET)
|
||||||
|
|
||||||
|
static GdkContentProvider *
|
||||||
|
color_swatch_drag_prepare (GtkDragSource *source,
|
||||||
|
double x,
|
||||||
|
double y,
|
||||||
|
ColorSwatch *swatch)
|
||||||
|
{
|
||||||
|
return gdk_content_provider_new_typed (GDK_TYPE_RGBA, &swatch->color);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
color_swatch_init (ColorSwatch *swatch)
|
||||||
|
{
|
||||||
|
GtkDragSource *source = gtk_drag_source_new ();
|
||||||
|
g_signal_connect (source, "prepare", G_CALLBACK (color_swatch_drag_prepare), swatch);
|
||||||
|
gtk_widget_add_controller (GTK_WIDGET (swatch), GTK_EVENT_CONTROLLER (source));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
color_swatch_snapshot (GtkWidget *widget,
|
||||||
|
GtkSnapshot *snapshot)
|
||||||
|
{
|
||||||
|
ColorSwatch *swatch = (ColorSwatch *)widget;
|
||||||
|
float w = gtk_widget_get_width (widget);
|
||||||
|
float h = gtk_widget_get_height (widget);
|
||||||
|
|
||||||
|
gtk_snapshot_append_color (snapshot, &swatch->color,
|
||||||
|
&GRAPHENE_RECT_INIT(0, 0, w, h));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
color_swatch_measure (GtkWidget *widget,
|
||||||
|
GtkOrientation orientation,
|
||||||
|
int for_size,
|
||||||
|
int *minimum_size,
|
||||||
|
int *natural_size,
|
||||||
|
int *minimum_baseline,
|
||||||
|
int *natural_baseline)
|
||||||
|
{
|
||||||
|
if (orientation == GTK_ORIENTATION_HORIZONTAL)
|
||||||
|
*minimum_size = *natural_size = 48;
|
||||||
|
else
|
||||||
|
*minimum_size = *natural_size = 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
color_swatch_class_init (ColorSwatchClass *class)
|
||||||
|
{
|
||||||
|
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
|
||||||
|
|
||||||
|
widget_class->snapshot = color_swatch_snapshot;
|
||||||
|
widget_class->measure = color_swatch_measure;
|
||||||
|
gtk_widget_class_set_css_name (widget_class, "colorswatch");
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkWidget *
|
||||||
|
color_swatch_new (const char *color)
|
||||||
|
{
|
||||||
|
ColorSwatch *swatch = g_object_new (color_swatch_get_type (), NULL);
|
||||||
|
|
||||||
|
gdk_rgba_parse (&swatch->color, color);
|
||||||
|
|
||||||
|
return GTK_WIDGET (swatch);
|
||||||
|
}
|
||||||
|
|
||||||
static GtkWidget *window = NULL;
|
static GtkWidget *window = NULL;
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
@@ -670,18 +747,7 @@ do_dnd (GtkWidget *do_widget)
|
|||||||
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), box3);
|
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), box3);
|
||||||
|
|
||||||
for (i = 0; colors[i]; i++)
|
for (i = 0; colors[i]; i++)
|
||||||
{
|
gtk_box_append (GTK_BOX (box3), color_swatch_new (colors[i]));
|
||||||
GdkRGBA rgba;
|
|
||||||
GtkWidget *swatch;
|
|
||||||
|
|
||||||
gdk_rgba_parse (&rgba, colors[i]);
|
|
||||||
|
|
||||||
swatch = g_object_new (g_type_from_name ("GtkColorSwatch"),
|
|
||||||
"rgba", &rgba,
|
|
||||||
"selectable", FALSE,
|
|
||||||
NULL);
|
|
||||||
gtk_box_append (GTK_BOX (box3), swatch);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_box_append (GTK_BOX (box3), css_button_new ("rainbow1"));
|
gtk_box_append (GTK_BOX (box3), css_button_new ("rainbow1"));
|
||||||
gtk_box_append (GTK_BOX (box3), css_button_new ("rainbow2"));
|
gtk_box_append (GTK_BOX (box3), css_button_new ("rainbow2"));
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ scribble_draw (GtkDrawingArea *da,
|
|||||||
/* Draw a rectangle on the screen */
|
/* Draw a rectangle on the screen */
|
||||||
static void
|
static void
|
||||||
draw_brush (GtkWidget *widget,
|
draw_brush (GtkWidget *widget,
|
||||||
gdouble x,
|
double x,
|
||||||
gdouble y)
|
double y)
|
||||||
{
|
{
|
||||||
GdkRectangle update_rect;
|
GdkRectangle update_rect;
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ strings_setup_item_full (GtkSignalListItemFactory *factory,
|
|||||||
gtk_label_set_xalign (GTK_LABEL (title), 0.0);
|
gtk_label_set_xalign (GTK_LABEL (title), 0.0);
|
||||||
description = gtk_label_new ("");
|
description = gtk_label_new ("");
|
||||||
gtk_label_set_xalign (GTK_LABEL (description), 0.0);
|
gtk_label_set_xalign (GTK_LABEL (description), 0.0);
|
||||||
gtk_style_context_add_class (gtk_widget_get_style_context (description), "dim-label");
|
gtk_widget_add_css_class (description, "dim-label");
|
||||||
|
|
||||||
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
|
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
|
||||||
box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
|
box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
|
||||||
|
|||||||
@@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
gint number;
|
int number;
|
||||||
gchar *product;
|
char *product;
|
||||||
gint yummy;
|
int yummy;
|
||||||
}
|
}
|
||||||
Item;
|
Item;
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ add_items (void)
|
|||||||
static GtkTreeModel *
|
static GtkTreeModel *
|
||||||
create_items_model (void)
|
create_items_model (void)
|
||||||
{
|
{
|
||||||
gint i = 0;
|
int i = 0;
|
||||||
GtkListStore *model;
|
GtkListStore *model;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ static GtkTreeModel *
|
|||||||
create_numbers_model (void)
|
create_numbers_model (void)
|
||||||
{
|
{
|
||||||
#define N_NUMBERS 10
|
#define N_NUMBERS 10
|
||||||
gint i = 0;
|
int i = 0;
|
||||||
GtkListStore *model;
|
GtkListStore *model;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@ remove_item (GtkWidget *widget, gpointer data)
|
|||||||
|
|
||||||
if (gtk_tree_selection_get_selected (selection, NULL, &iter))
|
if (gtk_tree_selection_get_selected (selection, NULL, &iter))
|
||||||
{
|
{
|
||||||
gint i;
|
int i;
|
||||||
GtkTreePath *path;
|
GtkTreePath *path;
|
||||||
|
|
||||||
path = gtk_tree_model_get_path (model, &iter);
|
path = gtk_tree_model_get_path (model, &iter);
|
||||||
@@ -211,7 +211,7 @@ separator_row (GtkTreeModel *model,
|
|||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GtkTreePath *path;
|
GtkTreePath *path;
|
||||||
gint idx;
|
int idx;
|
||||||
|
|
||||||
path = gtk_tree_model_get_path (model, iter);
|
path = gtk_tree_model_get_path (model, iter);
|
||||||
idx = gtk_tree_path_get_indices (path)[0];
|
idx = gtk_tree_path_get_indices (path)[0];
|
||||||
@@ -224,7 +224,7 @@ separator_row (GtkTreeModel *model,
|
|||||||
static void
|
static void
|
||||||
editing_started (GtkCellRenderer *cell,
|
editing_started (GtkCellRenderer *cell,
|
||||||
GtkCellEditable *editable,
|
GtkCellEditable *editable,
|
||||||
const gchar *path,
|
const char *path,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),
|
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),
|
||||||
@@ -233,15 +233,15 @@ editing_started (GtkCellRenderer *cell,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
cell_edited (GtkCellRendererText *cell,
|
cell_edited (GtkCellRendererText *cell,
|
||||||
const gchar *path_string,
|
const char *path_string,
|
||||||
const gchar *new_text,
|
const char *new_text,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GtkTreeModel *model = (GtkTreeModel *)data;
|
GtkTreeModel *model = (GtkTreeModel *)data;
|
||||||
GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
|
GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
gint column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column"));
|
int column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column"));
|
||||||
|
|
||||||
gtk_tree_model_get_iter (model, &iter, path);
|
gtk_tree_model_get_iter (model, &iter, path);
|
||||||
|
|
||||||
@@ -249,7 +249,7 @@ cell_edited (GtkCellRendererText *cell,
|
|||||||
{
|
{
|
||||||
case COLUMN_ITEM_NUMBER:
|
case COLUMN_ITEM_NUMBER:
|
||||||
{
|
{
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
i = gtk_tree_path_get_indices (path)[0];
|
i = gtk_tree_path_get_indices (path)[0];
|
||||||
g_array_index (articles, Item, i).number = atoi (new_text);
|
g_array_index (articles, Item, i).number = atoi (new_text);
|
||||||
@@ -261,8 +261,8 @@ cell_edited (GtkCellRendererText *cell,
|
|||||||
|
|
||||||
case COLUMN_ITEM_PRODUCT:
|
case COLUMN_ITEM_PRODUCT:
|
||||||
{
|
{
|
||||||
gint i;
|
int i;
|
||||||
gchar *old_text;
|
char *old_text;
|
||||||
|
|
||||||
gtk_tree_model_get (model, &iter, column, &old_text, -1);
|
gtk_tree_model_get (model, &iter, column, &old_text, -1);
|
||||||
g_free (old_text);
|
g_free (old_text);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
static GtkWidget *window = NULL;
|
static GtkWidget *window = NULL;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
response_cb (GtkDialog *dialog, gint response_id)
|
response_cb (GtkDialog *dialog, int response_id)
|
||||||
{
|
{
|
||||||
gtk_window_destroy (GTK_WINDOW (window));
|
gtk_window_destroy (GTK_WINDOW (window));
|
||||||
window = NULL;
|
window = NULL;
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ format_number (GtkTreeViewColumn *col,
|
|||||||
GtkTreeIter *iter,
|
GtkTreeIter *iter,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gint num;
|
int num;
|
||||||
gchar *text;
|
char *text;
|
||||||
|
|
||||||
gtk_tree_model_get (model, iter, GPOINTER_TO_INT (data), &num, -1);
|
gtk_tree_model_get (model, iter, GPOINTER_TO_INT (data), &num, -1);
|
||||||
text = g_strdup_printf ("%d", num);
|
text = g_strdup_printf ("%d", num);
|
||||||
@@ -35,11 +35,11 @@ static void
|
|||||||
filter_modify_func (GtkTreeModel *model,
|
filter_modify_func (GtkTreeModel *model,
|
||||||
GtkTreeIter *iter,
|
GtkTreeIter *iter,
|
||||||
GValue *value,
|
GValue *value,
|
||||||
gint column,
|
int column,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GtkTreeModelFilter *filter_model = GTK_TREE_MODEL_FILTER (model);
|
GtkTreeModelFilter *filter_model = GTK_TREE_MODEL_FILTER (model);
|
||||||
gint width, height;
|
int width, height;
|
||||||
GtkTreeModel *child_model;
|
GtkTreeModel *child_model;
|
||||||
GtkTreeIter child_iter;
|
GtkTreeIter child_iter;
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ visible_func (GtkTreeModel *model,
|
|||||||
GtkTreeIter *iter,
|
GtkTreeIter *iter,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gint width;
|
int width;
|
||||||
|
|
||||||
gtk_tree_model_get (model, iter,
|
gtk_tree_model_get (model, iter,
|
||||||
WIDTH_COLUMN, &width,
|
WIDTH_COLUMN, &width,
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
<property name="default-height">400</property>
|
<property name="default-height">400</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="">
|
<object class="GtkHeaderBar" id="">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ draw_color (GtkDrawingArea *drawingarea,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *
|
static GtkWidget *
|
||||||
color_swatch_new (const gchar *color)
|
color_swatch_new (const char *color)
|
||||||
{
|
{
|
||||||
GtkWidget *button, *area;
|
GtkWidget *button, *area;
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ do_flowbox (GtkWidget *do_widget)
|
|||||||
{
|
{
|
||||||
static GtkWidget *window = NULL;
|
static GtkWidget *window = NULL;
|
||||||
GtkWidget *scrolled, *flowbox;
|
GtkWidget *scrolled, *flowbox;
|
||||||
const gchar *colors[] = {
|
const char *colors[] = {
|
||||||
"AliceBlue",
|
"AliceBlue",
|
||||||
"AntiqueWhite",
|
"AntiqueWhite",
|
||||||
"AntiqueWhite1",
|
"AntiqueWhite1",
|
||||||
@@ -716,7 +716,7 @@ do_flowbox (GtkWidget *do_widget)
|
|||||||
"YellowGreen",
|
"YellowGreen",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
if (!window)
|
if (!window)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
<property name="title">Font Explorer</property>
|
<property name="title">Font Explorer</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar">
|
<object class="GtkHeaderBar">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="reset">
|
<object class="GtkButton" id="reset">
|
||||||
<property name="receives-default">1</property>
|
<property name="receives-default">1</property>
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ update_display (void)
|
|||||||
GList *l;
|
GList *l;
|
||||||
PangoAttrList *attrs;
|
PangoAttrList *attrs;
|
||||||
PangoAttribute *attr;
|
PangoAttribute *attr;
|
||||||
gint ins, bound;
|
int ins, bound;
|
||||||
guint start, end;
|
guint start, end;
|
||||||
PangoLanguage *lang;
|
PangoLanguage *lang;
|
||||||
char *font_desc;
|
char *font_desc;
|
||||||
@@ -479,7 +479,7 @@ update_script_combo (void)
|
|||||||
{
|
{
|
||||||
GtkListStore *store;
|
GtkListStore *store;
|
||||||
hb_font_t *hb_font;
|
hb_font_t *hb_font;
|
||||||
gint i, j, k;
|
int i, j, k;
|
||||||
PangoFont *pango_font;
|
PangoFont *pango_font;
|
||||||
GHashTable *tags;
|
GHashTable *tags;
|
||||||
GHashTableIter iter;
|
GHashTableIter iter;
|
||||||
@@ -593,7 +593,7 @@ update_script_combo (void)
|
|||||||
static void
|
static void
|
||||||
update_features (void)
|
update_features (void)
|
||||||
{
|
{
|
||||||
gint i, j;
|
int i, j;
|
||||||
GtkTreeModel *model;
|
GtkTreeModel *model;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
guint script_index, lang_index;
|
guint script_index, lang_index;
|
||||||
@@ -728,8 +728,8 @@ static void
|
|||||||
entry_activated (GtkEntry *entry,
|
entry_activated (GtkEntry *entry,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
{
|
{
|
||||||
gdouble value;
|
double value;
|
||||||
gchar *err = NULL;
|
char *err = NULL;
|
||||||
|
|
||||||
value = g_strtod (gtk_editable_get_text (GTK_EDITABLE (entry)), &err);
|
value = g_strtod (gtk_editable_get_text (GTK_EDITABLE (entry)), &err);
|
||||||
if (err != NULL)
|
if (err != NULL)
|
||||||
@@ -939,7 +939,7 @@ instance_changed (GtkComboBox *combo)
|
|||||||
{
|
{
|
||||||
Axis *axis;
|
Axis *axis;
|
||||||
Axis akey;
|
Axis akey;
|
||||||
gdouble value;
|
double value;
|
||||||
|
|
||||||
value = coords[ai[i].axis_index];
|
value = coords[ai[i].axis_index];
|
||||||
|
|
||||||
|
|||||||
@@ -36,11 +36,11 @@ adjustment_get_normalized_value (GtkAdjustment *adj)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
val_to_xy (GtkFontPlane *plane,
|
val_to_xy (GtkFontPlane *plane,
|
||||||
gint *x,
|
int *x,
|
||||||
gint *y)
|
int *y)
|
||||||
{
|
{
|
||||||
gdouble u, v;
|
double u, v;
|
||||||
gint width, height;
|
int width, height;
|
||||||
|
|
||||||
width = gtk_widget_get_allocated_width (GTK_WIDGET (plane));
|
width = gtk_widget_get_allocated_width (GTK_WIDGET (plane));
|
||||||
height = gtk_widget_get_allocated_height (GTK_WIDGET (plane));
|
height = gtk_widget_get_allocated_height (GTK_WIDGET (plane));
|
||||||
@@ -57,8 +57,8 @@ plane_snapshot (GtkWidget *widget,
|
|||||||
GtkSnapshot *snapshot)
|
GtkSnapshot *snapshot)
|
||||||
{
|
{
|
||||||
GtkFontPlane *plane = GTK_FONT_PLANE (widget);
|
GtkFontPlane *plane = GTK_FONT_PLANE (widget);
|
||||||
gint x, y;
|
int x, y;
|
||||||
gint width, height;
|
int width, height;
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
|
|
||||||
val_to_xy (plane, &x, &y);
|
val_to_xy (plane, &x, &y);
|
||||||
@@ -125,11 +125,11 @@ adjustment_set_normalized_value (GtkAdjustment *adj,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
update_value (GtkFontPlane *plane,
|
update_value (GtkFontPlane *plane,
|
||||||
gint x,
|
int x,
|
||||||
gint y)
|
int y)
|
||||||
{
|
{
|
||||||
GtkWidget *widget = GTK_WIDGET (plane);
|
GtkWidget *widget = GTK_WIDGET (plane);
|
||||||
gdouble u, v;
|
double u, v;
|
||||||
|
|
||||||
u = CLAMP (x * (1.0 / gtk_widget_get_allocated_width (widget)), 0, 1);
|
u = CLAMP (x * (1.0 / gtk_widget_get_allocated_width (widget)), 0, 1);
|
||||||
v = CLAMP (1 - y * (1.0 / gtk_widget_get_allocated_height (widget)), 0, 1);
|
v = CLAMP (1 - y * (1.0 / gtk_widget_get_allocated_height (widget)), 0, 1);
|
||||||
@@ -142,8 +142,8 @@ update_value (GtkFontPlane *plane,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
plane_drag_gesture_begin (GtkGestureDrag *gesture,
|
plane_drag_gesture_begin (GtkGestureDrag *gesture,
|
||||||
gdouble start_x,
|
double start_x,
|
||||||
gdouble start_y,
|
double start_y,
|
||||||
GtkFontPlane *plane)
|
GtkFontPlane *plane)
|
||||||
{
|
{
|
||||||
guint button;
|
guint button;
|
||||||
@@ -164,11 +164,11 @@ plane_drag_gesture_begin (GtkGestureDrag *gesture,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
plane_drag_gesture_update (GtkGestureDrag *gesture,
|
plane_drag_gesture_update (GtkGestureDrag *gesture,
|
||||||
gdouble offset_x,
|
double offset_x,
|
||||||
gdouble offset_y,
|
double offset_y,
|
||||||
GtkFontPlane *plane)
|
GtkFontPlane *plane)
|
||||||
{
|
{
|
||||||
gdouble start_x, start_y;
|
double start_x, start_y;
|
||||||
|
|
||||||
gtk_gesture_drag_get_start_point (GTK_GESTURE_DRAG (gesture),
|
gtk_gesture_drag_get_start_point (GTK_GESTURE_DRAG (gesture),
|
||||||
&start_x, &start_y);
|
&start_x, &start_y);
|
||||||
@@ -177,8 +177,8 @@ plane_drag_gesture_update (GtkGestureDrag *gesture,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
plane_drag_gesture_end (GtkGestureDrag *gesture,
|
plane_drag_gesture_end (GtkGestureDrag *gesture,
|
||||||
gdouble offset_x,
|
double offset_x,
|
||||||
gdouble offset_y,
|
double offset_y,
|
||||||
GtkFontPlane *plane)
|
GtkFontPlane *plane)
|
||||||
{
|
{
|
||||||
set_cross_cursor (GTK_WIDGET (plane), FALSE);
|
set_cross_cursor (GTK_WIDGET (plane), FALSE);
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
static GtkGesture *rotate = NULL;
|
static GtkGesture *rotate = NULL;
|
||||||
static GtkGesture *zoom = NULL;
|
static GtkGesture *zoom = NULL;
|
||||||
static gdouble swipe_x = 0;
|
static double swipe_x = 0;
|
||||||
static gdouble swipe_y = 0;
|
static double swipe_y = 0;
|
||||||
static gboolean long_pressed = FALSE;
|
static gboolean long_pressed = FALSE;
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -26,8 +26,8 @@ touchpad_swipe_gesture_begin (GtkGesture *gesture,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
swipe_gesture_swept (GtkGestureSwipe *gesture,
|
swipe_gesture_swept (GtkGestureSwipe *gesture,
|
||||||
gdouble velocity_x,
|
double velocity_x,
|
||||||
gdouble velocity_y,
|
double velocity_y,
|
||||||
GtkWidget *widget)
|
GtkWidget *widget)
|
||||||
{
|
{
|
||||||
swipe_x = velocity_x / 10;
|
swipe_x = velocity_x / 10;
|
||||||
@@ -37,8 +37,8 @@ swipe_gesture_swept (GtkGestureSwipe *gesture,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
long_press_gesture_pressed (GtkGestureLongPress *gesture,
|
long_press_gesture_pressed (GtkGestureLongPress *gesture,
|
||||||
gdouble x,
|
double x,
|
||||||
gdouble y,
|
double y,
|
||||||
GtkWidget *widget)
|
GtkWidget *widget)
|
||||||
{
|
{
|
||||||
long_pressed = TRUE;
|
long_pressed = TRUE;
|
||||||
@@ -56,8 +56,8 @@ long_press_gesture_end (GtkGesture *gesture,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
rotation_angle_changed (GtkGestureRotate *gesture,
|
rotation_angle_changed (GtkGestureRotate *gesture,
|
||||||
gdouble angle,
|
double angle,
|
||||||
gdouble delta,
|
double delta,
|
||||||
GtkWidget *widget)
|
GtkWidget *widget)
|
||||||
{
|
{
|
||||||
gtk_widget_queue_draw (widget);
|
gtk_widget_queue_draw (widget);
|
||||||
@@ -65,7 +65,7 @@ rotation_angle_changed (GtkGestureRotate *gesture,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
zoom_scale_changed (GtkGestureZoom *gesture,
|
zoom_scale_changed (GtkGestureZoom *gesture,
|
||||||
gdouble scale,
|
double scale,
|
||||||
GtkWidget *widget)
|
GtkWidget *widget)
|
||||||
{
|
{
|
||||||
gtk_widget_queue_draw (widget);
|
gtk_widget_queue_draw (widget);
|
||||||
@@ -93,8 +93,8 @@ drawing_area_draw (GtkDrawingArea *area,
|
|||||||
{
|
{
|
||||||
cairo_pattern_t *pat;
|
cairo_pattern_t *pat;
|
||||||
cairo_matrix_t matrix;
|
cairo_matrix_t matrix;
|
||||||
gdouble angle, scale;
|
double angle, scale;
|
||||||
gdouble x_center, y_center;
|
double x_center, y_center;
|
||||||
|
|
||||||
gtk_gesture_get_bounding_box_center (GTK_GESTURE (zoom), &x_center, &y_center);
|
gtk_gesture_get_bounding_box_center (GTK_GESTURE (zoom), &x_center, &y_center);
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ gtk_fishbowl_measure (GtkWidget *widget,
|
|||||||
GHashTableIter iter;
|
GHashTableIter iter;
|
||||||
gpointer key, value;
|
gpointer key, value;
|
||||||
GtkFishbowlChild *child;
|
GtkFishbowlChild *child;
|
||||||
gint child_min, child_nat;
|
int child_min, child_nat;
|
||||||
|
|
||||||
*minimum = 0;
|
*minimum = 0;
|
||||||
*natural = 0;
|
*natural = 0;
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ do_headerbar (GtkWidget *do_widget)
|
|||||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||||
|
|
||||||
header = gtk_header_bar_new ();
|
header = gtk_header_bar_new ();
|
||||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), TRUE);
|
|
||||||
|
|
||||||
button = gtk_button_new ();
|
button = gtk_button_new ();
|
||||||
icon = g_themed_icon_new ("mail-send-receive-symbolic");
|
icon = g_themed_icon_new ("mail-send-receive-symbolic");
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ static void
|
|||||||
insert_link (GtkTextBuffer *buffer,
|
insert_link (GtkTextBuffer *buffer,
|
||||||
GtkTextIter *iter,
|
GtkTextIter *iter,
|
||||||
const char *text,
|
const char *text,
|
||||||
gint page)
|
int page)
|
||||||
{
|
{
|
||||||
GtkTextTag *tag;
|
GtkTextTag *tag;
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ insert_link (GtkTextBuffer *buffer,
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
show_page (GtkTextBuffer *buffer,
|
show_page (GtkTextBuffer *buffer,
|
||||||
gint page)
|
int page)
|
||||||
{
|
{
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ follow_if_link (GtkWidget *text_view,
|
|||||||
for (tagp = tags; tagp != NULL; tagp = tagp->next)
|
for (tagp = tags; tagp != NULL; tagp = tagp->next)
|
||||||
{
|
{
|
||||||
GtkTextTag *tag = tagp->data;
|
GtkTextTag *tag = tagp->data;
|
||||||
gint page = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tag), "page"));
|
int page = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tag), "page"));
|
||||||
|
|
||||||
if (page != 0)
|
if (page != 0)
|
||||||
{
|
{
|
||||||
@@ -134,14 +134,14 @@ key_pressed (GtkEventController *controller,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void set_cursor_if_appropriate (GtkTextView *text_view,
|
static void set_cursor_if_appropriate (GtkTextView *text_view,
|
||||||
gint x,
|
int x,
|
||||||
gint y);
|
int y);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
released_cb (GtkGestureClick *gesture,
|
released_cb (GtkGestureClick *gesture,
|
||||||
guint n_press,
|
guint n_press,
|
||||||
gdouble x,
|
double x,
|
||||||
gdouble y,
|
double y,
|
||||||
GtkWidget *text_view)
|
GtkWidget *text_view)
|
||||||
{
|
{
|
||||||
GtkTextIter start, end, iter;
|
GtkTextIter start, end, iter;
|
||||||
@@ -168,8 +168,8 @@ released_cb (GtkGestureClick *gesture,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
motion_cb (GtkEventControllerMotion *controller,
|
motion_cb (GtkEventControllerMotion *controller,
|
||||||
gdouble x,
|
double x,
|
||||||
gdouble y,
|
double y,
|
||||||
GtkTextView *text_view)
|
GtkTextView *text_view)
|
||||||
{
|
{
|
||||||
set_cursor_if_appropriate (text_view, x, y);
|
set_cursor_if_appropriate (text_view, x, y);
|
||||||
@@ -183,8 +183,8 @@ static gboolean hovering_over_link = FALSE;
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
set_cursor_if_appropriate (GtkTextView *text_view,
|
set_cursor_if_appropriate (GtkTextView *text_view,
|
||||||
gint x,
|
int x,
|
||||||
gint y)
|
int y)
|
||||||
{
|
{
|
||||||
GSList *tags = NULL, *tagp = NULL;
|
GSList *tags = NULL, *tagp = NULL;
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
@@ -196,7 +196,7 @@ set_cursor_if_appropriate (GtkTextView *text_view,
|
|||||||
for (tagp = tags; tagp != NULL; tagp = tagp->next)
|
for (tagp = tags; tagp != NULL; tagp = tagp->next)
|
||||||
{
|
{
|
||||||
GtkTextTag *tag = tagp->data;
|
GtkTextTag *tag = tagp->data;
|
||||||
gint page = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tag), "page"));
|
int page = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tag), "page"));
|
||||||
|
|
||||||
if (page != 0)
|
if (page != 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
<property name="default-height">500</property>
|
<property name="default-height">500</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar">
|
<object class="GtkHeaderBar">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ enum
|
|||||||
|
|
||||||
|
|
||||||
static GdkPixbuf *file_pixbuf, *folder_pixbuf;
|
static GdkPixbuf *file_pixbuf, *folder_pixbuf;
|
||||||
gchar *parent;
|
char *parent;
|
||||||
GtkWidget *up_button;
|
GtkWidget *up_button;
|
||||||
|
|
||||||
/* Loads the images for the demo and returns whether the operation succeeded */
|
/* Loads the images for the demo and returns whether the operation succeeded */
|
||||||
@@ -47,7 +47,7 @@ static void
|
|||||||
fill_store (GtkListStore *store)
|
fill_store (GtkListStore *store)
|
||||||
{
|
{
|
||||||
GDir *dir;
|
GDir *dir;
|
||||||
const gchar *name;
|
const char *name;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
/* First clear the store */
|
/* First clear the store */
|
||||||
@@ -62,7 +62,7 @@ fill_store (GtkListStore *store)
|
|||||||
name = g_dir_read_name (dir);
|
name = g_dir_read_name (dir);
|
||||||
while (name != NULL)
|
while (name != NULL)
|
||||||
{
|
{
|
||||||
gchar *path, *display_name;
|
char *path, *display_name;
|
||||||
gboolean is_dir;
|
gboolean is_dir;
|
||||||
|
|
||||||
/* We ignore hidden files that start with a '.' */
|
/* We ignore hidden files that start with a '.' */
|
||||||
@@ -90,14 +90,14 @@ fill_store (GtkListStore *store)
|
|||||||
g_dir_close (dir);
|
g_dir_close (dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint
|
static int
|
||||||
sort_func (GtkTreeModel *model,
|
sort_func (GtkTreeModel *model,
|
||||||
GtkTreeIter *a,
|
GtkTreeIter *a,
|
||||||
GtkTreeIter *b,
|
GtkTreeIter *b,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
gboolean is_dir_a, is_dir_b;
|
gboolean is_dir_a, is_dir_b;
|
||||||
gchar *name_a, *name_b;
|
char *name_a, *name_b;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* We need this function because we want to sort
|
/* We need this function because we want to sort
|
||||||
@@ -158,7 +158,7 @@ item_activated (GtkIconView *icon_view,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkListStore *store;
|
GtkListStore *store;
|
||||||
gchar *path;
|
char *path;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
gboolean is_dir;
|
gboolean is_dir;
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@ up_clicked (GtkButton *item,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkListStore *store;
|
GtkListStore *store;
|
||||||
gchar *dir_name;
|
char *dir_name;
|
||||||
|
|
||||||
store = GTK_LIST_STORE (user_data);
|
store = GTK_LIST_STORE (user_data);
|
||||||
|
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ static void
|
|||||||
fill_store (GtkListStore *store)
|
fill_store (GtkListStore *store)
|
||||||
{
|
{
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
const gchar *text[] = { "Red", "Green", "Blue", "Yellow" };
|
const char *text[] = { "Red", "Green", "Blue", "Yellow" };
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
/* First clear the store */
|
/* First clear the store */
|
||||||
gtk_list_store_clear (store);
|
gtk_list_store_clear (store);
|
||||||
@@ -49,7 +49,7 @@ set_cell_color (GtkCellLayout *cell_layout,
|
|||||||
GtkTreeIter *iter,
|
GtkTreeIter *iter,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gchar *text;
|
char *text;
|
||||||
GdkRGBA color;
|
GdkRGBA color;
|
||||||
guint32 pixel = 0;
|
guint32 pixel = 0;
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
@@ -60,10 +60,10 @@ set_cell_color (GtkCellLayout *cell_layout,
|
|||||||
|
|
||||||
if (gdk_rgba_parse (&color, text))
|
if (gdk_rgba_parse (&color, text))
|
||||||
pixel =
|
pixel =
|
||||||
((gint)(color.red * 255)) << 24 |
|
((int)(color.red * 255)) << 24 |
|
||||||
((gint)(color.green * 255)) << 16 |
|
((int)(color.green * 255)) << 16 |
|
||||||
((gint)(color.blue * 255)) << 8 |
|
((int)(color.blue * 255)) << 8 |
|
||||||
((gint)(color.alpha * 255));
|
((int)(color.alpha * 255));
|
||||||
|
|
||||||
g_free (text);
|
g_free (text);
|
||||||
|
|
||||||
@@ -77,8 +77,8 @@ set_cell_color (GtkCellLayout *cell_layout,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
edited (GtkCellRendererText *cell,
|
edited (GtkCellRendererText *cell,
|
||||||
gchar *path_string,
|
char *path_string,
|
||||||
gchar *text,
|
char *text,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GtkTreeModel *model;
|
GtkTreeModel *model;
|
||||||
|
|||||||
@@ -43,10 +43,10 @@ progressive_prepared_callback (GdkPixbufLoader *loader,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
progressive_updated_callback (GdkPixbufLoader *loader,
|
progressive_updated_callback (GdkPixbufLoader *loader,
|
||||||
gint x,
|
int x,
|
||||||
gint y,
|
int y,
|
||||||
gint width,
|
int width,
|
||||||
gint height,
|
int height,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GtkWidget *picture;
|
GtkWidget *picture;
|
||||||
@@ -58,7 +58,7 @@ progressive_updated_callback (GdkPixbufLoader *loader,
|
|||||||
gtk_picture_set_pixbuf (GTK_PICTURE (picture), pixbuf);
|
gtk_picture_set_pixbuf (GTK_PICTURE (picture), pixbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint
|
static int
|
||||||
progressive_timeout (gpointer data)
|
progressive_timeout (gpointer data)
|
||||||
{
|
{
|
||||||
GtkWidget *picture;
|
GtkWidget *picture;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
on_bar_response (GtkInfoBar *info_bar,
|
on_bar_response (GtkInfoBar *info_bar,
|
||||||
gint response_id,
|
int response_id,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
response_cb (GtkWidget *dialog,
|
response_cb (GtkWidget *dialog,
|
||||||
gint response_id,
|
int response_id,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gtk_window_destroy (GTK_WINDOW (dialog));
|
gtk_window_destroy (GTK_WINDOW (dialog));
|
||||||
@@ -17,7 +17,7 @@ response_cb (GtkWidget *dialog,
|
|||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
activate_link (GtkWidget *label,
|
activate_link (GtkWidget *label,
|
||||||
const gchar *uri,
|
const char *uri,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
if (g_strcmp0 (uri, "keynav") == 0)
|
if (g_strcmp0 (uri, "keynav") == 0)
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ spinner_timeout (gpointer data)
|
|||||||
static GtkTreeModel *
|
static GtkTreeModel *
|
||||||
create_model (void)
|
create_model (void)
|
||||||
{
|
{
|
||||||
gint i = 0;
|
int i = 0;
|
||||||
GtkListStore *store;
|
GtkListStore *store;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
|
|||||||
@@ -462,7 +462,6 @@ do_listview_clocks (GtkWidget *do_widget)
|
|||||||
{
|
{
|
||||||
GtkWidget *gridview, *sw;
|
GtkWidget *gridview, *sw;
|
||||||
GtkListItemFactory *factory;
|
GtkListItemFactory *factory;
|
||||||
GListModel *model;
|
|
||||||
GtkNoSelection *selection;
|
GtkNoSelection *selection;
|
||||||
|
|
||||||
/* This is the normal window setup code every demo does */
|
/* This is the normal window setup code every demo does */
|
||||||
@@ -489,12 +488,10 @@ do_listview_clocks (GtkWidget *do_widget)
|
|||||||
gtk_scrollable_set_hscroll_policy (GTK_SCROLLABLE (gridview), GTK_SCROLL_NATURAL);
|
gtk_scrollable_set_hscroll_policy (GTK_SCROLLABLE (gridview), GTK_SCROLL_NATURAL);
|
||||||
gtk_scrollable_set_vscroll_policy (GTK_SCROLLABLE (gridview), GTK_SCROLL_NATURAL);
|
gtk_scrollable_set_vscroll_policy (GTK_SCROLLABLE (gridview), GTK_SCROLL_NATURAL);
|
||||||
|
|
||||||
model = create_clocks_model ();
|
selection = gtk_no_selection_new (create_clocks_model ());
|
||||||
selection = gtk_no_selection_new (model);
|
|
||||||
gtk_grid_view_set_model (GTK_GRID_VIEW (gridview), G_LIST_MODEL (selection));
|
gtk_grid_view_set_model (GTK_GRID_VIEW (gridview), G_LIST_MODEL (selection));
|
||||||
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), gridview);
|
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), gridview);
|
||||||
g_object_unref (selection);
|
g_object_unref (selection);
|
||||||
g_object_unref (model);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gtk_widget_get_visible (window))
|
if (!gtk_widget_get_visible (window))
|
||||||
|
|||||||
@@ -89,14 +89,14 @@ static GParamSpec *color_properties[N_COLOR_PROPS] = { NULL, };
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
rgb_to_hsv (GdkRGBA *rgba,
|
rgb_to_hsv (GdkRGBA *rgba,
|
||||||
gdouble *h_out,
|
double *h_out,
|
||||||
gdouble *s_out,
|
double *s_out,
|
||||||
gdouble *v_out)
|
double *v_out)
|
||||||
{
|
{
|
||||||
gdouble red, green, blue;
|
double red, green, blue;
|
||||||
gdouble h, s, v;
|
double h, s, v;
|
||||||
gdouble min, max;
|
double min, max;
|
||||||
gdouble delta;
|
double delta;
|
||||||
|
|
||||||
red = rgba->red;
|
red = rgba->red;
|
||||||
green = rgba->green;
|
green = rgba->green;
|
||||||
@@ -627,6 +627,23 @@ setup_listitem_cb (GtkListItemFactory *factory,
|
|||||||
gtk_expression_unref (color_expression);
|
gtk_expression_unref (color_expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
setup_selection_listitem_cb (GtkListItemFactory *factory,
|
||||||
|
GtkListItem *list_item)
|
||||||
|
{
|
||||||
|
GtkWidget *picture;
|
||||||
|
GtkExpression *color_expression, *expression;
|
||||||
|
|
||||||
|
expression = gtk_constant_expression_new (GTK_TYPE_LIST_ITEM, list_item);
|
||||||
|
color_expression = gtk_property_expression_new (GTK_TYPE_LIST_ITEM, expression, "item");
|
||||||
|
|
||||||
|
picture = gtk_picture_new ();
|
||||||
|
gtk_widget_set_size_request (picture, 8, 8);
|
||||||
|
gtk_expression_bind (color_expression, picture, "paintable", NULL);
|
||||||
|
|
||||||
|
gtk_list_item_set_child (list_item, picture);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_title (gpointer item,
|
set_title (gpointer item,
|
||||||
const char *title)
|
const char *title)
|
||||||
@@ -645,7 +662,6 @@ create_color_grid (void)
|
|||||||
{
|
{
|
||||||
GtkWidget *gridview;
|
GtkWidget *gridview;
|
||||||
GtkListItemFactory *factory;
|
GtkListItemFactory *factory;
|
||||||
GListModel *model, *selection;
|
|
||||||
|
|
||||||
gridview = gtk_grid_view_new ();
|
gridview = gtk_grid_view_new ();
|
||||||
gtk_scrollable_set_hscroll_policy (GTK_SCROLLABLE (gridview), GTK_SCROLL_NATURAL);
|
gtk_scrollable_set_hscroll_policy (GTK_SCROLLABLE (gridview), GTK_SCROLL_NATURAL);
|
||||||
@@ -659,13 +675,6 @@ create_color_grid (void)
|
|||||||
gtk_grid_view_set_max_columns (GTK_GRID_VIEW (gridview), 24);
|
gtk_grid_view_set_max_columns (GTK_GRID_VIEW (gridview), 24);
|
||||||
gtk_grid_view_set_enable_rubberband (GTK_GRID_VIEW (gridview), TRUE);
|
gtk_grid_view_set_enable_rubberband (GTK_GRID_VIEW (gridview), TRUE);
|
||||||
|
|
||||||
model = G_LIST_MODEL (gtk_sort_list_model_new (gtk_color_list_new (0), NULL));
|
|
||||||
|
|
||||||
selection = G_LIST_MODEL (gtk_multi_selection_new (model));
|
|
||||||
gtk_grid_view_set_model (GTK_GRID_VIEW (gridview), selection);
|
|
||||||
g_object_unref (selection);
|
|
||||||
g_object_unref (model);
|
|
||||||
|
|
||||||
return gridview;
|
return gridview;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -777,6 +786,63 @@ bind_number_item (GtkSignalListItemFactory *factory,
|
|||||||
g_free (string);
|
g_free (string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_selection_count (GListModel *model,
|
||||||
|
guint position,
|
||||||
|
guint removed,
|
||||||
|
guint added,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
char *text;
|
||||||
|
text = g_strdup_printf ("%u", g_list_model_get_n_items (model));
|
||||||
|
gtk_label_set_label (GTK_LABEL (data), text);
|
||||||
|
g_free (text);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_selection_average (GListModel *model,
|
||||||
|
guint position,
|
||||||
|
guint removed,
|
||||||
|
guint added,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
guint n = g_list_model_get_n_items (model);
|
||||||
|
GdkRGBA c = { 0, 0, 0, 1 };
|
||||||
|
guint i;
|
||||||
|
GtkColor *color;
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
color = g_list_model_get_item (model, i);
|
||||||
|
|
||||||
|
c.red += color->color.red;
|
||||||
|
c.green += color->color.green;
|
||||||
|
c.blue += color->color.blue;
|
||||||
|
|
||||||
|
g_object_unref (color);
|
||||||
|
}
|
||||||
|
|
||||||
|
color = gtk_color_new ("", c.red / n, c.green / n, c.blue / n);
|
||||||
|
gtk_picture_set_paintable (GTK_PICTURE (data), GDK_PAINTABLE (color));
|
||||||
|
g_object_unref (color);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_progress_cb (GtkSortListModel *model,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
GtkProgressBar *progress)
|
||||||
|
{
|
||||||
|
guint total;
|
||||||
|
guint pending;
|
||||||
|
|
||||||
|
total = g_list_model_get_n_items (G_LIST_MODEL (model));
|
||||||
|
total = MAX (total, 1); /* avoid div by 0 below */
|
||||||
|
pending = gtk_sort_list_model_get_pending (model);
|
||||||
|
|
||||||
|
gtk_widget_set_visible (GTK_WIDGET (progress), pending != 0);
|
||||||
|
gtk_progress_bar_set_fraction (progress, (total - pending) / (double) total);
|
||||||
|
}
|
||||||
|
|
||||||
static GtkWidget *window = NULL;
|
static GtkWidget *window = NULL;
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
@@ -784,10 +850,11 @@ do_listview_colors (GtkWidget *do_widget)
|
|||||||
{
|
{
|
||||||
if (window == NULL)
|
if (window == NULL)
|
||||||
{
|
{
|
||||||
GtkWidget *header, *gridview, *sw, *box, *dropdown;
|
GtkMultiSelection *selection;
|
||||||
|
GtkSortListModel *sort_model;
|
||||||
|
GtkWidget *header, *overlay, *gridview, *sw, *box, *dropdown;
|
||||||
GtkListItemFactory *factory;
|
GtkListItemFactory *factory;
|
||||||
GListStore *factories;
|
GListStore *factories;
|
||||||
GListModel *model;
|
|
||||||
GtkSorter *sorter;
|
GtkSorter *sorter;
|
||||||
GtkSorter *multi_sorter;
|
GtkSorter *multi_sorter;
|
||||||
GListStore *sorters;
|
GListStore *sorters;
|
||||||
@@ -797,11 +864,31 @@ do_listview_colors (GtkWidget *do_widget)
|
|||||||
PangoAttrList *attrs;
|
PangoAttrList *attrs;
|
||||||
char *string;
|
char *string;
|
||||||
guint len;
|
guint len;
|
||||||
|
GtkWidget *selection_view;
|
||||||
|
GListModel *selection_filter;
|
||||||
|
GListModel *no_selection;
|
||||||
|
GtkWidget *grid;
|
||||||
|
GtkWidget *selection_size_label;
|
||||||
|
GtkWidget *selection_average_picture;
|
||||||
|
GtkWidget *selection_info_toggle;
|
||||||
|
GtkWidget *selection_info_revealer;
|
||||||
|
GtkWidget *progress;
|
||||||
|
GtkCssProvider *provider;
|
||||||
|
|
||||||
|
provider = gtk_css_provider_new ();
|
||||||
|
gtk_css_provider_load_from_resource (provider, "/listview_colors/listview_colors.css");
|
||||||
|
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
|
||||||
|
GTK_STYLE_PROVIDER (provider),
|
||||||
|
800);
|
||||||
|
g_object_unref (provider);
|
||||||
|
|
||||||
|
sort_model = gtk_sort_list_model_new (gtk_color_list_new (0), NULL);
|
||||||
|
gtk_sort_list_model_set_incremental (sort_model, TRUE);
|
||||||
|
selection = gtk_multi_selection_new (G_LIST_MODEL (sort_model));
|
||||||
|
|
||||||
window = gtk_window_new ();
|
window = gtk_window_new ();
|
||||||
gtk_window_set_title (GTK_WINDOW (window), "Colors");
|
gtk_window_set_title (GTK_WINDOW (window), "Colors");
|
||||||
header = gtk_header_bar_new ();
|
header = gtk_header_bar_new ();
|
||||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), TRUE);
|
|
||||||
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
||||||
|
|
||||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||||
@@ -809,18 +896,95 @@ do_listview_colors (GtkWidget *do_widget)
|
|||||||
gtk_widget_get_display (do_widget));
|
gtk_widget_get_display (do_widget));
|
||||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer*)&window);
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer*)&window);
|
||||||
|
|
||||||
|
overlay = gtk_overlay_new ();
|
||||||
|
gtk_window_set_child (GTK_WINDOW (window), overlay);
|
||||||
|
|
||||||
|
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||||
|
gtk_overlay_set_child (GTK_OVERLAY (overlay), box);
|
||||||
|
|
||||||
|
progress = gtk_progress_bar_new ();
|
||||||
|
gtk_widget_set_hexpand (progress, TRUE);
|
||||||
|
gtk_widget_set_valign (progress, GTK_ALIGN_START);
|
||||||
|
g_signal_connect (sort_model, "notify::pending", G_CALLBACK (update_progress_cb), progress);
|
||||||
|
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), progress);
|
||||||
|
|
||||||
|
selection_info_revealer = gtk_revealer_new ();
|
||||||
|
gtk_box_append (GTK_BOX (box), selection_info_revealer);
|
||||||
|
|
||||||
|
grid = gtk_grid_new ();
|
||||||
|
gtk_revealer_set_child (GTK_REVEALER (selection_info_revealer), grid);
|
||||||
|
gtk_widget_set_margin_start (grid, 10);
|
||||||
|
gtk_widget_set_margin_end (grid, 10);
|
||||||
|
gtk_widget_set_margin_top (grid, 10);
|
||||||
|
gtk_widget_set_margin_bottom (grid, 10);
|
||||||
|
gtk_grid_set_row_spacing (GTK_GRID (grid), 10);
|
||||||
|
gtk_grid_set_column_spacing (GTK_GRID (grid), 10);
|
||||||
|
|
||||||
|
label = gtk_label_new ("Selection");
|
||||||
|
gtk_widget_set_hexpand (label, TRUE);
|
||||||
|
gtk_widget_add_css_class (label, "title-3");
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 5, 1);
|
||||||
|
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), gtk_label_new ("Size:"), 0, 2, 1, 1);
|
||||||
|
|
||||||
|
selection_size_label = gtk_label_new ("0");
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), selection_size_label, 1, 2, 1, 1);
|
||||||
|
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), gtk_label_new ("Average:"), 2, 2, 1, 1);
|
||||||
|
|
||||||
|
selection_average_picture = gtk_picture_new ();
|
||||||
|
gtk_widget_set_size_request (selection_average_picture, 32, 32);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), selection_average_picture, 3, 2, 1, 1);
|
||||||
|
|
||||||
|
label = gtk_label_new ("");
|
||||||
|
gtk_widget_set_hexpand (label, TRUE);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), label, 4, 2, 1, 1);
|
||||||
|
|
||||||
sw = gtk_scrolled_window_new ();
|
sw = gtk_scrolled_window_new ();
|
||||||
gtk_window_set_child (GTK_WINDOW (window), sw);
|
gtk_widget_set_hexpand (sw, TRUE);
|
||||||
|
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), sw, 0, 1, 5, 1);
|
||||||
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||||
|
GTK_POLICY_NEVER,
|
||||||
|
GTK_POLICY_AUTOMATIC);
|
||||||
|
|
||||||
|
factory = gtk_signal_list_item_factory_new ();
|
||||||
|
g_signal_connect (factory, "setup", G_CALLBACK (setup_selection_listitem_cb), NULL);
|
||||||
|
selection_view = gtk_grid_view_new_with_factory (factory);
|
||||||
|
gtk_widget_add_css_class (selection_view, "compact");
|
||||||
|
gtk_grid_view_set_max_columns (GTK_GRID_VIEW (selection_view), 200);
|
||||||
|
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), selection_view);
|
||||||
|
|
||||||
|
sw = gtk_scrolled_window_new ();
|
||||||
|
gtk_box_append (GTK_BOX (box), sw);
|
||||||
|
|
||||||
gridview = create_color_grid ();
|
gridview = create_color_grid ();
|
||||||
|
gtk_grid_view_set_model (GTK_GRID_VIEW (gridview), G_LIST_MODEL (selection));
|
||||||
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), gridview);
|
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), gridview);
|
||||||
model = gtk_grid_view_get_model (GTK_GRID_VIEW (gridview));
|
gtk_widget_set_hexpand (sw, TRUE);
|
||||||
g_object_get (model, "model", &model, NULL);
|
gtk_widget_set_vexpand (sw, TRUE);
|
||||||
|
|
||||||
|
selection_filter = G_LIST_MODEL (gtk_selection_filter_model_new (GTK_SELECTION_MODEL (selection)));
|
||||||
|
g_signal_connect (selection_filter, "items-changed", G_CALLBACK (update_selection_count), selection_size_label);
|
||||||
|
g_signal_connect (selection_filter, "items-changed", G_CALLBACK (update_selection_average), selection_average_picture);
|
||||||
|
|
||||||
|
no_selection = G_LIST_MODEL (gtk_no_selection_new (selection_filter));
|
||||||
|
gtk_grid_view_set_model (GTK_GRID_VIEW (selection_view), no_selection);
|
||||||
|
g_object_unref (no_selection);
|
||||||
|
|
||||||
|
selection_info_toggle = gtk_toggle_button_new ();
|
||||||
|
gtk_button_set_icon_name (GTK_BUTTON (selection_info_toggle), "emblem-important-symbolic");
|
||||||
|
gtk_widget_set_tooltip_text (selection_info_toggle, "Show selection info");
|
||||||
|
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), selection_info_toggle);
|
||||||
|
|
||||||
|
g_object_bind_property (selection_info_toggle, "active",
|
||||||
|
selection_info_revealer, "reveal-child",
|
||||||
|
G_BINDING_DEFAULT);
|
||||||
|
|
||||||
button = gtk_button_new_with_mnemonic ("_Refill");
|
button = gtk_button_new_with_mnemonic ("_Refill");
|
||||||
g_signal_connect (button, "clicked",
|
g_signal_connect (button, "clicked",
|
||||||
G_CALLBACK (refill),
|
G_CALLBACK (refill),
|
||||||
gtk_sort_list_model_get_model (GTK_SORT_LIST_MODEL (model)));
|
gtk_sort_list_model_get_model (sort_model));
|
||||||
|
|
||||||
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), button);
|
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), button);
|
||||||
|
|
||||||
@@ -835,15 +999,14 @@ do_listview_colors (GtkWidget *do_widget)
|
|||||||
gtk_label_set_width_chars (GTK_LABEL (label), len + 2);
|
gtk_label_set_width_chars (GTK_LABEL (label), len + 2);
|
||||||
gtk_label_set_xalign (GTK_LABEL (label), 1);
|
gtk_label_set_xalign (GTK_LABEL (label), 1);
|
||||||
|
|
||||||
g_signal_connect (gtk_grid_view_get_model (GTK_GRID_VIEW (gridview)),
|
g_signal_connect (selection, "items-changed", G_CALLBACK (items_changed_cb), label);
|
||||||
"items-changed", G_CALLBACK (items_changed_cb), label);
|
|
||||||
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), label);
|
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), label);
|
||||||
|
|
||||||
dropdown = gtk_drop_down_new ();
|
dropdown = gtk_drop_down_new ();
|
||||||
gtk_drop_down_set_from_strings (GTK_DROP_DOWN (dropdown), (const char *[]) { "8", "64", "512", "4096", "32768", "262144", "2097152", "16777216", NULL });
|
gtk_drop_down_set_from_strings (GTK_DROP_DOWN (dropdown), (const char *[]) { "8", "64", "512", "4096", "32768", "262144", "2097152", "16777216", NULL });
|
||||||
g_signal_connect (dropdown, "notify::selected",
|
g_signal_connect (dropdown, "notify::selected",
|
||||||
G_CALLBACK (limit_changed_cb),
|
G_CALLBACK (limit_changed_cb),
|
||||||
gtk_sort_list_model_get_model (GTK_SORT_LIST_MODEL (model)));
|
gtk_sort_list_model_get_model (sort_model));
|
||||||
g_signal_connect (dropdown, "notify::selected",
|
g_signal_connect (dropdown, "notify::selected",
|
||||||
G_CALLBACK (limit_changed_cb2),
|
G_CALLBACK (limit_changed_cb2),
|
||||||
label);
|
label);
|
||||||
@@ -935,7 +1098,7 @@ do_listview_colors (GtkWidget *do_widget)
|
|||||||
gtk_drop_down_set_model (GTK_DROP_DOWN (dropdown), G_LIST_MODEL (sorters));
|
gtk_drop_down_set_model (GTK_DROP_DOWN (dropdown), G_LIST_MODEL (sorters));
|
||||||
g_object_unref (sorters);
|
g_object_unref (sorters);
|
||||||
|
|
||||||
g_object_bind_property (dropdown, "selected-item", model, "sorter", G_BINDING_SYNC_CREATE);
|
g_object_bind_property (dropdown, "selected-item", sort_model, "sorter", G_BINDING_SYNC_CREATE);
|
||||||
|
|
||||||
factories = g_list_store_new (GTK_TYPE_LIST_ITEM_FACTORY);
|
factories = g_list_store_new (GTK_TYPE_LIST_ITEM_FACTORY);
|
||||||
|
|
||||||
@@ -967,7 +1130,6 @@ do_listview_colors (GtkWidget *do_widget)
|
|||||||
g_object_unref (factories);
|
g_object_unref (factories);
|
||||||
|
|
||||||
g_object_bind_property (dropdown, "selected-item", gridview, "factory", G_BINDING_SYNC_CREATE);
|
g_object_bind_property (dropdown, "selected-item", gridview, "factory", G_BINDING_SYNC_CREATE);
|
||||||
g_object_unref (model);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gtk_widget_get_visible (window))
|
if (!gtk_widget_get_visible (window))
|
||||||
|
|||||||
3
demos/gtk-demo/listview_colors.css
Normal file
3
demos/gtk-demo/listview_colors.css
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.view.compact > child {
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
list.viewswitcher {
|
listview.viewswitcher {
|
||||||
border: 1px solid gray;
|
border: 1px solid gray;
|
||||||
}
|
}
|
||||||
|
|
||||||
list.viewswitcher > row {
|
listview.viewswitcher > row {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
list.viewswitcher row:selected {
|
listview.viewswitcher row:selected {
|
||||||
background: gray;
|
background: gray;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,7 +174,6 @@
|
|||||||
<property name="default-height">400</property>
|
<property name="default-height">400</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="">
|
<object class="GtkHeaderBar" id="">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton">
|
<object class="GtkButton">
|
||||||
<property name="icon-name">go-up-symbolic</property>
|
<property name="icon-name">go-up-symbolic</property>
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
<property name="title" translatable="yes">Minesweeper</property>
|
<property name="title" translatable="yes">Minesweeper</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="">
|
<object class="GtkHeaderBar" id="">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton">
|
<object class="GtkButton">
|
||||||
<property name="label">New Game</property>
|
<property name="label">New Game</property>
|
||||||
|
|||||||
@@ -214,8 +214,6 @@ transform_settings_to_keys (GBinding *binding,
|
|||||||
GtkSortListModel *sort_model;
|
GtkSortListModel *sort_model;
|
||||||
GtkFilterListModel *filter_model;
|
GtkFilterListModel *filter_model;
|
||||||
GtkFilter *filter;
|
GtkFilter *filter;
|
||||||
GtkNoSelection *selection_model;
|
|
||||||
GtkExpression *expression;
|
|
||||||
char **keys;
|
char **keys;
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
@@ -243,24 +241,13 @@ transform_settings_to_keys (GBinding *binding,
|
|||||||
g_object_unref (settings);
|
g_object_unref (settings);
|
||||||
|
|
||||||
sort_model = gtk_sort_list_model_new (G_LIST_MODEL (store),
|
sort_model = gtk_sort_list_model_new (G_LIST_MODEL (store),
|
||||||
gtk_column_view_get_sorter (GTK_COLUMN_VIEW (data)));
|
g_object_ref (gtk_column_view_get_sorter (GTK_COLUMN_VIEW (data))));
|
||||||
g_object_unref (store);
|
|
||||||
|
|
||||||
expression = gtk_property_expression_new (SETTINGS_TYPE_KEY, NULL, "name");
|
|
||||||
filter = gtk_string_filter_new ();
|
|
||||||
gtk_string_filter_set_expression (GTK_STRING_FILTER (filter), expression);
|
|
||||||
filter_model = gtk_filter_list_model_new (G_LIST_MODEL (sort_model), filter);
|
|
||||||
gtk_expression_unref (expression);
|
|
||||||
g_object_unref (sort_model);
|
|
||||||
|
|
||||||
|
filter = gtk_string_filter_new (gtk_property_expression_new (SETTINGS_TYPE_KEY, NULL, "name"));
|
||||||
g_set_object (¤t_filter, filter);
|
g_set_object (¤t_filter, filter);
|
||||||
|
filter_model = gtk_filter_list_model_new (G_LIST_MODEL (sort_model), filter);
|
||||||
|
|
||||||
g_object_unref (filter);
|
g_value_take_object (to_value, gtk_no_selection_new (G_LIST_MODEL (filter_model)));
|
||||||
|
|
||||||
selection_model = gtk_no_selection_new (G_LIST_MODEL (filter_model));
|
|
||||||
g_object_unref (filter_model);
|
|
||||||
|
|
||||||
g_value_take_object (to_value, selection_model);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -407,8 +394,8 @@ do_listview_settings (GtkWidget *do_widget)
|
|||||||
g_object_unref (actions);
|
g_object_unref (actions);
|
||||||
|
|
||||||
model = create_settings_model (NULL, NULL);
|
model = create_settings_model (NULL, NULL);
|
||||||
treemodel = gtk_tree_list_model_new (FALSE,
|
treemodel = gtk_tree_list_model_new (model,
|
||||||
model,
|
FALSE,
|
||||||
TRUE,
|
TRUE,
|
||||||
create_settings_model,
|
create_settings_model,
|
||||||
NULL,
|
NULL,
|
||||||
@@ -422,8 +409,6 @@ do_listview_settings (GtkWidget *do_widget)
|
|||||||
columnview, NULL);
|
columnview, NULL);
|
||||||
gtk_list_view_set_model (GTK_LIST_VIEW (listview), G_LIST_MODEL (selection));
|
gtk_list_view_set_model (GTK_LIST_VIEW (listview), G_LIST_MODEL (selection));
|
||||||
g_object_unref (selection);
|
g_object_unref (selection);
|
||||||
g_object_unref (treemodel);
|
|
||||||
g_object_unref (model);
|
|
||||||
|
|
||||||
name_column = GTK_COLUMN_VIEW_COLUMN (gtk_builder_get_object (builder, "name_column"));
|
name_column = GTK_COLUMN_VIEW_COLUMN (gtk_builder_get_object (builder, "name_column"));
|
||||||
sorter = gtk_string_sorter_new (gtk_property_expression_new (SETTINGS_TYPE_KEY, NULL, "name"));
|
sorter = gtk_string_sorter_new (gtk_property_expression_new (SETTINGS_TYPE_KEY, NULL, "name"));
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
<property name="default-height">480</property>
|
<property name="default-height">480</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar">
|
<object class="GtkHeaderBar">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child type="end">
|
<child type="end">
|
||||||
<object class="GtkToggleButton" id="search_button">
|
<object class="GtkToggleButton" id="search_button">
|
||||||
<property name="icon-name">system-search-symbolic</property>
|
<property name="icon-name">system-search-symbolic</property>
|
||||||
|
|||||||
@@ -194,8 +194,8 @@ create_weather_model (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
setup_widget (GtkListItem *list_item,
|
setup_widget (GtkSignalListItemFactory *factory,
|
||||||
gpointer unused)
|
GtkListItem *list_item)
|
||||||
{
|
{
|
||||||
GtkWidget *box, *child;
|
GtkWidget *box, *child;
|
||||||
|
|
||||||
@@ -218,8 +218,8 @@ setup_widget (GtkListItem *list_item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bind_widget (GtkListItem *list_item,
|
bind_widget (GtkSignalListItemFactory *factory,
|
||||||
gpointer unused)
|
GtkListItem *list_item)
|
||||||
{
|
{
|
||||||
GtkWidget *box, *child;
|
GtkWidget *box, *child;
|
||||||
GtkWeatherInfo *info;
|
GtkWeatherInfo *info;
|
||||||
@@ -281,19 +281,18 @@ GtkWidget *
|
|||||||
create_weather_view (void)
|
create_weather_view (void)
|
||||||
{
|
{
|
||||||
GtkWidget *listview;
|
GtkWidget *listview;
|
||||||
GListModel *model, *selection;
|
GListModel *selection;
|
||||||
|
GtkListItemFactory *factory;
|
||||||
|
|
||||||
listview = gtk_list_view_new_with_factory (
|
factory = gtk_signal_list_item_factory_new ();
|
||||||
gtk_functions_list_item_factory_new (setup_widget,
|
g_signal_connect (factory, "setup", G_CALLBACK (setup_widget), NULL);
|
||||||
bind_widget,
|
g_signal_connect (factory, "bind", G_CALLBACK (bind_widget), NULL);
|
||||||
NULL, NULL));
|
listview = gtk_list_view_new_with_factory (factory);
|
||||||
gtk_orientable_set_orientation (GTK_ORIENTABLE (listview), GTK_ORIENTATION_HORIZONTAL);
|
gtk_orientable_set_orientation (GTK_ORIENTABLE (listview), GTK_ORIENTATION_HORIZONTAL);
|
||||||
gtk_list_view_set_show_separators (GTK_LIST_VIEW (listview), TRUE);
|
gtk_list_view_set_show_separators (GTK_LIST_VIEW (listview), TRUE);
|
||||||
model = create_weather_model ();
|
selection = G_LIST_MODEL (gtk_no_selection_new (create_weather_model ()));
|
||||||
selection = G_LIST_MODEL (gtk_no_selection_new (model));
|
|
||||||
gtk_list_view_set_model (GTK_LIST_VIEW (listview), selection);
|
gtk_list_view_set_model (GTK_LIST_VIEW (listview), selection);
|
||||||
g_object_unref (selection);
|
g_object_unref (selection);
|
||||||
g_object_unref (model);
|
|
||||||
|
|
||||||
return listview;
|
return listview;
|
||||||
}
|
}
|
||||||
|
|||||||
237
demos/gtk-demo/listview_words.c
Normal file
237
demos/gtk-demo/listview_words.c
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
/* Lists/Words
|
||||||
|
*
|
||||||
|
* This demo shows filtering a long list - of words.
|
||||||
|
*
|
||||||
|
* You should have the file `/usr/share/dict/words` installed for
|
||||||
|
* this demo to work.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
static GtkWidget *window = NULL;
|
||||||
|
static GtkWidget *progress;
|
||||||
|
|
||||||
|
const char *factory_text =
|
||||||
|
"<?xml version='1.0' encoding='UTF-8'?>\n"
|
||||||
|
"<interface>\n"
|
||||||
|
" <template class='GtkListItem'>\n"
|
||||||
|
" <property name='child'>\n"
|
||||||
|
" <object class='GtkLabel'>\n"
|
||||||
|
" <property name='ellipsize'>end</property>\n"
|
||||||
|
" <property name='xalign'>0</property>\n"
|
||||||
|
" <binding name='label'>\n"
|
||||||
|
" <lookup name='string' type='GtkStringObject'>\n"
|
||||||
|
" <lookup name='item'>GtkListItem</lookup>\n"
|
||||||
|
" </lookup>\n"
|
||||||
|
" </binding>\n"
|
||||||
|
" </object>\n"
|
||||||
|
" </property>\n"
|
||||||
|
" </template>\n"
|
||||||
|
"</interface>\n";
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_title_cb (GtkFilterListModel *model)
|
||||||
|
{
|
||||||
|
guint total;
|
||||||
|
char *title;
|
||||||
|
guint pending;
|
||||||
|
|
||||||
|
total = g_list_model_get_n_items (gtk_filter_list_model_get_model (model));
|
||||||
|
pending = gtk_filter_list_model_get_pending (model);
|
||||||
|
|
||||||
|
title = g_strdup_printf ("%u lines", g_list_model_get_n_items (G_LIST_MODEL (model)));
|
||||||
|
|
||||||
|
gtk_widget_set_visible (progress, pending != 0);
|
||||||
|
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress), (total - pending) / (double) total);
|
||||||
|
gtk_window_set_title (GTK_WINDOW (window), title);
|
||||||
|
g_free (title);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
read_lines_cb (GObject *object,
|
||||||
|
GAsyncResult *result,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GBufferedInputStream *stream = G_BUFFERED_INPUT_STREAM (object);
|
||||||
|
GtkStringList *stringlist = data;
|
||||||
|
GError *error = NULL;
|
||||||
|
gsize size;
|
||||||
|
GPtrArray *lines;
|
||||||
|
gssize n_filled;
|
||||||
|
const char *buffer, *newline;
|
||||||
|
|
||||||
|
n_filled = g_buffered_input_stream_fill_finish (stream, result, &error);
|
||||||
|
if (n_filled < 0)
|
||||||
|
{
|
||||||
|
g_print ("Could not read data: %s\n", error->message);
|
||||||
|
g_clear_error (&error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer = g_buffered_input_stream_peek_buffer (stream, &size);
|
||||||
|
|
||||||
|
if (n_filled == 0)
|
||||||
|
{
|
||||||
|
if (size)
|
||||||
|
gtk_string_list_take (stringlist, g_utf8_make_valid (buffer, size));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lines = NULL;
|
||||||
|
while ((newline = memchr (buffer, '\n', size)))
|
||||||
|
{
|
||||||
|
if (newline > buffer)
|
||||||
|
{
|
||||||
|
if (lines == NULL)
|
||||||
|
lines = g_ptr_array_new_with_free_func (g_free);
|
||||||
|
g_ptr_array_add (lines, g_utf8_make_valid (buffer, newline - buffer));
|
||||||
|
}
|
||||||
|
if (g_input_stream_skip (G_INPUT_STREAM (stream), newline - buffer + 1, NULL, &error) < 0)
|
||||||
|
{
|
||||||
|
g_clear_error (&error);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
buffer = g_buffered_input_stream_peek_buffer (stream, &size);
|
||||||
|
}
|
||||||
|
if (lines == NULL)
|
||||||
|
{
|
||||||
|
g_buffered_input_stream_set_buffer_size (stream, g_buffered_input_stream_get_buffer_size (stream) + 4096);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_ptr_array_add (lines, NULL);
|
||||||
|
gtk_string_list_splice (stringlist, g_list_model_get_n_items (G_LIST_MODEL (stringlist)), 0, (const char **) lines->pdata);
|
||||||
|
g_ptr_array_free (lines, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_buffered_input_stream_fill_async (stream, -1, G_PRIORITY_HIGH_IDLE, NULL, read_lines_cb, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
file_is_open_cb (GObject *file,
|
||||||
|
GAsyncResult *result,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GError *error = NULL;
|
||||||
|
GFileInputStream *file_stream;
|
||||||
|
GBufferedInputStream *stream;
|
||||||
|
|
||||||
|
file_stream = g_file_read_finish (G_FILE (file), result, &error);
|
||||||
|
if (file_stream == NULL)
|
||||||
|
{
|
||||||
|
g_print ("Could not open file: %s\n", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
stream = G_BUFFERED_INPUT_STREAM (g_buffered_input_stream_new (G_INPUT_STREAM (file_stream)));
|
||||||
|
g_buffered_input_stream_fill_async (stream, -1, G_PRIORITY_HIGH_IDLE, NULL, read_lines_cb, data);
|
||||||
|
g_object_unref (stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
load_file (GtkStringList *list,
|
||||||
|
GFile *file)
|
||||||
|
{
|
||||||
|
gtk_string_list_splice (list, 0, g_list_model_get_n_items (G_LIST_MODEL (list)), NULL);
|
||||||
|
g_file_read_async (file, G_PRIORITY_HIGH_IDLE, NULL, file_is_open_cb, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
file_selected_cb (GtkWidget *button,
|
||||||
|
GtkStringList *stringlist)
|
||||||
|
{
|
||||||
|
GFile *file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (button));
|
||||||
|
|
||||||
|
if (file)
|
||||||
|
{
|
||||||
|
load_file (stringlist, file);
|
||||||
|
g_object_unref (file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GtkWidget *
|
||||||
|
do_listview_words (GtkWidget *do_widget)
|
||||||
|
{
|
||||||
|
if (window == NULL)
|
||||||
|
{
|
||||||
|
GtkWidget *header, *listview, *sw, *vbox, *search_entry, *open_button, *overlay;
|
||||||
|
GtkFilterListModel *filter_model;
|
||||||
|
GtkNoSelection *selection;
|
||||||
|
GtkStringList *stringlist;
|
||||||
|
GtkFilter *filter;
|
||||||
|
GFile *file;
|
||||||
|
|
||||||
|
file = g_file_new_for_path ("/usr/share/dict/words");
|
||||||
|
if (g_file_query_exists (file, NULL))
|
||||||
|
{
|
||||||
|
stringlist = gtk_string_list_new (NULL);
|
||||||
|
load_file (stringlist, file);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char **words;
|
||||||
|
words = g_strsplit ("lorem ipsum dolor sit amet consectetur adipisci elit sed eiusmod tempor incidunt labore et dolore magna aliqua ut enim ad minim veniam quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat", " ", -1);
|
||||||
|
stringlist = gtk_string_list_new ((const char **) words);
|
||||||
|
g_strfreev (words);
|
||||||
|
}
|
||||||
|
|
||||||
|
filter = gtk_string_filter_new (gtk_property_expression_new (GTK_TYPE_STRING_OBJECT, NULL, "string"));
|
||||||
|
filter_model = gtk_filter_list_model_new (G_LIST_MODEL (stringlist), filter);
|
||||||
|
gtk_filter_list_model_set_incremental (filter_model, TRUE);
|
||||||
|
|
||||||
|
window = gtk_window_new ();
|
||||||
|
gtk_window_set_default_size (GTK_WINDOW (window), 400, 600);
|
||||||
|
|
||||||
|
header = gtk_header_bar_new ();
|
||||||
|
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), TRUE);
|
||||||
|
open_button = gtk_file_chooser_button_new ("_Open", GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||||
|
g_signal_connect (open_button, "file-set", G_CALLBACK (file_selected_cb), stringlist);
|
||||||
|
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), open_button);
|
||||||
|
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
||||||
|
|
||||||
|
gtk_window_set_display (GTK_WINDOW (window),
|
||||||
|
gtk_widget_get_display (do_widget));
|
||||||
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer*)&window);
|
||||||
|
|
||||||
|
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||||
|
gtk_window_set_child (GTK_WINDOW (window), vbox);
|
||||||
|
|
||||||
|
search_entry = gtk_search_entry_new ();
|
||||||
|
g_object_bind_property (search_entry, "text", filter, "search", 0);
|
||||||
|
gtk_box_append (GTK_BOX (vbox), search_entry);
|
||||||
|
|
||||||
|
overlay = gtk_overlay_new ();
|
||||||
|
gtk_box_append (GTK_BOX (vbox), overlay);
|
||||||
|
|
||||||
|
progress = gtk_progress_bar_new ();
|
||||||
|
gtk_widget_set_halign (progress, GTK_ALIGN_FILL);
|
||||||
|
gtk_widget_set_valign (progress, GTK_ALIGN_START);
|
||||||
|
gtk_widget_set_hexpand (progress, TRUE);
|
||||||
|
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), progress);
|
||||||
|
|
||||||
|
sw = gtk_scrolled_window_new ();
|
||||||
|
gtk_widget_set_vexpand (sw, TRUE);
|
||||||
|
gtk_overlay_set_child (GTK_OVERLAY (overlay), sw);
|
||||||
|
|
||||||
|
listview = gtk_list_view_new_with_factory (
|
||||||
|
gtk_builder_list_item_factory_new_from_bytes (NULL,
|
||||||
|
g_bytes_new_static (factory_text, strlen (factory_text))));
|
||||||
|
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), listview);
|
||||||
|
selection = gtk_no_selection_new (G_LIST_MODEL (filter_model));
|
||||||
|
gtk_list_view_set_model (GTK_LIST_VIEW (listview), G_LIST_MODEL (selection));
|
||||||
|
g_object_unref (selection);
|
||||||
|
|
||||||
|
g_signal_connect (filter_model, "items-changed", G_CALLBACK (update_title_cb), progress);
|
||||||
|
g_signal_connect (filter_model, "notify::pending", G_CALLBACK (update_title_cb), progress);
|
||||||
|
update_title_cb (filter_model);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!gtk_widget_get_visible (window))
|
||||||
|
gtk_widget_show (window);
|
||||||
|
else
|
||||||
|
gtk_window_destroy (GTK_WINDOW (window));
|
||||||
|
|
||||||
|
return window;
|
||||||
|
}
|
||||||
@@ -13,11 +13,12 @@
|
|||||||
static GtkWidget *info_view;
|
static GtkWidget *info_view;
|
||||||
static GtkWidget *source_view;
|
static GtkWidget *source_view;
|
||||||
|
|
||||||
static gchar *current_file = NULL;
|
static char *current_file = NULL;
|
||||||
|
|
||||||
static GtkWidget *notebook;
|
static GtkWidget *notebook;
|
||||||
static GtkSingleSelection *selection;
|
static GtkSingleSelection *selection;
|
||||||
static GtkWidget *toplevel;
|
static GtkWidget *toplevel;
|
||||||
|
static char **search_needle;
|
||||||
|
|
||||||
typedef struct _GtkDemo GtkDemo;
|
typedef struct _GtkDemo GtkDemo;
|
||||||
struct _GtkDemo
|
struct _GtkDemo
|
||||||
@@ -140,7 +141,7 @@ activate_about (GSimpleAction *action,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkApplication *app = user_data;
|
GtkApplication *app = user_data;
|
||||||
const gchar *authors[] = {
|
const char *authors[] = {
|
||||||
"The GTK Team",
|
"The GTK Team",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
@@ -251,11 +252,9 @@ static const char *types[] =
|
|||||||
"static",
|
"static",
|
||||||
"const ",
|
"const ",
|
||||||
"void",
|
"void",
|
||||||
"gint",
|
|
||||||
" int ",
|
" int ",
|
||||||
" char ",
|
" char ",
|
||||||
"gchar ",
|
"char ",
|
||||||
"gfloat",
|
|
||||||
"float",
|
"float",
|
||||||
"double",
|
"double",
|
||||||
"gint8",
|
"gint8",
|
||||||
@@ -271,8 +270,6 @@ static const char *types[] =
|
|||||||
"gshort",
|
"gshort",
|
||||||
"gushort",
|
"gushort",
|
||||||
"gulong",
|
"gulong",
|
||||||
"gdouble",
|
|
||||||
"gldouble",
|
|
||||||
"gpointer",
|
"gpointer",
|
||||||
"NULL",
|
"NULL",
|
||||||
"GList",
|
"GList",
|
||||||
@@ -384,14 +381,14 @@ static const char *control[] =
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
void
|
void
|
||||||
parse_chars (gchar *text,
|
parse_chars (char *text,
|
||||||
gchar **end_ptr,
|
char **end_ptr,
|
||||||
gint *state,
|
int *state,
|
||||||
const char **tag,
|
const char **tag,
|
||||||
gboolean start)
|
gboolean start)
|
||||||
{
|
{
|
||||||
gint i;
|
int i;
|
||||||
gchar *next_token;
|
char *next_token;
|
||||||
|
|
||||||
/* Handle comments first */
|
/* Handle comments first */
|
||||||
if (*state == STATE_IN_COMMENT)
|
if (*state == STATE_IN_COMMENT)
|
||||||
@@ -461,7 +458,7 @@ parse_chars (gchar *text,
|
|||||||
/* check for string */
|
/* check for string */
|
||||||
if (text[0] == '"')
|
if (text[0] == '"')
|
||||||
{
|
{
|
||||||
gint maybe_escape = FALSE;
|
int maybe_escape = FALSE;
|
||||||
|
|
||||||
*end_ptr = text + 1;
|
*end_ptr = text + 1;
|
||||||
*tag = "string";
|
*tag = "string";
|
||||||
@@ -524,9 +521,9 @@ void
|
|||||||
fontify (GtkTextBuffer *source_buffer)
|
fontify (GtkTextBuffer *source_buffer)
|
||||||
{
|
{
|
||||||
GtkTextIter start_iter, next_iter, tmp_iter;
|
GtkTextIter start_iter, next_iter, tmp_iter;
|
||||||
gint state;
|
int state;
|
||||||
gchar *text;
|
char *text;
|
||||||
gchar *start_ptr, *end_ptr;
|
char *start_ptr, *end_ptr;
|
||||||
const char *tag;
|
const char *tag;
|
||||||
|
|
||||||
gtk_text_buffer_create_tag (source_buffer, "source",
|
gtk_text_buffer_create_tag (source_buffer, "source",
|
||||||
@@ -694,10 +691,10 @@ static struct {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_data_tab (const gchar *demoname)
|
add_data_tab (const char *demoname)
|
||||||
{
|
{
|
||||||
gchar *resource_dir, *resource_name;
|
char *resource_dir, *resource_name;
|
||||||
gchar **resources;
|
char **resources;
|
||||||
GtkWidget *widget, *label;
|
GtkWidget *widget, *label;
|
||||||
guint i, j;
|
guint i, j;
|
||||||
|
|
||||||
@@ -741,15 +738,15 @@ add_data_tab (const gchar *demoname)
|
|||||||
static void
|
static void
|
||||||
remove_data_tabs (void)
|
remove_data_tabs (void)
|
||||||
{
|
{
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
for (i = gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook)) - 1; i > 1; i--)
|
for (i = gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook)) - 1; i > 1; i--)
|
||||||
gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), i);
|
gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
load_file (const gchar *demoname,
|
load_file (const char *demoname,
|
||||||
const gchar *filename)
|
const char *filename)
|
||||||
{
|
{
|
||||||
GtkTextBuffer *info_buffer, *source_buffer;
|
GtkTextBuffer *info_buffer, *source_buffer;
|
||||||
GtkTextIter start, end;
|
GtkTextIter start, end;
|
||||||
@@ -757,9 +754,9 @@ load_file (const gchar *demoname,
|
|||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
int state = 0;
|
int state = 0;
|
||||||
gboolean in_para = 0;
|
gboolean in_para = 0;
|
||||||
gchar **lines;
|
char **lines;
|
||||||
GBytes *bytes;
|
GBytes *bytes;
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
if (!g_strcmp0 (current_file, filename))
|
if (!g_strcmp0 (current_file, filename))
|
||||||
return;
|
return;
|
||||||
@@ -799,9 +796,9 @@ load_file (const gchar *demoname,
|
|||||||
gtk_text_buffer_get_iter_at_offset (info_buffer, &start, 0);
|
gtk_text_buffer_get_iter_at_offset (info_buffer, &start, 0);
|
||||||
for (i = 0; lines[i] != NULL; i++)
|
for (i = 0; lines[i] != NULL; i++)
|
||||||
{
|
{
|
||||||
gchar *p;
|
char *p;
|
||||||
gchar *q;
|
char *q;
|
||||||
gchar *r;
|
char *r;
|
||||||
|
|
||||||
/* Make sure \r is stripped at the end for the poor windows people */
|
/* Make sure \r is stripped at the end for the poor windows people */
|
||||||
lines[i] = g_strchomp (lines[i]);
|
lines[i] = g_strchomp (lines[i]);
|
||||||
@@ -945,7 +942,18 @@ selection_cb (GtkSingleSelection *sel,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkTreeListRow *row = gtk_single_selection_get_selected_item (sel);
|
GtkTreeListRow *row = gtk_single_selection_get_selected_item (sel);
|
||||||
GtkDemo *demo = gtk_tree_list_row_get_item (row);
|
GtkDemo *demo;
|
||||||
|
|
||||||
|
gtk_widget_set_sensitive (GTK_WIDGET (notebook), !!row);
|
||||||
|
|
||||||
|
if (!row)
|
||||||
|
{
|
||||||
|
gtk_window_set_title (GTK_WINDOW (toplevel), "No match");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
demo = gtk_tree_list_row_get_item (row);
|
||||||
|
|
||||||
if (demo->filename)
|
if (demo->filename)
|
||||||
load_file (demo->name, demo->filename);
|
load_file (demo->name, demo->filename);
|
||||||
@@ -953,6 +961,84 @@ selection_cb (GtkSingleSelection *sel,
|
|||||||
gtk_window_set_title (GTK_WINDOW (toplevel), demo->title);
|
gtk_window_set_title (GTK_WINDOW (toplevel), demo->title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
filter_demo (GtkDemo *demo)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Show only if the name maches every needle */
|
||||||
|
for (i = 0; search_needle[i]; i++)
|
||||||
|
{
|
||||||
|
if (!demo->title)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (g_str_match_string (search_needle[i], demo->title, TRUE))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
demo_filter_by_name (GtkTreeListRow *row,
|
||||||
|
GtkFilterListModel *model)
|
||||||
|
{
|
||||||
|
GListModel *children;
|
||||||
|
GtkDemo *demo;
|
||||||
|
guint i, n;
|
||||||
|
|
||||||
|
/* Show all items if search is empty */
|
||||||
|
if (!search_needle || !search_needle[0] || !*search_needle[0])
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
g_assert (GTK_IS_TREE_LIST_ROW (row));
|
||||||
|
g_assert (GTK_IS_FILTER_LIST_MODEL (model));
|
||||||
|
|
||||||
|
children = gtk_tree_list_row_get_children (row);
|
||||||
|
if (children)
|
||||||
|
{
|
||||||
|
n = g_list_model_get_n_items (children);
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
demo = g_list_model_get_item (children, i);
|
||||||
|
g_assert (GTK_IS_DEMO (demo));
|
||||||
|
|
||||||
|
if (filter_demo (demo))
|
||||||
|
{
|
||||||
|
g_object_unref (demo);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
g_object_unref (demo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
demo = gtk_tree_list_row_get_item (row);
|
||||||
|
g_assert (GTK_IS_DEMO (demo));
|
||||||
|
|
||||||
|
return filter_demo (demo);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
demo_search_changed_cb (GtkSearchEntry *entry,
|
||||||
|
GtkFilter *filter)
|
||||||
|
{
|
||||||
|
const char *text;
|
||||||
|
|
||||||
|
g_assert (GTK_IS_SEARCH_ENTRY (entry));
|
||||||
|
g_assert (GTK_IS_FILTER (filter));
|
||||||
|
|
||||||
|
text = gtk_editable_get_text (GTK_EDITABLE (entry));
|
||||||
|
|
||||||
|
g_clear_pointer (&search_needle, g_strfreev);
|
||||||
|
|
||||||
|
if (text && *text)
|
||||||
|
search_needle = g_strsplit (text, " ", 0);
|
||||||
|
|
||||||
|
gtk_filter_changed (filter, GTK_FILTER_CHANGE_DIFFERENT);
|
||||||
|
}
|
||||||
|
|
||||||
static GListModel *
|
static GListModel *
|
||||||
create_demo_model (void)
|
create_demo_model (void)
|
||||||
{
|
{
|
||||||
@@ -1007,13 +1093,25 @@ get_child_model (gpointer item,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clear_search (GtkSearchBar *bar)
|
||||||
|
{
|
||||||
|
if (!gtk_search_bar_get_search_mode (bar))
|
||||||
|
{
|
||||||
|
GtkWidget *entry = gtk_search_bar_get_child (GTK_SEARCH_BAR (bar));
|
||||||
|
gtk_editable_set_text (GTK_EDITABLE (entry), "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
activate (GApplication *app)
|
activate (GApplication *app)
|
||||||
{
|
{
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
GListModel *listmodel;
|
GListModel *listmodel;
|
||||||
GtkTreeListModel *treemodel;
|
GtkTreeListModel *treemodel;
|
||||||
GtkWidget *window, *listview;
|
GtkWidget *window, *listview, *search_entry, *search_bar;
|
||||||
|
GtkFilterListModel *filter_model;
|
||||||
|
GtkFilter *filter;
|
||||||
|
|
||||||
static GActionEntry win_entries[] = {
|
static GActionEntry win_entries[] = {
|
||||||
{ "run", activate_run, NULL, NULL, NULL }
|
{ "run", activate_run, NULL, NULL, NULL }
|
||||||
@@ -1034,15 +1132,24 @@ activate (GApplication *app)
|
|||||||
toplevel = GTK_WIDGET (window);
|
toplevel = GTK_WIDGET (window);
|
||||||
listview = GTK_WIDGET (gtk_builder_get_object (builder, "listview"));
|
listview = GTK_WIDGET (gtk_builder_get_object (builder, "listview"));
|
||||||
g_signal_connect (listview, "activate", G_CALLBACK (activate_cb), window);
|
g_signal_connect (listview, "activate", G_CALLBACK (activate_cb), window);
|
||||||
|
search_bar = GTK_WIDGET (gtk_builder_get_object (builder, "searchbar"));
|
||||||
|
g_signal_connect (search_bar, "notify::search-mode-enabled", G_CALLBACK (clear_search), NULL);
|
||||||
|
|
||||||
listmodel = create_demo_model ();
|
listmodel = create_demo_model ();
|
||||||
treemodel = gtk_tree_list_model_new (FALSE,
|
treemodel = gtk_tree_list_model_new (G_LIST_MODEL (listmodel),
|
||||||
G_LIST_MODEL (listmodel),
|
FALSE,
|
||||||
TRUE,
|
TRUE,
|
||||||
get_child_model,
|
get_child_model,
|
||||||
NULL,
|
NULL,
|
||||||
NULL);
|
NULL);
|
||||||
selection = gtk_single_selection_new (G_LIST_MODEL (treemodel));
|
filter_model = gtk_filter_list_model_new (G_LIST_MODEL (treemodel), NULL);
|
||||||
|
filter = gtk_custom_filter_new ((GtkCustomFilterFunc)demo_filter_by_name, filter_model, NULL);
|
||||||
|
gtk_filter_list_model_set_filter (filter_model, filter);
|
||||||
|
g_object_unref (filter);
|
||||||
|
search_entry = GTK_WIDGET (gtk_builder_get_object (builder, "search-entry"));
|
||||||
|
g_signal_connect (search_entry, "search-changed", G_CALLBACK (demo_search_changed_cb), filter);
|
||||||
|
|
||||||
|
selection = gtk_single_selection_new (G_LIST_MODEL (filter_model));
|
||||||
g_signal_connect (selection, "notify::selected-item", G_CALLBACK (selection_cb), NULL);
|
g_signal_connect (selection, "notify::selected-item", G_CALLBACK (selection_cb), NULL);
|
||||||
gtk_list_view_set_model (GTK_LIST_VIEW (listview), G_LIST_MODEL (selection));
|
gtk_list_view_set_model (GTK_LIST_VIEW (listview), G_LIST_MODEL (selection));
|
||||||
|
|
||||||
@@ -1080,12 +1187,12 @@ list_demos (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint
|
static int
|
||||||
command_line (GApplication *app,
|
command_line (GApplication *app,
|
||||||
GApplicationCommandLine *cmdline)
|
GApplicationCommandLine *cmdline)
|
||||||
{
|
{
|
||||||
GVariantDict *options;
|
GVariantDict *options;
|
||||||
const gchar *name = NULL;
|
const char *name = NULL;
|
||||||
gboolean autoquit = FALSE;
|
gboolean autoquit = FALSE;
|
||||||
gboolean list = FALSE;
|
gboolean list = FALSE;
|
||||||
DemoData *d, *c;
|
DemoData *d, *c;
|
||||||
@@ -1139,7 +1246,6 @@ out:
|
|||||||
demo = (func) (window);
|
demo = (func) (window);
|
||||||
|
|
||||||
gtk_window_set_transient_for (GTK_WINDOW (demo), GTK_WINDOW (window));
|
gtk_window_set_transient_for (GTK_WINDOW (demo), GTK_WINDOW (window));
|
||||||
gtk_window_set_modal (GTK_WINDOW (demo), TRUE);
|
|
||||||
|
|
||||||
g_signal_connect_swapped (G_OBJECT (demo), "destroy", G_CALLBACK (g_application_quit), app);
|
g_signal_connect_swapped (G_OBJECT (demo), "destroy", G_CALLBACK (g_application_quit), app);
|
||||||
}
|
}
|
||||||
@@ -1189,8 +1295,8 @@ main (int argc, char **argv)
|
|||||||
{ "inspector", activate_inspector, NULL, NULL, NULL },
|
{ "inspector", activate_inspector, NULL, NULL, NULL },
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
const gchar *action_and_target;
|
const char *action_and_target;
|
||||||
const gchar *accelerators[2];
|
const char *accelerators[2];
|
||||||
} accels[] = {
|
} accels[] = {
|
||||||
{ "app.about", { "F1", NULL } },
|
{ "app.about", { "F1", NULL } },
|
||||||
{ "app.quit", { "<Control>q", NULL } },
|
{ "app.quit", { "<Control>q", NULL } },
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
<property name="default-height">600</property>
|
<property name="default-height">600</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="headerbar">
|
<object class="GtkHeaderBar" id="headerbar">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton">
|
<object class="GtkButton">
|
||||||
<property name="valign">center</property>
|
<property name="valign">center</property>
|
||||||
@@ -56,12 +55,29 @@
|
|||||||
<property name="hscrollbar-policy">never</property>
|
<property name="hscrollbar-policy">never</property>
|
||||||
<property name="min-content-width">150</property>
|
<property name="min-content-width">150</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkListView" id="listview">
|
<object class="GtkBox">
|
||||||
<property name="factory">
|
<property name="width-request">220</property>
|
||||||
<object class="GtkBuilderListItemFactory">
|
<property name="orientation">vertical</property>
|
||||||
<property name="resource">/ui/main-listitem.ui</property>
|
|
||||||
|
<child>
|
||||||
|
<object class="GtkSearchBar" id="searchbar">
|
||||||
|
<property name="key-capture-widget">window</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSearchEntry" id="search-entry"/>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<object class="GtkListView" id="listview">
|
||||||
|
<property name="factory">
|
||||||
|
<object class="GtkBuilderListItemFactory">
|
||||||
|
<property name="resource">/ui/main-listitem.ui</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ source_toggled (GtkToggleButton *button)
|
|||||||
{
|
{
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
GtkTextIter start, end;
|
GtkTextIter start, end;
|
||||||
gchar *markup;
|
char *markup;
|
||||||
|
|
||||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view2));
|
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view2));
|
||||||
gtk_text_buffer_get_bounds (buffer, &start, &end);
|
gtk_text_buffer_get_bounds (buffer, &start, &end);
|
||||||
@@ -50,7 +50,7 @@ do_markup (GtkWidget *do_widget)
|
|||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
GBytes *bytes;
|
GBytes *bytes;
|
||||||
const gchar *markup;
|
const char *markup;
|
||||||
GtkWidget *header;
|
GtkWidget *header;
|
||||||
GtkWidget *show_source;
|
GtkWidget *show_source;
|
||||||
|
|
||||||
@@ -69,7 +69,6 @@ do_markup (GtkWidget *do_widget)
|
|||||||
g_signal_connect (show_source, "toggled", G_CALLBACK (source_toggled), stack);
|
g_signal_connect (show_source, "toggled", G_CALLBACK (source_toggled), stack);
|
||||||
|
|
||||||
header = gtk_header_bar_new ();
|
header = gtk_header_bar_new ();
|
||||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), TRUE);
|
|
||||||
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), show_source);
|
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), show_source);
|
||||||
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
||||||
|
|
||||||
@@ -103,7 +102,7 @@ do_markup (GtkWidget *do_widget)
|
|||||||
gtk_stack_add_named (GTK_STACK (stack), sw, "source");
|
gtk_stack_add_named (GTK_STACK (stack), sw, "source");
|
||||||
|
|
||||||
bytes = g_resources_lookup_data ("/markup/markup.txt", 0, NULL);
|
bytes = g_resources_lookup_data ("/markup/markup.txt", 0, NULL);
|
||||||
markup = (const gchar *)g_bytes_get_data (bytes, NULL);
|
markup = (const char *)g_bytes_get_data (bytes, NULL);
|
||||||
|
|
||||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
||||||
gtk_text_buffer_get_start_iter (buffer, &iter);
|
gtk_text_buffer_get_start_iter (buffer, &iter);
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ demos = files([
|
|||||||
'listview_minesweeper.c',
|
'listview_minesweeper.c',
|
||||||
'listview_settings.c',
|
'listview_settings.c',
|
||||||
'listview_weather.c',
|
'listview_weather.c',
|
||||||
|
'listview_words.c',
|
||||||
'markup.c',
|
'markup.c',
|
||||||
'modelbutton.c',
|
'modelbutton.c',
|
||||||
'overlay.c',
|
'overlay.c',
|
||||||
|
|||||||
@@ -4,9 +4,7 @@
|
|||||||
<property name="title" translatable="yes">Model Button</property>
|
<property name="title" translatable="yes">Model Button</property>
|
||||||
<property name="resizable">0</property>
|
<property name="resizable">0</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar">
|
<object class="GtkHeaderBar"/>
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ static void
|
|||||||
margin_changed (GtkAdjustment *adjustment,
|
margin_changed (GtkAdjustment *adjustment,
|
||||||
GtkTextView *text)
|
GtkTextView *text)
|
||||||
{
|
{
|
||||||
gint value;
|
int value;
|
||||||
|
|
||||||
value = (gint)gtk_adjustment_get_value (adjustment);
|
value = (int)gtk_adjustment_get_value (adjustment);
|
||||||
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (text), value);
|
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (text), value);
|
||||||
g_object_set (tag, "pixels-above-lines", value, NULL);
|
g_object_set (tag, "pixels-above-lines", value, NULL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#include <gtk/gtkunixprint.h>
|
#include <gtk/gtkunixprint.h>
|
||||||
|
|
||||||
static void
|
static void
|
||||||
done_cb (GtkDialog *dialog, gint response, gpointer data)
|
done_cb (GtkDialog *dialog, int response, gpointer data)
|
||||||
{
|
{
|
||||||
gtk_window_destroy (GTK_WINDOW (dialog));
|
gtk_window_destroy (GTK_WINDOW (dialog));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ typedef struct
|
|||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
GdkRGBA draw_color;
|
GdkRGBA draw_color;
|
||||||
GtkPadController *pad_controller;
|
GtkPadController *pad_controller;
|
||||||
gdouble brush_size;
|
double brush_size;
|
||||||
} DrawingArea;
|
} DrawingArea;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@@ -38,7 +38,7 @@ static GtkPadActionEntry pad_actions[] = {
|
|||||||
{ GTK_PAD_ACTION_STRIP, -1, -1, N_("Brush size"), "pad.brush_size" },
|
{ GTK_PAD_ACTION_STRIP, -1, -1, N_("Brush size"), "pad.brush_size" },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const gchar *pad_colors[] = {
|
static const char *pad_colors[] = {
|
||||||
"black",
|
"black",
|
||||||
"pink",
|
"pink",
|
||||||
"green",
|
"green",
|
||||||
@@ -55,8 +55,8 @@ static void drawing_area_set_color (DrawingArea *area,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
drawing_area_ensure_surface (DrawingArea *area,
|
drawing_area_ensure_surface (DrawingArea *area,
|
||||||
gint width,
|
int width,
|
||||||
gint height)
|
int height)
|
||||||
{
|
{
|
||||||
if (!area->surface ||
|
if (!area->surface ||
|
||||||
cairo_image_surface_get_width (area->surface) != width ||
|
cairo_image_surface_get_width (area->surface) != width ||
|
||||||
@@ -154,7 +154,7 @@ on_pad_button_activate (GSimpleAction *action,
|
|||||||
GVariant *parameter,
|
GVariant *parameter,
|
||||||
DrawingArea *area)
|
DrawingArea *area)
|
||||||
{
|
{
|
||||||
const gchar *color = g_object_get_data (G_OBJECT (action), "color");
|
const char *color = g_object_get_data (G_OBJECT (action), "color");
|
||||||
GdkRGBA rgba;
|
GdkRGBA rgba;
|
||||||
|
|
||||||
gdk_rgba_parse (&rgba, color);
|
gdk_rgba_parse (&rgba, color);
|
||||||
@@ -166,7 +166,7 @@ on_pad_knob_change (GSimpleAction *action,
|
|||||||
GVariant *parameter,
|
GVariant *parameter,
|
||||||
DrawingArea *area)
|
DrawingArea *area)
|
||||||
{
|
{
|
||||||
gdouble value = g_variant_get_double (parameter);
|
double value = g_variant_get_double (parameter);
|
||||||
|
|
||||||
area->brush_size = value;
|
area->brush_size = value;
|
||||||
}
|
}
|
||||||
@@ -195,7 +195,7 @@ drawing_area_root (GtkWidget *widget)
|
|||||||
GSimpleActionGroup *action_group;
|
GSimpleActionGroup *action_group;
|
||||||
GSimpleAction *action;
|
GSimpleAction *action;
|
||||||
GtkWidget *toplevel;
|
GtkWidget *toplevel;
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
GTK_WIDGET_CLASS (drawing_area_parent_class)->root (widget);
|
GTK_WIDGET_CLASS (drawing_area_parent_class)->root (widget);
|
||||||
|
|
||||||
@@ -255,9 +255,9 @@ drawing_area_class_init (DrawingAreaClass *klass)
|
|||||||
static void
|
static void
|
||||||
drawing_area_apply_stroke (DrawingArea *area,
|
drawing_area_apply_stroke (DrawingArea *area,
|
||||||
GdkDeviceTool *tool,
|
GdkDeviceTool *tool,
|
||||||
gdouble x,
|
double x,
|
||||||
gdouble y,
|
double y,
|
||||||
gdouble pressure)
|
double pressure)
|
||||||
{
|
{
|
||||||
if (gdk_device_tool_get_tool_type (tool) == GDK_DEVICE_TOOL_TYPE_ERASER)
|
if (gdk_device_tool_get_tool_type (tool) == GDK_DEVICE_TOOL_TYPE_ERASER)
|
||||||
{
|
{
|
||||||
@@ -281,8 +281,8 @@ drawing_area_apply_stroke (DrawingArea *area,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
stylus_gesture_down (GtkGestureStylus *gesture,
|
stylus_gesture_down (GtkGestureStylus *gesture,
|
||||||
gdouble x,
|
double x,
|
||||||
gdouble y,
|
double y,
|
||||||
DrawingArea *area)
|
DrawingArea *area)
|
||||||
{
|
{
|
||||||
cairo_new_path (area->cr);
|
cairo_new_path (area->cr);
|
||||||
@@ -290,13 +290,13 @@ stylus_gesture_down (GtkGestureStylus *gesture,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
stylus_gesture_motion (GtkGestureStylus *gesture,
|
stylus_gesture_motion (GtkGestureStylus *gesture,
|
||||||
gdouble x,
|
double x,
|
||||||
gdouble y,
|
double y,
|
||||||
DrawingArea *area)
|
DrawingArea *area)
|
||||||
{
|
{
|
||||||
GdkTimeCoord *backlog;
|
GdkTimeCoord *backlog;
|
||||||
GdkDeviceTool *tool;
|
GdkDeviceTool *tool;
|
||||||
gdouble pressure;
|
double pressure;
|
||||||
guint n_items;
|
guint n_items;
|
||||||
|
|
||||||
tool = gtk_gesture_stylus_get_device_tool (gesture);
|
tool = gtk_gesture_stylus_get_device_tool (gesture);
|
||||||
@@ -392,7 +392,6 @@ do_paint (GtkWidget *toplevel)
|
|||||||
gtk_window_set_child (GTK_WINDOW (window), draw_area);
|
gtk_window_set_child (GTK_WINDOW (window), draw_area);
|
||||||
|
|
||||||
headerbar = gtk_header_bar_new ();
|
headerbar = gtk_header_bar_new ();
|
||||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (headerbar), TRUE);
|
|
||||||
|
|
||||||
colorbutton = gtk_color_button_new ();
|
colorbutton = gtk_color_button_new ();
|
||||||
g_signal_connect (colorbutton, "color-set",
|
g_signal_connect (colorbutton, "color-set",
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ toggle_shrink (GtkWidget *widget,
|
|||||||
|
|
||||||
static GtkWidget *
|
static GtkWidget *
|
||||||
create_pane_options (GtkPaned *paned,
|
create_pane_options (GtkPaned *paned,
|
||||||
const gchar *frame_label,
|
const char *frame_label,
|
||||||
const gchar *label1,
|
const char *label1,
|
||||||
const gchar *label2)
|
const char *label2)
|
||||||
{
|
{
|
||||||
GtkWidget *child1, *child2;
|
GtkWidget *child1, *child2;
|
||||||
GtkWidget *frame;
|
GtkWidget *frame;
|
||||||
|
|||||||
@@ -276,7 +276,6 @@ do_peg_solitaire (GtkWidget *do_widget)
|
|||||||
g_signal_connect (restart, "clicked", G_CALLBACK (restart), NULL);
|
g_signal_connect (restart, "clicked", G_CALLBACK (restart), NULL);
|
||||||
|
|
||||||
header = gtk_header_bar_new ();
|
header = gtk_header_bar_new ();
|
||||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), TRUE);
|
|
||||||
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), restart);
|
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), restart);
|
||||||
window = gtk_window_new ();
|
window = gtk_window_new ();
|
||||||
gtk_window_set_display (GTK_WINDOW (window),
|
gtk_window_set_display (GTK_WINDOW (window),
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ static GdkPixbuf *frame;
|
|||||||
|
|
||||||
/* Background image */
|
/* Background image */
|
||||||
static GdkPixbuf *background;
|
static GdkPixbuf *background;
|
||||||
static gint back_width, back_height;
|
static int back_width, back_height;
|
||||||
|
|
||||||
/* Images */
|
/* Images */
|
||||||
static GdkPixbuf *images[N_IMAGES];
|
static GdkPixbuf *images[N_IMAGES];
|
||||||
@@ -51,7 +51,7 @@ static GtkWidget *da;
|
|||||||
static gboolean
|
static gboolean
|
||||||
load_pixbufs (GError **error)
|
load_pixbufs (GError **error)
|
||||||
{
|
{
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
if (background)
|
if (background)
|
||||||
return TRUE; /* already loaded earlier */
|
return TRUE; /* already loaded earlier */
|
||||||
|
|||||||
@@ -14,13 +14,13 @@
|
|||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
gchar *resourcename;
|
char *resourcename;
|
||||||
gdouble font_size;
|
double font_size;
|
||||||
|
|
||||||
gint lines_per_page;
|
int lines_per_page;
|
||||||
gchar **lines;
|
char **lines;
|
||||||
gint num_lines;
|
int num_lines;
|
||||||
gint num_pages;
|
int num_pages;
|
||||||
} PrintData;
|
} PrintData;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -55,17 +55,17 @@ begin_print (GtkPrintOperation *operation,
|
|||||||
static void
|
static void
|
||||||
draw_page (GtkPrintOperation *operation,
|
draw_page (GtkPrintOperation *operation,
|
||||||
GtkPrintContext *context,
|
GtkPrintContext *context,
|
||||||
gint page_nr,
|
int page_nr,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
PrintData *data = (PrintData *)user_data;
|
PrintData *data = (PrintData *)user_data;
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
PangoLayout *layout;
|
PangoLayout *layout;
|
||||||
gint text_width, text_height;
|
int text_width, text_height;
|
||||||
gdouble width;
|
double width;
|
||||||
gint line, i;
|
int line, i;
|
||||||
PangoFontDescription *desc;
|
PangoFontDescription *desc;
|
||||||
gchar *page_str;
|
char *page_str;
|
||||||
|
|
||||||
cr = gtk_print_context_get_cairo_context (context);
|
cr = gtk_print_context_get_cairo_context (context);
|
||||||
width = gtk_print_context_get_width (context);
|
width = gtk_print_context_get_width (context);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
static gint count = 0;
|
static int count = 0;
|
||||||
static guint timeout = 0;
|
static guint timeout = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -25,7 +25,7 @@ static gboolean
|
|||||||
reveal_one (gpointer data)
|
reveal_one (gpointer data)
|
||||||
{
|
{
|
||||||
GtkWidget *window = data;
|
GtkWidget *window = data;
|
||||||
gchar *name;
|
char *name;
|
||||||
GtkRevealer *revealer;
|
GtkRevealer *revealer;
|
||||||
|
|
||||||
name = g_strdup_printf ("revealer%d", count);
|
name = g_strdup_printf ("revealer%d", count);
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ set_search_by (GSimpleAction *action,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
icon_press_cb (GtkEntry *entry,
|
icon_press_cb (GtkEntry *entry,
|
||||||
gint position,
|
int position,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
if (position == GTK_ENTRY_ICON_PRIMARY)
|
if (position == GTK_ENTRY_ICON_PRIMARY)
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
show_shortcuts (GtkWidget *window,
|
show_shortcuts (GtkWidget *window,
|
||||||
const gchar *id,
|
const char *id,
|
||||||
const gchar *view)
|
const char *view)
|
||||||
{
|
{
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
GtkWidget *overlay;
|
GtkWidget *overlay;
|
||||||
gchar *path;
|
char *path;
|
||||||
|
|
||||||
path = g_strdup_printf ("/shortcuts/%s.ui", id);
|
path = g_strdup_printf ("/shortcuts/%s.ui", id);
|
||||||
builder = gtk_builder_new_from_resource (path);
|
builder = gtk_builder_new_from_resource (path);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ do_sidebar (GtkWidget *do_widget)
|
|||||||
GtkWidget *box;
|
GtkWidget *box;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
GtkWidget *header;
|
GtkWidget *header;
|
||||||
const gchar* pages[] = {
|
const char * pages[] = {
|
||||||
"Welcome to GTK",
|
"Welcome to GTK",
|
||||||
"GtkStackSidebar Widget",
|
"GtkStackSidebar Widget",
|
||||||
"Automatic navigation",
|
"Automatic navigation",
|
||||||
@@ -30,7 +30,7 @@ do_sidebar (GtkWidget *do_widget)
|
|||||||
"Page 9",
|
"Page 9",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
const gchar *c = NULL;
|
const char *c = NULL;
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
if (!window)
|
if (!window)
|
||||||
@@ -40,7 +40,6 @@ do_sidebar (GtkWidget *do_widget)
|
|||||||
gtk_widget_set_size_request (window, 500, 350);
|
gtk_widget_set_size_request (window, 500, 350);
|
||||||
|
|
||||||
header = gtk_header_bar_new ();
|
header = gtk_header_bar_new ();
|
||||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR(header), TRUE);
|
|
||||||
gtk_window_set_titlebar (GTK_WINDOW(window), header);
|
gtk_window_set_titlebar (GTK_WINDOW(window), header);
|
||||||
gtk_window_set_title (GTK_WINDOW(window), "Stack Sidebar");
|
gtk_window_set_title (GTK_WINDOW(window), "Stack Sidebar");
|
||||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||||
|
|||||||
@@ -470,7 +470,6 @@ do_sliding_puzzle (GtkWidget *do_widget)
|
|||||||
g_signal_connect (restart, "clicked", G_CALLBACK (reshuffle), NULL);
|
g_signal_connect (restart, "clicked", G_CALLBACK (reshuffle), NULL);
|
||||||
|
|
||||||
header = gtk_header_bar_new ();
|
header = gtk_header_bar_new ();
|
||||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), TRUE);
|
|
||||||
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), restart);
|
gtk_header_bar_pack_start (GTK_HEADER_BAR (header), restart);
|
||||||
gtk_header_bar_pack_end (GTK_HEADER_BAR (header), tweak);
|
gtk_header_bar_pack_end (GTK_HEADER_BAR (header), tweak);
|
||||||
window = gtk_window_new ();
|
window = gtk_window_new ();
|
||||||
|
|||||||
@@ -11,13 +11,13 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
gint
|
int
|
||||||
spinbutton_hex_spin_input (GtkSpinButton *spin_button,
|
spinbutton_hex_spin_input (GtkSpinButton *spin_button,
|
||||||
gdouble *new_val)
|
double *new_val)
|
||||||
{
|
{
|
||||||
const gchar *buf;
|
const char *buf;
|
||||||
gchar *err;
|
char *err;
|
||||||
gdouble res;
|
double res;
|
||||||
|
|
||||||
buf = gtk_editable_get_text (GTK_EDITABLE (spin_button));
|
buf = gtk_editable_get_text (GTK_EDITABLE (spin_button));
|
||||||
res = strtol (buf, &err, 16);
|
res = strtol (buf, &err, 16);
|
||||||
@@ -28,19 +28,19 @@ spinbutton_hex_spin_input (GtkSpinButton *spin_button,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
int
|
||||||
spinbutton_hex_spin_output (GtkSpinButton *spin_button)
|
spinbutton_hex_spin_output (GtkSpinButton *spin_button)
|
||||||
{
|
{
|
||||||
GtkAdjustment *adjustment;
|
GtkAdjustment *adjustment;
|
||||||
gchar *buf;
|
char *buf;
|
||||||
gdouble val;
|
double val;
|
||||||
|
|
||||||
adjustment = gtk_spin_button_get_adjustment (spin_button);
|
adjustment = gtk_spin_button_get_adjustment (spin_button);
|
||||||
val = gtk_adjustment_get_value (adjustment);
|
val = gtk_adjustment_get_value (adjustment);
|
||||||
if (fabs (val) < 1e-5)
|
if (fabs (val) < 1e-5)
|
||||||
buf = g_strdup ("0x00");
|
buf = g_strdup ("0x00");
|
||||||
else
|
else
|
||||||
buf = g_strdup_printf ("0x%.2X", (gint) val);
|
buf = g_strdup_printf ("0x%.2X", (int) val);
|
||||||
if (strcmp (buf, gtk_editable_get_text (GTK_EDITABLE (spin_button))))
|
if (strcmp (buf, gtk_editable_get_text (GTK_EDITABLE (spin_button))))
|
||||||
gtk_editable_set_text (GTK_EDITABLE (spin_button), buf);
|
gtk_editable_set_text (GTK_EDITABLE (spin_button), buf);
|
||||||
g_free (buf);
|
g_free (buf);
|
||||||
@@ -48,17 +48,17 @@ spinbutton_hex_spin_output (GtkSpinButton *spin_button)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
int
|
||||||
spinbutton_time_spin_input (GtkSpinButton *spin_button,
|
spinbutton_time_spin_input (GtkSpinButton *spin_button,
|
||||||
gdouble *new_val)
|
double *new_val)
|
||||||
{
|
{
|
||||||
const gchar *text;
|
const char *text;
|
||||||
gchar **str;
|
char **str;
|
||||||
gboolean found = FALSE;
|
gboolean found = FALSE;
|
||||||
gint hours;
|
int hours;
|
||||||
gint minutes;
|
int minutes;
|
||||||
gchar *endh;
|
char *endh;
|
||||||
gchar *endm;
|
char *endm;
|
||||||
|
|
||||||
text = gtk_editable_get_text (GTK_EDITABLE (spin_button));
|
text = gtk_editable_get_text (GTK_EDITABLE (spin_button));
|
||||||
str = g_strsplit (text, ":", 2);
|
str = g_strsplit (text, ":", 2);
|
||||||
@@ -87,13 +87,13 @@ spinbutton_time_spin_input (GtkSpinButton *spin_button,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
int
|
||||||
spinbutton_time_spin_output (GtkSpinButton *spin_button)
|
spinbutton_time_spin_output (GtkSpinButton *spin_button)
|
||||||
{
|
{
|
||||||
GtkAdjustment *adjustment;
|
GtkAdjustment *adjustment;
|
||||||
gchar *buf;
|
char *buf;
|
||||||
gdouble hours;
|
double hours;
|
||||||
gdouble minutes;
|
double minutes;
|
||||||
|
|
||||||
adjustment = gtk_spin_button_get_adjustment (spin_button);
|
adjustment = gtk_spin_button_get_adjustment (spin_button);
|
||||||
hours = gtk_adjustment_get_value (adjustment) / 60.0;
|
hours = gtk_adjustment_get_value (adjustment) / 60.0;
|
||||||
@@ -121,12 +121,12 @@ static const char *month[12] = {
|
|||||||
"December"
|
"December"
|
||||||
};
|
};
|
||||||
|
|
||||||
gint
|
int
|
||||||
spinbutton_month_spin_input (GtkSpinButton *spin_button,
|
spinbutton_month_spin_input (GtkSpinButton *spin_button,
|
||||||
gdouble *new_val)
|
double *new_val)
|
||||||
{
|
{
|
||||||
gint i;
|
int i;
|
||||||
gchar *tmp1, *tmp2;
|
char *tmp1, *tmp2;
|
||||||
gboolean found = FALSE;
|
gboolean found = FALSE;
|
||||||
|
|
||||||
for (i = 1; i <= 12; i++)
|
for (i = 1; i <= 12; i++)
|
||||||
@@ -145,17 +145,17 @@ spinbutton_month_spin_input (GtkSpinButton *spin_button,
|
|||||||
*new_val = 0.0;
|
*new_val = 0.0;
|
||||||
return GTK_INPUT_ERROR;
|
return GTK_INPUT_ERROR;
|
||||||
}
|
}
|
||||||
*new_val = (gdouble) i;
|
*new_val = (double) i;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
int
|
||||||
spinbutton_month_spin_output (GtkSpinButton *spin_button)
|
spinbutton_month_spin_output (GtkSpinButton *spin_button)
|
||||||
{
|
{
|
||||||
GtkAdjustment *adjustment;
|
GtkAdjustment *adjustment;
|
||||||
gdouble value;
|
double value;
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
adjustment = gtk_spin_button_get_adjustment (spin_button);
|
adjustment = gtk_spin_button_get_adjustment (spin_button);
|
||||||
value = gtk_adjustment_get_value (adjustment);
|
value = gtk_adjustment_get_value (adjustment);
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
<property name="resizable">0</property>
|
<property name="resizable">0</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="header">
|
<object class="GtkHeaderBar" id="header">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child type="start">
|
<child type="start">
|
||||||
<object class="GtkToggleButton" id="toggle">
|
<object class="GtkToggleButton" id="toggle">
|
||||||
<property name="label">Cycle</property>
|
<property name="label">Cycle</property>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
typedef struct _TreeItem TreeItem;
|
typedef struct _TreeItem TreeItem;
|
||||||
struct _TreeItem
|
struct _TreeItem
|
||||||
{
|
{
|
||||||
const gchar *label;
|
const char *label;
|
||||||
gboolean alex;
|
gboolean alex;
|
||||||
gboolean havoc;
|
gboolean havoc;
|
||||||
gboolean tim;
|
gboolean tim;
|
||||||
@@ -222,7 +222,7 @@ create_model (void)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
item_toggled (GtkCellRendererToggle *cell,
|
item_toggled (GtkCellRendererToggle *cell,
|
||||||
gchar *path_str,
|
char *path_str,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GtkTreeModel *model = (GtkTreeModel *)data;
|
GtkTreeModel *model = (GtkTreeModel *)data;
|
||||||
@@ -230,7 +230,7 @@ item_toggled (GtkCellRendererToggle *cell,
|
|||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
gboolean toggle_item;
|
gboolean toggle_item;
|
||||||
|
|
||||||
gint *column;
|
int *column;
|
||||||
|
|
||||||
column = g_object_get_data (G_OBJECT (cell), "column");
|
column = g_object_get_data (G_OBJECT (cell), "column");
|
||||||
|
|
||||||
@@ -252,7 +252,7 @@ item_toggled (GtkCellRendererToggle *cell,
|
|||||||
static void
|
static void
|
||||||
add_columns (GtkTreeView *treeview)
|
add_columns (GtkTreeView *treeview)
|
||||||
{
|
{
|
||||||
gint col_offset;
|
int col_offset;
|
||||||
GtkCellRenderer *renderer;
|
GtkCellRenderer *renderer;
|
||||||
GtkTreeViewColumn *column;
|
GtkTreeViewColumn *column;
|
||||||
GtkTreeModel *model = gtk_tree_view_get_model (treeview);
|
GtkTreeModel *model = gtk_tree_view_get_model (treeview);
|
||||||
@@ -272,7 +272,7 @@ add_columns (GtkTreeView *treeview)
|
|||||||
/* alex column */
|
/* alex column */
|
||||||
renderer = gtk_cell_renderer_toggle_new ();
|
renderer = gtk_cell_renderer_toggle_new ();
|
||||||
g_object_set (renderer, "xalign", 0.0, NULL);
|
g_object_set (renderer, "xalign", 0.0, NULL);
|
||||||
g_object_set_data (G_OBJECT (renderer), "column", (gint *)ALEX_COLUMN);
|
g_object_set_data (G_OBJECT (renderer), "column", (int *)ALEX_COLUMN);
|
||||||
|
|
||||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ add_columns (GtkTreeView *treeview)
|
|||||||
/* havoc column */
|
/* havoc column */
|
||||||
renderer = gtk_cell_renderer_toggle_new ();
|
renderer = gtk_cell_renderer_toggle_new ();
|
||||||
g_object_set (renderer, "xalign", 0.0, NULL);
|
g_object_set (renderer, "xalign", 0.0, NULL);
|
||||||
g_object_set_data (G_OBJECT (renderer), "column", (gint *)HAVOC_COLUMN);
|
g_object_set_data (G_OBJECT (renderer), "column", (int *)HAVOC_COLUMN);
|
||||||
|
|
||||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||||
|
|
||||||
@@ -315,7 +315,7 @@ add_columns (GtkTreeView *treeview)
|
|||||||
/* tim column */
|
/* tim column */
|
||||||
renderer = gtk_cell_renderer_toggle_new ();
|
renderer = gtk_cell_renderer_toggle_new ();
|
||||||
g_object_set (renderer, "xalign", 0.0, NULL);
|
g_object_set (renderer, "xalign", 0.0, NULL);
|
||||||
g_object_set_data (G_OBJECT (renderer), "column", (gint *)TIM_COLUMN);
|
g_object_set_data (G_OBJECT (renderer), "column", (int *)TIM_COLUMN);
|
||||||
|
|
||||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ add_columns (GtkTreeView *treeview)
|
|||||||
/* owen column */
|
/* owen column */
|
||||||
renderer = gtk_cell_renderer_toggle_new ();
|
renderer = gtk_cell_renderer_toggle_new ();
|
||||||
g_object_set (renderer, "xalign", 0.0, NULL);
|
g_object_set (renderer, "xalign", 0.0, NULL);
|
||||||
g_object_set_data (G_OBJECT (renderer), "column", (gint *)OWEN_COLUMN);
|
g_object_set_data (G_OBJECT (renderer), "column", (int *)OWEN_COLUMN);
|
||||||
|
|
||||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||||
|
|
||||||
@@ -358,7 +358,7 @@ add_columns (GtkTreeView *treeview)
|
|||||||
/* dave column */
|
/* dave column */
|
||||||
renderer = gtk_cell_renderer_toggle_new ();
|
renderer = gtk_cell_renderer_toggle_new ();
|
||||||
g_object_set (renderer, "xalign", 0.0, NULL);
|
g_object_set (renderer, "xalign", 0.0, NULL);
|
||||||
g_object_set_data (G_OBJECT (renderer), "column", (gint *)DAVE_COLUMN);
|
g_object_set_data (G_OBJECT (renderer), "column", (int *)DAVE_COLUMN);
|
||||||
|
|
||||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ do_video_player (GtkWidget *do_widget)
|
|||||||
gtk_window_set_child (GTK_WINDOW (window), video);
|
gtk_window_set_child (GTK_WINDOW (window), video);
|
||||||
|
|
||||||
title = gtk_header_bar_new ();
|
title = gtk_header_bar_new ();
|
||||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (title), TRUE);
|
|
||||||
gtk_window_set_titlebar (GTK_WINDOW (window), title);
|
gtk_window_set_titlebar (GTK_WINDOW (window), title);
|
||||||
|
|
||||||
open_button = gtk_button_new_with_mnemonic ("_Open");
|
open_button = gtk_button_new_with_mnemonic ("_Open");
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ about_activated (GSimpleAction *action,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkApplication *app = user_data;
|
GtkApplication *app = user_data;
|
||||||
const gchar *authors[] = {
|
const char *authors[] = {
|
||||||
"The GTK Team",
|
"The GTK Team",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
@@ -103,7 +103,7 @@ static GActionEntry app_entries[] =
|
|||||||
static void
|
static void
|
||||||
icon_browser_app_startup (GApplication *app)
|
icon_browser_app_startup (GApplication *app)
|
||||||
{
|
{
|
||||||
const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
|
const char *quit_accels[2] = { "<Ctrl>Q", NULL };
|
||||||
|
|
||||||
G_APPLICATION_CLASS (icon_browser_app_parent_class)->startup (app);
|
G_APPLICATION_CLASS (icon_browser_app_parent_class)->startup (app);
|
||||||
|
|
||||||
|
|||||||
@@ -44,13 +44,13 @@ icon_browser_window_get_icon_theme (IconBrowserWindow *win)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_icon (IconBrowserWindow *win,
|
add_icon (IconBrowserWindow *win,
|
||||||
const gchar *name,
|
const char *name,
|
||||||
const gchar *description,
|
const char *description,
|
||||||
const gchar *context)
|
const char *context)
|
||||||
{
|
{
|
||||||
GtkIconTheme *icon_theme = icon_browser_window_get_icon_theme (win);
|
GtkIconTheme *icon_theme = icon_browser_window_get_icon_theme (win);
|
||||||
gchar *regular_name;
|
char *regular_name;
|
||||||
gchar *symbolic_name;
|
char *symbolic_name;
|
||||||
IbIcon *icon;
|
IbIcon *icon;
|
||||||
|
|
||||||
regular_name = g_strdup (name);
|
regular_name = g_strdup (name);
|
||||||
@@ -77,9 +77,9 @@ add_icon (IconBrowserWindow *win,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_context (IconBrowserWindow *win,
|
add_context (IconBrowserWindow *win,
|
||||||
const gchar *id,
|
const char *id,
|
||||||
const gchar *name,
|
const char *name,
|
||||||
const gchar *description)
|
const char *description)
|
||||||
{
|
{
|
||||||
IbContext *context;
|
IbContext *context;
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ copy_to_clipboard (GtkButton *button,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_image (GtkWidget *image, const gchar *name, gint size)
|
set_image (GtkWidget *image, const char *name, int size)
|
||||||
{
|
{
|
||||||
gtk_image_set_from_icon_name (GTK_IMAGE (image), name);
|
gtk_image_set_from_icon_name (GTK_IMAGE (image), name);
|
||||||
gtk_image_set_pixel_size (GTK_IMAGE (image), size);
|
gtk_image_set_pixel_size (GTK_IMAGE (image), size);
|
||||||
@@ -219,7 +219,7 @@ item_activated (GtkGridView *view,
|
|||||||
static GdkPaintable *
|
static GdkPaintable *
|
||||||
get_image_paintable (GtkImage *image)
|
get_image_paintable (GtkImage *image)
|
||||||
{
|
{
|
||||||
const gchar *icon_name;
|
const char *icon_name;
|
||||||
GtkIconTheme *icon_theme;
|
GtkIconTheme *icon_theme;
|
||||||
GtkIconPaintable *icon;
|
GtkIconPaintable *icon;
|
||||||
int size;
|
int size;
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
<property name="default-height">768</property>
|
<property name="default-height">768</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="header">
|
<object class="GtkHeaderBar" id="header">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child type="title">
|
<child type="title">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="43.000351" x2="85.000351" y1="39.000164" y2="39.000164">
|
||||||
|
<stop offset="0" stop-color="#26a269"/>
|
||||||
|
<stop offset="0.0934161" stop-color="#84e3b7"/>
|
||||||
|
<stop offset="0.330831" stop-color="#26a269"/>
|
||||||
|
<stop offset="0.686952" stop-color="#26a269"/>
|
||||||
|
<stop offset="0.89736" stop-color="#175e3c"/>
|
||||||
|
<stop offset="1" stop-color="#26a269"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="b" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#c0bfbc"/>
|
||||||
|
<stop offset="0.154754" stop-color="#ffffff"/>
|
||||||
|
<stop offset="0.433722" stop-color="#bdbbb5"/>
|
||||||
|
<stop offset="0.650505" stop-color="#c1c0ba"/>
|
||||||
|
<stop offset="0.825253" stop-color="#ffffff"/>
|
||||||
|
<stop offset="1" stop-color="#c0bfbc"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="c" gradientTransform="matrix(0.0811899 -0.046875 0.069079 0.119648 307.03142 127.069456)" x1="-1710.210571" x2="-1774.45166" xlink:href="#b" y1="-1202.376709" y2="-1202.376709"/>
|
||||||
|
<linearGradient id="d" gradientTransform="matrix(-0.0811899 -0.046875 -0.069079 0.119648 -177.242852 127.069447)" x1="-1710.210571" x2="-1774.45166" xlink:href="#b" y1="-1202.376709" y2="-1202.376709"/>
|
||||||
|
<linearGradient id="e" gradientUnits="userSpaceOnUse" x1="14" x2="56" y1="94.999964" y2="94.999964">
|
||||||
|
<stop offset="0" stop-color="#813d9c"/>
|
||||||
|
<stop offset="0.109119" stop-color="#b378ca"/>
|
||||||
|
<stop offset="0.241583" stop-color="#813d9c"/>
|
||||||
|
<stop offset="0.731841" stop-color="#813d9c"/>
|
||||||
|
<stop offset="0.872163" stop-color="#4d255d"/>
|
||||||
|
<stop offset="1" stop-color="#813d9c"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="f" gradientUnits="userSpaceOnUse" x1="72" x2="114" y1="94.999964" y2="94.999964">
|
||||||
|
<stop offset="0" stop-color="#e66100"/>
|
||||||
|
<stop offset="0.0678478" stop-color="#ff903e"/>
|
||||||
|
<stop offset="0.168852" stop-color="#e66100"/>
|
||||||
|
<stop offset="0.886626" stop-color="#e66100"/>
|
||||||
|
<stop offset="1" stop-color="#9d4200"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="g">
|
||||||
|
<rect height="128" width="128"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="h">
|
||||||
|
<rect height="128" width="128"/>
|
||||||
|
</clipPath>
|
||||||
|
<filter id="i" height="100%" width="100%" x="0%" y="0%">
|
||||||
|
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
|
||||||
|
</filter>
|
||||||
|
<mask id="j">
|
||||||
|
<g clip-path="url(#h)" filter="url(#i)">
|
||||||
|
<g clip-path="url(#g)">
|
||||||
|
<path d="m 51 18 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#a)"/>
|
||||||
|
<path d="m 51 12 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#57e389"/>
|
||||||
|
<path d="m 76.976562 55.453125 c 1.480469 -0.855469 3.371094 -0.347656 4.226563 1.132813 l 6.742187 11.679687 c 0.855469 1.480469 0.347657 3.371094 -1.132812 4.226563 c -1.480469 0.851562 -3.371094 0.347656 -4.226562 -1.132813 l -6.742188 -11.679687 c -0.855469 -1.480469 -0.347656 -3.371094 1.132812 -4.226563 z m 0 0" fill="url(#c)"/>
|
||||||
|
<path d="m 52.8125 55.453125 c -1.480469 -0.855469 -3.371094 -0.347656 -4.226562 1.132813 l -6.742188 11.679687 c -0.855469 1.480469 -0.347656 3.371094 1.132812 4.226563 c 1.480469 0.851562 3.371094 0.347656 4.226563 -1.132813 l 6.742187 -11.679687 c 0.855469 -1.480469 0.347657 -3.371094 -1.132812 -4.226563 z m 0 0" fill="url(#d)"/>
|
||||||
|
<path d="m 22 74 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#e)"/>
|
||||||
|
<path d="m 22 68 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#dc8add"/>
|
||||||
|
<path d="m 80 74 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#f)"/>
|
||||||
|
<path d="m 80 68 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#ffa348"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<mask id="k">
|
||||||
|
<g filter="url(#i)">
|
||||||
|
<rect fill-opacity="0.8" height="128" width="128"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<linearGradient id="l" gradientTransform="matrix(0 0.37 -0.98462 0 295.38501 -30.360001)" gradientUnits="userSpaceOnUse" x1="300" x2="428" y1="235" y2="235">
|
||||||
|
<stop offset="0" stop-color="#f9f06b"/>
|
||||||
|
<stop offset="1" stop-color="#f5c211"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="m">
|
||||||
|
<rect height="128" width="128"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="n">
|
||||||
|
<rect height="128" width="128"/>
|
||||||
|
</clipPath>
|
||||||
|
<path d="m 51 18 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#a)"/>
|
||||||
|
<path d="m 51 12 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#57e389"/>
|
||||||
|
<path d="m 76.976562 55.453125 c 1.480469 -0.855469 3.371094 -0.347656 4.226563 1.132813 l 6.742187 11.679687 c 0.855469 1.480469 0.347657 3.371094 -1.132812 4.226563 c -1.480469 0.851562 -3.371094 0.347656 -4.226562 -1.132813 l -6.742188 -11.679687 c -0.855469 -1.480469 -0.347656 -3.371094 1.132812 -4.226563 z m 0 0" fill="url(#c)"/>
|
||||||
|
<path d="m 52.8125 55.453125 c -1.480469 -0.855469 -3.371094 -0.347656 -4.226562 1.132813 l -6.742188 11.679687 c -0.855469 1.480469 -0.347656 3.371094 1.132812 4.226563 c 1.480469 0.851562 3.371094 0.347656 4.226563 -1.132813 l 6.742187 -11.679687 c 0.855469 -1.480469 0.347657 -3.371094 -1.132812 -4.226563 z m 0 0" fill="url(#d)"/>
|
||||||
|
<path d="m 22 74 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#e)"/>
|
||||||
|
<path d="m 22 68 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#dc8add"/>
|
||||||
|
<path d="m 80 74 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#f)"/>
|
||||||
|
<path d="m 80 68 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#ffa348"/>
|
||||||
|
<g clip-path="url(#n)" mask="url(#j)">
|
||||||
|
<g clip-path="url(#m)" mask="url(#k)">
|
||||||
|
<path d="m 128 80.640625 v 47.359375 h -128 v -47.359375 z m 0 0" fill="url(#l)"/>
|
||||||
|
<path d="m 13.308594 80.640625 l 47.355468 47.359375 h 21.214844 l -47.359375 -47.359375 z m 42.421875 0 l 47.363281 47.359375 h 21.214844 l -47.363282 -47.359375 z m 42.429687 0 l 29.839844 29.839844 v -21.210938 l -8.628906 -8.628906 z m -98.160156 7.90625 v 21.214844 l 18.238281 18.238281 h 21.214844 z m 0 0"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.4 KiB |
@@ -0,0 +1,44 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="43.000351" x2="85.000351" y1="39.000164" y2="39.000164">
|
||||||
|
<stop offset="0" stop-color="#26a269"/>
|
||||||
|
<stop offset="0.0934161" stop-color="#84e3b7"/>
|
||||||
|
<stop offset="0.330831" stop-color="#26a269"/>
|
||||||
|
<stop offset="0.686952" stop-color="#26a269"/>
|
||||||
|
<stop offset="0.89736" stop-color="#175e3c"/>
|
||||||
|
<stop offset="1" stop-color="#26a269"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="b" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#c0bfbc"/>
|
||||||
|
<stop offset="0.154754" stop-color="#ffffff"/>
|
||||||
|
<stop offset="0.433722" stop-color="#bdbbb5"/>
|
||||||
|
<stop offset="0.650505" stop-color="#c1c0ba"/>
|
||||||
|
<stop offset="0.825253" stop-color="#ffffff"/>
|
||||||
|
<stop offset="1" stop-color="#c0bfbc"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="c" gradientTransform="matrix(0.0811899 -0.046875 0.069079 0.119648 307.03142 127.069456)" x1="-1710.210571" x2="-1774.45166" xlink:href="#b" y1="-1202.376709" y2="-1202.376709"/>
|
||||||
|
<linearGradient id="d" gradientTransform="matrix(-0.0811899 -0.046875 -0.069079 0.119648 -177.242852 127.069447)" x1="-1710.210571" x2="-1774.45166" xlink:href="#b" y1="-1202.376709" y2="-1202.376709"/>
|
||||||
|
<linearGradient id="e" gradientUnits="userSpaceOnUse" x1="14" x2="56" y1="94.999964" y2="94.999964">
|
||||||
|
<stop offset="0" stop-color="#813d9c"/>
|
||||||
|
<stop offset="0.109119" stop-color="#b378ca"/>
|
||||||
|
<stop offset="0.241583" stop-color="#813d9c"/>
|
||||||
|
<stop offset="0.731841" stop-color="#813d9c"/>
|
||||||
|
<stop offset="0.872163" stop-color="#4d255d"/>
|
||||||
|
<stop offset="1" stop-color="#813d9c"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="f" gradientUnits="userSpaceOnUse" x1="72" x2="114" y1="94.999964" y2="94.999964">
|
||||||
|
<stop offset="0" stop-color="#e66100"/>
|
||||||
|
<stop offset="0.0678478" stop-color="#ff903e"/>
|
||||||
|
<stop offset="0.168852" stop-color="#e66100"/>
|
||||||
|
<stop offset="0.886626" stop-color="#e66100"/>
|
||||||
|
<stop offset="1" stop-color="#9d4200"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path d="m 51 18 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#a)"/>
|
||||||
|
<path d="m 51 12 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#57e389"/>
|
||||||
|
<path d="m 76.976562 55.453125 c 1.480469 -0.855469 3.371094 -0.347656 4.226563 1.132813 l 6.742187 11.679687 c 0.855469 1.480469 0.347657 3.371094 -1.132812 4.226563 c -1.480469 0.851562 -3.371094 0.347656 -4.226562 -1.132813 l -6.742188 -11.679687 c -0.855469 -1.480469 -0.347656 -3.371094 1.132812 -4.226563 z m 0 0" fill="url(#c)"/>
|
||||||
|
<path d="m 52.8125 55.453125 c -1.480469 -0.855469 -3.371094 -0.347656 -4.226562 1.132813 l -6.742188 11.679687 c -0.855469 1.480469 -0.347656 3.371094 1.132812 4.226563 c 1.480469 0.851562 3.371094 0.347656 4.226563 -1.132813 l 6.742187 -11.679687 c 0.855469 -1.480469 0.347657 -3.371094 -1.132812 -4.226563 z m 0 0" fill="url(#d)"/>
|
||||||
|
<path d="m 22 74 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#e)"/>
|
||||||
|
<path d="m 22 68 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#dc8add"/>
|
||||||
|
<path d="m 80 74 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#f)"/>
|
||||||
|
<path d="m 80 68 h 26 c 4.417969 0 8 3.582031 8 8 v 26 c 0 4.417969 -3.582031 8 -8 8 h -26 c -4.417969 0 -8 -3.582031 -8 -8 v -26 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#ffa348"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.0 KiB |
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m 5.75 1 c -0.414062 0 -0.75 0.335938 -0.75 0.75 v 4.5 c 0 0.414062 0.335938 0.75 0.75 0.75 h 0.191406 l -1 2 h -3.191406 c -0.414062 0 -0.75 0.335938 -0.75 0.75 v 4.5 c 0 0.414062 0.335938 0.75 0.75 0.75 h 4.5 c 0.414062 0 0.75 -0.335938 0.75 -0.75 v -4.5 c 0 -0.414062 -0.335938 -0.75 -0.75 -0.75 h -0.191406 l 1 -2 h 1.882812 l 1 2 h -0.191406 c -0.414062 0 -0.75 0.335938 -0.75 0.75 v 4.5 c 0 0.414062 0.335938 0.75 0.75 0.75 h 4.5 c 0.414062 0 0.75 -0.335938 0.75 -0.75 v -4.5 c 0 -0.414062 -0.335938 -0.75 -0.75 -0.75 h -3.191406 l -1 -2 h 0.191406 c 0.414062 0 0.75 -0.335938 0.75 -0.75 v -4.5 c 0 -0.414062 -0.335938 -0.75 -0.75 -0.75 z m 0 0"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 801 B |
@@ -19,3 +19,12 @@ executable('gtk4-node-editor',
|
|||||||
gui_app: true,
|
gui_app: true,
|
||||||
link_args: extra_demo_ldflags,
|
link_args: extra_demo_ldflags,
|
||||||
install: false)
|
install: false)
|
||||||
|
|
||||||
|
# icons
|
||||||
|
icontheme_dir = join_paths(gtk_datadir, 'icons/hicolor')
|
||||||
|
|
||||||
|
foreach size: ['scalable', 'symbolic']
|
||||||
|
install_subdir('data/' + size,
|
||||||
|
install_dir: icontheme_dir
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ activate_about (GSimpleAction *action,
|
|||||||
"website", "http://www.gtk.org",
|
"website", "http://www.gtk.org",
|
||||||
"comments", "Program to test GTK rendering",
|
"comments", "Program to test GTK rendering",
|
||||||
"authors", (const char *[]){ "Benjamin Otte", "Timm Bäder", NULL},
|
"authors", (const char *[]){ "Benjamin Otte", "Timm Bäder", NULL},
|
||||||
"logo-icon-name", "text-editor-symbolic",
|
"logo-icon-name", "org.gtk.gtk4.NodeEditor.Devel",
|
||||||
"title", "About GTK Node Editor",
|
"title", "About GTK Node Editor",
|
||||||
"system-information", s->str,
|
"system-information", s->str,
|
||||||
NULL);
|
NULL);
|
||||||
@@ -199,11 +199,11 @@ node_editor_application_activate (GApplication *app)
|
|||||||
static void
|
static void
|
||||||
node_editor_application_open (GApplication *app,
|
node_editor_application_open (GApplication *app,
|
||||||
GFile **files,
|
GFile **files,
|
||||||
gint n_files,
|
int n_files,
|
||||||
const gchar *hint)
|
const char *hint)
|
||||||
{
|
{
|
||||||
NodeEditorWindow *win;
|
NodeEditorWindow *win;
|
||||||
gint i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < n_files; i++)
|
for (i = 0; i < n_files; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ text_view_error_free (TextViewError *e)
|
|||||||
g_free (e->message);
|
g_free (e->message);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gchar *
|
static char *
|
||||||
get_current_text (GtkTextBuffer *buffer)
|
get_current_text (GtkTextBuffer *buffer)
|
||||||
{
|
{
|
||||||
GtkTextIter start, end;
|
GtkTextIter start, end;
|
||||||
@@ -288,14 +288,14 @@ text_view_query_tooltip_cb (GtkWidget *widget,
|
|||||||
|
|
||||||
if (keyboard_tip)
|
if (keyboard_tip)
|
||||||
{
|
{
|
||||||
gint offset;
|
int offset;
|
||||||
|
|
||||||
g_object_get (self->text_buffer, "cursor-position", &offset, NULL);
|
g_object_get (self->text_buffer, "cursor-position", &offset, NULL);
|
||||||
gtk_text_buffer_get_iter_at_offset (self->text_buffer, &iter, offset);
|
gtk_text_buffer_get_iter_at_offset (self->text_buffer, &iter, offset);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gint bx, by, trailing;
|
int bx, by, trailing;
|
||||||
|
|
||||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (self->text_view), GTK_TEXT_WINDOW_TEXT,
|
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (self->text_view), GTK_TEXT_WINDOW_TEXT,
|
||||||
x, y, &bx, &by);
|
x, y, &bx, &by);
|
||||||
@@ -399,7 +399,7 @@ node_editor_window_load (NodeEditorWindow *self,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
open_response_cb (GtkWidget *dialog,
|
open_response_cb (GtkWidget *dialog,
|
||||||
gint response,
|
int response,
|
||||||
NodeEditorWindow *self)
|
NodeEditorWindow *self)
|
||||||
{
|
{
|
||||||
gtk_widget_hide (dialog);
|
gtk_widget_hide (dialog);
|
||||||
@@ -448,7 +448,7 @@ open_cb (GtkWidget *button,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
save_response_cb (GtkWidget *dialog,
|
save_response_cb (GtkWidget *dialog,
|
||||||
gint response,
|
int response,
|
||||||
NodeEditorWindow *self)
|
NodeEditorWindow *self)
|
||||||
{
|
{
|
||||||
gtk_widget_hide (dialog);
|
gtk_widget_hide (dialog);
|
||||||
@@ -577,7 +577,7 @@ create_cairo_texture (NodeEditorWindow *self)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
export_image_response_cb (GtkWidget *dialog,
|
export_image_response_cb (GtkWidget *dialog,
|
||||||
gint response,
|
int response,
|
||||||
GdkTexture *texture)
|
GdkTexture *texture)
|
||||||
{
|
{
|
||||||
gtk_widget_hide (dialog);
|
gtk_widget_hide (dialog);
|
||||||
|
|||||||
@@ -103,7 +103,6 @@
|
|||||||
<property name="focus-widget">text_view</property>
|
<property name="focus-widget">text_view</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="header">
|
<object class="GtkHeaderBar" id="header">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child type="start">
|
<child type="start">
|
||||||
<object class="GtkButton">
|
<object class="GtkButton">
|
||||||
<property name="icon-name">document-open-symbolic</property>
|
<property name="icon-name">document-open-symbolic</property>
|
||||||
|
|||||||
@@ -0,0 +1,179 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="a" gradientTransform="matrix(0.232143 0 0 0.328947 -7.567033 263.82666)" gradientUnits="userSpaceOnUse" x1="88.595886" x2="536.595886" y1="-449.394012" y2="-449.394012">
|
||||||
|
<stop offset="0" stop-color="#acabae"/>
|
||||||
|
<stop offset="0.0384615" stop-color="#deddda"/>
|
||||||
|
<stop offset="0.0768555" stop-color="#c0bfbc"/>
|
||||||
|
<stop offset="0.923077" stop-color="#c0bfbc"/>
|
||||||
|
<stop offset="0.961538" stop-color="#deddda"/>
|
||||||
|
<stop offset="1" stop-color="#9a9996"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="b" gradientUnits="userSpaceOnUse" x1="26.999876" x2="100.999876" y1="32.999688" y2="32.999688">
|
||||||
|
<stop offset="0" stop-color="#7e7c77"/>
|
||||||
|
<stop offset="0.3" stop-color="#9a9996"/>
|
||||||
|
<stop offset="1" stop-color="#9a9996"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="67.467916" x2="67.467916" y1="83.999688" y2="36.782906">
|
||||||
|
<stop offset="0" stop-color="#deddda"/>
|
||||||
|
<stop offset="1" stop-color="#c0bfbc"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="d">
|
||||||
|
<path d="m 79 72 h 15 v 16 h -15 z m 0 0"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="e">
|
||||||
|
<path d="m 93.21875 72.921875 l -14.21875 14.21875 h -4.0625 v -18.28125 h 18.28125 z m 0 0"/>
|
||||||
|
</clipPath>
|
||||||
|
<linearGradient id="f" gradientTransform="matrix(0 0.126951 0.126951 0 76.460862 36.359884)" gradientUnits="userSpaceOnUse" x1="344" x2="340" y1="76" y2="72">
|
||||||
|
<stop offset="0" stop-color="#d5d3cf"/>
|
||||||
|
<stop offset="1" stop-color="#ffffff"/>
|
||||||
|
</linearGradient>
|
||||||
|
<filter id="g" height="100%" width="100%" x="0%" y="0%">
|
||||||
|
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
|
||||||
|
</filter>
|
||||||
|
<mask id="h">
|
||||||
|
<g filter="url(#g)">
|
||||||
|
<rect fill-opacity="0.396" height="128" width="128"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<linearGradient id="i" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#1c71d8"/>
|
||||||
|
<stop offset="0.323117" stop-color="#62a0ea"/>
|
||||||
|
<stop offset="0.59387" stop-color="#1b5aa6"/>
|
||||||
|
<stop offset="1" stop-color="#1c71d8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="j" gradientTransform="matrix(1.597748 1.597748 -1.06066 1.06066 -56.853041 -543.720139)" x1="224.504562" x2="231.453873" xlink:href="#i" y1="282.5" y2="282.5"/>
|
||||||
|
<radialGradient id="k" cx="227.599915" cy="201.029724" gradientTransform="matrix(4.072817 4.073078 -5.940048 5.939073 373.883117 -2098.049112)" gradientUnits="userSpaceOnUse" r="2.5">
|
||||||
|
<stop offset="0" stop-color="#93bdf1"/>
|
||||||
|
<stop offset="1" stop-color="#1a5fb4"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="l" gradientTransform="matrix(2.121328 2.121328 -2.174353 2.174353 181.766074 -1021.145947)" gradientUnits="userSpaceOnUse" x1="226.90625" x2="228.86203" y1="288.75" y2="288.767151">
|
||||||
|
<stop offset="0" stop-color="#77767b"/>
|
||||||
|
<stop offset="0.443872" stop-color="#f6f5f4"/>
|
||||||
|
<stop offset="1" stop-color="#5e5c64"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="m" gradientTransform="matrix(1.258421 1.258421 -1.06066 1.06066 57.381892 -503.024312)" gradientUnits="userSpaceOnUse" x1="223.1875" x2="233.0625" y1="278" y2="278">
|
||||||
|
<stop offset="0" stop-color="#ffa348"/>
|
||||||
|
<stop offset="0.265823" stop-color="#ffd7af"/>
|
||||||
|
<stop offset="0.734177" stop-color="#ff8d1c"/>
|
||||||
|
<stop offset="1" stop-color="#ffa348"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="n" gradientTransform="matrix(1.573027 1.573027 -1.06066 1.06066 -14.348129 -574.754333)" x1="224.504562" x2="231.453873" xlink:href="#i" y1="282.5" y2="282.5"/>
|
||||||
|
<clipPath id="o">
|
||||||
|
<path d="m 79 72 h 15 v 16 h -15 z m 0 0"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="p">
|
||||||
|
<path d="m 93.21875 72.921875 l -14.21875 14.21875 h -4.0625 v -18.28125 h 18.28125 z m 0 0"/>
|
||||||
|
</clipPath>
|
||||||
|
<mask id="q">
|
||||||
|
<g filter="url(#g)">
|
||||||
|
<rect fill-opacity="0.396" height="128" width="128"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<clipPath id="r">
|
||||||
|
<rect height="152" width="192"/>
|
||||||
|
</clipPath>
|
||||||
|
<g id="s" clip-path="url(#r)">
|
||||||
|
<path d="m 29 112 c -4.433594 0 -8 -3.566406 -8 -8 v -2 c 0 4.433594 3.566406 8 8 8 h 88 c 4.433594 0 8 -3.566406 8 -8 v 2 c 0 4.433594 -3.566406 8 -8 8 z m 0 0" fill="#f6f5f4"/>
|
||||||
|
</g>
|
||||||
|
<clipPath id="t">
|
||||||
|
<rect height="128" width="128"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="u">
|
||||||
|
<rect height="128" width="128"/>
|
||||||
|
</clipPath>
|
||||||
|
<mask id="v">
|
||||||
|
<g clip-path="url(#u)" filter="url(#g)">
|
||||||
|
<g clip-path="url(#t)">
|
||||||
|
<path d="m 21 16 c -4.433594 0 -8 3.566406 -8 8 v 84 c 0 4.433594 3.566406 8 8 8 h 4 v -4 h 80 v 4 h 4 c 4.433594 0 8 -3.566406 8 -8 v -84 c 0 -4.433594 -3.566406 -8 -8 -8 z m 0 0" fill="url(#a)"/>
|
||||||
|
<path d="m 21 12 h 88 c 4.417969 0 8 3.582031 8 8 v 68 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -68 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#deddda"/>
|
||||||
|
<path d="m 27 28 h 74 v 10 h -74 z m 0 0" fill="url(#b)"/>
|
||||||
|
<path d="m 27 38 h 74 v 46 h -74 z m 0 0" fill="url(#c)"/>
|
||||||
|
<path d="m 24 33 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0" fill="#bf5f00" fill-opacity="0.964567"/>
|
||||||
|
<path d="m 18 40 h 6 v 12 h -6 z m 0 0" fill="#acacac" fill-opacity="0.984252"/>
|
||||||
|
<path d="m 18 40 h 6 v 10 h -6 z m 0 0" fill="#d1d1d1" fill-opacity="0.984252"/>
|
||||||
|
<path d="m 37 36 h 56 v 44 h -56 z m 0 0" fill="#deddda" fill-opacity="0.984252"/>
|
||||||
|
<path d="m 37 34 h 56 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 h -56 c -1.105469 0 -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill-opacity="0.940945"/>
|
||||||
|
<path d="m 37 36.859375 h 56 v 36.925781 l -14.125 14.214844 h -41.875 z m 0 0" fill="#9a9996" fill-opacity="0.984252"/>
|
||||||
|
<path d="m 37 36 h 56 v 36.925781 l -14.125 14.214844 h -41.875 z m 0 0" fill="#f6f5f4" fill-opacity="0.984252"/>
|
||||||
|
<g clip-path="url(#o)">
|
||||||
|
<g clip-path="url(#p)">
|
||||||
|
<path d="m 79 77.386719 v 9.351562 c 0 2.464844 2 4.464844 4.464844 4.464844 h 9.351562 c 2.464844 0 4.464844 -2 4.464844 -4.464844 v -9.351562 c 0 -2.464844 -2 -4.464844 -4.464844 -4.464844 h -9.351562 c -2.464844 0 -4.464844 2 -4.464844 4.464844 z m 0 0" fill="url(#f)"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<path d="m 27 100 h 76 c 1.109375 0 2 0.890625 2 2 v 10 h -80 v -10 c 0 -1.109375 0.890625 -2 2 -2 z m 0 0" fill="#5e5c64" fill-opacity="0.940945"/>
|
||||||
|
<path d="m 27 102 h 76 c 1.109375 0 2 0.890625 2 2 v 10 h -80 v -10 c 0 -1.109375 0.890625 -2 2 -2 z m 0 0" fill="#9a9996"/>
|
||||||
|
<path d="m 13 106 v 2 c 0 4.433594 3.566406 8 8 8 h 4 v -2 h -4 c -4.433594 0 -8 -3.566406 -8 -8 z m 104 0 c 0 4.433594 -3.566406 8 -8 8 h -4 v 2 h 4 c 4.433594 0 8 -3.566406 8 -8 z m -92 6 v 2 h 80 v -2 z m 0 0" fill="#9e9c99" fill-opacity="0.366142"/>
|
||||||
|
<path d="m 27 38 v 46 l 6 -46 z m 0 0" fill="#7e7c77" fill-opacity="0.11811"/>
|
||||||
|
<path d="m 24 32 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0" fill="#ffa348" fill-opacity="0.964567"/>
|
||||||
|
<use mask="url(#q)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#s"/>
|
||||||
|
<path d="m 89.503906 31.144531 l 10.066406 10.066407 l -41.71875 41.71875 l -10.066406 -10.066407 z m 0 0" fill="#ffa348"/>
|
||||||
|
<path d="m 88.246094 29.886719 l 7.550781 7.550781 l -41.71875 41.71875 l -7.550781 -7.550781 z m 0 0" fill="#ff7800"/>
|
||||||
|
<path d="m 86.789062 28.429688 l 2.515626 2.515624 l -41.71875 41.71875 l -2.515626 -2.515624 z m 0 0" fill="#ffbe6f"/>
|
||||||
|
<path d="m 121.898438 -0.101562 c -4.855469 0.921874 -11.730469 5.152343 -18.140626 11.558593 l -16.96875 16.972657 l 12.78125 12.78125 l 16.972657 -16.972657 c 6.40625 -6.40625 10.636719 -13.28125 11.558593 -18.136719 z m 0 0" fill="url(#j)"/>
|
||||||
|
<path d="m 110.011719 13.882812 c -2.1875 -0.398437 -5.421875 0.988282 -8.167969 3.730469 l -11.871094 11.875 l -6.6875 6.6875 c -4.800781 4.800781 -9.234375 12.007813 -9.648437 13.042969 c -0.484375 1.207031 -0.449219 2.730469 0.953125 4.136719 c 1.40625 1.40625 2.917968 1.441406 4.136718 0.953125 c 1.035157 -0.414063 8.292969 -4.984375 13.042969 -9.648438 l 2.402344 -2.398437 l 16.160156 -16.160157 c 2.742188 -2.746093 4.128907 -5.976562 3.730469 -8.167968 c -0.742188 1.390625 -1.859375 2.902344 -3.308594 4.347656 l -13.996094 13.996094 l -5.089843 -5.089844 l 13.996093 -13.996094 c 1.445313 -1.445312 2.960938 -2.566406 4.347657 -3.308594 z m 0 0" fill="url(#k)"/>
|
||||||
|
<path d="m 95.273438 36.914062 l -2.960938 2.960938 l -2.398438 2.402344 c -4.90625 5.101562 -11.855468 10.828125 -11.855468 10.828125 c 1.011718 -0.433594 8.167968 -5.101563 12.914062 -9.769531 l 2.402344 -2.402344 l 2.960938 -2.957032 z m 0 0" fill="#62a0ea"/>
|
||||||
|
<path d="m 87.320312 26.835938 l 13.789063 13.789062 c 0.292969 0.292969 0.292969 0.769531 0 1.0625 s -0.769531 0.292969 -1.0625 0 l -13.789063 -13.789062 c -0.292968 -0.292969 -0.292968 -0.769532 0 -1.0625 c 0.292969 -0.289063 0.769532 -0.289063 1.0625 0 z m 0 0" fill="#3584e4"/>
|
||||||
|
<path d="m 42.421875 89.765625 c -3 3 -6.382813 4.484375 -7.554687 3.3125 c -1.171876 -1.171875 0.3125 -4.554687 3.3125 -7.554687 c 3.003906 -3.003907 6.386718 -4.488282 7.558593 -3.316407 s -0.3125 4.554688 -3.316406 7.558594 z m 0 0" fill="url(#l)"/>
|
||||||
|
<path d="m 45.269531 70.347656 l -7.851562 12.511719 l 7.835937 7.925781 l 12.597656 -7.855468 z m -6.039062 13.171875 l 5.449219 5.449219 c 0.347656 0.347656 0.449218 0.933594 0.097656 1.160156 c -0.886719 0.570313 -2.9375 1.539063 -2.9375 1.539063 c -0.25 0.128906 -0.539063 0.164062 -0.773438 -0.066407 l -4.546875 -4.550781 c -0.234375 -0.230469 -0.207031 -0.527343 -0.066406 -0.773437 l 1.617187 -2.859375 c 0.207032 -0.363281 0.8125 -0.25 1.160157 0.101562 z m 0 0" fill="url(#m)"/>
|
||||||
|
<path d="m 43.332031 74.777344 l 9.867188 9.867187 c 0.394531 0.390625 0.476562 0.871094 0.128906 1.066407 l -7.710937 5.253906 c -0.308594 0.210937 -0.785157 0.160156 -1.171876 -0.226563 l -6.984374 -6.988281 c -0.386719 -0.386719 -0.4375 -0.859375 -0.230469 -1.167969 l 5.234375 -7.8125 c 0.125 -0.285156 0.558594 -0.304687 0.867187 0.007813 z m 0 0" fill="url(#n)"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<mask id="w">
|
||||||
|
<g filter="url(#g)">
|
||||||
|
<rect fill-opacity="0.8" height="128" width="128"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<linearGradient id="x" gradientTransform="matrix(0 0.37 -0.98462 0 295.38501 -30.360001)" gradientUnits="userSpaceOnUse" x1="300" x2="428" y1="235" y2="235">
|
||||||
|
<stop offset="0" stop-color="#f9f06b"/>
|
||||||
|
<stop offset="1" stop-color="#f5c211"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="y">
|
||||||
|
<rect height="128" width="128"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="z">
|
||||||
|
<rect height="128" width="128"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<path d="m 21 16 c -4.433594 0 -8 3.566406 -8 8 v 84 c 0 4.433594 3.566406 8 8 8 h 4 v -4 h 80 v 4 h 4 c 4.433594 0 8 -3.566406 8 -8 v -84 c 0 -4.433594 -3.566406 -8 -8 -8 z m 0 0" fill="url(#a)"/>
|
||||||
|
<path d="m 21 12 h 88 c 4.417969 0 8 3.582031 8 8 v 68 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -68 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#deddda"/>
|
||||||
|
<path d="m 27 28 h 74 v 10 h -74 z m 0 0" fill="url(#b)"/>
|
||||||
|
<path d="m 27 38 h 74 v 46 h -74 z m 0 0" fill="url(#c)"/>
|
||||||
|
<path d="m 24 33 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0" fill="#bf5f00" fill-opacity="0.964567"/>
|
||||||
|
<g fill-opacity="0.984252">
|
||||||
|
<path d="m 18 40 h 6 v 12 h -6 z m 0 0" fill="#acacac"/>
|
||||||
|
<path d="m 18 40 h 6 v 10 h -6 z m 0 0" fill="#d1d1d1"/>
|
||||||
|
<path d="m 37 36 h 56 v 44 h -56 z m 0 0" fill="#deddda"/>
|
||||||
|
</g>
|
||||||
|
<path d="m 37 34 h 56 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 h -56 c -1.105469 0 -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill-opacity="0.940945"/>
|
||||||
|
<path d="m 37 36.859375 h 56 v 36.925781 l -14.125 14.214844 h -41.875 z m 0 0" fill="#9a9996" fill-opacity="0.984252"/>
|
||||||
|
<path d="m 37 36 h 56 v 36.925781 l -14.125 14.214844 h -41.875 z m 0 0" fill="#f6f5f4" fill-opacity="0.984252"/>
|
||||||
|
<g clip-path="url(#d)">
|
||||||
|
<g clip-path="url(#e)">
|
||||||
|
<path d="m 79 77.386719 v 9.351562 c 0 2.464844 2 4.464844 4.464844 4.464844 h 9.351562 c 2.464844 0 4.464844 -2 4.464844 -4.464844 v -9.351562 c 0 -2.464844 -2 -4.464844 -4.464844 -4.464844 h -9.351562 c -2.464844 0 -4.464844 2 -4.464844 4.464844 z m 0 0" fill="url(#f)"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<path d="m 27 100 h 76 c 1.109375 0 2 0.890625 2 2 v 10 h -80 v -10 c 0 -1.109375 0.890625 -2 2 -2 z m 0 0" fill="#5e5c64" fill-opacity="0.940945"/>
|
||||||
|
<path d="m 27 102 h 76 c 1.109375 0 2 0.890625 2 2 v 10 h -80 v -10 c 0 -1.109375 0.890625 -2 2 -2 z m 0 0" fill="#9a9996"/>
|
||||||
|
<path d="m 13 106 v 2 c 0 4.433594 3.566406 8 8 8 h 4 v -2 h -4 c -4.433594 0 -8 -3.566406 -8 -8 z m 104 0 c 0 4.433594 -3.566406 8 -8 8 h -4 v 2 h 4 c 4.433594 0 8 -3.566406 8 -8 z m -92 6 v 2 h 80 v -2 z m 0 0" fill="#9e9c99" fill-opacity="0.366142"/>
|
||||||
|
<path d="m 27 38 v 46 l 6 -46 z m 0 0" fill="#7e7c77" fill-opacity="0.11811"/>
|
||||||
|
<path d="m 24 32 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0" fill="#ffa348" fill-opacity="0.964567"/>
|
||||||
|
<use mask="url(#h)" transform="matrix(1 0 0 1 -8 -16)" xlink:href="#s"/>
|
||||||
|
<path d="m 89.503906 31.144531 l 10.066406 10.066407 l -41.71875 41.71875 l -10.066406 -10.066407 z m 0 0" fill="#ffa348"/>
|
||||||
|
<path d="m 88.246094 29.886719 l 7.550781 7.550781 l -41.71875 41.71875 l -7.550781 -7.550781 z m 0 0" fill="#ff7800"/>
|
||||||
|
<path d="m 86.789062 28.429688 l 2.515626 2.515624 l -41.71875 41.71875 l -2.515626 -2.515624 z m 0 0" fill="#ffbe6f"/>
|
||||||
|
<path d="m 121.898438 -0.101562 c -4.855469 0.921874 -11.730469 5.152343 -18.140626 11.558593 l -16.96875 16.972657 l 12.78125 12.78125 l 16.972657 -16.972657 c 6.40625 -6.40625 10.636719 -13.28125 11.558593 -18.136719 z m 0 0" fill="url(#j)"/>
|
||||||
|
<path d="m 110.011719 13.882812 c -2.1875 -0.398437 -5.421875 0.988282 -8.167969 3.730469 l -11.871094 11.875 l -6.6875 6.6875 c -4.800781 4.800781 -9.234375 12.007813 -9.648437 13.042969 c -0.484375 1.207031 -0.449219 2.730469 0.953125 4.136719 c 1.40625 1.40625 2.917968 1.441406 4.136718 0.953125 c 1.035157 -0.414063 8.292969 -4.984375 13.042969 -9.648438 l 2.402344 -2.398437 l 16.160156 -16.160157 c 2.742188 -2.746093 4.128907 -5.976562 3.730469 -8.167968 c -0.742188 1.390625 -1.859375 2.902344 -3.308594 4.347656 l -13.996094 13.996094 l -5.089843 -5.089844 l 13.996093 -13.996094 c 1.445313 -1.445312 2.960938 -2.566406 4.347657 -3.308594 z m 0 0" fill="url(#k)"/>
|
||||||
|
<path d="m 95.273438 36.914062 l -2.960938 2.960938 l -2.398438 2.402344 c -4.90625 5.101562 -11.855468 10.828125 -11.855468 10.828125 c 1.011718 -0.433594 8.167968 -5.101563 12.914062 -9.769531 l 2.402344 -2.402344 l 2.960938 -2.957032 z m 0 0" fill="#62a0ea"/>
|
||||||
|
<path d="m 87.320312 26.835938 l 13.789063 13.789062 c 0.292969 0.292969 0.292969 0.769531 0 1.0625 s -0.769531 0.292969 -1.0625 0 l -13.789063 -13.789062 c -0.292968 -0.292969 -0.292968 -0.769532 0 -1.0625 c 0.292969 -0.289063 0.769532 -0.289063 1.0625 0 z m 0 0" fill="#3584e4"/>
|
||||||
|
<path d="m 42.421875 89.765625 c -3 3 -6.382813 4.484375 -7.554687 3.3125 c -1.171876 -1.171875 0.3125 -4.554687 3.3125 -7.554687 c 3.003906 -3.003907 6.386718 -4.488282 7.558593 -3.316407 s -0.3125 4.554688 -3.316406 7.558594 z m 0 0" fill="url(#l)"/>
|
||||||
|
<path d="m 45.269531 70.347656 l -7.851562 12.511719 l 7.835937 7.925781 l 12.597656 -7.855468 z m -6.039062 13.171875 l 5.449219 5.449219 c 0.347656 0.347656 0.449218 0.933594 0.097656 1.160156 c -0.886719 0.570313 -2.9375 1.539063 -2.9375 1.539063 c -0.25 0.128906 -0.539063 0.164062 -0.773438 -0.066407 l -4.546875 -4.550781 c -0.234375 -0.230469 -0.207031 -0.527343 -0.066406 -0.773437 l 1.617187 -2.859375 c 0.207032 -0.363281 0.8125 -0.25 1.160157 0.101562 z m 0 0" fill="url(#m)"/>
|
||||||
|
<path d="m 43.332031 74.777344 l 9.867188 9.867187 c 0.394531 0.390625 0.476562 0.871094 0.128906 1.066407 l -7.710937 5.253906 c -0.308594 0.210937 -0.785157 0.160156 -1.171876 -0.226563 l -6.984374 -6.988281 c -0.386719 -0.386719 -0.4375 -0.859375 -0.230469 -1.167969 l 5.234375 -7.8125 c 0.125 -0.285156 0.558594 -0.304687 0.867187 0.007813 z m 0 0" fill="url(#n)"/>
|
||||||
|
<g clip-path="url(#z)" mask="url(#v)">
|
||||||
|
<g clip-path="url(#y)" mask="url(#w)">
|
||||||
|
<path d="m 128 80.640625 v 47.359375 h -128 v -47.359375 z m 0 0" fill="url(#x)"/>
|
||||||
|
<path d="m 13.308594 80.640625 l 47.355468 47.359375 h 21.214844 l -47.359375 -47.359375 z m 42.421875 0 l 47.363281 47.359375 h 21.214844 l -47.363282 -47.359375 z m 42.429687 0 l 29.839844 29.839844 v -21.210938 l -8.628906 -8.628906 z m -98.160156 7.90625 v 21.214844 l 18.238281 18.238281 h 21.214844 z m 0 0"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 18 KiB |
100
demos/print-editor/data/scalable/apps/org.gtk.PrintEditor4.svg
Normal file
100
demos/print-editor/data/scalable/apps/org.gtk.PrintEditor4.svg
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<linearGradient id="a" gradientTransform="matrix(0.232143 0 0 0.328947 -7.567033 263.82666)" gradientUnits="userSpaceOnUse" x1="88.595886" x2="536.595886" y1="-449.394012" y2="-449.394012">
|
||||||
|
<stop offset="0" stop-color="#acabae"/>
|
||||||
|
<stop offset="0.0384615" stop-color="#deddda"/>
|
||||||
|
<stop offset="0.0768555" stop-color="#c0bfbc"/>
|
||||||
|
<stop offset="0.923077" stop-color="#c0bfbc"/>
|
||||||
|
<stop offset="0.961538" stop-color="#deddda"/>
|
||||||
|
<stop offset="1" stop-color="#9a9996"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="b" gradientUnits="userSpaceOnUse" x1="26.999876" x2="100.999876" y1="32.999688" y2="32.999688">
|
||||||
|
<stop offset="0" stop-color="#7e7c77"/>
|
||||||
|
<stop offset="0.3" stop-color="#9a9996"/>
|
||||||
|
<stop offset="1" stop-color="#9a9996"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="67.467916" x2="67.467916" y1="83.999688" y2="36.782906">
|
||||||
|
<stop offset="0" stop-color="#deddda"/>
|
||||||
|
<stop offset="1" stop-color="#c0bfbc"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="d">
|
||||||
|
<path d="m 79 72 h 15 v 16 h -15 z m 0 0"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="e">
|
||||||
|
<path d="m 93.21875 72.921875 l -14.21875 14.21875 h -4.0625 v -18.28125 h 18.28125 z m 0 0"/>
|
||||||
|
</clipPath>
|
||||||
|
<linearGradient id="f" gradientTransform="matrix(0 0.126951 0.126951 0 76.460862 36.359884)" gradientUnits="userSpaceOnUse" x1="344" x2="340" y1="76" y2="72">
|
||||||
|
<stop offset="0" stop-color="#d5d3cf"/>
|
||||||
|
<stop offset="1" stop-color="#ffffff"/>
|
||||||
|
</linearGradient>
|
||||||
|
<filter id="g" height="100%" width="100%" x="0%" y="0%">
|
||||||
|
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
|
||||||
|
</filter>
|
||||||
|
<mask id="h">
|
||||||
|
<g filter="url(#g)">
|
||||||
|
<rect fill-opacity="0.396" height="128" width="128"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<clipPath id="i">
|
||||||
|
<rect height="152" width="192"/>
|
||||||
|
</clipPath>
|
||||||
|
<linearGradient id="j" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#1c71d8"/>
|
||||||
|
<stop offset="0.323117" stop-color="#62a0ea"/>
|
||||||
|
<stop offset="0.59387" stop-color="#1b5aa6"/>
|
||||||
|
<stop offset="1" stop-color="#1c71d8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="k" gradientTransform="matrix(1.597748 1.597748 -1.06066 1.06066 -56.853041 -543.720139)" x1="224.504562" x2="231.453873" xlink:href="#j" y1="282.5" y2="282.5"/>
|
||||||
|
<radialGradient id="l" cx="227.599915" cy="201.029724" gradientTransform="matrix(4.072817 4.073078 -5.940048 5.939073 373.883117 -2098.049112)" gradientUnits="userSpaceOnUse" r="2.5">
|
||||||
|
<stop offset="0" stop-color="#93bdf1"/>
|
||||||
|
<stop offset="1" stop-color="#1a5fb4"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="m" gradientTransform="matrix(2.121328 2.121328 -2.174353 2.174353 181.766074 -1021.145947)" gradientUnits="userSpaceOnUse" x1="226.90625" x2="228.86203" y1="288.75" y2="288.767151">
|
||||||
|
<stop offset="0" stop-color="#77767b"/>
|
||||||
|
<stop offset="0.443872" stop-color="#f6f5f4"/>
|
||||||
|
<stop offset="1" stop-color="#5e5c64"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="n" gradientTransform="matrix(1.258421 1.258421 -1.06066 1.06066 57.381892 -503.024312)" gradientUnits="userSpaceOnUse" x1="223.1875" x2="233.0625" y1="278" y2="278">
|
||||||
|
<stop offset="0" stop-color="#ffa348"/>
|
||||||
|
<stop offset="0.265823" stop-color="#ffd7af"/>
|
||||||
|
<stop offset="0.734177" stop-color="#ff8d1c"/>
|
||||||
|
<stop offset="1" stop-color="#ffa348"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="o" gradientTransform="matrix(1.573027 1.573027 -1.06066 1.06066 -14.348129 -574.754333)" x1="224.504562" x2="231.453873" xlink:href="#j" y1="282.5" y2="282.5"/>
|
||||||
|
<path d="m 21 16 c -4.433594 0 -8 3.566406 -8 8 v 84 c 0 4.433594 3.566406 8 8 8 h 4 v -4 h 80 v 4 h 4 c 4.433594 0 8 -3.566406 8 -8 v -84 c 0 -4.433594 -3.566406 -8 -8 -8 z m 0 0" fill="url(#a)"/>
|
||||||
|
<path d="m 21 12 h 88 c 4.417969 0 8 3.582031 8 8 v 68 c 0 4.417969 -3.582031 8 -8 8 h -88 c -4.417969 0 -8 -3.582031 -8 -8 v -68 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="#deddda"/>
|
||||||
|
<path d="m 27 28 h 74 v 10 h -74 z m 0 0" fill="url(#b)"/>
|
||||||
|
<path d="m 27 38 h 74 v 46 h -74 z m 0 0" fill="url(#c)"/>
|
||||||
|
<path d="m 24 33 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0" fill="#bf5f00" fill-opacity="0.964567"/>
|
||||||
|
<g fill-opacity="0.984252">
|
||||||
|
<path d="m 18 40 h 6 v 12 h -6 z m 0 0" fill="#acacac"/>
|
||||||
|
<path d="m 18 40 h 6 v 10 h -6 z m 0 0" fill="#d1d1d1"/>
|
||||||
|
<path d="m 37 36 h 56 v 44 h -56 z m 0 0" fill="#deddda"/>
|
||||||
|
</g>
|
||||||
|
<path d="m 37 34 h 56 c 1.105469 0 2 0.894531 2 2 s -0.894531 2 -2 2 h -56 c -1.105469 0 -2 -0.894531 -2 -2 s 0.894531 -2 2 -2 z m 0 0" fill-opacity="0.940945"/>
|
||||||
|
<path d="m 37 36.859375 h 56 v 36.925781 l -14.125 14.214844 h -41.875 z m 0 0" fill="#9a9996" fill-opacity="0.984252"/>
|
||||||
|
<path d="m 37 36 h 56 v 36.925781 l -14.125 14.214844 h -41.875 z m 0 0" fill="#f6f5f4" fill-opacity="0.984252"/>
|
||||||
|
<g clip-path="url(#d)">
|
||||||
|
<g clip-path="url(#e)">
|
||||||
|
<path d="m 79 77.386719 v 9.351562 c 0 2.464844 2 4.464844 4.464844 4.464844 h 9.351562 c 2.464844 0 4.464844 -2 4.464844 -4.464844 v -9.351562 c 0 -2.464844 -2 -4.464844 -4.464844 -4.464844 h -9.351562 c -2.464844 0 -4.464844 2 -4.464844 4.464844 z m 0 0" fill="url(#f)"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<path d="m 27 100 h 76 c 1.109375 0 2 0.890625 2 2 v 10 h -80 v -10 c 0 -1.109375 0.890625 -2 2 -2 z m 0 0" fill="#5e5c64" fill-opacity="0.940945"/>
|
||||||
|
<path d="m 27 102 h 76 c 1.109375 0 2 0.890625 2 2 v 10 h -80 v -10 c 0 -1.109375 0.890625 -2 2 -2 z m 0 0" fill="#9a9996"/>
|
||||||
|
<path d="m 13 106 v 2 c 0 4.433594 3.566406 8 8 8 h 4 v -2 h -4 c -4.433594 0 -8 -3.566406 -8 -8 z m 104 0 c 0 4.433594 -3.566406 8 -8 8 h -4 v 2 h 4 c 4.433594 0 8 -3.566406 8 -8 z m -92 6 v 2 h 80 v -2 z m 0 0" fill="#9e9c99" fill-opacity="0.366142"/>
|
||||||
|
<path d="m 27 38 v 46 l 6 -46 z m 0 0" fill="#7e7c77" fill-opacity="0.11811"/>
|
||||||
|
<path d="m 24 32 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0" fill="#ffa348" fill-opacity="0.964567"/>
|
||||||
|
<g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -8 -16)">
|
||||||
|
<path d="m 29 112 c -4.433594 0 -8 -3.566406 -8 -8 v -2 c 0 4.433594 3.566406 8 8 8 h 88 c 4.433594 0 8 -3.566406 8 -8 v 2 c 0 4.433594 -3.566406 8 -8 8 z m 0 0" fill="#f6f5f4"/>
|
||||||
|
</g>
|
||||||
|
<path d="m 89.503906 31.144531 l 10.066406 10.066407 l -41.71875 41.71875 l -10.066406 -10.066407 z m 0 0" fill="#ffa348"/>
|
||||||
|
<path d="m 88.246094 29.886719 l 7.550781 7.550781 l -41.71875 41.71875 l -7.550781 -7.550781 z m 0 0" fill="#ff7800"/>
|
||||||
|
<path d="m 86.789062 28.429688 l 2.515626 2.515624 l -41.71875 41.71875 l -2.515626 -2.515624 z m 0 0" fill="#ffbe6f"/>
|
||||||
|
<path d="m 121.898438 -0.101562 c -4.855469 0.921874 -11.730469 5.152343 -18.140626 11.558593 l -16.96875 16.972657 l 12.78125 12.78125 l 16.972657 -16.972657 c 6.40625 -6.40625 10.636719 -13.28125 11.558593 -18.136719 z m 0 0" fill="url(#k)"/>
|
||||||
|
<path d="m 110.011719 13.882812 c -2.1875 -0.398437 -5.421875 0.988282 -8.167969 3.730469 l -11.871094 11.875 l -6.6875 6.6875 c -4.800781 4.800781 -9.234375 12.007813 -9.648437 13.042969 c -0.484375 1.207031 -0.449219 2.730469 0.953125 4.136719 c 1.40625 1.40625 2.917968 1.441406 4.136718 0.953125 c 1.035157 -0.414063 8.292969 -4.984375 13.042969 -9.648438 l 2.402344 -2.398437 l 16.160156 -16.160157 c 2.742188 -2.746093 4.128907 -5.976562 3.730469 -8.167968 c -0.742188 1.390625 -1.859375 2.902344 -3.308594 4.347656 l -13.996094 13.996094 l -5.089843 -5.089844 l 13.996093 -13.996094 c 1.445313 -1.445312 2.960938 -2.566406 4.347657 -3.308594 z m 0 0" fill="url(#l)"/>
|
||||||
|
<path d="m 95.273438 36.914062 l -2.960938 2.960938 l -2.398438 2.402344 c -4.90625 5.101562 -11.855468 10.828125 -11.855468 10.828125 c 1.011718 -0.433594 8.167968 -5.101563 12.914062 -9.769531 l 2.402344 -2.402344 l 2.960938 -2.957032 z m 0 0" fill="#62a0ea"/>
|
||||||
|
<path d="m 87.320312 26.835938 l 13.789063 13.789062 c 0.292969 0.292969 0.292969 0.769531 0 1.0625 s -0.769531 0.292969 -1.0625 0 l -13.789063 -13.789062 c -0.292968 -0.292969 -0.292968 -0.769532 0 -1.0625 c 0.292969 -0.289063 0.769532 -0.289063 1.0625 0 z m 0 0" fill="#3584e4"/>
|
||||||
|
<path d="m 42.421875 89.765625 c -3 3 -6.382813 4.484375 -7.554687 3.3125 c -1.171876 -1.171875 0.3125 -4.554687 3.3125 -7.554687 c 3.003906 -3.003907 6.386718 -4.488282 7.558593 -3.316407 s -0.3125 4.554688 -3.316406 7.558594 z m 0 0" fill="url(#m)"/>
|
||||||
|
<path d="m 45.269531 70.347656 l -7.851562 12.511719 l 7.835937 7.925781 l 12.597656 -7.855468 z m -6.039062 13.171875 l 5.449219 5.449219 c 0.347656 0.347656 0.449218 0.933594 0.097656 1.160156 c -0.886719 0.570313 -2.9375 1.539063 -2.9375 1.539063 c -0.25 0.128906 -0.539063 0.164062 -0.773438 -0.066407 l -4.546875 -4.550781 c -0.234375 -0.230469 -0.207031 -0.527343 -0.066406 -0.773437 l 1.617187 -2.859375 c 0.207032 -0.363281 0.8125 -0.25 1.160157 0.101562 z m 0 0" fill="url(#n)"/>
|
||||||
|
<path d="m 43.332031 74.777344 l 9.867188 9.867187 c 0.394531 0.390625 0.476562 0.871094 0.128906 1.066407 l -7.710937 5.253906 c -0.308594 0.210937 -0.785157 0.160156 -1.171876 -0.226563 l -6.984374 -6.988281 c -0.386719 -0.386719 -0.4375 -0.859375 -0.230469 -1.167969 l 5.234375 -7.8125 c 0.125 -0.285156 0.558594 -0.304687 0.867187 0.007813 z m 0 0" fill="url(#o)"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 9.4 KiB |
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<filter id="a" height="100%" width="100%" x="0%" y="0%">
|
||||||
|
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
|
||||||
|
</filter>
|
||||||
|
<mask id="b">
|
||||||
|
<g filter="url(#a)">
|
||||||
|
<rect fill-opacity="0.396" height="16" width="16"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<clipPath id="c">
|
||||||
|
<rect height="152" width="192"/>
|
||||||
|
</clipPath>
|
||||||
|
<g clip-path="url(#c)" mask="url(#b)" transform="matrix(1 0 0 1 -168 -16)">
|
||||||
|
<path d="m 29 112 c -4.433594 0 -8 -3.566406 -8 -8 v -2 c 0 4.433594 3.566406 8 8 8 h 88 c 4.433594 0 8 -3.566406 8 -8 v 2 c 0 4.433594 -3.566406 8 -8 8 z m 0 0" fill="#f6f5f4"/>
|
||||||
|
</g>
|
||||||
|
<g fill="#2e3436">
|
||||||
|
<path d="m 4 2 v 2 h 5.585938 l 2 -2 z m -2 3 c -0.5 0 -1 0.5 -1 1 v 4 c 0 0.5 0.5 1 1 1 h 1 v -2 h 2 c 0 -0.265625 0.105469 -0.519531 0.292969 -0.707031 l 3.292969 -3.292969 z m 11.414062 0 l -4 4 h 3.585938 v 2 h 1 c 0.5 0 1 -0.5 1 -1 v -4 c 0 -0.5 -0.5 -1 -1 -1 z m -9.414062 5 v 5 h 8 v -5 h -3.585938 l -0.707031 0.707031 c -0.1875 0.1875 -0.441406 0.292969 -0.707031 0.292969 h -1 c -0.550781 0 -1 -0.449219 -1 -1 z m 0 0"/>
|
||||||
|
<path d="m 6 10 h 1 l 9 -9 l -1 -1 l -9 9 z m 0 0"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -12,3 +12,12 @@ install_data('org.gtk.PrintEditor4.desktop', install_dir: gtk_applicationsdir)
|
|||||||
|
|
||||||
# appdata
|
# appdata
|
||||||
install_data('org.gtk.PrintEditor4.appdata.xml', install_dir: gtk_appdatadir)
|
install_data('org.gtk.PrintEditor4.appdata.xml', install_dir: gtk_appdatadir)
|
||||||
|
|
||||||
|
# icons
|
||||||
|
icontheme_dir = join_paths(gtk_datadir, 'icons/hicolor')
|
||||||
|
|
||||||
|
foreach size: ['scalable', 'symbolic']
|
||||||
|
install_subdir('data/' + size,
|
||||||
|
install_dir: icontheme_dir
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Name=Print Editor
|
Name=Print Editor
|
||||||
Comment=A simple editor demonstrating GTK printing
|
Comment=A simple editor demonstrating GTK printing
|
||||||
Exec=gtk4-print-editor %f
|
Exec=gtk4-print-editor %f
|
||||||
Icon=text-editor-symbolic
|
Icon=org.gtk.PrintEditor4.Devel
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ update_title (GtkWindow *window)
|
|||||||
static void
|
static void
|
||||||
update_statusbar (void)
|
update_statusbar (void)
|
||||||
{
|
{
|
||||||
gchar *msg;
|
char *msg;
|
||||||
gint row, col;
|
int row, col;
|
||||||
GtkTextIter iter;
|
GtkTextIter iter;
|
||||||
const char *print_str;
|
const char *print_str;
|
||||||
|
|
||||||
@@ -633,7 +633,7 @@ activate_about (GSimpleAction *action,
|
|||||||
"website", "http://www.gtk.org",
|
"website", "http://www.gtk.org",
|
||||||
"comments", "Program to demonstrate GTK printing",
|
"comments", "Program to demonstrate GTK printing",
|
||||||
"authors", (const char *[]){ "Alexander Larsson", NULL },
|
"authors", (const char *[]){ "Alexander Larsson", NULL },
|
||||||
"logo-icon-name", "text-editor-symbolic",
|
"logo-icon-name", "org.gtk.PrintEditor4.Devel",
|
||||||
"title", "About GTK Print Editor",
|
"title", "About GTK Print Editor",
|
||||||
"system-information", sysinfo->str,
|
"system-information", sysinfo->str,
|
||||||
NULL);
|
NULL);
|
||||||
@@ -675,7 +675,7 @@ static GActionEntry app_entries[] = {
|
|||||||
{ "print", activate_print, NULL, NULL, NULL }
|
{ "print", activate_print, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const gchar ui_info[] =
|
static const char ui_info[] =
|
||||||
"<interface>"
|
"<interface>"
|
||||||
" <menu id='menubar'>"
|
" <menu id='menubar'>"
|
||||||
" <submenu>"
|
" <submenu>"
|
||||||
@@ -781,6 +781,8 @@ activate (GApplication *app)
|
|||||||
gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (main_window), TRUE);
|
gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (main_window), TRUE);
|
||||||
update_title (GTK_WINDOW (main_window));
|
update_title (GTK_WINDOW (main_window));
|
||||||
|
|
||||||
|
gtk_widget_add_css_class (main_window, "devel");
|
||||||
|
|
||||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||||
gtk_window_set_child (GTK_WINDOW (main_window), box);
|
gtk_window_set_child (GTK_WINDOW (main_window), box);
|
||||||
|
|
||||||
|
|||||||
@@ -139,9 +139,9 @@ get_busy (GSimpleAction *action,
|
|||||||
gtk_widget_set_sensitive (window, FALSE);
|
gtk_widget_set_sensitive (window, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint current_page = 0;
|
static int current_page = 0;
|
||||||
static gboolean
|
static gboolean
|
||||||
on_page (gint i)
|
on_page (int i)
|
||||||
{
|
{
|
||||||
return current_page == i;
|
return current_page == i;
|
||||||
}
|
}
|
||||||
@@ -250,12 +250,12 @@ activate_about (GSimpleAction *action,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkApplication *app = user_data;
|
GtkApplication *app = user_data;
|
||||||
const gchar *authors[] = {
|
const char *authors[] = {
|
||||||
"Andrea Cimitan",
|
"Andrea Cimitan",
|
||||||
"Cosimo Cecchi",
|
"Cosimo Cecchi",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
gchar *version;
|
char *version;
|
||||||
GString *s;
|
GString *s;
|
||||||
|
|
||||||
s = g_string_new ("");
|
s = g_string_new ("");
|
||||||
@@ -422,8 +422,8 @@ static void
|
|||||||
spin_value_changed (GtkAdjustment *adjustment, GtkWidget *label)
|
spin_value_changed (GtkAdjustment *adjustment, GtkWidget *label)
|
||||||
{
|
{
|
||||||
GtkWidget *w;
|
GtkWidget *w;
|
||||||
gint v;
|
int v;
|
||||||
gchar *text;
|
char *text;
|
||||||
|
|
||||||
v = (int)gtk_adjustment_get_value (adjustment);
|
v = (int)gtk_adjustment_get_value (adjustment);
|
||||||
|
|
||||||
@@ -454,8 +454,8 @@ spin_value_reset (GtkWidget *button, GtkAdjustment *adjustment)
|
|||||||
dismiss (button);
|
dismiss (button);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint pulse_time = 250;
|
static int pulse_time = 250;
|
||||||
static gint pulse_entry_mode = 0;
|
static int pulse_entry_mode = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
remove_pulse (gpointer pulse_id)
|
remove_pulse (gpointer pulse_id)
|
||||||
@@ -482,7 +482,7 @@ pulse_it (GtkWidget *widget)
|
|||||||
static void
|
static void
|
||||||
update_pulse_time (GtkAdjustment *adjustment, GtkWidget *widget)
|
update_pulse_time (GtkAdjustment *adjustment, GtkWidget *widget)
|
||||||
{
|
{
|
||||||
gdouble value;
|
double value;
|
||||||
guint pulse_id;
|
guint pulse_id;
|
||||||
|
|
||||||
value = gtk_adjustment_get_value (adjustment);
|
value = gtk_adjustment_get_value (adjustment);
|
||||||
@@ -537,12 +537,12 @@ on_entry_icon_release (GtkEntry *entry,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
on_scale_button_value_changed (GtkScaleButton *button,
|
on_scale_button_value_changed (GtkScaleButton *button,
|
||||||
gdouble value,
|
double value,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkAdjustment *adjustment;
|
GtkAdjustment *adjustment;
|
||||||
gdouble val;
|
double val;
|
||||||
gchar *str;
|
char *str;
|
||||||
|
|
||||||
adjustment = gtk_scale_button_get_adjustment (button);
|
adjustment = gtk_scale_button_get_adjustment (button);
|
||||||
val = gtk_scale_button_get_value (button);
|
val = gtk_scale_button_get_value (button);
|
||||||
@@ -557,9 +557,9 @@ on_scale_button_value_changed (GtkScaleButton *button,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gint percent;
|
int percent;
|
||||||
|
|
||||||
percent = (gint) (100. * val / (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment)) + .5);
|
percent = (int) (100. * val / (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment)) + .5);
|
||||||
|
|
||||||
str = g_strdup_printf (C_("volume percentage", "%d %%"), percent);
|
str = g_strdup_printf (C_("volume percentage", "%d %%"), percent);
|
||||||
}
|
}
|
||||||
@@ -627,7 +627,7 @@ static void
|
|||||||
on_range_from_changed (GtkSpinButton *from)
|
on_range_from_changed (GtkSpinButton *from)
|
||||||
{
|
{
|
||||||
GtkSpinButton *to;
|
GtkSpinButton *to;
|
||||||
gint v1, v2;
|
int v1, v2;
|
||||||
|
|
||||||
to = GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (from), "range_to_spin"));
|
to = GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (from), "range_to_spin"));
|
||||||
|
|
||||||
@@ -642,7 +642,7 @@ static void
|
|||||||
on_range_to_changed (GtkSpinButton *to)
|
on_range_to_changed (GtkSpinButton *to)
|
||||||
{
|
{
|
||||||
GtkSpinButton *from;
|
GtkSpinButton *from;
|
||||||
gint v1, v2;
|
int v1, v2;
|
||||||
|
|
||||||
from = GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (to), "range_from_spin"));
|
from = GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (to), "range_from_spin"));
|
||||||
|
|
||||||
@@ -654,7 +654,7 @@ on_range_to_changed (GtkSpinButton *to)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
info_bar_response (GtkWidget *infobar, gint response_id)
|
info_bar_response (GtkWidget *infobar, int response_id)
|
||||||
{
|
{
|
||||||
if (response_id == GTK_RESPONSE_CLOSE)
|
if (response_id == GTK_RESPONSE_CLOSE)
|
||||||
gtk_widget_hide (infobar);
|
gtk_widget_hide (infobar);
|
||||||
@@ -703,7 +703,7 @@ action_dialog_button_clicked (GtkButton *button, GtkWidget *page)
|
|||||||
static void
|
static void
|
||||||
page_changed_cb (GtkWidget *stack, GParamSpec *pspec, gpointer data)
|
page_changed_cb (GtkWidget *stack, GParamSpec *pspec, gpointer data)
|
||||||
{
|
{
|
||||||
const gchar *name;
|
const char *name;
|
||||||
GtkWidget *window;
|
GtkWidget *window;
|
||||||
GtkWidget *page;
|
GtkWidget *page;
|
||||||
|
|
||||||
@@ -853,10 +853,10 @@ update_title_header (GtkListBoxRow *row,
|
|||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GtkWidget *header;
|
GtkWidget *header;
|
||||||
gchar *title;
|
char *title;
|
||||||
|
|
||||||
header = gtk_list_box_row_get_header (row);
|
header = gtk_list_box_row_get_header (row);
|
||||||
title = (gchar *)g_object_get_data (G_OBJECT (row), "title");
|
title = (char *)g_object_get_data (G_OBJECT (row), "title");
|
||||||
if (!header && title)
|
if (!header && title)
|
||||||
{
|
{
|
||||||
title = g_strdup_printf ("<b>%s</b>", title);
|
title = g_strdup_printf ("<b>%s</b>", title);
|
||||||
@@ -881,8 +881,8 @@ overshot (GtkScrolledWindow *sw, GtkPositionType pos, GtkWidget *widget)
|
|||||||
{
|
{
|
||||||
GtkWidget *box, *row, *label, *swatch;
|
GtkWidget *box, *row, *label, *swatch;
|
||||||
GdkRGBA rgba;
|
GdkRGBA rgba;
|
||||||
const gchar *color;
|
const char *color;
|
||||||
gchar *text;
|
char *text;
|
||||||
GtkWidget *silver;
|
GtkWidget *silver;
|
||||||
GtkWidget *gold;
|
GtkWidget *gold;
|
||||||
|
|
||||||
@@ -983,7 +983,7 @@ set_color (GtkListBox *box, GtkListBoxRow *row, GtkColorChooser *chooser)
|
|||||||
static void
|
static void
|
||||||
populate_colors (GtkWidget *widget, GtkWidget *chooser)
|
populate_colors (GtkWidget *widget, GtkWidget *chooser)
|
||||||
{
|
{
|
||||||
struct { const gchar *name; const gchar *color; const gchar *title; } colors[] = {
|
struct { const char *name; const char *color; const char *title; } colors[] = {
|
||||||
{ "2.5", "#C8828C", "Red" },
|
{ "2.5", "#C8828C", "Red" },
|
||||||
{ "5", "#C98286", NULL },
|
{ "5", "#C98286", NULL },
|
||||||
{ "7.5", "#C9827F", NULL },
|
{ "7.5", "#C9827F", NULL },
|
||||||
@@ -1025,7 +1025,7 @@ populate_colors (GtkWidget *widget, GtkWidget *chooser)
|
|||||||
{ "7.5", "#C48299", NULL },
|
{ "7.5", "#C48299", NULL },
|
||||||
{ "10", "#C68292", NULL }
|
{ "10", "#C68292", NULL }
|
||||||
};
|
};
|
||||||
gint i;
|
int i;
|
||||||
GtkWidget *row, *box, *label, *swatch;
|
GtkWidget *row, *box, *label, *swatch;
|
||||||
GtkWidget *sw;
|
GtkWidget *sw;
|
||||||
GdkRGBA rgba;
|
GdkRGBA rgba;
|
||||||
@@ -1081,7 +1081,7 @@ populate_colors (GtkWidget *widget, GtkWidget *chooser)
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GtkWidget *flowbox;
|
GtkWidget *flowbox;
|
||||||
gchar *filename;
|
char *filename;
|
||||||
} BackgroundData;
|
} BackgroundData;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1127,11 +1127,11 @@ background_loaded_cb (GObject *source,
|
|||||||
static void
|
static void
|
||||||
populate_flowbox (GtkWidget *flowbox)
|
populate_flowbox (GtkWidget *flowbox)
|
||||||
{
|
{
|
||||||
const gchar *location;
|
const char *location;
|
||||||
GDir *dir;
|
GDir *dir;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
const gchar *name;
|
const char *name;
|
||||||
gchar *filename;
|
char *filename;
|
||||||
GFile *file;
|
GFile *file;
|
||||||
GInputStream *stream;
|
GInputStream *stream;
|
||||||
BackgroundData *bd;
|
BackgroundData *bd;
|
||||||
@@ -1288,7 +1288,7 @@ my_text_view_class_init (MyTextViewClass *class)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
my_text_view_set_background (MyTextView *tv, const gchar *filename, gboolean is_resource)
|
my_text_view_set_background (MyTextView *tv, const char *filename, gboolean is_resource)
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GFile *file;
|
GFile *file;
|
||||||
@@ -1331,12 +1331,12 @@ my_text_view_set_adjustment (MyTextView *tv, GtkAdjustment *adjustment)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
close_selection_dialog (GtkWidget *dialog, gint response, GtkWidget *tv)
|
close_selection_dialog (GtkWidget *dialog, int response, GtkWidget *tv)
|
||||||
{
|
{
|
||||||
GtkWidget *box;
|
GtkWidget *box;
|
||||||
GtkWidget *child;
|
GtkWidget *child;
|
||||||
GList *children;
|
GList *children;
|
||||||
const gchar *filename;
|
const char *filename;
|
||||||
gboolean is_resource;
|
gboolean is_resource;
|
||||||
|
|
||||||
gtk_widget_hide (dialog);
|
gtk_widget_hide (dialog);
|
||||||
@@ -1352,7 +1352,7 @@ close_selection_dialog (GtkWidget *dialog, gint response, GtkWidget *tv)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
child = children->data;
|
child = children->data;
|
||||||
filename = (const gchar *)g_object_get_data (G_OBJECT (child), "filename");
|
filename = (const char *)g_object_get_data (G_OBJECT (child), "filename");
|
||||||
is_resource = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (child), "is-resource"));
|
is_resource = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (child), "is-resource"));
|
||||||
|
|
||||||
g_list_free (children);
|
g_list_free (children);
|
||||||
@@ -1377,8 +1377,8 @@ static void
|
|||||||
handle_insert (GtkWidget *button, GtkWidget *textview)
|
handle_insert (GtkWidget *button, GtkWidget *textview)
|
||||||
{
|
{
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
const gchar *id;
|
const char *id;
|
||||||
const gchar *text;
|
const char *text;
|
||||||
|
|
||||||
id = gtk_buildable_get_name (GTK_BUILDABLE (button));
|
id = gtk_buildable_get_name (GTK_BUILDABLE (button));
|
||||||
|
|
||||||
@@ -1402,7 +1402,7 @@ handle_cutcopypaste (GtkWidget *button, GtkWidget *textview)
|
|||||||
{
|
{
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
GdkClipboard *clipboard;
|
GdkClipboard *clipboard;
|
||||||
const gchar *id;
|
const char *id;
|
||||||
|
|
||||||
clipboard = gtk_widget_get_clipboard (textview);
|
clipboard = gtk_widget_get_clipboard (textview);
|
||||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
|
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
|
||||||
@@ -1421,7 +1421,7 @@ handle_cutcopypaste (GtkWidget *button, GtkWidget *textview)
|
|||||||
static void
|
static void
|
||||||
clipboard_formats_notify (GdkClipboard *clipboard, GdkEvent *event, GtkWidget *button)
|
clipboard_formats_notify (GdkClipboard *clipboard, GdkEvent *event, GtkWidget *button)
|
||||||
{
|
{
|
||||||
const gchar *id;
|
const char *id;
|
||||||
gboolean has_text;
|
gboolean has_text;
|
||||||
|
|
||||||
id = gtk_buildable_get_name (GTK_BUILDABLE (button));
|
id = gtk_buildable_get_name (GTK_BUILDABLE (button));
|
||||||
@@ -1434,7 +1434,7 @@ clipboard_formats_notify (GdkClipboard *clipboard, GdkEvent *event, GtkWidget *b
|
|||||||
static void
|
static void
|
||||||
textbuffer_notify_selection (GObject *object, GParamSpec *pspec, GtkWidget *button)
|
textbuffer_notify_selection (GObject *object, GParamSpec *pspec, GtkWidget *button)
|
||||||
{
|
{
|
||||||
const gchar *id;
|
const char *id;
|
||||||
gboolean has_selection;
|
gboolean has_selection;
|
||||||
|
|
||||||
id = gtk_buildable_get_name (GTK_BUILDABLE (button));
|
id = gtk_buildable_get_name (GTK_BUILDABLE (button));
|
||||||
@@ -1469,7 +1469,7 @@ page_combo_separator_func (GtkTreeModel *model,
|
|||||||
GtkTreeIter *iter,
|
GtkTreeIter *iter,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gchar *text;
|
char *text;
|
||||||
gboolean res;
|
gboolean res;
|
||||||
|
|
||||||
gtk_tree_model_get (model, iter, 0, &text, -1);
|
gtk_tree_model_get (model, iter, 0, &text, -1);
|
||||||
@@ -1594,7 +1594,7 @@ text_view_add_to_context_menu (GtkTextView *text_view)
|
|||||||
static void
|
static void
|
||||||
open_popover_text_changed (GtkEntry *entry, GParamSpec *pspec, GtkWidget *button)
|
open_popover_text_changed (GtkEntry *entry, GParamSpec *pspec, GtkWidget *button)
|
||||||
{
|
{
|
||||||
const gchar *text;
|
const char *text;
|
||||||
|
|
||||||
text = gtk_editable_get_text (GTK_EDITABLE (entry));
|
text = gtk_editable_get_text (GTK_EDITABLE (entry));
|
||||||
gtk_widget_set_sensitive (button, strlen (text) > 0);
|
gtk_widget_set_sensitive (button, strlen (text) > 0);
|
||||||
@@ -1864,8 +1864,8 @@ activate (GApplication *app)
|
|||||||
{ "print", activate_print, NULL, NULL, NULL },
|
{ "print", activate_print, NULL, NULL, NULL },
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
const gchar *action_and_target;
|
const char *action_and_target;
|
||||||
const gchar *accelerators[2];
|
const char *accelerators[2];
|
||||||
} accels[] = {
|
} accels[] = {
|
||||||
{ "app.about", { "F1", NULL } },
|
{ "app.about", { "F1", NULL } },
|
||||||
{ "app.quit", { "<Control>q", NULL } },
|
{ "app.quit", { "<Control>q", NULL } },
|
||||||
@@ -1878,15 +1878,15 @@ activate (GApplication *app)
|
|||||||
{ "win.lock", { "<Control>l", NULL } },
|
{ "win.lock", { "<Control>l", NULL } },
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
const gchar *action_and_target;
|
const char *action_and_target;
|
||||||
const gchar *accelerators[2];
|
const char *accelerators[2];
|
||||||
} late_accels[] = {
|
} late_accels[] = {
|
||||||
{ "app.cut", { "<Control>x", NULL } },
|
{ "app.cut", { "<Control>x", NULL } },
|
||||||
{ "app.copy", { "<Control>c", NULL } },
|
{ "app.copy", { "<Control>c", NULL } },
|
||||||
{ "app.paste", { "<Control>v", NULL } },
|
{ "app.paste", { "<Control>v", NULL } },
|
||||||
{ "win.delete", { "Delete", NULL } },
|
{ "win.delete", { "Delete", NULL } },
|
||||||
};
|
};
|
||||||
gint i;
|
int i;
|
||||||
GPermission *permission;
|
GPermission *permission;
|
||||||
GAction *action;
|
GAction *action;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
@@ -2282,7 +2282,7 @@ main (int argc, char *argv[])
|
|||||||
{ "check-off-disabled", NULL, NULL, "false", NULL },
|
{ "check-off-disabled", NULL, NULL, "false", NULL },
|
||||||
{ "radio-x-disabled", NULL, "s", "'x'", NULL },
|
{ "radio-x-disabled", NULL, "s", "'x'", NULL },
|
||||||
};
|
};
|
||||||
gint status;
|
int status;
|
||||||
|
|
||||||
app = gtk_application_new ("org.gtk.WidgetFactory4", G_APPLICATION_NON_UNIQUE);
|
app = gtk_application_new ("org.gtk.WidgetFactory4", G_APPLICATION_NON_UNIQUE);
|
||||||
|
|
||||||
|
|||||||
@@ -436,7 +436,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
|
|||||||
<property name="title">GTK Widget Factory</property>
|
<property name="title">GTK Widget Factory</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="headerbar1">
|
<object class="GtkHeaderBar" id="headerbar1">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child type="title">
|
<child type="title">
|
||||||
<object class="GtkStackSwitcher" id="stack_switcher">
|
<object class="GtkStackSwitcher" id="stack_switcher">
|
||||||
<property name="stack">toplevel_stack</property>
|
<property name="stack">toplevel_stack</property>
|
||||||
|
|||||||
@@ -474,19 +474,19 @@ The maximum width of each column is given by the longest element in the
|
|||||||
column:
|
column:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
void gtk_type_set_property (GtkType *type,
|
void gtk_type_set_property (GtkType *type,
|
||||||
const gchar *value,
|
const char *value,
|
||||||
GError **error);
|
GError **error);
|
||||||
const gchar *gtk_type_get_property (GtkType *type);
|
const char *gtk_type_get_property (GtkType *type);
|
||||||
```
|
```
|
||||||
|
|
||||||
It is also possible to align the columns to the next tab:
|
It is also possible to align the columns to the next tab:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
void gtk_type_set_prop (GtkType *type,
|
void gtk_type_set_prop (GtkType *type,
|
||||||
gfloat value);
|
float value);
|
||||||
gfloat gtk_type_get_prop (GtkType *type);
|
float gtk_type_get_prop (GtkType *type);
|
||||||
gint gtk_type_update_foobar (GtkType *type);
|
int gtk_type_update_foobar (GtkType *type);
|
||||||
```
|
```
|
||||||
|
|
||||||
Public headers should never be included directly:
|
Public headers should never be included directly:
|
||||||
|
|||||||
@@ -426,8 +426,8 @@ draw_cb (GtkDrawingArea *drawing_area,
|
|||||||
/* Draw a rectangle on the surface at the given position */
|
/* Draw a rectangle on the surface at the given position */
|
||||||
static void
|
static void
|
||||||
draw_brush (GtkWidget *widget,
|
draw_brush (GtkWidget *widget,
|
||||||
gdouble x,
|
double x,
|
||||||
gdouble y)
|
double y)
|
||||||
{
|
{
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
|
|
||||||
@@ -797,8 +797,8 @@ example_app_activate (GApplication *app)
|
|||||||
static void
|
static void
|
||||||
example_app_open (GApplication *app,
|
example_app_open (GApplication *app,
|
||||||
GFile **files,
|
GFile **files,
|
||||||
gint n_files,
|
int n_files,
|
||||||
const gchar *hint)
|
const char *hint)
|
||||||
{
|
{
|
||||||
GList *windows;
|
GList *windows;
|
||||||
ExampleAppWindow *win;
|
ExampleAppWindow *win;
|
||||||
@@ -1138,7 +1138,7 @@ example_app_startup (GApplication *app)
|
|||||||
{
|
{
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
GMenuModel *app_menu;
|
GMenuModel *app_menu;
|
||||||
const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
|
const char *quit_accels[2] = { "<Ctrl>Q", NULL };
|
||||||
|
|
||||||
G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
|
G_APPLICATION_CLASS (example_app_parent_class)->startup (app);
|
||||||
|
|
||||||
@@ -1423,7 +1423,6 @@ the search bar below the header bar.
|
|||||||
<property name="default-height">400</property>
|
<property name="default-height">400</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="header">
|
<object class="GtkHeaderBar" id="header">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child type="title">
|
<child type="title">
|
||||||
<object class="GtkStackSwitcher" id="tabs">
|
<object class="GtkStackSwitcher" id="tabs">
|
||||||
<property name="stack">stack</property>
|
<property name="stack">stack</property>
|
||||||
@@ -1477,7 +1476,7 @@ static void
|
|||||||
search_text_changed (GtkEntry *entry,
|
search_text_changed (GtkEntry *entry,
|
||||||
ExampleAppWindow *win)
|
ExampleAppWindow *win)
|
||||||
{
|
{
|
||||||
const gchar *text;
|
const char *text;
|
||||||
GtkWidget *tab;
|
GtkWidget *tab;
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
@@ -1537,7 +1536,6 @@ GtkMenuButton, GtkRevealer and GtkListBox.
|
|||||||
<property name="default-height">400</property>
|
<property name="default-height">400</property>
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="header">
|
<object class="GtkHeaderBar" id="header">
|
||||||
<property name="show-title-buttons">1</property>
|
|
||||||
<child type="title">
|
<child type="title">
|
||||||
<object class="GtkStackSwitcher" id="tabs">
|
<object class="GtkStackSwitcher" id="tabs">
|
||||||
<property name="stack">stack</property>
|
<property name="stack">stack</property>
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ def ConvertToDocbook(infile, outfile):
|
|||||||
subprocess.check_call(["pandoc", infile, "-o", outfile,
|
subprocess.check_call(["pandoc", infile, "-o", outfile,
|
||||||
"--from=" + input_format,
|
"--from=" + input_format,
|
||||||
"--to=" + output_format,
|
"--to=" + output_format,
|
||||||
|
"--standalone",
|
||||||
"--top-level-division=" + division])
|
"--top-level-division=" + division])
|
||||||
|
|
||||||
def ExpandGtkDocAbbreviations(infile, outfile):
|
def ExpandGtkDocAbbreviations(infile, outfile):
|
||||||
|
|||||||
@@ -54,8 +54,9 @@
|
|||||||
<section>
|
<section>
|
||||||
<xi:include href="xml/gtkfilter.xml" />
|
<xi:include href="xml/gtkfilter.xml" />
|
||||||
<xi:include href="xml/gtkcustomfilter.xml" />
|
<xi:include href="xml/gtkcustomfilter.xml" />
|
||||||
<xi:include href="xml/gtkstringfilter.xml" />
|
|
||||||
<xi:include href="xml/gtkmultifilter.xml" />
|
<xi:include href="xml/gtkmultifilter.xml" />
|
||||||
|
<xi:include href="xml/gtkstringfilter.xml" />
|
||||||
|
<xi:include href="xml/gtkfilefilter.xml" />
|
||||||
</section>
|
</section>
|
||||||
<xi:include href="xml/gtkflattenlistmodel.xml" />
|
<xi:include href="xml/gtkflattenlistmodel.xml" />
|
||||||
<xi:include href="xml/gtkmaplistmodel.xml" />
|
<xi:include href="xml/gtkmaplistmodel.xml" />
|
||||||
@@ -64,9 +65,9 @@
|
|||||||
<section>
|
<section>
|
||||||
<xi:include href="xml/gtksorter.xml" />
|
<xi:include href="xml/gtksorter.xml" />
|
||||||
<xi:include href="xml/gtkcustomsorter.xml" />
|
<xi:include href="xml/gtkcustomsorter.xml" />
|
||||||
|
<xi:include href="xml/gtkmultisorter.xml" />
|
||||||
<xi:include href="xml/gtkstringsorter.xml" />
|
<xi:include href="xml/gtkstringsorter.xml" />
|
||||||
<xi:include href="xml/gtknumericsorter.xml" />
|
<xi:include href="xml/gtknumericsorter.xml" />
|
||||||
<xi:include href="xml/gtkmultisorter.xml" />
|
|
||||||
</section>
|
</section>
|
||||||
<xi:include href="xml/gtkselectionmodel.xml" />
|
<xi:include href="xml/gtkselectionmodel.xml" />
|
||||||
<section>
|
<section>
|
||||||
@@ -74,6 +75,7 @@
|
|||||||
<xi:include href="xml/gtksingleselection.xml" />
|
<xi:include href="xml/gtksingleselection.xml" />
|
||||||
<xi:include href="xml/gtkmultiselection.xml" />
|
<xi:include href="xml/gtkmultiselection.xml" />
|
||||||
</section>
|
</section>
|
||||||
|
<xi:include href="xml/gtkselectionfiltermodel.xml" />
|
||||||
<xi:include href="xml/gtkbookmarklist.xml" />
|
<xi:include href="xml/gtkbookmarklist.xml" />
|
||||||
<xi:include href="xml/gtkdirectorylist.xml" />
|
<xi:include href="xml/gtkdirectorylist.xml" />
|
||||||
<xi:include href="xml/gtkstringlist.xml" />
|
<xi:include href="xml/gtkstringlist.xml" />
|
||||||
@@ -91,7 +93,9 @@
|
|||||||
<xi:include href="xml/gtklistview.xml" />
|
<xi:include href="xml/gtklistview.xml" />
|
||||||
<xi:include href="xml/gtkgridview.xml" />
|
<xi:include href="xml/gtkgridview.xml" />
|
||||||
<xi:include href="xml/gtkcolumnview.xml" />
|
<xi:include href="xml/gtkcolumnview.xml" />
|
||||||
<xi:include href="xml/gtkcolumnviewcolumn.xml" />
|
<section>
|
||||||
|
<xi:include href="xml/gtkcolumnviewcolumn.xml" />
|
||||||
|
</section>
|
||||||
<xi:include href="xml/gtkdropdown.xml" />
|
<xi:include href="xml/gtkdropdown.xml" />
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
@@ -284,7 +288,6 @@
|
|||||||
<xi:include href="xml/gtkfilechoosernative.xml" />
|
<xi:include href="xml/gtkfilechoosernative.xml" />
|
||||||
<xi:include href="xml/gtkfilechooserdialog.xml" />
|
<xi:include href="xml/gtkfilechooserdialog.xml" />
|
||||||
<xi:include href="xml/gtkfilechooserwidget.xml" />
|
<xi:include href="xml/gtkfilechooserwidget.xml" />
|
||||||
<xi:include href="xml/gtkfilefilter.xml" />
|
|
||||||
<xi:include href="xml/gtkfontchooser.xml" />
|
<xi:include href="xml/gtkfontchooser.xml" />
|
||||||
<xi:include href="xml/gtkfontbutton.xml" />
|
<xi:include href="xml/gtkfontbutton.xml" />
|
||||||
<xi:include href="xml/gtkfontchooserwidget.xml" />
|
<xi:include href="xml/gtkfontchooserwidget.xml" />
|
||||||
|
|||||||
@@ -348,6 +348,7 @@ GtkBitset
|
|||||||
gtk_bitset_ref
|
gtk_bitset_ref
|
||||||
gtk_bitset_unref
|
gtk_bitset_unref
|
||||||
gtk_bitset_new_empty
|
gtk_bitset_new_empty
|
||||||
|
gtk_bitset_new_range
|
||||||
gtk_bitset_copy
|
gtk_bitset_copy
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
gtk_bitset_contains
|
gtk_bitset_contains
|
||||||
@@ -355,6 +356,9 @@ gtk_bitset_is_empty
|
|||||||
gtk_bitset_equals
|
gtk_bitset_equals
|
||||||
gtk_bitset_get_minimum
|
gtk_bitset_get_minimum
|
||||||
gtk_bitset_get_maximum
|
gtk_bitset_get_maximum
|
||||||
|
gtk_bitset_get_size
|
||||||
|
gtk_bitset_get_size_in_range
|
||||||
|
gtk_bitset_get_nth
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
gtk_bitset_remove_all
|
gtk_bitset_remove_all
|
||||||
gtk_bitset_add
|
gtk_bitset_add
|
||||||
@@ -371,7 +375,7 @@ gtk_bitset_subtract
|
|||||||
gtk_bitset_difference
|
gtk_bitset_difference
|
||||||
gtk_bitset_shift_left
|
gtk_bitset_shift_left
|
||||||
gtk_bitset_shift_right
|
gtk_bitset_shift_right
|
||||||
gtk_bitset_slice
|
gtk_bitset_splice
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
GtkBitsetIter
|
GtkBitsetIter
|
||||||
gtk_bitset_iter_init_first
|
gtk_bitset_iter_init_first
|
||||||
@@ -419,6 +423,7 @@ gtk_selection_model_get_type
|
|||||||
GtkNoSelection
|
GtkNoSelection
|
||||||
gtk_no_selection_new
|
gtk_no_selection_new
|
||||||
gtk_no_selection_get_model
|
gtk_no_selection_get_model
|
||||||
|
gtk_no_selection_set_model
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_no_selection_get_type
|
gtk_no_selection_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
@@ -430,6 +435,7 @@ GtkSingleSelection
|
|||||||
GTK_INVALID_LIST_POSITION
|
GTK_INVALID_LIST_POSITION
|
||||||
gtk_single_selection_new
|
gtk_single_selection_new
|
||||||
gtk_single_selection_get_model
|
gtk_single_selection_get_model
|
||||||
|
gtk_single_selection_set_model
|
||||||
gtk_single_selection_get_selected
|
gtk_single_selection_get_selected
|
||||||
gtk_single_selection_set_selected
|
gtk_single_selection_set_selected
|
||||||
gtk_single_selection_get_selected_item
|
gtk_single_selection_get_selected_item
|
||||||
@@ -446,6 +452,8 @@ gtk_single_selection_get_type
|
|||||||
<TITLE>GtkMultiSeledction</TITLE>
|
<TITLE>GtkMultiSeledction</TITLE>
|
||||||
GtkMultiSelection
|
GtkMultiSelection
|
||||||
gtk_multi_selection_new
|
gtk_multi_selection_new
|
||||||
|
gtk_multi_selection_get_model
|
||||||
|
gtk_multi_selection_set_model
|
||||||
<SUBSECTION Private>
|
<SUBSECTION Private>
|
||||||
gtk_multi_selection_get_type
|
gtk_multi_selection_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
@@ -1292,23 +1300,19 @@ gtk_file_chooser_get_current_name
|
|||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
gtk_file_chooser_get_file
|
gtk_file_chooser_get_file
|
||||||
gtk_file_chooser_set_file
|
gtk_file_chooser_set_file
|
||||||
gtk_file_chooser_select_file
|
|
||||||
gtk_file_chooser_unselect_file
|
|
||||||
gtk_file_chooser_select_all
|
|
||||||
gtk_file_chooser_unselect_all
|
|
||||||
gtk_file_chooser_get_files
|
gtk_file_chooser_get_files
|
||||||
gtk_file_chooser_set_current_folder
|
gtk_file_chooser_set_current_folder
|
||||||
gtk_file_chooser_get_current_folder
|
gtk_file_chooser_get_current_folder
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
gtk_file_chooser_add_filter
|
gtk_file_chooser_add_filter
|
||||||
gtk_file_chooser_remove_filter
|
gtk_file_chooser_remove_filter
|
||||||
gtk_file_chooser_list_filters
|
gtk_file_chooser_get_filters
|
||||||
gtk_file_chooser_set_filter
|
gtk_file_chooser_set_filter
|
||||||
gtk_file_chooser_get_filter
|
gtk_file_chooser_get_filter
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
gtk_file_chooser_add_shortcut_folder
|
gtk_file_chooser_add_shortcut_folder
|
||||||
gtk_file_chooser_remove_shortcut_folder
|
gtk_file_chooser_remove_shortcut_folder
|
||||||
gtk_file_chooser_list_shortcut_folders
|
gtk_file_chooser_get_shortcut_folders
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
gtk_file_chooser_add_choice
|
gtk_file_chooser_add_choice
|
||||||
gtk_file_chooser_remove_choice
|
gtk_file_chooser_remove_choice
|
||||||
@@ -1405,18 +1409,13 @@ GtkFileChooserButtonPrivate
|
|||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gtkfilefilter</FILE>
|
<FILE>gtkfilefilter</FILE>
|
||||||
GtkFileFilter
|
GtkFileFilter
|
||||||
GtkFileFilterInfo
|
|
||||||
GtkFileFilterFlags
|
|
||||||
GtkFileFilterFunc
|
|
||||||
gtk_file_filter_new
|
gtk_file_filter_new
|
||||||
gtk_file_filter_set_name
|
gtk_file_filter_set_name
|
||||||
gtk_file_filter_get_name
|
gtk_file_filter_get_name
|
||||||
gtk_file_filter_add_mime_type
|
gtk_file_filter_add_mime_type
|
||||||
gtk_file_filter_add_pattern
|
gtk_file_filter_add_pattern
|
||||||
gtk_file_filter_add_pixbuf_formats
|
gtk_file_filter_add_pixbuf_formats
|
||||||
gtk_file_filter_add_custom
|
gtk_file_filter_get_attributes
|
||||||
gtk_file_filter_get_needed
|
|
||||||
gtk_file_filter_filter
|
|
||||||
|
|
||||||
<SUBSECTION Serialization>
|
<SUBSECTION Serialization>
|
||||||
gtk_file_filter_new_from_gvariant
|
gtk_file_filter_new_from_gvariant
|
||||||
@@ -1441,6 +1440,8 @@ gtk_directory_list_get_file
|
|||||||
gtk_directory_list_set_file
|
gtk_directory_list_set_file
|
||||||
gtk_directory_list_get_io_priority
|
gtk_directory_list_get_io_priority
|
||||||
gtk_directory_list_set_io_priority
|
gtk_directory_list_set_io_priority
|
||||||
|
gtk_directory_list_get_monitored
|
||||||
|
gtk_directory_list_set_monitored
|
||||||
gtk_directory_list_is_loading
|
gtk_directory_list_is_loading
|
||||||
gtk_directory_list_get_error
|
gtk_directory_list_get_error
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
@@ -1535,11 +1536,13 @@ gtk_custom_filter_get_type
|
|||||||
<TITLE>GtkFilterListModel</TITLE>
|
<TITLE>GtkFilterListModel</TITLE>
|
||||||
GtkFilterListModel
|
GtkFilterListModel
|
||||||
gtk_filter_list_model_new
|
gtk_filter_list_model_new
|
||||||
gtk_filter_list_model_new_for_type
|
|
||||||
gtk_filter_list_model_set_model
|
gtk_filter_list_model_set_model
|
||||||
gtk_filter_list_model_get_model
|
gtk_filter_list_model_get_model
|
||||||
gtk_filter_list_model_set_filter
|
gtk_filter_list_model_set_filter
|
||||||
gtk_filter_list_model_get_filter
|
gtk_filter_list_model_get_filter
|
||||||
|
gtk_filter_list_model_set_incremental
|
||||||
|
gtk_filter_list_model_get_incremental
|
||||||
|
gtk_filter_list_model_get_pending
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GTK_FILTER_LIST_MODEL
|
GTK_FILTER_LIST_MODEL
|
||||||
GTK_IS_FILTER_LIST_MODEL
|
GTK_IS_FILTER_LIST_MODEL
|
||||||
@@ -2038,8 +2041,6 @@ gtk_menu_button_get_menu_model
|
|||||||
GtkArrowType
|
GtkArrowType
|
||||||
gtk_menu_button_set_direction
|
gtk_menu_button_set_direction
|
||||||
gtk_menu_button_get_direction
|
gtk_menu_button_get_direction
|
||||||
gtk_menu_button_set_align_widget
|
|
||||||
gtk_menu_button_get_align_widget
|
|
||||||
gtk_menu_button_set_icon_name
|
gtk_menu_button_set_icon_name
|
||||||
gtk_menu_button_get_icon_name
|
gtk_menu_button_get_icon_name
|
||||||
gtk_menu_button_set_label
|
gtk_menu_button_set_label
|
||||||
@@ -2694,7 +2695,6 @@ gtk_size_group_get_type
|
|||||||
<TITLE>GtkSliceListModel</TITLE>
|
<TITLE>GtkSliceListModel</TITLE>
|
||||||
GtkSliceListModel
|
GtkSliceListModel
|
||||||
gtk_slice_list_model_new
|
gtk_slice_list_model_new
|
||||||
gtk_slice_list_model_new_for_type
|
|
||||||
gtk_slice_list_model_set_model
|
gtk_slice_list_model_set_model
|
||||||
gtk_slice_list_model_get_model
|
gtk_slice_list_model_get_model
|
||||||
gtk_slice_list_model_set_offset
|
gtk_slice_list_model_set_offset
|
||||||
@@ -2826,11 +2826,13 @@ gtk_tree_list_row_sorter_get_type
|
|||||||
<TITLE>GtkSortListModel</TITLE>
|
<TITLE>GtkSortListModel</TITLE>
|
||||||
GtkSortListModel
|
GtkSortListModel
|
||||||
gtk_sort_list_model_new
|
gtk_sort_list_model_new
|
||||||
gtk_sort_list_model_new_for_type
|
|
||||||
gtk_sort_list_model_set_sorter
|
gtk_sort_list_model_set_sorter
|
||||||
gtk_sort_list_model_get_sorter
|
gtk_sort_list_model_get_sorter
|
||||||
gtk_sort_list_model_set_model
|
gtk_sort_list_model_set_model
|
||||||
gtk_sort_list_model_get_model
|
gtk_sort_list_model_get_model
|
||||||
|
gtk_sort_list_model_set_incremental
|
||||||
|
gtk_sort_list_model_get_incremental
|
||||||
|
gtk_sort_list_model_get_peanding
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GTK_SORT_LIST_MODEL
|
GTK_SORT_LIST_MODEL
|
||||||
GTK_IS_SORT_LIST_MODEL
|
GTK_IS_SORT_LIST_MODEL
|
||||||
@@ -3419,6 +3421,7 @@ gtk_tree_list_row_get_type
|
|||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>gtktreeexpander</FILE>
|
<FILE>gtktreeexpander</FILE>
|
||||||
<TITLE>GtkTreeExpander</TITLE>
|
<TITLE>GtkTreeExpander</TITLE>
|
||||||
|
GtkTreeExpander
|
||||||
gtk_tree_expander_new
|
gtk_tree_expander_new
|
||||||
gtk_tree_expander_get_child
|
gtk_tree_expander_get_child
|
||||||
gtk_tree_expander_set_child
|
gtk_tree_expander_set_child
|
||||||
@@ -7540,12 +7543,27 @@ gtk_expression_watch_unwatch
|
|||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
gtk_property_expression_new
|
gtk_property_expression_new
|
||||||
gtk_property_expression_new_for_pspec
|
gtk_property_expression_new_for_pspec
|
||||||
|
gtk_property_expression_get_expression
|
||||||
|
gtk_property_expression_get_pspec
|
||||||
gtk_constant_expression_new
|
gtk_constant_expression_new
|
||||||
gtk_constant_expression_new_for_value
|
gtk_constant_expression_new_for_value
|
||||||
|
gtk_constant_expression_get_value
|
||||||
gtk_object_expression_new
|
gtk_object_expression_new
|
||||||
|
gtk_object_expression_get_object
|
||||||
gtk_closure_expression_new
|
gtk_closure_expression_new
|
||||||
gtk_cclosure_expression_new
|
gtk_cclosure_expression_new
|
||||||
|
|
||||||
|
<SUBSECTION>
|
||||||
|
GTK_VALUE_HOLDS_EXPRESSION
|
||||||
|
gtk_value_set_expression
|
||||||
|
gtk_value_take_expression
|
||||||
|
gtk_value_get_expression
|
||||||
|
gtk_value_dup_expression
|
||||||
|
|
||||||
|
<SUBSECTION>
|
||||||
|
GtkParamSpecExpression
|
||||||
|
gtk_param_spec_expression
|
||||||
|
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GTK_IS_EXPRESSION
|
GTK_IS_EXPRESSION
|
||||||
GTK_TYPE_EXPRESSION
|
GTK_TYPE_EXPRESSION
|
||||||
@@ -7606,6 +7624,18 @@ gtk_string_list_take
|
|||||||
gtk_string_list_remove
|
gtk_string_list_remove
|
||||||
gtk_string_list_splice
|
gtk_string_list_splice
|
||||||
gtk_string_list_get_string
|
gtk_string_list_get_string
|
||||||
|
<SUBSECTION>
|
||||||
GtkStringObject
|
GtkStringObject
|
||||||
|
gtk_string_object_new
|
||||||
gtk_string_object_get_string
|
gtk_string_object_get_string
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>gtkselectionfiltermodel</FILE>
|
||||||
|
<TITLE>GtkSelectionFilterModel</TITLE>
|
||||||
|
GtkSelectionFilterModel
|
||||||
|
gtk_selection_filter_model_new
|
||||||
|
gtk_selection_filter_model_new_for_type
|
||||||
|
gtk_selection_filter_model_set_model
|
||||||
|
gtk_selection_filter_model_get_model
|
||||||
|
</SECTION>
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ gtk_assistant_get_type
|
|||||||
gtk_assistant_page_get_type
|
gtk_assistant_page_get_type
|
||||||
gtk_bin_layout_get_type
|
gtk_bin_layout_get_type
|
||||||
gtk_bitset_get_type
|
gtk_bitset_get_type
|
||||||
|
gtk_expression_get_type
|
||||||
gtk_bookmark_list_get_type
|
gtk_bookmark_list_get_type
|
||||||
gtk_box_get_type
|
gtk_box_get_type
|
||||||
gtk_box_layout_get_type
|
gtk_box_layout_get_type
|
||||||
@@ -29,6 +30,7 @@ gtk_builder_list_item_factory_get_type
|
|||||||
gtk_builder_scope_get_type
|
gtk_builder_scope_get_type
|
||||||
gtk_button_get_type
|
gtk_button_get_type
|
||||||
gtk_calendar_get_type
|
gtk_calendar_get_type
|
||||||
|
gtk_cclosure_expression_get_type
|
||||||
gtk_cell_area_get_type
|
gtk_cell_area_get_type
|
||||||
gtk_cell_area_box_get_type
|
gtk_cell_area_box_get_type
|
||||||
gtk_cell_area_context_get_type
|
gtk_cell_area_context_get_type
|
||||||
@@ -46,6 +48,7 @@ gtk_cell_renderer_toggle_get_type
|
|||||||
gtk_cell_view_get_type
|
gtk_cell_view_get_type
|
||||||
gtk_center_layout_get_type
|
gtk_center_layout_get_type
|
||||||
gtk_check_button_get_type
|
gtk_check_button_get_type
|
||||||
|
gtk_closure_expression_get_type
|
||||||
gtk_color_button_get_type
|
gtk_color_button_get_type
|
||||||
gtk_color_chooser_get_type
|
gtk_color_chooser_get_type
|
||||||
gtk_color_chooser_dialog_get_type
|
gtk_color_chooser_dialog_get_type
|
||||||
@@ -54,6 +57,7 @@ gtk_column_view_get_type
|
|||||||
gtk_column_view_column_get_type
|
gtk_column_view_column_get_type
|
||||||
gtk_combo_box_get_type
|
gtk_combo_box_get_type
|
||||||
gtk_combo_box_text_get_type
|
gtk_combo_box_text_get_type
|
||||||
|
gtk_constant_expression_get_type
|
||||||
gtk_constraint_get_type
|
gtk_constraint_get_type
|
||||||
gtk_constraint_guide_get_type
|
gtk_constraint_guide_get_type
|
||||||
gtk_constraint_layout_get_type
|
gtk_constraint_layout_get_type
|
||||||
@@ -150,6 +154,7 @@ gtk_no_selection_get_type
|
|||||||
gtk_notebook_get_type
|
gtk_notebook_get_type
|
||||||
gtk_notebook_page_get_type
|
gtk_notebook_page_get_type
|
||||||
gtk_numeric_sorter_get_type
|
gtk_numeric_sorter_get_type
|
||||||
|
gtk_object_expression_get_type
|
||||||
gtk_orientable_get_type
|
gtk_orientable_get_type
|
||||||
gtk_overlay_get_type
|
gtk_overlay_get_type
|
||||||
gtk_overlay_layout_get_type
|
gtk_overlay_layout_get_type
|
||||||
@@ -172,6 +177,7 @@ gtk_print_operation_preview_get_type
|
|||||||
gtk_print_settings_get_type
|
gtk_print_settings_get_type
|
||||||
@DISABLE_ON_W32@gtk_print_unix_dialog_get_type
|
@DISABLE_ON_W32@gtk_print_unix_dialog_get_type
|
||||||
gtk_progress_bar_get_type
|
gtk_progress_bar_get_type
|
||||||
|
gtk_property_expression_get_type
|
||||||
gtk_radio_button_get_type
|
gtk_radio_button_get_type
|
||||||
gtk_range_get_type
|
gtk_range_get_type
|
||||||
gtk_recent_manager_get_type
|
gtk_recent_manager_get_type
|
||||||
@@ -184,6 +190,7 @@ gtk_scrollbar_get_type
|
|||||||
gtk_scrolled_window_get_type
|
gtk_scrolled_window_get_type
|
||||||
gtk_search_bar_get_type
|
gtk_search_bar_get_type
|
||||||
gtk_search_entry_get_type
|
gtk_search_entry_get_type
|
||||||
|
gtk_selection_filter_model_get_type
|
||||||
gtk_selection_model_get_type
|
gtk_selection_model_get_type
|
||||||
gtk_separator_get_type
|
gtk_separator_get_type
|
||||||
gtk_settings_get_type
|
gtk_settings_get_type
|
||||||
@@ -228,6 +235,7 @@ gtk_text_view_get_type
|
|||||||
gtk_toggle_button_get_type
|
gtk_toggle_button_get_type
|
||||||
gtk_tree_drag_dest_get_type
|
gtk_tree_drag_dest_get_type
|
||||||
gtk_tree_drag_source_get_type
|
gtk_tree_drag_source_get_type
|
||||||
|
gtk_tree_expander_get_type
|
||||||
gtk_tree_list_model_get_type
|
gtk_tree_list_model_get_type
|
||||||
gtk_tree_list_row_get_type
|
gtk_tree_list_row_get_type
|
||||||
gtk_tree_list_row_sorter_get_type
|
gtk_tree_list_row_sorter_get_type
|
||||||
|
|||||||
@@ -137,8 +137,41 @@ use gtk_button_new_from_icon_name().
|
|||||||
|
|
||||||
### Stop using GtkWidget event signals
|
### Stop using GtkWidget event signals
|
||||||
|
|
||||||
Event controllers and #GtkGestures replace event signals in GTK 4.
|
Event controllers and gestures replace event signals in GTK 4.
|
||||||
They have been backported to GTK 3.x so you can prepare for this change.
|
|
||||||
|
Most of them have been backported to GTK 3.x so you can prepare
|
||||||
|
for this change.
|
||||||
|
|
||||||
|
| Signal | Event controller |
|
||||||
|
| --- | --- |
|
||||||
|
| ::event | #GtkEventControllerLegacy |
|
||||||
|
| ::event-after | #GtkEventControllerLegacy |
|
||||||
|
| ::button-press-event | #GtkGestureClick |
|
||||||
|
| ::button-release-event | #GtkGestureClick |
|
||||||
|
| ::touch-event | various touch gestures |
|
||||||
|
| ::scroll-event | #GtkEventControllerScroll |
|
||||||
|
| ::motion-notify-event | #GtkEventControllerMotion |
|
||||||
|
| ::delete-event | - |
|
||||||
|
| ::key-press-event | #GtkEventControllerKey |
|
||||||
|
| ::key-release-event | #GtkEventControllerKey |
|
||||||
|
| ::enter-notify-event | #GtkEventControllerMotion |
|
||||||
|
| ::leave-notify-event | #GtkEventControllerMotion |
|
||||||
|
| ::configure-event | replaced by #GdkSurface::size-changed |
|
||||||
|
| ::focus-in-event | #GtkEventControllerFocus |
|
||||||
|
| ::focus-out-event | #GtkEventControllerFocus |
|
||||||
|
| ::map-event | replaced by #GdkSurface:mapped |
|
||||||
|
| ::unmap-event | replaced by #GdkSurface:mapped |
|
||||||
|
| ::property-notify-event | replaced by #GdkClipboard |
|
||||||
|
| ::selection-clear-event | replaced by #GdkClipboard |
|
||||||
|
| ::selection-request-event | replaced by #GdkClipboard |
|
||||||
|
| ::selection-notify-event | replaced by #GdkClipboard |
|
||||||
|
| Drag-and-Drop signals | #GtkDragSource, #GtkDropTarget |
|
||||||
|
| ::proximity-in-event | #GtkGestureStylus |
|
||||||
|
| ::proximity-out-event | #GtkGestureStylus |
|
||||||
|
| ::visibility-notify-event | - |
|
||||||
|
| ::window-state-event | replaced by #GdkToplevel:state |
|
||||||
|
| ::damage-event | - |
|
||||||
|
| ::grab-broken-event | - |
|
||||||
|
|
||||||
### Set a proper application ID
|
### Set a proper application ID
|
||||||
|
|
||||||
@@ -170,7 +203,7 @@ in GTK 3, you can prepare for the switch by using gtk_widget_destroy()
|
|||||||
only on toplevel windows, and replace all other uses with
|
only on toplevel windows, and replace all other uses with
|
||||||
gtk_container_remove() or g_object_unref().
|
gtk_container_remove() or g_object_unref().
|
||||||
|
|
||||||
### Reduce the use of generic container APIs</title>
|
### Reduce the use of generic container APIs
|
||||||
|
|
||||||
GTK 4 removes gtk_container_add() and gtk_container_remove(). While there
|
GTK 4 removes gtk_container_add() and gtk_container_remove(). While there
|
||||||
is not always a replacement for gtk_container_remove() in GTK 3, you can
|
is not always a replacement for gtk_container_remove() in GTK 3, you can
|
||||||
@@ -411,6 +444,7 @@ and gtk_box_append(). You can also reorder box children as necessary.
|
|||||||
The gtk_header_bar_set_show_close_button() function has been renamed to
|
The gtk_header_bar_set_show_close_button() function has been renamed to
|
||||||
the more accurate name gtk_header_bar_set_show_title_buttons(). The
|
the more accurate name gtk_header_bar_set_show_title_buttons(). The
|
||||||
corresponding getter and the property itself have also been renamed.
|
corresponding getter and the property itself have also been renamed.
|
||||||
|
The default value of the property is now %TRUE instead of %FALSE.
|
||||||
|
|
||||||
The gtk_header_bar_set_custom_title() function has been renamed to
|
The gtk_header_bar_set_custom_title() function has been renamed to
|
||||||
the more accurate name gtk_header_bar_set_title_widget(). The
|
the more accurate name gtk_header_bar_set_title_widget(). The
|
||||||
@@ -530,6 +564,26 @@ by a layout manager (if they are layout-related), or handled in some
|
|||||||
other way. One possibility is to use child meta objects, as seen with
|
other way. One possibility is to use child meta objects, as seen with
|
||||||
GtkAssistantPage, GtkStackPage and the like.
|
GtkAssistantPage, GtkStackPage and the like.
|
||||||
|
|
||||||
|
The replacements for gtk_container_add() are:
|
||||||
|
|
||||||
|
| Widget | Replacement |
|
||||||
|
| ------ | ----------- |
|
||||||
|
| GtkActionBar | gtk_action_bar_pack_start(), gtk_action_bar_pack_end() |
|
||||||
|
| GtkBox | gtk_box_append() |
|
||||||
|
| GtkExpander | gtk_expander_set_child() |
|
||||||
|
| GtkFixed | gtk_fixed_put() |
|
||||||
|
| GtkFlowBox | gtk_flow_box_insert() |
|
||||||
|
| GtkGrid | gtk_grid_attach() |
|
||||||
|
| GtkHeaderBar | gtk_header_bar_pack_start(), gtk_header_bar_pack_end() |
|
||||||
|
| GtkIconView | - |
|
||||||
|
| GtkInfoBar | gtk_info_bar_add_child() |
|
||||||
|
| GtkListBox | gtk_list_box_insert() |
|
||||||
|
| GtkNotebook | gtk_notebook_append_page() |
|
||||||
|
| GtkPaned | gtk_paned_set_start_child(), gtk_paned_set_end_child() |
|
||||||
|
| GtkStack | gtk_stack_add_named() |
|
||||||
|
| GtkTextView | gtk_text_view_add_child_at_anchor(), gtk_text_view_add_overlay() |
|
||||||
|
| GtkTreeView | - |
|
||||||
|
|
||||||
### Stop using GtkContainer::border-width
|
### Stop using GtkContainer::border-width
|
||||||
|
|
||||||
GTK 4 has removed the #GtkContainer::border-width property (together
|
GTK 4 has removed the #GtkContainer::border-width property (together
|
||||||
|
|||||||
@@ -123,6 +123,32 @@ the number of listitems they create such as with gtk_grid_view_set_max_columns()
|
|||||||
and developers running into performance problems should definitely study the
|
and developers running into performance problems should definitely study the
|
||||||
tradeoffs of those and experiment with them.
|
tradeoffs of those and experiment with them.
|
||||||
|
|
||||||
|
## Choosing the right model {#model-choosing}
|
||||||
|
|
||||||
|
GTK offers a wide variety of wrapping models which change or supplement an
|
||||||
|
existing model (or models) in some way. But when it comes to storing your
|
||||||
|
actual data, there are only a few ready-made choices available: #GListStore
|
||||||
|
and #GtkStringList.
|
||||||
|
|
||||||
|
GListStore is backed by a balanced tree and has performance characteristics
|
||||||
|
that are expected for that data structure. It works reasonably well for dataset
|
||||||
|
sizes in the 1,000,000 range, and can handle insertions and deletions. It uses
|
||||||
|
a cached iter to make linear access to the items fast.
|
||||||
|
|
||||||
|
GtkStringList is not a general store - it can only handle strings. It is
|
||||||
|
backed by an dynamically allocated array and has performance characteristics
|
||||||
|
that are expected for that data structure. GtkStringList is a good fit for any
|
||||||
|
place where you would otherwise use `char*[]` and works best if the dataset
|
||||||
|
is not very dynamic.
|
||||||
|
|
||||||
|
If these models don't fit your use case or scalability requirements, you
|
||||||
|
should make a custom #GListModel. It is a small interface and not very hard
|
||||||
|
to implement.
|
||||||
|
|
||||||
|
For asymptotic performance comparisons between tree- and array-based
|
||||||
|
implementations, see this
|
||||||
|
[article](https://en.wikipedia.org/wiki/Dynamic_array#Performance).
|
||||||
|
|
||||||
## Displaying trees {#displaying-trees}
|
## Displaying trees {#displaying-trees}
|
||||||
|
|
||||||
While #GtkTreeView provided built-in support for trees, the list widgets, and
|
While #GtkTreeView provided built-in support for trees, the list widgets, and
|
||||||
@@ -183,7 +209,7 @@ transitioning code for easy lookup:
|
|||||||
| #GtkTreeModel | #GListModel |
|
| #GtkTreeModel | #GListModel |
|
||||||
| #GtkTreePath | #guint position, #GtkTreeListRow |
|
| #GtkTreePath | #guint position, #GtkTreeListRow |
|
||||||
| #GtkTreeIter | #guint position |
|
| #GtkTreeIter | #guint position |
|
||||||
| GtkTreeRowReference | #GObject item |
|
| #GtkTreeRowReference | #GObject item |
|
||||||
| #GtkListStore | #GListStore |
|
| #GtkListStore | #GListStore |
|
||||||
| #GtkTreeStore | #GtkTreeListModel, #GtkTreeExpander |
|
| #GtkTreeStore | #GtkTreeListModel, #GtkTreeExpander |
|
||||||
| #GtkTreeSelection | #GtkSelectionModel |
|
| #GtkTreeSelection | #GtkSelectionModel |
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user