File: index.docbook

package info (click to toggle)
gnome-devel-docs 40.3-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 79,188 kB
  • sloc: javascript: 2,514; xml: 2,407; ansic: 2,229; python: 1,854; makefile: 805; sh: 499; cpp: 131
file content (1657 lines) | stat: -rw-r--r-- 107,395 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY gnomeversion "2.24">
<!ENTITY manrevision "2.24.0">
<!ENTITY date "September 2008">
<!ENTITY LEGAL SYSTEM "legal.xml">
<!ENTITY gad SYSTEM "gad.xml">
<!ENTITY gtest SYSTEM "gtest.xml">
]>
<?db.chunk.max_depth 4?>
<book id="index" lang="cs">
<title>Vývojářská příručka ke zpřístupnění GNOME</title>
<bookinfo>
<abstract role="description">
<para>Příručka ke zpřístupnění GNOME je určena pro vývojáře, kteří chtějí mít jistotu, že výsledek jejich programování bude přístupný širokému okruhu uživatelů. Příručka také pokrývá řadu požadavků článku 508 vlády USA.</para>
</abstract>
<copyright><year>2008</year> <holder>Vincent Alexander</holder></copyright>
<copyright><year>2001, 2002</year> <holder>Calum Benson, Brian Cameron, Bill Haneman, Padraig O'Briain, Sharon Snider</holder></copyright>
<publisher role="maintainer"> 
<publishername>Dokumentační projekt GNOME</publishername> 
</publisher>
<legalnotice id="legalnotice">
<para>Je povoleno kopírovat, šířit a/nebo upravovat tento dokument za podmínek GNU Free Documentation License (GFDL), verze 1.1 nebo jakékoli novější verze vydané nadací Free Software Foundation, bez neměnných oddílů, bez textů předních desek a bez textů zadních desek. Kopie GFD můžete najít <ulink type="help" url="ghelp:fdl">zde</ulink> nebo v souboru COPYING-DOCS dodávaném s touto příručkou.</para>
<para>Tato příručka je součástí kolekce příruček GNOME, distribuovaných pod licencí GFDL. Pokud chcete tento dokument šířit odděleně od kolekce, musíte přiložit kopii licence dle popisu v sekci 6 této licence.</para>
<para>Řada názvů užívaných firmami ke zviditelnění jejich produktů nebo služeb jsou registrované ochranné známky. Na místech, kde jsou tyto názvy v dokumentaci použity a členové Dokumentačního projektu GNOME jsou si vědomi skutečnosti, že se jedná o ochrannou známku, je takový název psán velkými písmeny celý nebo s velkým písmenem na začátku.</para>
<para>DOKUMENT A JEHO UPRAVENÉ VERZE JSOU ŠÍŘENY V SOULADU SE ZNĚNÍM LICENCE GNU FREE DOCUMENTATION LICENSE S NÁSLEDUJÍCÍM USTANOVENÍM: <orderedlist>
<listitem>
<para>DOKUMENT JE POSKYTOVÁN V PODOBĚ „JAK JE“ BEZ ZÁRUKY V JAKÉKOLIV PODOBĚ, NEPOSKYTUJÍ SE ANI ODVOZENÉ ZÁRUKY, ZÁRUKY, ŽE DOKUMENT, NEBO JEHO UPRAVENÁ VERZE, JE BEZCHYBNÝ, NEBO ZÁRUKY PRODEJNOSTI, VHODNOSTI PRO URČITÝ ÚČEL NEBO NEPORUŠENOSTI. RIZIKO NEKVALITY, NEPŘESNOSTI A ŠPATNÉHO PROVEDENÍ DOKUMENTU, NEBO JEHO UPRAVENÉ VERZE, LEŽÍ NA VÁS. POKUD KVŮLI TOMUTO DOKUMENTU, NEBO JEHO UPRAVENÉ VERZI, NASTANE PROBLÉM, VY (NIKOLIV PŮVODNÍ AUTOR NEBO JAKÝKOLIV PŘISPĚVATEL) PŘEBÍRÁTE JAKÉKOLIV NÁKLADY ZA NUTNÉ ÚPRAVY, OPRAVY ČI SLUŽBY. TOTO PROHLÁŠENÍ O ZÁRUCE PŘEDSTAVUJE ZÁKLADNÍ SOUČÁST TÉTO LICENCE. BEZ TOHOTO PROHLÁŠENÍ NENÍ, PODLE TÉTO DOHODY, POVOLENO TENTO DOKUMENT UŽÍVÁT ANI UPRAVOVAT; DÁLE</para>
</listitem>
<listitem>
<para>ZA ŽÁDNÝCH OKOLNOSTÍ A ŽÁDNÝCH PRÁVNÍCH PŘEDPOKLADŮ, AŤ SE JEDNÁ O PŘEČIN (VČETNĚ NEDBALOSTNÍCH), SMLOUVU NEBO JINÉ, NENÍ AUTOR, PŮVODNÍ PISATEL, KTERÝKOLIV PŘISPĚVATEL NEBO KTERÝKOLIV DISTRIBUTOR TOHOTO DOKUMENTU NEBO UPRAVENÉ VERZE DOKUMENTU NEBO KTERÝKOLIV DODAVATEL NĚKTERÉ Z TĚCHTO STRAN ODPOVĚDNÝ NĚJAKÉ OSOBĚ ZA PŘÍMÉ, NEPŘÍMÉ, SPECIÁLNÍ, NAHODILÉ NEBO NÁSLEDNÉ ŠKODY JAKÉHOKOLIV CHARAKTERU, VČETNĚ, ALE NEJEN, ZA POŠKOZENÍ ZE ZTRÁTY DOBRÉHO JMÉNA, PŘERUŠENÍ PRÁCE, PORUCHY NEBO NESPRÁVNÉ FUNKCE POČÍTAČE NEBO JINÉHO A VŠECH DALŠÍCH ŠKOD NEBO ZTRÁT VYVSTÁVAJÍCÍCH Z NEBO VZTAHUJÍCÍCH SE K POUŽÍVÁNÍ TOHOTO DOKUMENTU NEBO UPRAVENÝCH VERZÍ DOKUMENTU, I KDYŽ BY TAKOVÁTO STRANA BYLA INFORMOVANÁ O MOŽNOSTI TAKOVÉHOTO POŠKOZENÍ.</para>
</listitem>
</orderedlist></para>
</legalnotice>
 
<authorgroup> 
<author><firstname>Vincent</firstname> <surname>Alexander</surname> <affiliation> <orgname>Dokumentační projekt GNOME</orgname> </affiliation></author>
<author><firstname>Calum</firstname> <surname>Benson</surname> <affiliation> <orgname>Dokumentační projekt GNOME</orgname> </affiliation></author>
<author><firstname>Brian</firstname> <surname>Cameron</surname> <affiliation> <orgname>Dokumentační projekt GNOME</orgname> </affiliation></author>
<author><firstname>Bill</firstname> <surname>Haneman</surname> <affiliation> <orgname>Dokumentační projekt GNOME</orgname> </affiliation></author>
<author><firstname>Padraig</firstname> <surname>O'Briain</surname> <affiliation> <orgname>Dokumentační projekt GNOME</orgname> </affiliation></author> 
<author><firstname>Sharon</firstname> <surname>Snider</surname> <affiliation> <orgname>Dokumentační projekt GNOME</orgname> </affiliation></author>
</authorgroup>
<revhistory>
<revision><revnumber>Vývojářská příručka V2.24.0 ke zpřístupnění GNOME 2.24</revnumber> <date>září 2008</date> <revdescription> 
<para role="author">Dokumentační projekt GNOME</para> 
<para role="publisher">Dokumentační projekt GNOME</para> 
</revdescription></revision>
<revision><revnumber>Vývojářská příručka V2.24.0 ke zpřístupnění GNOME 2.24</revnumber> <date>září 2008</date> <revdescription> 
<para role="author">Dokumentační projekt GNOME</para> 
<para role="publisher">Dokumentační projekt GNOME</para> 
</revdescription></revision>
</revhistory>
<releaseinfo>Tato příručka popisuje pracovní prostředí GNOME ve verzi 2.24.</releaseinfo>
<legalnotice> 
<title>Ohlasy</title> 
<para>Pokud chcete oznámit chybu nebo navrhnout vylepšení vztahující se k pracovnímu prostředí GNOME nebo této příručce, postupujte dle instrukcí v <ulink type="help" url="ghelp:user-guide?feedback">kapitole Ohlasy v uživatelské příručce GNOME</ulink>.</para>
</legalnotice> 
</bookinfo>
<chapter id="gad" status="draft">
<title>Co je to zpřístupnění</title>
<para>Zpřístupnění znamená pomoc lidem s postižením, aby se mohli účastnit běžných každodenních činností. Což zahrnuje práci a využívání služeb, věcí a informací. Součástí GNOME jsou knihovny a podpůrný základní rámec umožňující lidem s postižením používat veškerou funkcionalitu uživatelského pracovního prostředí GNOME.</para>
<para>Ve spojení s asistenčními technologiemi – hlasovým rozhraním, čtečkou obrazovky, alternativním vstupním zařízením, apod. – v případě potřeby mohou lidé s trvalým nebo dočasným postižením i navzdory svému postižení používat pracovní prostředí GNOME a aplikace. Asistenční technologie se mohou hodit i ostatním lidem, když jsou mimo domov nebo kancelář. Například v dopravní zácpě můžete využít hlasový vstup a výstup ke kontrole své elektronické pošty.</para>
<para>Asistenční technologie získávají informace od aplikací pře API ATK (Accessibility Toolkit), který můžete najít v modulu atk v repozitářích GNOME. Díky tomu, že je podpora pro API zpřístupnění vestavěná ve widgetech GNOME, měly by vaše programy pro GNOME fungovat s asistenčními technologiemi poměrně dobře i bez nějakého přispění z vaší strany. Například umí asistenční technologie automaticky číst popisky widgetů, které ve svém programu nastavujete tak jako tak (např. pomocí zavolání funkce jako je <function>gtk_label_set_text()</function> nebo <function>gtk_button_new_with_label()</function>). Umí také zjistit, jestli je k widgetu přiřazena nějaká vysvětlivka a použít ji k popisu widgetu uživateli.</para>
<para>Když věnujete trochu úsilí navíc, může váš program fungovat s asistenčními technologiemi ještě lépe. Mimo toho, že tím pomůžete jednotlivým uživatelům, zatraktivníte tím svůj výtvor také pro vládní a školské zakázky, nehledě na to, že zpřístupnění v těchto případech mnohdy požaduje zákon.</para>

<section>
<title>Typy postižení</title>
<para>Jen v samotné české republice je odhadem přes milión lidí s postižením, kterým může být používání počítače ztíženo kvůli nepřístupnému návrhu softwaru. Globálně má okolo 8 % lidí, který používají webové stránky, nějaký druh postižení. Jednotlivá postižení spadají do některé z těchto kategorií:</para>
<itemizedlist>
<listitem>
<para><emphasis>Zraková postižení</emphasis> – může se pohybovat od zhoršeného vidění (včetně, mimo jiné, šerosleposti, silné krátkozrakosti nebo dalekozrakosti, barvosleposti a tunelového vidění) po úplnou slepotu. Špatná volba velikosti textu a barev a úlohy vyžadující přesnou koordinaci ruky a oka (jako pohyb myší) mohou těmto lidem způsobovat problémy.</para>
</listitem>
<listitem>
<para><emphasis>Pohybové postižení</emphasis> – pro uživatele se špatným ovládáním svalstva nebo svalovou distrofií může být obtížné používat standardní klávesnici nebo myš. Například nemohou zmáčknout dvě klávesy současně nebo mohou s větší pravděpodobností zmáčknout klávesu nechtěně.</para>
</listitem>
<listitem>
<para><emphasis>Sluchová postižení</emphasis> – může se pohybovat od schopnosti slyšet nějaké zvuky, ale nedokázat rozpoznat slova, po úplnou hluchotu. Aplikace, které podávají podstatné informace jen ve zvukové podobě, mohou těmto uživatelům působit problémy.</para>
</listitem>
<listitem>
<para><emphasis>Poruchy rozpoznávání a jazykové</emphasis> – mohou se pohybovat od dyslexie po obtíže s pamatováním věcí, řešením problémů nebo chápáním a používání mluveného či psaného jazyka. Komplikované nebo nekonzistentní zobrazení či špatná volba slov mohou těmto uživatelům ztížit používání počítače.</para>
</listitem>
<listitem>
<para><emphasis>Poruchy vnímání</emphasis> – určité druhy světel nebo zvuků mohou způsobit u vnímavějších uživatelů epileptický záchvat.</para>
</listitem>
</itemizedlist>
</section>

