Directives de codage pour la prise en charge de l'accessibilité

Voici plusieurs choses que vous pouvez faire pour que votre programme fonctionne au mieux avec les technologies d'assistance (vous trouverez une liste des choses à considérer lorsque vous concevez votre GUI dans la section sur les directives pour la prise en charge de l'accessibilité dans l'interface utilisateur plus loin dans ce document) :

  • Pour les composants qui n'affichent pas de chaîne de texte courte (tel qu'un bouton graphique), donnez lui un nom avec la fonction atk_object_set_name(). Vous pourriez utiliser cette fonction pour les boutons qui n'affichent qu'une image, les panneaux qui regroupent des fonctions de manière logique, les zones de texte...

  • Si vous ne pouvez pas fournir d'infobulle pour un composant, utilisez la fonction atk_object_set_description() à la place pour fournir une description que les technologies d'assistance peuvent renvoyer à l'utilisateur. Par exemple, pour fournir une description accessible pour un bouton Fermer :

    Exemple I.1 Description accessible pour un bouton GtkButton
    {
      AtkObject *obj;
      obj = gtk_widget_get_accessible(button);
      atk_object_set_description(obj,_("Ferme la fenêtre"));
    }
    
  • Utilisez la fonction atk_image_set_description() pour fournir le texte de description pour toutes les images et icônes de votre programme.

  • Si plusieurs composants forment un groupe logique, essayez de les mettre dans un même conteneur.

  • Quand vous avez une étiquette qui décrit un autre composant, utilisez la fonction atk_relation_set_add_relation() pour que les technologies d'assistance puissent trouver le composant associé à cette étiquette (si vous associez l'étiquette au composant avec la fonction gtk_label_set_mnemonic_widget(), la relation ATK_RELATION_LABEL_FOR est générée automatiquement, donc le code suivant n'est plus nécessaire) :

    Exemple I.2 Lien entre un GtkLabel et un 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));
    }
    
  • Si vous créez un élément graphique personnalisé, assurez-vous qu'il prend en charge l'accessibilité. Les composants personnalisés qui sont des descendants d'éléments graphiques GTK doivent remplacer les informations d'accessibilité héritées quand c'est nécessaire. Pour plus d'informations, consultez la section pour rendre les composants personnalisés accessibles.

  • Ne cassez pas ce que vous pouvez obtenir sans effort ! Si votre GUI contient un conteneur inaccessible, tous les composants qu'il contient, risquent de l'être aussi.