Πώς λειτουργεί η προσιτότητα στο GNOME
Η Εργαλειοθήκη προσιτότητας (Accessibility Toolkit, ATK) περιγράφει ένα σύνολο από διεπαφές οι οποίες πρέπει να περιλαμβάνονται στα γραφικά περιβάλλοντα διεπαφών (GUI) ώστε να είναι προσιτά. Οι διεπαφές είναι ανεξάρτητες από την εργαλειοθήκη - εφαρμογές μπορούν να γραφούν σε κάθε εργαλειοθήκη όπως GTK, Motif ή Qt.
The implementation for the GTK widgets is done via the GtkAccessible class. It is the base class for accessible implementations for GtkWidget subclasses. It is a thin wrapper around AtkObject, which adds facilities for associating a widget with its accessible object. Those parts of your application that use standard GTK widgets will have a basic level of accessibility, without you having to modify your application at all.
Οι περισσότερες τεχνολογίες υποβοήθησης που τρέχουν σε άλλες επιφάνειες εργασίας, ιστορικά θεώρησαν αναγκαία τη διατήρηση ενός εκτός οθόνης μοντέλου των εφαρμογών της επιφάνειας εργασίας, βασισμένου στην υφαρπαγή των γεγονότων του λειτουργικού συστήματος, στη χρήση μη υποστηριζόμενων χαρακτηριστικών της εφαρμογής και του API, και σε άλλες μη φορητές τεχνικές. Αυτά έχουν κάνει την υποστήριξη τεχνολογιών υποβοήθησης κάπως "εύθραυστη" και υπερβολικά εξαρτώμενη από το λειτουργικό σύστημα και από την κάθε εφαρμογή, ακόμα και από την κάθε έκδοση εφαρμογής. Αντιθέτως, στην επιφάνεια εργασίας του GNOME, όλες οι πληροφορίες που είναι αναγκαίες για τις τεχνολογίες υποβοήθησης παρέχονται από τις εφαρμογές που εκτελούνται μέσω του Framework προσιτότητας του GNOME, σε μια Διεπαφή παροχής υπηρεσιών (SPI) ανεξάρτητη από την εργαλειοθήκη. Η SPI παρέχει τα μέσα στις τεχνολογίες υποβοήθησης που βασίζονται στο UNIX, όπως οι αναγνώστες και οι μεγεθυντές οθόνης, να λαμβάνουν πληροφορίες προσιτότητας από εκτελούμενες εφαρμογές μέσω ενός συμπαγούς, σταθερού API, και μπορεί να εξαλείψει την ανάγκη για ένα «εκτός οθόνης» μοντέλο σε πολλές περιπτώσεις. Η υποστήριξη προσιτότητας είναι "ενσωματωμένη" στις εργαλειοθήκες εφαρμογών μέσω API προσαρμοσμένων στις εργαλειοθήκες (για παράδειγμα, το ATK για τις περισσότερες εγγενείς εφαρμογές σε C και το API προσιτότητας της JAVA για εφαρμογές Java), και εξάγεται στην κοινή διεπαφή "AT-SPI" μέσω της σχετικής "γέφυρας" (βλ. και το ακόλουθο διάγραμμα).
Η ενσωματωμένη υποστήριξη προσιτότητας στο GNOME, σημαίνει ότι εφαρμογές οι οποίες δημιουργήθηκαν με χρήση των αποθηκευμένων γραφικών συστατικών του GNOME έχουν εξ αρχής υποστήριξη για τις τεχνολογίες υποβοήθησης "δωρεάν", με την προϋπόθεση ότι τα γραφικά συστατικά δεν έχουν χρησιμοποιηθεί με ασυνήθιστους τρόπους, οι οποίοι έρχονται σε σύγκρουση με αυτήν την ενσωματωμένη υποστήριξη.
Μια εργαλειοθήκη gtk+/GNOME είναι προσιτή αν η χρήση της ακολουθεί τις κατευθυντήριες γραμμές προσιτότητας που αναφέρονται σε άλλο σημείο αυτού του εγγράφου, και αν υλοποιεί τις διεπαφές ATK ανάλογα με το ρόλο της στη διεπαφή χρήστη. Οι υλοποιήσεις του ATK παρέχονται για τις "έτοιμες" εργαλειοθήκες του GNOME (δηλ. τις μη ξεπερασμένες εργαλειοθήκες του gtk+ και του GNOME), και σε πολλές περιπτώσεις οι νέες εργαλειοθήκες που προέρχονται με απλό τρόπο από υφιστάμενες εργαλειοθήκες GTK+ ή GNOME θα κληρονομήσουν επίσης την υποστήριξη προσιτότητας.
Παρότι η ενσωματωμένη στο GNOME υποστήριξη προσιτότητας παρέχει σημαντική λειτουργικότητα χωρίς καθόλου αλλαγές στον κώδικα που έχουν συγκεκριμένα στόχο της προσιτότητα, οι εφαρμογές μπορούν να βελτιώσουν τις προεπιλεγμένες περιγραφές που παρέχονται από τις εργαλειοθήκες, και να τις προσαρμόσουν στο συγκεκριμένο σκοπό εκείνης της εργαλειοθήκης μέσα στην εφαρμογή, μέσω άμεσων κλήσεων σε μεθόδους της ATK μέσα στην εφαρμογή. Για παράδειγμα, στις περισσότερες περιπτώσεις οι εφαρμογές θα πρέπει να αλλάζουν το κείμενο περιγραφής των εργαλειοθηκών με την κατάλληλη κλήση συνάρτησης του ATK, ώστε οι τεχνολογίες υποβοήθησης να περιγράφουν το σκοπό ή την κατάστασή τους στο χρήστη. Βλ. τις Κατευθυντήριες γραμμές κώδικα για υποστήριξη προσιτότητας για περισσότερες πληροφορίες.
Αν η εφαρμογή σας χρησιμοποιεί τροποποιημένες εργαλειοθήκες, ίσως χρειαστεί λίγο περισσότερη δουλειά για να εκθέσετε τις ιδιότητες εκείνων των εργαλειοθηκών στις τεχνολογίες υποβοήθησης. Δείτε το Κάνοντας τα προσαρμένα συστατικά προσιτά και τα Παραδείγματα που χρησιμοποιούν το API προσιτότητας για περισσότερες πληροφορίες.
For additional, in-depth information regarding GTK/GTK+, see the GTK+ Reference Manual, the outdated GTK+ 2.0 Tutorial and the official GTK+ FAQ.