<section id="gad-how-it-works">
<title>Jak zpřístupnění funguje v GNOME</title>
<para>ATK (Accessibility Toolkit – sada nástrojů zpřístupnění) popisuje sadu rozhraní, která musí být implementována v komponentách GUI, aby byly přístupné. Rozhraní jsou nezávislá na vývojářských sadách – implementaci je možné napsat pro libovolnou množinu widgetů, jako je GTK, Motif nebo Qt.</para>
<para>Implementace pro widgety GTK je v dána ve třídě GtkAccessible. Jedná se o základní třídu pro implementaci zpřístupnění pro podtřídy GtkWidget. Je to tenké obalení okolo AtkObject, které přidává vybavení pro přidružení widgetu s jeho objektem zpřístupnění. Díky tomu části vaší aplikace, které používají standardní widgety GTK, mají základní úroveň přístupnosti, aniž byste museli do aplikace provádět zásahy.</para>
<para>Většina asistenčních technologií, které běží v jiných pracovních prostředích, zjistila, že je z historických důvodů potřeba se starat o složitý mimoobrazovkový model běžící aplikace založený na zachytávání událostí OS, o používání nepodporovaných OS a aplikačních funkcí a API a o silně nepřenositelné techniky. To udělalo z podpory asistenčních technologií něco snadno rozbitelného a značně závislého na OS a aplikaci, nebo dokonce verzi aplikace. Oproti tomu v pracovním prostředí GNOME jsou všechny informace požadované AT poskytovány běžící aplikací přes základní rámec přístupnosti do SPI (Service Provider Interface) nezávislého na použité nástrojové sadě. SPI poskytuje prostředky pro unixové asistenční technologie, jako je čtečka obrazovky a lupa obrazovky, aby získaly informace o zpřístupnění od běžících aplikací přes jednotné a stabilní API, a ve většině případů dokáže vyloučit potřebu mimoobrazovkového modelu. Podpora zpřístupnění pro aplikace je „zabudovaná“ v nástrojové sadě pro vývoj aplikací pomocí příslušného API (např. ATK pro většinu nativních aplikací v jazyce C a Java Accessibility API pro aplikace v jazyce Java) a exportována do běžného rozhraní „AT-SPI“ přes příslušný „most“ (viz schéma níže).</para>
<!--
<figure id="gad-architecture">
<title>GNOME Accessibility Architecture</title>
<mediaobject>
<imageobject>
<imagedata fileref="figures/GNOME_desktop_Accessibility.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Diagram of GNOME's accessibility architecture</phrase>
</textobject>
</mediaobject>
</figure>
-->
<para>Vestavěná podpora zpřístupnění v GNOME znamená, že aplikace vytvořené pomocí standardních widgetů GNOME dostávají podporu pro asistenční technologie „zdarma“ za předpokladu, že widgety nejsou používány neobvyklým způsobem, které by byl v konfliktu s touto vestavěnou podporou.</para>
<para>Widget gtk+/GNOME je zpřístupněný, pokud dodržuje obecná pravidla zpřístupnění uvedená v tomto dokumentu a implementuje rozhraní ATK odpovídající jeho roli v uživatelském rozhraní. Implementace ATK jsou poskytovány pro standardní widgety nástrojové sady GNOME (např. nezastaralé widgety gtk+ a GNOME) a nové widgety, které jsou jednoduše odvozeny ze stávajících widgetů GTK+ nebo GNOME, patřičnou podporu zpřístupnění většinou zdědí. </para>
<para>Ačkoliv vestavěná podpora zpřístupnění v GNOME poskytuje podstatnou funkcionalitu bez nutnosti úpravy částí kódu speciálně pro zpřístupnění, aplikace často vylepšují výchozí popisy pro některé widgety a přizpůsobují je na míru konkrétnímu účelu aplikace pomocí přímého volání metod ATK v aplikaci. Například, ve většině případů by aplikace měly přidat nebo změnit textové popisy u widgetů pomocí příslušného volání funkce ATK, aby asistenční technologie mohly popsat jejich účel nebo stav uživateli. Více informací viz <link linkend="gad-coding-guidelines">Příručka ke kódování s podporou zpřístupnění</link>.</para>
<para>Pokud vaše aplikace používá vlastní widgety, můžete mít nějakou práci s předáváním vlastností těchto widgetů asistenčním technologiím. Více informací viz <link linkend="gad-custom">Zpřístupnění vlastních komponent</link> a <link linkend="gad-api-examples">Příklady, které používají API zpřístupnění</link>.</para>
<para>Další informace ohledně GTK/GTK+, jdoucí více do hloubky, najdete v <ulink url="https://developer.gnome.org/gtk3/">referenční příručce GTK+</ulink>, v postarší <ulink url="https://developer.gnome.org/gtk-tutorial/stable/">výuce GTK+ 2.0</ulink> a v oficiálních <ulink url="https://developer.gnome.org/gtk3/stable/gtk-question-index.html">častých dotazech a odpovědích k GTK+</ulink>.</para>
</section>

<section id="dev-start">
<title>Rychlý úvod pro vývojáře</title>
<para>Zde je pár věcí pro začátek:</para>

<section id="dev-start-1">
<title>Jak si mohu ověřit, jestli je má aplikace přístupní či nikoliv?</title>
<para>Abyste správně začali, podívejte se nejdříve na <link linkend="gad-overview">Jak udělat aplikace v GNOME přístupné – přehled</link>. Než začnete psát kód, získejte přehled v <link linkend="gad-ui-guidelines">Pokyny k uživatelskému rozhraní ohledně podpory zpřístupnění</link> nebo v <link linkend="gad-coding-guidelines">Příručce k programování s podporou zpřístupnění</link>. Kontrolní seznam pro testování, až skončíte s psaním kódu, najdete v <link linkend="gad-checklist">Kontrolní seznam pro uživatelské rozhraní</link>.</para>
</section>

<section id="dev-start-2">
<title>Jaké jsou nejběžněnší nástrahy?</title>
<para><link linkend="gad-checklist">Kontrolní seznam pro uživatelské rozhraní</link> pokrývá všechny oblasti, které jsou občas přehlédnuty ve stádiu návrhu.</para>
</section>

<section id="dev-start-3">
<title>Jak můžu udělat běžné věci v ATK?</title>
<para>Stručný seznam běžných volání ATK najdete <link linkend="gad-api">zde</link>.</para>
</section>

<section id="dev-start-4">
<title>Jak můžu udělat složitější věci v ATK?</title>
<para>Další informace viz <link linkend="gad-custom">Zpřístupnění vlastních komponent</link> a <link linkend="gad-api-examples">Příklady, které používají API zpřístupnění</link>.</para>
</section>

<section id="dev-start-5">
<title>Úvod do ATK, AT-SPI a GTK+</title>
<screenshot>
<mediaobject><imageobject> <imagedata fileref="figures/gaa.jpg"/> </imageobject> <textobject> <phrase>Architektura zpřístupnění v GNOME</phrase> </textobject></mediaobject>
</screenshot>
<para>ATK je sada nástrojů, které používá GNOME k zajištění přístupnosti pro uživatele, kteří potřebují speciální podporu, aby mohli používat svůj počítač. ATK je používáno nástroji, jako je čtečka obrazovky, lupa obrazovky a vstupní zařízení, zajišťujícími plnohodnotnou práci v pracovním prostředí alternativními způsoby. Další informace viz <ulink url="http://java-gnome.sourceforge.net/4.1/doc/api/org/gnome/atk/package-summary.html">projekt ATK na SourceForge</ulink> a <ulink url="https://developer.gnome.org/atk/stable/">knihovna ATK</ulink>.</para>
<para>AT-SPI je hlavní rozhraní služby, přes kterou se asistenční technologie dotazují a přijímají upozornění od běžících aplikací. Kompletní API si můžete projít <ulink url="https://developer.gnome.org/at-spi-cspi/stable/">zde</ulink>..</para>
<para>GTK+ je knihovna pro vytváření grafického uživatelského rozhraní. Funguje na řadě platforem unixového typu, ve Windows a na zařízeních používajících framebuffer. GTK+ je vydána pod licencí GNU Library General Public License (GNU LGPL), která umožňuje flexibilní licencování pro klientské aplikace. GTK+ má objektově orientovanou architekturu napsanou v jazyce C, která umožňuje maximální pružnost. Je napsáno napojení na další jazyky, včetně C++, Objective-C, Guille/Scheme, Perl, Python, TOM, Ada95, Free Pascal a Eiffel. Její třída GtkAccessible je základní třídou pro implementaci zpřístupnění pro podtřídu GtkWidget. Jedná se o tenké obalení okolo AtkObject, které přidává vybavení pro přidružení widgetu k jeho objektu zpřístupnění.</para>
<para>Další informace o GTK/GTK+ jdoucí více do hloubky najdete v <ulink url="https://developer.gnome.org/gtk3/">Referenční příručce GTK+</ulink>, v <ulink url="https://wiki.gnome.org/Accessibility/Documentation/GNOME2/AtkGuide/Gtk">části o GTK v příručce ATK</ulink>, v postarší <ulink url="https://developer.gnome.org/gtk-tutorial/stable/">výuce GTK+ 2.0</ulink> hostované na GNOME a v oficiálních <ulink url="https://developer.gnome.org/gtk3/stable/gtk-question-index.html">častých dotazech a odpovědích k GTK+</ulink>.</para>
</section>
</section>

<section id="gad-overview">
<title>Jak udělat aplikace v GNOME přístupné – přehled</title>
<para>Pokud vaše aplikace používá jen standardní widgety GTK, budete pravděpodobně muset udělat jen minimum věcí, nebo vůbec nic, aby vaše aplikace měla (rozumnou) přístupnost. Dejte ale pozor na objekty ve svém GUI, které nemají přiřazen textový popis, jako jsou grafická tlačítka nebo indikátory stavu, které nemají popisky nebo vysvětlivky.</para>
<para>Nejspíše také budete muset zdokonalit výchozí popis poskytovaný pro některé widgety a přizpůsobit je na míru konkrétnímu účelu widgetu ve vaší aplikaci. U těchto widgetů byste měli přidat nebo změnit textový popis pomocí příslušných funkcí ATK, aby asistenční technologie mohly popsat jejich účel nebo stav uživateli. Více informací viz <link linkend="gad-coding-guidelines">Příručka k programování s podporou zpřístupnění</link>.</para>
<para>Pokud vaše aplikace používá vlastní widgety, můžete mít nějakou práci s předáváním vlastností těchto widgetů asistenčním technologiím. Více informací viz <link linkend="gad-custom">Zpřístupnění vlastních komponent</link> a <link linkend="gad-api-examples">Příklady, které používají API zpřístupnění</link>.</para>
</section>

<section id="gad-coding-guidelines">
<title>Příručka k programování s podporou zpřístupnění</title>
<para>Zde je několik věcí, které můžete udělat ve svém kódu, abyste zajistili, že váš program bude pracovat co nejlépe s asistenčními technologiemi. (V části <link linkend="gad-ui-guidelines">Pokyny k uživatelskému rozhraní ohledně podpory zpřístupnění</link> v této příručce můžete najít seznam věcí, které byste měli vzít do úvahy, když navrhujete GUI.):</para>
<itemizedlist>
<listitem>
<para>U komponent, které nezobrazují krátký název (jako jsou grafická tlačítka), určete název pomocí <function>atk_object_set_name()</function>. Budete to chtít u čistě obrázkových tlačítek, u panelů, které poskytují logické seskupení, u textových oblastí a pod.</para>
</listitem>
<listitem>
<para>Pokud nemůžete ke komponentě poskytnout vysvětlivku, použijte místo toho <function>atk_object_set_description()</function>, která poskytne popis, který mohou asistenční technologie předat uživateli. Například poskytnutí zpřístupňujícího popisu pro tlačítko <guibutton>Zavřít</guibutton> by vypadalo takto:</para>
<example>
<title>Poskytnutí zpřístupňujícího popisu pro GtkButton</title>
<programlisting>
{
  AtkObject *obj;
  obj = gtk_widget_get_accessible(button);
  atk_object_set_description(obj,_("Closes the window"));
}
</programlisting>
</example>
</listitem>
<listitem>
<para>Použijte <function>atk_image_set_description()</function> k poskytnutí textového popisu ke všem obrázkům a ikonám ve svém programu.</para>
</listitem>
<listitem>
<para>Pokud několik komponent tvoří logickou skupinu, zkuste je vložit do jednoho kontejneru.</para>
</listitem>
<listitem>
<para>Kdykoliv máte popisek, který popisuje jinou komponentu, použijte <function>atk_relation_set_add_relation()</function>, aby asistenční technologie dokázala najít komponentu, se kterou je popisek svázán. (Když přidružíte popisek s komponentou pomocí <function>gtk_label_set_mnemonic_widget()</function>, je vztah <constant>ATK_RELATION_LABEL_FOR</constant> vygenerován automaticky, takže následující kód nebude nutný):</para>
<example>
<title>Vytvoření vztahu mezi GtkLabel a GtkWidget</title>
<programlisting>
{
  GtkWidget *widget;
  GtkLabel *label;

  AtkObject *atk_widget, *atk_label;
  AtkRelationSet *relation_set;
  AtkRelation *relation;
  AtkObject *targets[1];

  atk_widget = gtk_widget_get_accessible(widget);
  atk_label = gtk_widget_get_accessible (GTK_WIDGET(label));

  relation_set = atk_object_ref_relation_set (atk_label);
  targets[0] = atk_widget;

  relation = atk_relation_new(targets,1, ATK_RELATION_LABEL_FOR);
  atk_relation_set_add(relation_set,relation);
  g_object_unref(G_OBJECT(relation));
}
</programlisting>
</example>
</listitem>
<listitem>
<para>Když vytvoříte vlastní widget, zajistěte, aby podporoval zpřístupnění. Vlastní komponenty, které jsou potomky jiných widgetů GTK, by měly přepsat zděděnou podporu zpřístupnění podle potřeby. Více informací viz <link linkend="gad-custom">zpřístupnění vlastních komponent</link>.</para>
</listitem>
<listitem>
<para>Neničte věci, které dostanete zdarma! Když bude mít vaše GUI nezpřístupněný kontejner, kterákoliv komponenta uvnitř tohoto kontejneru se může stát nepřístupnou.</para>
</listitem>
</itemizedlist>
</section>

