Οδηγίες για τον προγραμματισμό σε σχέση με την υποστήριξη της προσιτότητας

Here are some things you can do in your code to make your program work as well as possible with assistive technologies. (You can find a list of things to consider when designing your GUI in the User Interface Guidelines for Supporting Accessibility section later in this document):

  • For components that don't display a short string (such as a graphical button), specify a name for it with atk_object_set_name(). You might want to do this for image-only buttons, panels that provide logical groupings, text areas, and so on.

  • If you can't provide a tooltip for a component, use atk_object_set_description() instead to provide a description that assistive technologies can give the user. For example, to provide an accessible description for a Close button:

    Παράδειγμα 1-1Παρέχοντας μια προσιτή περιγραφή για ένα GtkButton
    {
      AtkObject *obj;
      obj = gtk_widget_get_accessible(button);
      atk_object_set_description(obj,_("Κλείνει το παράθυρο"));
    }
    
  • Χρησιμοποιήστε την atk_image_set_description() για να δώσετε μια περιγραφή κειμένου για όλες τις εικόνες και τα εικονίδια του προγράμματός σας.

  • Αν μερικά από τα στοιχεία μιας λογικής ομάδας, προσπαθήστε να τα βάλετε σε ένα σημείο.

  • Όταν έχετε μια ετικέτα η οποία περιγράφει ένα άλλο στοιχείο, χρησιμοποιήστε την atk_relation_set_add_relation() έτσι ώστε οι τεχνολογίες υποβοήθησης να μπορούν να βρουν το στοιχείο με το οποίο η ετικέτα έχει συσχετιστεί. (Εάν συσχετίσετε την ετικέτα με το στοιχείο χρησιμοποιώντας την gtk_label_set_mnemonic_widget(), τότε ο συσχετισμός ATK_RELATION_LABEL_FOR δημιουργείται αυτόματα, έτσι ο κώδικας που ακολουθεί δεν είναι απαραίτητος):

    Παράδειγμα 1-2Συσχετίζοντας μια ετικέτα GtkLabel με ένα GtkWidget
    {
      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));
    }
    
  • If you create a custom widget, make sure it supports accessibility. Custom components that are descendants of other GTK widgets should override inherited accessibility information as necessary. For more information, see Making Custom Components Accessible.

  • Don't break what you get for free! If your GUI has an inaccessible container, any components inside that container may become inaccessible.