Jak zpřístupnění funguje v GNOME

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.

Implementace pro widgety GTK je v modulu nazývaném GAIL (GNOME Accessibility Implementation Library), který je dynamicky načítán za běhu aplikacemi GTK. Když je načten, tak části vaší aplikace, které používají standardní widgety GTK, budou mít základní úroveň zpřístupnění, aniž by bylo v aplikaci potřeba cokoliv upravovat. Když knihovna GAIL není načtená, budou mít widgety GTK výchozí implementaci zpřístupnění, která v podstatě nevrací žádné informace, i když formálně vyhovují API ATK. Aplikace, které používají ovládací prvky Bonobo, zejména ty nezpracovávané, rovněž načtou kód pro podporu zpřístupnění z modulu libgail-gnome. To, jestli aplikace v pracovní prostředí GNOME automaticky načte nebo nenačte knihovny s podporou zpřístupnění, závisí na hodnotě klíče gconf „/desktop/gnome/interface/accessibility“. Pravdivostní hodnota „true“ zapne podporu pro asistenční technologie a aplikace, které volají gnome_program_init automaticky za běhu načtou příslušné knihovny zpřístupnění. Aplikace čistě s GTK+, například ty, které používají gtk+, ale nejsou slinkovány s libgnome, musí spoléhat na hodnotu proměnné prostředí GTK_MODULES, která musí být nastavená na „gail:atk-bridge“, aby se zapnula podpora asistenčních technologií.

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).

Obrázek 1-1Architektura zpřístupnění v GNOME

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.

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í.

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 Příručka ke kódování s podporou zpřístupnění.

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 Zpřístupnění vlastních komponent a Příklady, které používají API zpřístupnění.

Další informace ohledně GTK/GTK+ jdoucí více do hloubky najdete v referenční příručce GTK+, v příručce k ATK v části o GTK, ve výuce GTK+ 2.0 na webu GNOME a v oficiálních častých dotazech a odpovědích GTK+.