<section id="gad-api">
<title>API zpřístupnění</title>
<para>Zde je pár základních volání API, která můžete potřebovat pro použití ve své aplikaci, když chcete zajistit, že bude pracovat s asistenčními technologiemi. Celé API zpřístupnění je rozšiřitelné, abyste mohli například psát své vlastní widgety pro podporu zpřístupnění.</para>
<table frame="all">
<title>Běžně používaná volání API ATK</title>
<tgroup cols="2" align="left">
<thead>
<row>
<entry>API</entry>
<entry>Popis</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<para><function>AtkObject* gtk_widget_get_accessible (GtkWidget*)</function></para>
</entry>
<entry>
<para>Vrací objekt zpřístupnění, který popisuje zadaný Widget GTK pro asistenční technologii.</para>
</entry>
</row>
<row>
<entry>
<para><function>void atk_object_set_name (AtkObject*, const gchar*)</function></para>
</entry>
<entry>
<para>Nastavuje název pro zpřístupněný objekt. Například, pokud je objektem grafické tlačítko, které při zmáčknutí ukončí aplikaci, může být název „Quit“.</para>
</entry>
</row>
<row>
<entry>
<para><function>void atk_object_set_description (AtkObject*, const gchar*)</function></para>
</entry>
<entry>
<para>Nastaví textový popis zpřístupněného objektu. Například, když je objektem grafické tlačítko „Zavřít“, může být popis „Closes the window“.</para>
</entry>
</row>
<row>
<entry>
<para><function>AtkRelation* atk_relation_new (AtkObject**, gint, AtkRelationType)</function></para>
</entry>
<entry>
<para>Vytvoří nový vztah mezi zadaným klíčem a zadaným seznamem cílových objektů. Vztah normálně říká asistenční technologii, že některý widget nějak souvisí s jiným. Například, že konkrétní widget GtkLabel je nadpisem widgetu GtkTreeView v tom samém okně.</para>
</entry>
</row>
<row>
<entry>
<para><function>void atk_image_set_description (AtkImage*, const gchar*)</function></para>
</entry>
<entry>
<para>Nastaví textový popis zpřístupněného obrázkového objektu. Například, když je objektem náhled viruální plochy v apletu na panel, může být popis „Image showing window arrangement on desktop 1“.</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</section>

<section id="gad-api-examples">
<title>Příklady, které používají API zpřístupnění</title>
<para>Jak bylo uvedeno již dříve, měli byste mít jen málo práce, nebo vůbec žádnou, s tím, abyste měli svoji aplikaci zpřístupněnou, když budete používat sadu widgetů GTK nebo jinou knihovnu widgetů, které implementují rozhraní ATK. Dvě hlavní obvyklé věci, kterým byste měli věnovat v takovém případě věnovat pozornost, jsou:</para>
<itemizedlist>
<listitem>
<para>Poskytnout popisy některým ovládacím prvkům a obrázkům pomocí <function>atk_object_set_description()</function> nebo <function>atk_image_set_description():</function></para>
<example>
<title>Nastavení popisu zpřístupnění pro tlačítko</title>
<programlisting>
{
   AtkObject *obj;
   obj = gtk_widget_get_accessible(button);
   atk_object_set_description(obj,_("Opens Preferences dialog"));
}
</programlisting>
</example>
<para>
</para>
</listitem>
<listitem>
<para>Určit vztahy mezi některými neobvyklými seskupeními widgetů pomocí <function>atk_relation_new()</function> a <function>atk_relation_set_add()</function>:</para>
<example>
<title>Definice zpřístupňujícího vztahu mezi dvěma ovládacími prvky</title>
<programlisting>
{
  GtkWidget *widget;
  GtkLabel *label;

  AtkObject *atk_widget, *atk_label;
  AtkRelationSet *relation_set;
  AtkRelation *relation;
  AtkObject *targets[1];

  atk_widget = gtk_widget_get_accessible (widget);
  atk_label = gtk_widget_get_accessible (GTK_WIDGET(label));

  relation_set = atk_object_ref_relation_set (atk_label);
  targets[0] = atk_widget;

  relation = atk_relation_new(targets,1, ATK_RELATION_LABEL_FOR);
  atk_relation_set_add(relation_set,relation);
  g_object_unref(G_OBJECT(relation));
}
</programlisting>
</example>
</listitem>
</itemizedlist>
<para>Příklady ve zbytku této části se většinou věnují nuancím v celém ATK. Pokrývá techniky, které možná nebudete nikdy potřebovat jako vývojář aplikací, ale mohou vás zajímat při psaní vlastních widgetů (viz <link linkend="gad-custom">Zpřístupnění vlastních komponent</link>) nebo když chcete napsat aplikaci pro asistenční technologii.</para>

<section>
<title>Sbírání informací o zpřístupnění z aplikace</title>
<para>Program, který si přeje používat volání ATK, bude pravděpodobně muset udělat jednu (nebo více) z následujících věcí:</para>
<orderedlist>
<listitem>
<para>Vytvořit sledování události, například pomocí funkce <function>atk_add_focus_tracker()</function>:</para>
<programlisting>atk_add_focus_tracker (_my_focus_tracker);</programlisting>
<para>kde <function>_my_focus_tracker()</function> je funkce s tímto prototypem:</para>
<programlisting>void _my_focus_tracker (AtkObject *aobject);</programlisting>
</listitem>
<listitem>
<para>Vytvořit globální naslouchání události pomocí atk_add_global_event_listener():</para>
<programlisting>
mouse_watcher_focus_id =   atk_add_global_event_listener(_my_global_listener,"Gtk:GtkWidget:enter_notify_event");
</programlisting>
<para>kde <function>_my_global_listener</function> má prototyp z <function>_my_global_listener</function> v Glib. Tento příklad způsobí, že funkce <function>_my_global_listener()</function> bude volána, kdykoliv se vyskytne signál enter_notify_even na objektu <type>GtkWidget</type>.</para>
</listitem>
<listitem>
<para>K objektu ATK nejvyšší úrovně získáte přístup zavoláním následující funkce.</para>
<programlisting>AtkObject *root_obj = atk_get_root();</programlisting>
<para>Vrací <type>AtkObject</type>, který obsahuje všechna okna nejvyšší úrovně v aktuálně běžícím programu. Uživatel pak může procházet hierarchií objektů pomocí přístupu k potomkům kořenového objektu, které odpovídají oknům nejvyšší úrovně.</para>
</listitem>
</orderedlist>
</section>

<section>
<title>Dotazování se rozhraní objektu <type>AtkObject</type></title>
<para>Když máte vyhledán <type>AtkObject</type> patřící k objektu v aplikaci (např. pomocí <function>gtk_widget_get_accessible()</function>), můžete různými způsoby zjistit, která rozhraní má implementována:</para>
<orderedlist>
<listitem>
<para>Použijte podporovaná makra <function>ATK_IS_…</function>, například:</para>
<itemizedlist>
<listitem>
<para><function>ATK_IS_ACTION(atkobj)</function></para>
</listitem>
<listitem>
<para><function>ATK_IS_COMPONENT(atkobj)</function></para>
</listitem>
<listitem>
<para>atd. (pro každé rozhraní je jedno)</para>
</listitem>
</itemizedlist>
<para>Pokud makro vrací <function>TRUE</function>, volání rozhraní může být na objektu ATK bezpečně provedeno.</para>
</listitem>
<listitem>
<para>Otestujte roli <type>AtkObject</type> zavoláním <function>atk_object_get_role()</function>. Kterákoliv daná role implementuje určitý počet API pro ATK.</para>
</listitem>
</orderedlist>
</section>

<section>
<title>Nastavení zpracování signálu ATK</title>
<para>Kupříkladu použití signálu <constant>column_inserted</constant>:</para>
<programlisting>
table_column_inserted_id = g_signal_connect_closure_by_id (my_atk_obj, 
g_signal_lookup("column_inserted", G_OBJECT_TYPE(my_atk_obj)), 0, 
g_cclosure_new(G_CALLBACK (_my_table_column_inserted_func), NULL, NULL), FALSE);
</programlisting>
<para>Tento kód způsobí, že funkce <function>_my_table_column_inserted_func()</function> bude volána pokaždé, když je na objektu <type>AtkObject</type> <varname>my_atk_object</varname> vyslán signál column_inserted.</para>
<para>Připojení signálu se lehce liší, když signál podporuje detaily. Signál <constant>children_changed</constant> podporuje detail <parameter>add</parameter>. Pro připojení k signálu, když je určen i detail <parameter>add</parameter>, se používá tato technika:</para>
<programlisting>
child_added_id = g_signal_connect_closure (my_atk_obj,"children_changed::add",
g_cclosure_new (G_CALLBACK(_my_children_changed_func), NULL, NULL), FALSE);
</programlisting>
<para>Tento kód způsobí, že funkce <function>_my_children_changed_func()</function> bude volána pokaždé, když je na objektu <type>AtkObject</type> <varname>my_atk_obj</varname> vyslán signál <constant>children_changed</constant> s detailem <parameter>add</parameter>.</para>
</section>

<section>
<title>Implementace objektu ATK</title>
<section>
<title>Registr</title>
<para>V tomto příkladu budeme předpokládat, že máme objekt s názvem GTK_TYPE_MYTYPE. Implementace ATK bude volat <type>MYATKIMP_TYPE_MYTYPE</type>. Bude zapotřebí generátor s názvem <type>MYATKIMP_TYPE_MYTYPE_FACTORY</type>.</para>
<para>Abyste zaregistrovali implementaci ATK objektu GTK, musí ve funkci <function>gtk_module_init()</function> modulu následovat tyto kroky:</para>
<orderedlist>
<listitem>
<para>Získejte přístup k výchozímu registru:</para>
<programlisting>
default_registry = atk_get_default_registry();
</programlisting>
</listitem>
<listitem><para>Zaregistrujte objekt ATK ve funkci <function>gtk_module_init()</function> tohoto modulu pomocí zavolání této funkce:</para>
<programlisting>
atk_registry_set_factory_type (default_registry, GTK_TYPE_MYTYPE, 
MYATKIMP_TYPE_MYTYPE_FACTORY); 
</programlisting>
</listitem>
</orderedlist>
<para>Tím se zaregistruje implementace AtkObject pro <type>GTK_TYPE_MYTYPE</type> do <type>MYATKIMP_TYPE_MYTYPE_FACTORY</type>. Tento generátor bude implementován, takže bude známo, jak sestavit objekty typu <type>MYATKIMP_TYPE_MYTYPE</type>.</para>
</section>

<section>
<title>Generátor</title>
<para>Generátor (factory) musí být implementován jako dceřiná třída typu <type>ATK_TYPE_OBJECT_FACTORY</type> a musí implementovat funkci <function>create_accessible()</function>. Tato funkce musí vytvořit příslušný <type>AtkObject</type>. Generátor lze použít k vytvoření více než jednoho typu objektu, přičemž jeho funkce <function>create_accessible()</function> musí být dostatečně chytrá, aby sestavila a vrátila správný <type>AtkObject</type>.</para>
</section>

<section>
<title>Implementace ATK pro zadaný objekt</title>
<para>Všechny <type>GObject</type> implementují funkci <function>get_type()</function>. Když vezmeme předchozí příklad, podle konvence pojmenování by název funkce byl <function>myatkimp_mytype_get_type()</function>.</para>
<para>V této funkci určujete, která rozhraní bude váš objekt implementovat. Když by se použila logika, která byla použita v této funkci <function>get_type()</function>, implementoval by objekt rozhraní <type>ATK_TEXT</type>:</para>
<example>
<title>Vzorová funkce <function>get_type()</function></title>
<programlisting>
static const GInterfaceInfo atk_text_info = 
{ 
   (GInterfaceInitFunc) atk_text_interface_init, 
   (GInterfaceFinalizeFunc) NULL, 
   NULL 
}; 

g_type_add_interface_static (type, ATK_TYPE_TEXT, 
                             &amp;atk_text_info); 
</programlisting>
</example>
<para>Měla by být implementována funkce <function>atk_text_interface_init()</function>, která má následující prototyp:</para>
<programlisting>
void atk_text_interface_init (AtkTextIface *iface); 
</programlisting>
<para>Tato funkce by napojila volání funkce rozhraní na konkrétní implementaci následovně:</para>
<example>
<title>Napojení volání vlastního rozhraní na implementaci AtkObject</title>
<programlisting>
void 
atk_text_interface_init (AtkTextIface *iface) 
{ 
   g_return_if_fail (iface != NULL); 
   iface-&gt;get_text = myatkimp_mytype_get_text; 
   iface-&gt;get_character_at_offset = myatkimp_mytype_get_character_at_offset; 
   ... 
}
</programlisting>
</example>
<para>Potom by bylo potřeba implementovat funkce <function>myatkimp_mytype_get_text()</function>, <function>myatkimp_mytype_get_character_at_offset()</function> a zbytek funkcí rozhraní <type>ATK_TEXT</type>.</para>
</section>

<section>
<title>Implementace <type>AtkObject</type></title>
<para>Objekty <type>AtkObject</type> jsou potomci <type>GObjects</type> a všechny objekty <type>GObjects</type> potřebují specifikovat funkci <function>get_type()</function>. Zde je příklad, který nastavuje třídu a instanci inicializátoru. Tato funkce <function>get_type()</function> rovněž definuje, že objektu implementuje <type>ATK_TEXT</type>, a definuje, že rodičovský objekt bude <type>MYATKIMP_MYPARENTTYPE</type>.</para>
<!--
<example>
<title>Sample <function>get_type()</function> implementation</title>
<programlisting>
GType 
myatkimp_mytype_get_type (void) 
{ 
   static GType type = 0; 

   if (!type) 
   { 
      static const GTypeInfo tinfo = 
      { 
         sizeof (GailLabelClass), 
         (GBaseInitFunc) NULL,                              /* base init */ 
         (GBaseFinalizeFunc) NULL,                          /* base finalize */
         (GClassInitFunc) myatkimp_mytype_class_init,       /* class init */ 
         (GClassFinalizeFunc) NULL,                         /* class finalize */ 
         NULL,                                              /* class data */ 
         sizeof (GailLabel),                                /* instance size */ 
         0,                                                 /* nb preallocs */ 
         (GInstanceInitFunc) myatkimp_mytype_instance_init, /* instance init */ 
         NULL                                               /* value table */ 
      }; 

      /* Set up atk_text_info structure used below */ 
      static const GInterfaceInfo atk_text_info = 
      { 
         (GInterfaceInitFunc) atk_text_interface_init, 
         (GInterfaceFinalizeFunc) NULL, 
         NULL 
      }; 

      /* Set up typename and specify parent type */ 
      type = g_type_register_static (MYATKIMP_MYPARENTTYPE, 
            "MyatkimpMytype", &amp;tinfo, 0); 

      /* This class implements interface ATK_TYPE_TEXT */ 
      g_type_add_interface_static (type, ATK_TYPE_TEXT, 
                                   &amp;atk_text_info); 
   } 
   return type; 
} 
</programlisting>
</example>
-->
</section>

<section>
<title>Inicializace třídy/instance</title>
<para>Budete muset vytvořit inicializátor třídy pro objekt <type>GObject</type>, pokud vaše implementace <type>AtkObject</type> buď:</para>
<orderedlist>
<listitem>
<para>Znovu definuje kterákoliv volání funkcí definovaná v rodiči objektu. To je typicky nutné, když některý objekt potřebuje implementovat funkci, jako je <function>atk_object_get_n_accessible_children()</function>. To je nutné, když má objekt potomka, ale ten není reprezentován widgetem.</para>
<!--
<para>
For example, if your ATK implementation needs to over-ride the <type>AtkObject</type> function <function>get_name()</function>, then the class initializer would look like:
</para>
<example>
<title>Class initializer that overrides parent's <function>get_name()</function> function</title>
<programlisting>
myatkimp_mytype_class_init (GailLabelClass *klass) 
{ 
  AtkObjectClass *class = ATK_OBJECT_CLASS (klass); 
  class->get_name = myatkimp_mytype_get_name; 
} 
</programlisting>
</example>
-->
</listitem>
<listitem><para>Vyžaduje funkci <function>parent-&gt;init</function>, <function>parent-&gt;notify_gtk</function> nebo <function>parent-&gt;finalize</function>.</para>
<!--
<para>
This example defines all three:
</para>
<example>
<title>Class initializer that defines its own <function>init()</function>, <function>notify_gtk()</function> and <function>finalize()</function> functions</title>
<programlisting>
static ParentObjectType *parent_class = NULL; 

myatkimp_mytype_class_init (GailLabelClass *klass) 
{ 
   ParentObjectType *parent_class = (ParentObjectType*)klass; 

   /* 
    * Caching the parent_class is necessary if the init, 
    * notify_gtk, or finalize functions are set up. 
    */ 
    parent_class = g_type_class_ref (MYATKIMP_TYPE_PARENT); 

    parent_class->init = myatkimp_mytype_widget_init; 
    parent_class->notify_gtk = myatkimp_mytype_real_notify_gtk; 
    parent_class->finalize = myatkimp_mytype_finalize; 
}
</programlisting>
</example>
-->
<orderedlist>
<listitem>
<para>parent-&gt;init</para>
<para>Funkce <function>parent-&gt;init()</function> může být nutná, když implementace ATK potřebuje udělat něco z následujícího:</para> 
<orderedlist>
<listitem>
<para>Ukládat do mezipaměti data získaná z widgetu GTK v pozadí.</para>
</listitem>
<listitem>
<para>Naslouchat signálům z widgetu GTK v pozadí.</para>
</listitem>
</orderedlist>
<!--
<para>
Here is an example of both:
</para>
<example>
<title>A custom <function>init()</function> function</title>
<programlisting>
void 
gail_tree_view_widget_init (MyatkimpMytype  *mytype, 
                            GtkWidget       *gtk_widget) 
{ 
   /* Make sure to call the parent's init function */ 
   parent_class->init (widget, gtk_widget); 
   
   /* Cache a value in the ATK implementation */ 
   mytype->cached_value = gtk_widget_function_call(); 

   /* Listen to a signal */ 
   gtk_signal_connect (GTK_OBJECT (gtk_widget), 
                       "signal-type", 
                       GTK_SIGNAL_FUNC (_myatkimp_mytype_signal_type), 
                       NULL); 
} 
</programlisting>
</example>
<para>
In this example, if the specified <type>signal-type</type> signal were generated on the backing <varname>gtk_widget</varname>, then the <function>_myatkimp_mytype_signal_type()</function> function would be called.
</para>
-->
</listitem>
<listitem>
<para>parent-&gt;notify_gtk</para>
<para>Když implementace ATK potřebuje naslouchat upozornění na nějakou vlastnost u objektu GTK v pozadí, může být nutná funkce <function>parent-&gt;notify_gtk()</function>. Například:</para>
<example>
<title>Vlastní funkce <function>notify_gtk()</function></title>
<programlisting>
void 
myatkimp_mytype_real_notify_gtk (GObject    *obj, 
                                 GParamSpec *pspec) 
{ 
   GtkWidget *widget = GTK_WIDGET (obj); 
   AtkObject* atk_obj = gtk_widget_get_accessible (widget); 

   if (strcmp (pspec-&gt;name, "property-of-interest") == 0) 
   { 
      /* Handle the property change. */ 
   } 
   else 
   { 
      parent_class-&gt;notify_gtk (obj, pspec); 
   } 
} 
</programlisting>
</example>
</listitem>
<listitem>
<para>parent-&gt;finalize</para>
<para>Když je potřeba uvolnit některá data při zničení instance <type>GObject</type>, pak je potřeba funkce <function>finalize()</function> k uvolnění paměti: Například:</para>
<example>
<title>Vlastní funkce <function>finalize()</function></title>
<programlisting>
void 
myatkimp_mytype_finalize (GObject *object) 
{ 
   MyAtkimpMyType *my_type = MYATKIMP_MYTYPE (object); 

   g_object_unref (my_type-&gt;cached_value); 
   G_OBJECT_CLASS (parent_class)-&gt;finalize (object); 
} 
</programlisting>
</example>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
</section>
</section>
</section>

<section id="gad-custom">
<title>Jak zajistit zpřístupnění vlastních komponent</title>
<para>Přidání podpory ATK do vašeho vlastního widgetu zajistí jeho spolupráci s infrastrukturou zpřístupnění. Zde jsou obecné kroky, které jsou nutné:</para>
<itemizedlist>
<listitem>
<para>vyhodnotit vlastní widget podle pravidel v <link linkend="gad-ui-guidelines">Příručce k uživatelskému rozhraní</link></para>
</listitem>
<listitem>
<para>určit, která <ulink url="https://developer.gnome.org/atk/stable/interfaces.html">rozhraní ATK</ulink> by měl vlastní widget implementovat, s ohledem na množinu vlastnosí widgetu a funkci</para>
</listitem>
<listitem>
<para>vyhodnotit, která <ulink url="https://developer.gnome.org/atk/stable/interfaces.html">rozhraní ATK</ulink> mohou být zděděna z třídy rodičovského widgetu</para>
</listitem>
<listitem>
<para>implementovat příslušná rozhraní ATK pro třídu widgetu jedním ze dvou způsobů:</para>
<itemizedlist>
<listitem>
<para>přímo vlastním widgetem nebo</para>
</listitem>
<listitem>
<para>v podtypu <ulink url="https://developer.gnome.org/atk/stable/AtkObject.html"><type>AtkObject</type></ulink> vytvořeném novou podtřídou <ulink url="https://developer.gnome.org/atk/stable/AtkObjectFactory.html"><type>AtkObjectFactory</type></ulink></para>
</listitem>
</itemizedlist>
<para>Pokud je použita druhá metoda, musí být za běhu pomocí <type>AtkObjectFactoryRegistry</type> zaregistrován typ generátoru.</para>
</listitem>
</itemizedlist>
</section>

<section id="gad-ui-guidelines">
<title>Pokyny k uživatelskému rozhraní ohledně podpory zpřístupnění</title>
<para>Když navrhujete uživatelské rozhraní své aplikace, je zde několik jednoduchých zásad, kterých byste se měli držet, abyste zajistili, že bude použitelné pro tak široký okruhem uživatelů, jak jen to je možné, ať už spolu s asistenčními technologiemi nebo bez nich. Nenechte se zmást pocitem, že to „děláte jen pro lidi se zdravotním postižením“, a protože víte, že takováto osoba nebude vaši aplikaci nikdy používat, nemusíte se tím zabývat. Následující zásady vylepší použitelnost vaší aplikace celkově pro všechny, kdo ji budou používat – včetně vás!</para>

<section>
<title>Obecné</title>
<para>Všichni býváme znechucení, když nemůžeme v aplikaci najít některou funkci nebo se spleteme, což nás stojí pár minut to napravit, pokud to napravit je možné. Pokud máte nějaký typ postižení, jsou šance na potřebu věnovat více úsilí a přijít o čas podstatně vyšší. Následujících několik základních obecných zásad pomůže předejít těmto situacím pro všechny uživatele.</para>
<itemizedlist>
<listitem>
<para>Poskytněte funkci „Zpět“ pro všechny činnosti, které mění uživatelova data nebo nastavení aplikace. Pokud je to možné, nabídněte více úrovní pro funkce zpět a znovu a seznam s historií, kde uživatel získá přehled, které činnosti se budou vracet zpět.</para>
</listitem>
<listitem>
<para>Poskytněte příkazy pro obnovení výchozích nastavení. Pokud některé konkrétní nastavení může způsobit úplnou nepoužitelnost aplikace pro uživatele, např. nastavení příliš malého písma, bylo by vhodnější poskytnout možnost obnovit výchozí nastavení někde mimo vlastní aplikaci. Například se to dá provést přepínačem příkazového řádku.</para>
</listitem>
<listitem>
<para>Pomozte uživatelům vyvarovat se nesprávných věcí. To je důležité zejména pro činnosti, které mohou být provedné nechtěně (např. myší) nebo je nelze snadno vrátit zpět (např. přepsaný soubor). Zvažte použití potvrzovacího dialogového okna nebo přinucení uživatele přepnout se do určitého režimu, když se chystá provést potenciálně destruktivní činnost.</para>
</listitem>
<listitem>
<para>Omezte zátěž uživatele na zapamatování si věcí. Například umožněte uživateli zobrazit si naráz více dokumentů a zajistěte, že nápověda nebo jiné informace mohou být vidět i během postupu, který popisují. Umožněte uživatelům kopírovat libovolné informace, které jsou zobrazené, a vložit je kamkoliv, kde lze zadávat data.</para>
</listitem>
<listitem>
<para>Nenuťte uživatele vkládat disky. V závislosti na uživatelově konkrétním postižení může pro něj být fyzicky obtížné vložit nebo vyměnit disk, nebo pro něj může být obtížné zjistit, o který disk se jedná. Pokud je vaše aplikace instalována z disku CD, nabídněte možnost zkopírovat všechny soubory, které budou zapotřebí, na uživatelův pevný disk.</para>
</listitem>
<listitem>
<para>Neumisťujte často používané funkce hluboko do struktury nabídky. Ať už používáte myš, klávesnici nebo jiné vstupní zařízení, je lepší se hluboce vnořeným položkám v nabídkách vyhnout. Mimo to, že je obtížne si zapamatovat, kde je najdete, je vždy také časově náročné se k nim dostat.</para>
</listitem>
<listitem>
<para>Neveďte uživatele kroky, které nejsou nutné. Například, průvodci jsou užiteční pro uživatele, kteří mají problém pracovat s velkým množstvím různých voleb naráz, ale jiní uživatelé třeba potřebují ušetřit čas nebo počet zmáčknutí kláves. Tito uživatelé těží výhodu z možnosti přeskočit nepotřebné kroky nebo z možnosti přejít přímo na ten, který potřebují. Zvažte v průvodci nabídnutí tlačítka <guibutton>Dokončit</guibutton>, které přeskočí zbývající kroky do konce a bude pro ně předpokládat výchozí odpovědi. Pokud má proces mnoho kroků, zvažte, zda se na začátku uživatele nezeptat, jestli chce projít všemi kroky nebo jen těmi nejběžnějšími.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Ovládání klávesnicí</title>
<para>Dobře navržené klávesnicové uživatelské rozhraní hraje klíčovou roli, když navrhujete přístupný software. Slepí uživatelé dokáží software lépe obsluhovat pomocí klávesnice, protože ovládání myší závisí na vizuální zpětné vazbě vůči poloze ukazatele myši. Také pohybová postižení mohou uživateli bránit v úspěšné obsluze myší, protože to vyžaduje schopnost jemného motorického ovládání.</para>
<para>Proto je důležité umožnit všechny činnosti prováděné myší provést i pomocí klávesnice, včetně přístupu z klávesnice ke všem nástrojovým lištám, nabídkám, odkazům a tlačítkům. Každá funkce, kterou vaše aplikace nabízí, by měla být dostupná čistě pomocí klávesnice. Pokud musíte, skryjte si během testování své aplikace myš!</para>
<para>Většina funkcionality by měla být snadno přístupná pomocí horkých kláves a klávesových zkratek a pomocí funkcí ovládání zabudovaných v nástrojové sadě, na které je aplikace vyvíjena. Nicméně nad některými operacemi, jako „táhni a upusť“, se budete muset zamyslet hlouběji.</para>
<itemizedlist>
<listitem>
<para>Poskytněte účinný přístup z klávesnice ke všem funkcím aplikace. Někteří uživatelé nemusí být schopní používat myš a řada pokročilých uživatelů dává tak jako tak přednost klávesnici. Také některá specializovaná zařízení asistenčních technologií mohou simulovat spíše události od klávesnice než od myši. Protože pro některé uživatele je psaní náročně nebo až bolestivé, je důležité nabídnout uživatelské rozhraní, které minimalizuje počet zmáčknutí kláves pro libovolný účel.</para>
</listitem>
<listitem>
<para>Použijte logické pořadí pro obsluhu klávesnicí. Když se pohybujete po okně pomocí klávesy <keycap>Tab</keycap>, měly by se ovládací prvky zaměřovat v předvídatelném pořadí. V národních prostředích západní civilizace to normálně je zleva doprava a shora dolů.</para>
</listitem>
<listitem>
<para>Zajistěte správné pořadí pro ovládání klávesou Tabulátor u ovládacích prvků, které se aktivují zaškrtávacím políčkem, skupinovým přepínačem nebo přepínacím tlačítkem. Když je se takovýmto prvkem provede aktivace, všechny závislé ovládací prvky se aktivují naopak ovládací prvky závislé na ostatních přepínacích prvcích ve skupině se deaktivují. Když uživatel vybere zaškrtávací políčko, skupinový přepínač nebo přepínací tlačítko, které mají závislé ovládací prvky, nepřesouvejte automaticky zaměření na první závislý ovládací prvek, ale ponechte zaměřený ten, který uživatel vybral.</para>
</listitem>
<listitem>
<para>Nepřepisujte funkce zpřístupnění již existující na úrovní systému. Například AccessX je rozšíření pro Xserver, které je podporováno od X11R6. Funkce MouseKeys (myš z klávesnice) v tomto rozšíření umožňuje pohyb myši a kliknutí jejích tlačítek simulovat pomocí číselné klávesnice. Proto byste neměli přidávat do své aplikace funkce, které jsou přístupné jen zmáčknutím kláves na číselné klávesnici, protože uživatelé spoléhající na funkci MouseKeys je nebudou moci použít.</para>
</listitem>
<listitem>
<para>Pokud je to možné, nabídněte pro klávesnicové činnosti více variant. Pro některé uživatele mohou být některé klávesy a kombinace kláves snadnější na použití než jiné.</para>
</listitem>
<listitem>
<para>Pokud je to možné, poskytněte přístup k funkcím jak z klávesnice, tak myší. Někteří uživatelé mohou být schopní používat buď jen myš nebo jen klávesnici, ale ne obojí.</para>
</listitem>
<listitem>
<para>Nepřiřazujte nepříjemně dosažitelné kombinace často prováděným činnostem na klávesnici. Někteří lidé mohou být schopní používat na klávesnici jen jednu ruku, takže je pro běžné operace třeba dávat přednost klávesovým zkratkám, které se dají snadno provést jednou rukou. Nehledě na to, že mít pro často prováděné činnosti na klávesnici klávesy daleko od sebe nebo špatně dosažitelné, zvyšuje napětí svalů u všech uživatelů a tím i riziko bolesti a zdravotních komplikací.</para>
</listitem>
<listitem>
<para>Nepožadujte opakované použití současného zmáčknutí více kláves. Někteří uživatelé jsou schopní v jednu chvíli zmáčknout a držet jen jednu klávesu. Asistenční technologie, jako je AccessX, mohou uživateli umožnit zmáčknout klávesy po sobě, místo naráz, to ale samozřejmě znamená, že operace zabere více času.</para>
</listitem>
<listitem>
<para>Ujistěte se, že kterýkoliv text, který lze vybrat pomocí myši, je možné vybrat i pomocí klávesnice. To je výhodné pro všechny uživatele, ale zvláště pro ty, kterým činí obtíže přesné ovládání myši.</para>
</listitem>
<listitem>
<para>Ujistěte se, že objekty, u kterých lze měnit velikost nebo je přesouvat, to lze provést i pomocí klávesnice. Například ikony a okna na pracovní ploše. Tam kde je potenciálně důležitá přesná změna velikosti nebo umístění, např. útvary v diagramu, zvažte také poskytnutí dialogového okna, ve kterém půjdou zadat souřadnice a rozměry číselně, nebo promyslete přichytávání objektů k uživatelem definované mřížce.</para>
</listitem>
<listitem>
<para>Nepoužívejte obecné ovládací funkce ke spouštění činnosti. Například, nesnažte se použít ovládání klávesou <keycap>Tab</keycap> v dialogovém okně k aktivaci nějaké činnosti související s ovládacím prvkem.</para>
</listitem>
<listitem>
<para>Zobrazujte klávesnicí vyvolané nabídky, okna a vysvětlivky blízko objektu, ke kterému se vztahují. V GNOME 2 mohou uživatelé vyvolat vyskakovací nabídky pomocí <keycombo><keycap>Shift</keycap><keycap>F10</keycap></keycombo> a vysvětlivky pomocí <keycombo><keycap>Shift</keycap><keycap>F1</keycap></keycombo>. Pozor však, ať objekt, na který se nabídky nebo vysvětlivka odkazují, zcela nebo i jen částečně nezakryjete.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Spolupráce s myší</title>
<para>Pamatujte, že ne každý může používat myš se stejnou obratností a že někteří uživatelé mohou mít problém sledovat ukazatel myši.</para>
<itemizedlist>
<listitem>
<para>Nevytvářejte závislost na vstupu z tlačítek 2 a 3 u myši. Jednak bývá fyzicky náročnější je zmáčknout a jednak některá ukazovací zařízení a řada zařízení pro asistenční technologie podporuje jen tlačítko 1. Některé asistenční technologie nemusí emulovat myš vůbec, ale generují místo ní události od klávesnice.</para>
</listitem>
<listitem>
<para>Poskytněte možnost všechny operace s myší přerušit. Zmáčknutí klávesy <keycap>Esc</keycap> by mělo přerušit kteroukoliv operaci myší, která probíhá, jako třeba přetahování souboru ve správci souborů nebo přetahování útvaru v kreslícím programu.</para>
</listitem>
<listitem>
<para>Během operace táhni a upusť poskytněte zpětnou vizuální odezvu. Když myš dosáhne použitelného cíle, zvýrazněte jej a změňte ukazatel myši. Použijte ukazatel myši „nelze upustit“, když se přejíždí přes nepoužitelný cíl. Viz <link linkend="gad-mouse-examples">Příklady spolupráce s myší</link>.</para>
</listitem>
<listitem>
<para>Nezakrývejte ukazatel myši nebo neomezujte pohyb myši jen na část obrazovky. Může se to křížit s asistenčními technologiemi a obvykle to mate i uživatele, kteří na nich nejsou závislí.</para>
</listitem>
<listitem>
<para>Nevytvářejte příliš malé cíle pro myš. Obecně by cíle myši měly mít přinejmenším velikost „horké oblasti“ okolo okraje okna pro změnu velikosti v aktuálním okenním správci/motivu – s ohledem na to, že uživatel s poruchou zraku nebo pohyblivosti může používat okenního správce s širší oblastí, než je výchozí.</para>
</listitem>
</itemizedlist>

<section id="gad-mouse-examples">
<title>Příklady spolupráce s myší</title>
<figure>
<title>Příklad ukazatele „nelze upustit“ z CDE/Motif</title>
<mediaobject><imageobject><imagedata fileref="figures/nodrop.png" format="PNG"/></imageobject> <textobject><phrase>Příklad podoby ukazatele „nelze upustit“</phrase></textobject></mediaobject>
</figure>
</section>
</section>

<section>
<title>Grafické prvky</title>
<para>Poskytněte volbu k přizpůsobení prezentace všech podstatných grafických prvků ve své aplikaci. Díky tomu bude její používání snadnější pro lidí, kteří mají zrakové nebo pohybové postižení.</para>
<itemizedlist>
<listitem>
<para>Nevkládejte do kódu napevno vlastnosti grafiky, jako je tloušťka čar, okraje nebo stíny. Tyto prvky by ideálně měly být načítány z motivu GTK nebo z okenního správce. Pokud to není možné, nabídněte volbu změny přímo ve své aplikaci.</para>
</listitem>
<listitem>
<para>Poskytněte popisné názvy pro všechny prvky rozhraní. GTK poskytuje výchozí zpřístupňující popisy pro řadu widgetů GTK, ale i tak budete potřebovat v některých případech přidat své vlastní, třeba pro widgety, které používají grafiku místo textu (např. v barevné paletě nebo v ikoně bez popisku). Pokud je to možné, zvažte přepsání výchozího popisu nějakým názornějším nebo popisem specifickým pro aplikaci.</para>
</listitem>
<listitem>
<para>Pokud je to možné, umožněte vícebarevné grafické prvky (např. ikony na nástrojové liště) zobrazit jen monochromaticky. Tyto monochromatické obrázky by měly být zobrazeny v barvách popředí a pozadí, které si uživatel sám zvolí v nastavení systému (výběrem motivu GTK), aby dosáhl pro něj nejlepší čitelnosti.</para>
</listitem>
<listitem>
<para>Zajistěte, aby interaktivní prvky grafického rozhraní byly snadno rozpoznatelné. Například, nenuťte uživatele najíždět myší na objekt, aby zjistil, jestli se na něj dá kliknout či nikoliv. Ponechávejte mezi objekty dostatek místa a jasně vymezte jejich hranice. Nezobrazujte prvky grafického rozhraní, které sice vypadají hezky, ale ve skutečnosti nic nedělají, a když už ano, nabídněte volbu je vypnout.</para>
</listitem>
<listitem>
<para>Poskytněte volbu ke skrytí grafiky, která nevyjadřuje žádné podstatné informace. Grafické obrázky mohou být rušivé pro uživatele s některými poruchami rozpoznávání. Například lze vypnout ikony v nabídkách GNOME a funkčnost nabídek přitom zůstane zachována.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Písma a text</title>
<para>Dokonce i pro uživatele s normálním zrakem poskytují textové výstupy většinu informací a zpětné odezvy ve většině aplikací. Je proto rozhodující správně zvolit a umístit text na obrazovce a ponechat volbu písma a jeho velikosti na uživateli, aby se i uživatelům se zrakovým postižením poskytla možnost aplikaci plně používat.</para>
<itemizedlist>
<listitem>
<para>Neurčujte napevno styl a velikost písma. Uživatel by měl mít možnost přizpůsobit si u všech textů velikost a typ písma. Pokud z nějakého důvodu tuto funkčnost nemůžete nabídnout, nikdy napevno nezadávejte menší velikost než 10 bodů.</para>
</listitem>
<listitem>
<para>Poskytněte volbu vypnout grafické doplňky a „vodoznaky“ za textem. Takové obrázky narušují kontrast mezi textem a pozadím, což může způsobit obtíže pro uživatele se zrakovým postižením.</para>
</listitem>
<listitem>
<para>Popisky objektů mají mít názvy, které mají smysl, i když jsou vytržené z kontextu. Uživatelé spoléhající na čtečku obrazovky nebo podobné asistenční technologie nemusí být ihned schopni pochopit vztah mezi ovládacím prvkem a věcmi, které jej obklopují.</para>
</listitem>
<listitem>
<para>Nepoužívejte stejný popisek v jednom okně vícekrát. Když použijete stejný popisek v různých oknech, pomůže, když bude mít v obou dvou stejný význam. Rovněž nepoužívejte v jednom okně popisky, které se sice jinak píší, ale stejně znějí. Např. v angličtině „read“ a „red“ nebo v češtině „správa“ a „zpráva“, protože to může být matoucí pro uživatele spoléhající na čtečku obrazovky.</para>
</listitem>
<listitem>
<para>Umisťujte popisky v celé aplikaci stejným způsobem. Normálně to bývá přímo pod velkými ikonami, napravo hned vedle malých ikon a přímo nad nebo nalevo od ovládacích prvků. Viz <link linkend="gad-font-examples">Příklady písem a textů</link>.</para>
</listitem>
<listitem>
<para>Když použijete v popisku pro ovládací prvek statický text, zakončete jej dvojtečkou. Například <guilabel>Uživatelské jméno:</guilabel> v popisku pro textové pole, do kterého má uživatel napsat své uživatelské jméno. Pomůže to rozpoznat, že popisek není samostatný, ale patří k ovládacímu prvku.</para>
</listitem>
<listitem>
<para>Když používáte statický text jako popisek pro ovládací prvek, nastavte popisek tak, aby bezprostředně předcházel ovládacímu prvku v pořadí ovládání klávesou Tab. To zajistí, že horká (mneomotechnická) klávesa, kterou v popisku pomocí podtržítka nadefinujete, způsobí při zmáčknutí zaměření nebo aktivaci správného ovládacího prvku.</para>
</listitem>
<listitem>
<para>Poskytujte alternativu k WYSIWYG (přesnému grafickému zobrazení výsledné podoby). Například někteří uživatelé mohou potřebovat tisknout text malým písmem, ale upravovat jej s velkým písmem. Možné alternativy zahrnují zobrazení veškerého textu stejným písmem ve stejné velikosti (obojí podle výběru uživatele), volbu „zalamování do okna“, která umožní uživatelům číst všechen text bez nutnosti vodorovného posouvání, jednosloupcové zobrazení, které zobrazuje obsah okna v jediném sloupci, i když vytisknut bude ve více sloupcích, a čistě textové zobrazení, kdy je grafika nahrazena zástupnými objekty nebo popisným textem. Pokud má aplikace panely s podřízenými ovládacími prvky, zvažte umožnit roztáhnout je přes celé rodičovské okno.</para>
</listitem>
</itemizedlist>

<section id="gad-font-examples">
<title>Příklady s písmy a texty</title>
<figure id="label-placement-example">
<title>Správné umístění popisků pro různé prvky GUI</title>
<informaltable frame="all">
<tgroup cols="3" align="center">
<tbody>
<row>
<entry valign="middle"><mediaobject>
<imageobject>
<imagedata fileref="figures/label_above.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>List control with label above</phrase>
</textobject>
</mediaobject> Ovládací prvek seznam s popiskem nad sebou</entry>
<entry valign="middle"><mediaobject>
<imageobject>
<imagedata fileref="figures/label_below.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Large file manager icon with label underneath</phrase>
</textobject>
</mediaobject> Velká ikona správce souborů s ikonou pod sebou</entry>
<entry valign="middle"><mediaobject>
<imageobject>
<imagedata fileref="figures/label_right.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Small toolbar icon with label to its right</phrase>
</textobject>
</mediaobject> Malá ikona nástrojové lišty s popiskem po své pravé straně</entry>
<entry valign="middle"><mediaobject>
<imageobject>
<imagedata fileref="figures/label_left.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Spinbox control with label to its left</phrase>
</textobject>
</mediaobject> Ovládací prvek číselník s popiskem po své levé straně</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>
</section>
</section>

<section>
<title>Barvy a kontrast</title>      
<para>Špatný výběr barev pro zobrazení může způsobit problémy lidem s barvoslepostí (pro ně je důležitý odstín barvy) nebo slabozrakostí (pro ně je důležitý jas/kontrast). Obecně byste měli umožnit uživatelům přizpůsobit si barvy kterékoliv části aplikace, která poskytuje podstatné informace.</para>
<para>Uživatelé se zrakovým postižením mohou požadovat vysoký kontrast mezi pozadím a barvou textu. Často je používáno černé pozadí a bílý text, aby se předešlo přepalování. Tato nastavení jsou rozhodující pro uživatele se zrakovým postižením.</para>
<itemizedlist>
<listitem>
<para>Nezadávejte do aplikace napevno barvy. Někteří uživatelé potřebují používat určité kombinace barev a úrovně kontrastu, aby dokázali pohodlně číst obrazovku. Z toho důvodu by měly být hlavní barvy požívané ve vaší aplikaci pro GNOME přebírány z motivu GTK, takže si uživatelé mohou nastavit barvy pro všechny své aplikace na něco čitelnějšího pouhou změnou motivu. Pokud z nějakého důvodu potřebujete použít barvu, která není dostupná v motivu, zajistěte, aby byla nastavitelná v rámci aplikace.</para>
</listitem>
<listitem>
<para>Nepoužívajte barvu jako jediné znázornění významu položky. Všechny informace by měly být poskytovány nejméně jedním dalším způsobem, třeba tvarem, polohou nebo textovým popisem. Viz <link linkend="gad-color-examples">Příklady s barvami a kontrastem</link>.</para>
</listitem>
<listitem>
<para>Podporujte všechny motivy GNOME s vysokým kontrastem. Ujistěte se, že když jeden z těchto motivů vyberete, bude všechen text ve vaší aplikaci ve vysokém kontrastu mezi barvou popředí a pozadí daného motivu.</para>
</listitem>
<listitem>
<para>Zajistěte, aby vaše aplikace nebyla závislá na konkrétním motivu s vysokým kontrastem. Otestujte ji s různými motivy s vysokým kontrastem, abyste měli jistotu, že aplikace respektuje nastavení.</para>
</listitem>
</itemizedlist>

<section id="gad-color-examples">
<title>Příklady s barvami a kontrastem</title>
<example>
<title>Příklad ukazující zdvojené použití barvy</title>
<informaltable frame="all">
<tgroup cols="2">
<tbody>
<row>
<entry valign="middle">
<mediaobject><imageobject> <imagedata fileref="figures/color_only.png" format="PNG"/> </imageobject> <textobject> <phrase>Příklad ukazuje změny v cenách akcií jen pomocí barvy</phrase> </textobject></mediaobject>
</entry>
<entry>Takovéto zobrazení může způsobit problémy barvoslepým uživatelům, kteří nerozeznají červenou od zelené (barvoslepost postihuje v některých zemích až 1 ze 7 mužů). Nedostatečný kontrast mezi červeným textem a černým pozadím by rovněž mohl ztížit čtení některým slabozrakým uživatelům, i když použijí lupu obrazovky.</entry>
</row>
<row>
<entry valign="middle">
<mediaobject><imageobject> <imagedata fileref="figures/color_and_arrows.png" format="PNG"/> </imageobject> <textobject> <phrase>Příklad ukazuje změny v cenách akcií současně pomocí barvy a šipek</phrase> </textobject></mediaobject>
</entry>
<entry>Takovéto zobrazení vylepšuje barevné rozlišení ještě šipkami, které naznačují směr pohybu ceny akcií, a používá tmavší odstíny zelené a červené na světlejším pozadí, aby se zajistil větší kontrast. Nemusí jít o výchozí barevné schéma, pokud by testování ukázalo, že na většinu uživatelů působí příliš rušivě, ale mělo by být možné si jej přizpůsobit, buď pomocí motivů nebo v dialogovém okně <guilabel>Předvolby</guilabel> v dané aplikaci.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</example>
</section>
</section>

<section>
<title>Lupa</title>
<para>Z výhod zvětšení textu a grafiky může těžit spousta uživatelů, i když nemají zrakové postižení. Ale bez možnosti zvětšení nebudou uživatelé se zrakovým postižením moci program vůbec používat.</para>
<itemizedlist>
<listitem>
<para>Poskytněte uživateli možnost přiblížit si pracovní oblast.</para>
</listitem>
<listitem>
<para>Poskytněte v aplikaci volbu přiblížení/oddálení pracovní oblasti. Uživatelé potřebují v nabídce přiblížení pracovní oblasti 150 % až 400 % nebo více. Otestujte aplikaci, abyste ověřili, že zobrazené objekty nebudou změnou přiblížení nějak postiženy.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Zvuk</title>
<para>Lidé, kteří mají problém se sluchem, stejně jako lidé, kteří pracují na počítači s vypnutým zvukem, budou znevýhodněni, když vaše aplikace bude spoléhat na zvuk, jako jediný prostředek sdělení informace. Obecně, zajistěte, aby uživatelé mohli získat zvukové informace i jiným vhodným způsobem.</para>
<itemizedlist>
<listitem>
<para>Nepředpokládejte, že uživatel uslyší zvukové informace. Nemusí jít jen o zvukové postižení uživatele, stačí, když bude mít vadnou zvukovou kartu.</para>
</listitem>
<listitem>
<para>Nepoužívejte zvuk jako jediný prostředek sdělení informace. Dejte uživateli možnost volby mít všechny zvukové informace i ve vizuální podobě. Zahrnuje to poskytování titulků nebo přepisů pro všechny důležité mluvené zvukové klipy.</para>
</listitem>
<listitem>
<para>Umožněte uživatelům nastavit si frekvenci a hlasitost všech varovných pípnutí a dalších zvuků. Včetně možnosti vypnout naráz všechny zvuky.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Animace</title>
<para>Když se animace používají přiměřeně, mohou být užitečné pro zdůraznění důležitých informací ve vaší aplikaci – a navíc mohou vypadat dobře. Mohou ale působit potíže některým uživatelům, takže zajistěte, aby šly vypnout.</para>
<itemizedlist>
<listitem>
<para>Nepoužívejte blikání prvků s frekvencí větší net 2 Hz a nižší než 55 Hz. To platí jak pro text, tak pro grafické objekty. Cokoliv v tomto rozsahu frekvencí může způsobit problémy uživatelům s vjemově vyvolávanými záchvaty. Poznamenejme ale, že neexistuje žádná „bezpečná“ frekvence. U blikání je podstatné, že byste měli použít frekvenci blikání systémového kurzoru (kterou si uživatel může přizpůsobit), nebo umožnit uživateli si ji upravit v aplikaci.</para>
</listitem>
<listitem>
<para>Neblikejte velkými plochami obrazovky. U menší oblasti je méně pravděpodobné že spustí záchvat u lidí, kteří jsou na záchvaty náchylní.</para>
</listitem>
<listitem>
<para>Všechny animace ponechte volitelné. Všechny informace podávané animací by měly být na uživatelův požadavek dostupné nejméně jedním jiným způsobem.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Zaměření klávesnicí</title>
<para>Jasné označení místa zaměřeného klávesnicí je vždy důležité, jak pro uživatele se zrakovým postižením, tak pro „pokročilé“ uživatele, kteří dávají přednost ovládání z klávesnice před myší. Nikdy by neměli být zmateni tím, který ovládací prvek na pracovní ploše je zrovna zaměřený. Neměli byste mít problém opustit počítače s ponecháním zaměření na některém widgetu v aplikaci, jít někam pryč, zatelefonovat přítelkyni, vyvenčit psa a při tom všem zapomenout, který prvek byl zaměřen a až se vrátíte, měli byste okamžitě dokázat poznat, který widget to je.</para>
<para>Indikátor vizuálního zaměření je zvukovou podobou pozice kurzoru relativně vůči ostatním objektům v pracovním prostředí. Díky tomu se uživatel může pohybovat interaktivně okolo objektů tak, jak se mění zaměření. Vizuální zaměření musí být programově oznamováno asistenčním technologiím. Poznamenejme ale, že ve většině případů se tak děje automaticky pomocí ATK, aniž byste pro to museli něco udělat. Musíte ale tomuto požadavku například věnovat pozornost, když píšete svůj vlastní widget.</para>
<itemizedlist>
<listitem>
<para>Začněte se zaměřením nejčastěji používaného ovládacího prvku. Pokud nelze o žádném ovládacím prvku v okně říct, že by byl „nejčastěji“ používaný, začněte po otevření okna se zaměřením na prvním ovládacím prvku. Zaměření by nemělo začínat na tlačítkách <guilabel>Budiž</guilabel> nebo <guilabel>Zrušit</guilabel> v dialogovém okně, i když jsou nejčastěji používané, protože je lze vždy aktivovat bezprostředně zmáčknutím <keycap>Enter</keycap> nebo <keycap>Esc</keycap>.</para>
</listitem>
<listitem>
<para>Vždy jasně zobrazujte aktuální zaměření vstupu. Pamatujte, že v ovládacích prvcích, které obsahují posuvníky, nemusí stačit zvýraznit jen pravě vybraný prvek uvnitř posouvané oblasti, protože nemusí být zrovna vidět. Viz <link linkend="gad-focus-examples">Příklady zaměření klávesnicí</link>.</para>
</listitem>
<listitem>
<para>Zobrazujte zaměření vstupu jen v aktivním okně. Všechny primární vizuální ukazatele zaměření v oknech, které nemají zaměření a nejsou aktivní, skryjte. Když má jedno okno oddělené panely, jen jeden z nich by měl mít indikátor zaměření a v ostatních panelech by měly být skryty. Pokud je důležité zobrazovat, která položka je v nezaměřených seznamem vybrána, použijte například druhotný indikátor zaměření. Viz <link linkend="gad-focus-examples">Příklady zaměření klávesnicí</link>.</para>
</listitem>
<listitem>
<para>Poskytněte uživateli vhodnou zpětnou vazbu, když se pokusí dostat za konec skupiny souvisejících objektů. Například při cyklickém pohybu v seznamu je při přesunu zaměření zpět na první objekt v seznamu často používána zpětná vazba v podobě zastavení se zvukovým upozorněním. V opačném případě by slepí nebo slabozrací uživatelé netušili, že se vrátili na začátek. V případě vyhledávání textu v dokumentu můžete zobrazit dialogové okno, které upozorní na dosažení konce dokumentu a dotáže se, jestli chce uživatel pokračovat s hledáním od začátku dokumentu.</para>
</listitem>
<listitem>
<para>Když uživatel zmáčkne nevhodnou klávesu nebo když navigační klávesa selže v provedení pohybu na zaměřeném prvku, přehrajte výchozí systémový zvukový nebo vizuální signál pro varování. Například, když je zaměřen první znak v textovém poli a uživatel zmáčkne kurzorovou šipku doleva nebo když se uživatel pokusí vybrat více v souborů v dialogovém okně pro výběr jednoho souboru. (Poznamenejme, že uživatel se sluchovým postižením by měl mít možnost si v systému nastavit vizuální náhradu výchozího zvukového varování.)</para>
</listitem>
</itemizedlist>

<section id="gad-focus-examples">
<title>Příklady zaměření klávesnice</title>
<example><title>Příklady ukazují nutnost jasného zobrazení zaměření</title>
<informaltable frame="all">
<tgroup cols="2">
<tbody>
<row>
<entry valign="middle">
<mediaobject><imageobject><imagedata fileref="figures/badfocus1.png" format="PNG"/></imageobject> <textobject><phrase>Zaměřenou položku v tomto okně nemůžete vidět, protože je posunutá mimo obrazovku</phrase> </textobject></mediaobject>
</entry>
<entry>Jeden ovládací prvek v tomto okně má zaměření, ale není možné říci který…</entry>
</row>
<row>
<entry valign="middle">
<mediaobject><imageobject><imagedata fileref="figures/badfocus2.png" format="PNG"/></imageobject> <textobject><phrase>Zaměřená položka se posuvem dostala do viditelné části</phrase></textobject></mediaobject>
</entry>
<entry>…dokud se seznam neposune, čímž se právě vybraná položka odhalí.</entry>
</row>
<row>
<entry valign="middle">
<mediaobject><imageobject><imagedata fileref="figures/goodfocus.png" format="PNG"/></imageobject> <textobject><phrase>Ovládací prvek seznam v tomto příkladu má plné ohraničení, který signalizuje zaměření, ať už je vybraná položka vidět nebo ne</phrase></textobject></mediaobject>
</entry>
<entry>Když má přímo ovládací prvek se seznamem ohraničení „zaměřeno“, lze jednoduše říci, že je zaměřený, i když právě vybraná položka není vidět.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</example>
<example>
<title>Ilustrační příklad používající druhotné zaměření</title>
<informaltable frame="all">
<tgroup cols="2">
<tbody>
<row>
<entry valign="middle">
<mediaobject><imageobject><imagedata fileref="figures/badfocus3.png" format="PNG"/></imageobject> <textobject><phrase>Okno rozdělené na panely, kdy oba panely vypadají, že mají zaměření</phrase></textobject></mediaobject>
</entry>
<entry>V tomto příkladu není možné říci jen po pouhém pohledu, který ze dvou panelů má právě zaměření klávesnice.</entry>
</row>
<row>
<entry valign="middle">
<mediaobject><imageobject><imagedata fileref="figures/goodfocus3.png" format="PNG"/></imageobject> <textobject><phrase>Okno rozdělené na panely, kdy druhotné zvýraznění je použito k zobrazení, který panel má zaměření</phrase></textobject></mediaobject>
</entry>
<entry>Díky použití druhotného barevného zvýraznění výběru v neaktivním panelu, je ihned jasné, že zde má zaměření ovládací prvek se stromem…</entry>
</row>
<row>
<entry valign="middle">
<mediaobject><imageobject><imagedata fileref="figures/goodfocus2.png" format="PNG"/></imageobject> <textobject><phrase>Okno rozdělené na panely, kdy druhotné zvýraznění je použito k zobrazení, který panel má zaměření</phrase></textobject></mediaobject>
</entry>
<entry>… a zde má zaměření ovládací prvek se seznamem.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</example>
</section>
</section>

<section>
<title>Načasování</title>
<para>Uživatelská rozhraní, ve kterých se věci objevují, mizí nebo se dějí podle časových omezení napevno daných v kódu, jsou často překážkou v přístupnosti. Někteří uživatelé mohou číst, psát a reagovat jen velmi pomalu v porovnání s ostatními lidmi. Když se jim nějaká informace skryje dřív, než jsou s ní hotovi, nebo ji překryje jiná informace, kterou si výslovně nevyžádali, stává se pro ně použití aplikace velmi frustrující, ne-li nemožné.</para>
<itemizedlist>
<listitem>
<para>Nezadávejte časová omezení a jiné na čase závislé funkce napevno do kódu. Příklady budiž automatický posuv při tažení objektu k okraji okna, držení tlačítka posuvníku nebo automatické rozbalení uzlu ve stromu, když je přes něj tažen objekt a chvilku podržen na místě. Mělo by to být přizpůsobitelné buď přímo v aplikaci nebo v ovládacím centru GNOME nebo, jako nejhorší varianta, aspoň ručně z příkazového řádku záznamem v souboru s nastavením nebo v GConf.</para>
</listitem>
<listitem>
<para>Nezobrazujte a neskrývejte informace jen na okamžik v závislosti na pohybu ukazatelem myši. (Výjimka: funkce poskytované systémem, jako jsou vysvětlivky, které si může uživatel na úrovni systému nastavit). Pokud takové funkce musíte poskytovat, nabídněte k nim volbu je vypnout, když je nainstalován nástroj pro zkoumání obrazovky.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Dokumentace</title>
<para>Lidé s postižením nemohou používat aplikaci plně, když nemají přístup k potřebným příručkám a nápovědě. Podstatnou věcí je ovládání z klávesnice, protože pro řadu uživatelů to může být jediný způsob ovládání aplikace.</para>
<itemizedlist>
<listitem>
<para>Poskytněte veškerou dokumentaci v přístupném formátu. ASCII a HTML jsou skvělé formáty pro asistenční technologie.</para>
</listitem>
<listitem>
<para>Ke všem grafickým prvkům v dokumentaci poskytněte alternativní textový popis.</para>
</listitem>
<listitem>
<para>Zdokumentujte všechny funkce zpřístupnění ve své aplikaci. Ovládání klávesnicí a klávesové zkratky jsou zvláště důležitou věcí ke zdokumentování. Zahrňte do své dokumentace kapitolu o zpřístupnění, ve které bude možné najít všechny informace o funkcích zpřístupnění.</para>
</listitem>
</itemizedlist>
</section>
</section>
</chapter>

<chapter id="gtest" status="draft">
<title>Testování</title>
<para>Je několik věcí, které by měly být prověřeny, než je možné aplikaci prohlásit za přístupnou. V průběhu vývoje možná budete uvažovat o automatických testovacích technikách. Váš plán automatizovaných testů by mohlo doplnit například <ulink url="http://ldtp.freedesktop.org/">LDTP</ulink>.</para>
<para>Tato část popisuje řadu testů, které můžete u aplikace provést ručně, abyste odzkoušeli její zpřístupnění. To, že všechny testy projdou, ještě nutně neznamená, že aplikace je plně zpřístupněná, ale pokud naopak v některém z testů selže, bude potřeba další práce, aby se zdokonalila z hlediska zpřístupnění.</para>

<section>
<title>Ovládání klávesnicí</title>
<para>Otestovány by měly být následující operace z klávesnice. V žádné části z těchto testů nepoužívejte myš.</para>
<itemizedlist>
<listitem>
<para>Jen pomocí klávesnice projděte zaměřením všechny položky v nabídkové liště aplikace.</para>
</listitem>
<listitem>
<para>Ujistěte se, že:</para>
<itemizedlist>
<listitem>
<para>Kontextově citlivé nabídky se zobrazují správně.</para>
</listitem>
<listitem>
<para>Libovolné funkce uvedené na nástrojové liště lze provést i pomocí klávesnice.</para>
</listitem>
<listitem>
<para>Můžete použít všechny ovládací prvky v klientské části aplikace a v dialogových oknech.</para>
</listitem>
<listitem>
<para>Text a objekty v klientské oblasti je možné vybrat.</para>
</listitem>
<listitem>
<para>Vylepšené ovládání klávesnicí nebo klávesové zkratky fungují, jak mají.</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</section>

<section>
<title>Grafické prvky</title>
<para>Otestujte aplikaci pomocí čtečky obrazovky a ujistěte se, že:</para>
<itemizedlist>
<listitem>
<para>Popisky a text jsou správně čteny, včetně nabídek a nástrojových lišt.</para>
</listitem>
<listitem>
<para>Informace o objektu jsou správně čteny.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Vizuální indikátor zaměření</title>
<itemizedlist>
<listitem>
<para>Ověřte, že když se posouváte podél objektů, které mají indikátor vizuálního zaměření, je snadné je rozpoznat.</para>
</listitem>
<listitem>
<para>Při ovládání softwaru a nabídek klávesnicí by měl být jasně viditelné, kam se přesouvá zaměření.</para>
</listitem>
<listitem>
<para>Ověřte, že čtečka obrazovky sleduje indikátor vizuální zaměření tak, jak se pohybujete pomocí klávesnice.</para>
</listitem>
<listitem>
<para>Spusťte lupu obrazovky (pokud je k dispozici) a ověřte, že lupa sleduje indikátor vizuálního zaměření tak, jak se pohybujete pomocí klávesnice.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Písma a text</title>
<itemizedlist>
<listitem>
<para>Změňte v aplikaci písmo a ověřte si, že nastavení je použitelné.</para>
</listitem>
<listitem>
<para>Otestujte aplikaci změnou barev a ověřte si, že nastavení je použitelné.</para>
</listitem>
<listitem>
<para>Když je k dispozici zvětšení, otestujte s ním písmo, barvu a velikost.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Barvy a kontrast</title>
<itemizedlist>
<listitem>
<para>Vytiskněte snímek obrazovky na černobílou tiskárnu a ověřte si, že všechny informace jsou viditelné.</para>
</listitem>
<listitem>
<para>Otestujte aplikaci jen v černobílém nastavení s vysokým kontrastem a ověřte, že všechny informace jsou podávány správně.</para>
</listitem>
<listitem>
<para>Otestujte, že aplikace poskytuje nejméně tři kombinace barevných schémat, a že je k dispozici i schéma s vysokým kontrastem (např. bílá na černé nebo žlutá na modré).</para>
</listitem>
<listitem>
<para>Zapněte v ovládacím centru GNOME vysoký kontrast a ověřte, že aplikace toto nastavení respektuje.</para>
</listitem>
<listitem>
<para>Otestujte různé motivy, abyste se ujistili, že software funguje pro všechna dostupná nastavení.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Zvuk</title>
<para>V aplikaci by měla být možnost zobrazit všechna zvuková upozornění vizuálně.</para>
<para>Povolením zvuku v ovládacím centru GNOME otestujte, že zvuk funguje správně a proveďte následující činnosti:</para>
<itemizedlist>
<listitem>
<para>Proveďte činnosti, které by měly vyvolat zvukové upozornění a ověřte, že aplikace pracuje, jak byla navržena.</para>
</listitem>
<listitem>
<para>Ověřte, že aplikace funguje správně, když zvýšíte nebo snížíte hlasitost.</para>
</listitem>
<listitem>
<para>Ověřte, že varovné zprávy a upozornění budou dobře slyšet i v hlučném pracovním prostředí.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Animace</title>
<para>Ověřte, že je k dispozici volba k zastavení animace, a že funguje, jak má.</para>
<para>Vypněte animace. Ověřte, že všechny informace jsou stále podávány správně.</para>
</section>

<section>
<title>Zaměření klávesnicí</title>
<itemizedlist>
<listitem>
<para>Otestujte všechny zprávy, abyste si ověřili, že uživatel je upozorněn dříve, než zpráva zmizí, a že má možnost dát najevo, že potřebuje více času.</para>
</listitem>
<listitem>
<para>Ujistěte se, že je k dispozici volba pro přizpůsobení času na reagování a ověřte, že funguje, jak má.</para>
</listitem>
</itemizedlist>
</section>

<section>
<title>Dokumentace</title>
<para>Otestujte dokumentaci v čistě textové podobě spolu se čtečkou obrazovky a ověřte, že je asistenční technologií čtena jasně a přesně.</para>
<para>Otestujte dokumentaci v HTML pomocí webového prohlížeče a čtečky obrazovky, abyste se ujistili, že k dokumentaci mají přístup asistenční technologie.</para>
<para>Poznámka: Příručka k zpřístupnění webů je dostupná na <ulink url="http://www.w3.org/TR/WAI-WEBCONTENT/">http://www.w3.org/TR/WAI-WEBCONTENT/</ulink>.</para>
<para>Zkontrolujte, že jsou součástí dokumentace následující informace:</para>
<itemizedlist>
<listitem>
<para>Upozornění, když aplikace nepodporuje některý ze standardních přístupů z klávesnice používaných operačním systémem.</para>
</listitem>
<listitem>
<para>Vypíchnutí jedinečných klávesnicových příkazů.</para>
</listitem>
<listitem>
<para>Vypíchnutí jedinečných funkcí zpřístupnění.</para>
</listitem>
<listitem>
<para>Pokud je nějaká činnost zdokumentovaná pro myš, informaci o alternativě pro použití klávesnice.</para>
</listitem>
</itemizedlist>
</section>

<section id="gad-checklist">
<title>Kontrolní seznam pro uživatelské rozhraní</title>
<para>Tato část shrnuje pokyny dané v kapitole <link linkend="gad-ui-guidelines">Pokyny k uživatelskému rozhraní ohledně podpory zpřístupnění</link>. Když budete chtít podrobnější informace k některé z položek kontrolního seznamu, měli byste se podívat právě do této kapitoly.</para>
<para>Když aplikaci testujete ohledně zpřístupnění, měli byste projít všechny položky v tomto seznamu. U každé si poznačte, zda test prošel nebo selhal, případně u aplikace nemá význam.</para>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro obecné principy</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>OP</entry>
<entry>Obecné principy</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row>
<entry>OP.1</entry>
<entry>Každá činnost, která mění uživatelská data nebo nastavení aplikace by měla jít vrátit zpět.</entry>
</row>
<row>
<entry>OP.2</entry>
<entry>Všechna nastavení aplikace by mělo být možné obnovit na výchozí hodnoty, aniž by si uživatel musel pamatovat, jaké byly.</entry>
</row>
<row>
<entry>OP.3</entry>
<entry>Po nainstalování by aplikace měla jít používat, aniž by uživatel musel někdy vkládat disk nebo CD.</entry>
</row>
<row><entry>OP.4</entry>
<entry>Nejčastěji používané funkce by se měly nacházet v horní úrovni struktury nabídek.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro ovládání z klávesnice</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>OK</entry>
<entry>Ovládání klávesnicí</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row>
<entry>OK.1</entry>
<entry>Použitelný přístup z klávesnice musí být poskytnut pro všechny funkce aplikace.</entry>
</row>
<row>
<entry>OK.2</entry>
<entry>Všechna okna musí mít logické pořadí pro ovládní z klávesnice.</entry>
</row>
<row><entry>OK.3</entry>
<entry>Ovládací prvky, které jsou přístupné v závislosti na zaškrtávacím políčku, skupinovém přepínači nebo přepínacím tlačítku, mají správné pořadí pro klávesu <keycap>Tab</keycap>.</entry>
</row>
<row><entry>OK.4</entry>
<entry>Přístup z klávesnice k funkcím týkajícím se aplikace nepřepisuje stávající systém funkcí zpřístupnění.</entry>
</row>
<row><entry>OK.5</entry>
<entry>Pokud je to možné, poskytuje aplikace více než jednu metodu k provedení úloh z klávesnice.</entry>
</row>
<row><entry>OK.6</entry>
<entry>Kdykoliv je to možné, je k dispozici alternativní kombinace kláves.</entry>
</row>
<row><entry>OK.7</entry>
<entry>Pro často prováděné operace z klávesnice se nepoužívají žádné špatně dosažitelné klávesy.</entry>
</row>
<row><entry>OK.8</entry>
<entry>Aplikace nepoužívá opakující se souběžná zmáčknutí kláves.</entry>
</row>
<row><entry>OK.9</entry>
<entry>Aplikace poskytuje pro všechny funkce myši odpovídající ovládání klávesnicí.</entry>
</row>
<row><entry>OK.10</entry>
<entry>Libovolný text nebo objekt, který je možné vybrat myší, musí jít vybrat i čistě pomocí klávesnice.</entry>
</row>
<row><entry>OK.11</entry>
<entry>Libovolný objekt, u kterého je možné měnit velikost pomocí myši nebo jej myší přesouvat, mustí být možná změna velikosti a přesun i čistě pomocí klávesnice.</entry>
</row>
<row><entry>OK.12</entry>
<entry>Aplikace nepoužívá žádné obecné ovládací funkce ke spouštění operací.</entry>
</row>
<row><entry>OK.13</entry>
<entry>Všechny nabídky, okna a vysvětlivky vyvolané klávesnicí se objeví poblíž objektu, ke kterému se vztahují.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro ovládání myší</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>SM</entry>
<entry>Spolupráce s myší</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>SM.1</entry>
<entry>Žádná operace nezávisí čistě na vstupu z <mousebutton>pravého</mousebutton> nebo <mousebutton>prostředního</mousebutton> tlačítka myši.</entry>
</row>
<row><entry>SM.2</entry>
<entry>Všechny operace s myší mohou být zrušeny dřív, než jsou dokončeny.</entry>
</row>
<row><entry>SM.3</entry>
<entry>Během operací táhni a upusť je poskytována zpětná vizuální vazba.</entry>
</row>
<row><entry>SM.4</entry>
<entry>Ukazatel myši nikdy nezajíždí pod ovládací prvky aplikace nebo není jeho pohyb aplikací omezen jen na část obrazovky.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro grafické prvky</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>GP</entry>
<entry>Grafické prvky</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>GP.1</entry>
<entry>Nejsou napevno zakódovány žádné grafické atributy, jako tloušťka čar, okraje nebo stíny.</entry>
</row>
<row><entry>GP.2</entry>
<entry>Všechny vícebarevné grafické prvky mohou být zobrazeny čistě monochromaticky, když je zapotřebí.</entry>
</row>
<row><entry>GP.3</entry>
<entry>Všechny interaktivní prvky uživatelského rozhraní musí být snadno rozlišitelné od statických prvků.</entry>
</row>
<row><entry>GP.4</entry>
<entry>Je k dispozici volba pro skrytí nedůležité grafiky.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro písma a texty</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>PT</entry>
<entry>Písma a text</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>PT.1</entry>
<entry>Žádný styl nebo velikost písma nejsou určeny natvrdo.</entry>
</row>
<row><entry>PT.2</entry>
<entry>Je poskytována volba vypnout grafické pozadí pod textem.</entry>
</row>
<row><entry>PT.3</entry>
<entry>Všechny popisky mají názvy, které dávají smysly, i když jsou vytržené z kontextu.</entry>
</row>
<row><entry>PT.4</entry>
<entry>Žádné názvy popisků nejsou v témže okně použity vícekrát.</entry>
</row>
<row><entry>PT.5</entry>
<entry>Umístění popisků je jednotné napříč celou aplikací.</entry>
</row>
<row><entry>PT.6</entry>
<entry>Všechny statické textové popisky, které identifikují ostatní ovládací prvky, jsou zakončené dvojtečkou (:).</entry>
</row>
<row><entry>PT.7</entry>
<entry>Všechny statické textové popisky, které identifikují ostatní ovládací prvky, se nachází před těmito ovládacími prvky v rámci pořadí přepínání tabulátorem.</entry>
</row>
<row><entry>PT.8</entry>
<entry>Je poskytnuta alternativa k WYSIWIG (přesnému grafickému zobrazení výsledné podoby). Například v podobě možnosti v textovém editoru určit jinou obrazovku nebo písmo tisku.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro barvy a kontrast</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>BC</entry>
<entry>Barvy a kontrast</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>BC.1</entry>
<entry>Žádné barvy nejsou v aplikaci určeny natvrdo, ale vychází buď z aktuálního motivu pracovního prostředí nebo se dají v aplikaci nastavit.</entry>
</row>
<row><entry>BC.2</entry>
<entry>Barva je použita jen jako vylepšení a ne jako hlavní způsob sdělení významu informace nebo činnosti.</entry>
</row>
<row>
<entry>BC.3</entry>
<entry>Aplikace podporuje všechny dostupné motivy s vysokým kontrastem a nastavení pro ně.</entry>
</row>
<row><entry>BC.4</entry>
<entry>Software není závislý na konkrétním motivu s vysokým kontrastem nebo jeho nastavení.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro zvětšování</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>ZL</entry>
<entry>Lupa</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>ZL.1</entry>
<entry>Aplikace poskytuje schopnost přiblížit pracovní oblast.</entry>
</row>
<row><entry>ZL.2</entry>
<entry>Aplikace nabízí volbu pro změnu měřítka pracovní oblasti.</entry>
</row>
<row><entry>ZL.3</entry>
<entry>Funkčnost aplikace není dotčena změnou zvětšení nebo nastavením přiblížení.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro zvuk</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>ZV</entry>
<entry>Zvuk</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>ZV.1</entry>
<entry>Zvuk není jediný způsob sdělení významu nějaké části informace.</entry>
</row>
<row><entry>ZV.2</entry>
<entry>Uživatel může nastavit frekvenci a hlasitost všech zvuků a varovných pípnutí.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro animace</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>AN</entry>
<entry>Animace</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>AN.1</entry>
<entry>Nepoužívají se blikající prvky s frekvencí větší než 2 Hz a menší než 55 Hz.</entry>
</row>
<row><entry>AN.2</entry>
<entry>Blikání je omezeno jen na malé části obrazovky.</entry>
</row>
<row><entry>AN.3</entry>
<entry>Pokud je použita animace, je k dispozici volba ji vypnout a to dříve, než se poprvé použije.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro zaměřování klávesnicí</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>ZK</entry>
<entry>Zaměření klávesnicí</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>ZK.1</entry>
<entry>Po otevření okna je zaměřen nejčastěji používaný ovládací prvek.</entry>
</row>
<row><entry>ZK.2</entry>
<entry>Aktuální pozice v zaměření vstupu je vždy jasně zobrazena.</entry>
</row>
<row><entry>ZK.3</entry>
<entry>Zaměření vstupu je zobrazené vždy jen v právě jednom okně.</entry>
</row>
<row><entry>ZK.4</entry>
<entry>Když se uživatel pokusí dostat za konec skupiny souvisejících objektů, dostane vhodnou zvukovou nebo vizuální zpětnou odezvu.</entry>
</row>
<row><entry>ZK.5</entry>
<entry>Když uživatel zmáčkne nesprávnou klávesu je přehráno výchozí zvukové a vizuální varování.</entry>
</row>
<row><entry>ZK.6</entry>
<entry>Existuje dostatek zvukových informací pro vizuální zaměření, aby uživatel mohl posoudit, co má dělat dál.</entry>
</row>
<row><entry>ZK.7</entry>
<entry>Když používáte asistenční technologie, jako je čtečka obrazovky nebo braillský řádek, aktuální program podává informaci o pozici a obsahu vizálního zaměření.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro načasování</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>NČ</entry>
<entry>Načasování</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>NČ.1</entry>
<entry>A aplikaci se nepoužívají žádné napevno zakódované časové limity a funkce závisející na čase.</entry>
</row>
<row><entry>NČ.2</entry>
<entry>Zobrazení nebo skrytí důležitých informací není spouštěno pouze pohybem ukazatele myši.</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="all" pgwide="1">
<title>Kontrolní seznam pro dokumentaci</title>
<tgroup cols="3" align="left">
<thead>
<row>
<entry>DK</entry>
<entry>Dokumentace</entry>
<entry>Prošlo/Selhalo/Nepoužíváno</entry>
</row>
</thead>
<tbody>
<row><entry>DK.1</entry>
<entry>Veškerá dokumentace je v přístupném formátu, s alternativním textovým popisem pro všechny obrázky a schémata.</entry>
</row>
<row><entry>DK.2</entry>
<entry>Součástí dokumentace je kapitola popisující všechny funkce zpřístupnění v aplikaci.</entry>
</row>
</tbody>
</tgroup>
</table>
</section>

<section>
<title>GOK (GNOME Onscreen Keyboard)</title>
<note>
<para>Informace na této stránce jsou částečně neaktuální: <application><ulink url="http://wiki.gnome.org/Caribou">Caribou</ulink></application> v GNOME 3 v podstatě nahradil <application>gok</application> z GNOME 2.</para>
</note>

<para>Vaše aplikace by měla jít používat pomocí <application>gok</application>. Klávesové vstupy by měly být generovány zcela z <application>gok</application> a ne z klávesnice. Cílem by měla být práce s vaší aplikací a pracovním prostředím z obecného hlediska, ujistěte se, že z klávesnice na obrazovce je možné zadávat znaky.</para>
<para>Aplikace <application>gok</application> je šířena spolu s pracovním prostředím GNOME, takže v by něm měla být obsažena. Úplnou dokumentaci najdete na <ulink url="http://www.gok.ca">oficiálních webu gok</ulink>.</para>
<para>Následující kroky ověří správnost operací <application>gok</application> s vaší aplikací:</para>
<procedure>
<step>
<para>Přihlaste se do pracovního prostředí GNOME.</para>
</step>
<step>
<para>Spusťte <application>gok</application>.</para>
</step>
<step>
<para>Spusťte aplikaci.</para>
</step>
<step>
<para>Proveďte nějaký vstup do své aplikace pomocí ukazovacího zařízení (např. myší nebo zařízením pro sledování očí) a pomocí <application>gok</application>.</para>
</step>
<step>
<para>Pracujte pomocí funkce automatického doplňování a odhadu slov v <application>gok</application>.</para>
</step>
<step>
<para>Ověřte, že <application>gok</application> zapíná a vypíná tlačítka <guibutton>Nabídky</guibutton> a <guibutton>Nástrojové lišty</guibutton> podle druhu spuštěné aplikace. Například pro aplet „Vlastnosti písma“  budou tato tlačítka vypnutá, zatímco pro aplikaci <application>Gedit</application> budou zapnutá.</para>
</step>
<step>
<para>Ověřte, že klávesnice na obrazovce <application>gok</application> lze za pomocí tlačítka <guibutton>Compose</guibutton> použít k psaní libovolného textu pro vybranou aplikaci. Spusťte <application>Gedit</application>, klikněte do textové oblasti a pak klikněte na tlačítko <guibutton>Compose</guibutton> v <application>gok</application>. Na klávesnici na obrazovce vyberte požadovanou klávesu. V textové oblasti aplikace <application>Gedit</application> by se měl objevit kýžený znak.</para>
</step>
<step>
<para>Ověřte, že <guibutton>spouštěcí</guibutton> tlačítko umožňuje spustit některou z aplikací <application>terminál</application>, <application>webový prohlížeč</application> nebo <application>textový editor</application>.</para>
</step>
<step>
<para>Ověřte, že tlačítko <guibutton>Aktivovat</guibutton> umožňuje uživateli aktivovat libovolné okno právě běžících aplikací v uživatelově pracovním prostředí, včetně panelů GNOME a plochy GNOME.</para>
</step>
<step>
<para>Ověřte, že tlačítko <guibutton>Nabídky</guibutton> ukáže všechny dostupné nabídky v právě běžící aplikaci. Ověřte, že kliknutí na tlačítko nabídky zobrazí podnabídku a položky v podnabídce. Nakonec ověřte, že kliknutím na položku nabídky se aktivuje položka nabídky. Například klikněte na aplikaci <application>Prohlížeč nápovědy</application> a pak klikněte na tlačítko <guibutton>Nabídky</guibutton>. Okno <application>GOK</application> nyní zobrazuje tlačítka <guibutton>Soubor</guibutton>, <guibutton>Přejít</guibutton> a <guibutton>Nápověda</guibutton> (nabídky aplikace <application>Prohlížeč nápovědy</application>). Klikněte na tlačítko <guibutton>Soubor</guibutton> a měla by se zobrazit tlačítka (položky nabídky) <guibutton>Nové okno</guibutton> a <guibutton>Zavřít okno</guibutton>.</para>
</step>
<step>
<para>Ověřte, že tlačítko <guibutton>Nástrojové lišty</guibutton> ukáže všechna dostupná tlačítka z nástrojové lišty aplikace. Například klikněte na aplikaci <application>Prohlížeč nápovědy</application> a pak klikněte na tlačítko <guibutton>Nástrojové lišty</guibutton>. Okno <application>GOK</application> by nyní mělo zobrazovat tlačítka <guibutton>Zpět</guibutton>, <guibutton>Vpřed</guibutton> a <guibutton>Domů</guibutton>.</para>
</step>
<step>
<para>Ověřte, že tlačítko <guibutton>Zachytit UR</guibutton> zobrazí všechna tlačítka pro vybrané okno aplikace. Například otevřete aplet „Vlastnosti písma“ a klikněte na tlačítko <guibutton>Zachytit UR</guibutton> v okně <application>GOK</application>. Okno <guibutton>GOK</guibutton> by nyní mělo zobrazovat názvy tlačítek v apletu – <guibutton>Patkové</guibutton>, <guibutton>Bezpatkové</guibutton>, <guibutton>Zavřít</guibutton> a <guibutton>Nápověda</guibutton>.</para>
</step>
</procedure>
</section>

<section>
<title>Accerciser</title>
<screenshot>
<mediaobject><imageobject><imagedata fileref="figures/at-arch.png" format="PNG"/></imageobject> <textobject><phrase>Accerciser a architektura zpřístupnění v GNOME</phrase></textobject></mediaobject>
</screenshot>

<para><application>Accerciser</application> je interaktivní průzkumník zpřístupnění pro pracovní prostředí GNOME napsaný v jazyce Python. Používá AT-SPI ke zkoumání a ovládání widgetů, takže můžete zkontrolovat, jestli aplikace poskytuje správné informace asistenčním technologiím a automatizovaným testovacím systémům. <application>Accerciser</application> má jednoduchý základní rámec pro zásuvné moduly, který můžete použít k vytvoření vlastních zobrazení informací o zpřístupnění. Ucelenou dokumentaci najdete <ulink url="http://library.gnome.org/devel/accerciser/stable">v oficiální příručce k aplikaci Accerciser</ulink>. Na ukázku použití aplikace <application>Accerciser</application> a <application>PyATSPI</application> (Python-wrapped access and usage of AT-SPI) se podívejte do <ulink url="http://live.gnome.org/Accessibility/PythonPoweredAccessibility">tohoto článku</ulink>. Skvělou procházku zpřístupněním aplikace přímo od autorů najdete v článku s názvem <ulink url="http://www.linuxjournal.com/article/9991">Make Your Application Accessible with Accerciser</ulink>.</para>
<note>
<para><application>Accerciser</application> v podstatě nahradil starší nástroj <application>at-poke</application>.</para>
</note>
</section>

</chapter>

</book>