Příručka k programování s podporou zpřístupnění

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 Pokyny k uživatelskému rozhraní ohledně podpory zpřístupnění v této příručce můžete najít seznam věcí, které byste měli vzít do úvahy, když navrhujete GUI.):

  • U komponent, které nezobrazují krátký název (jako jsou grafická tlačítka), určete název pomocí atk_object_set_name(). Budete to chtít u čistě obrázkových tlačítek, u panelů, které poskytují logické seskupení, u textových oblastí a pod.

  • Pokud nemůžete ke komponentě poskytnout vysvětlivku, použijte místo toho atk_object_set_description(), která poskytne popis, který mohou asistenční technologie předat uživateli. Například poskytnutí zpřístupňujícího popisu pro tlačítko Zavřít by vypadalo takto:

    Příklad 1-1Poskytnutí zpřístupňujícího popisu pro GtkButton
    {
      AtkObject *obj;
      obj = gtk_widget_get_accessible(button);
      atk_object_set_description(obj,_("Closes the window"));
    }
    
  • Použijte atk_image_set_description() k poskytnutí textového popisu ke všem obrázkům a ikonám ve svém programu.

  • Pokud několik komponent tvoří logickou skupinu, zkuste je vložit do jednoho kontejneru.

  • Kdykoliv máte popisek, který popisuje jinou komponentu, použijte atk_relation_set_add_relation(), aby asistenční technologie dokázala najít komponentu, se kterou je popisek svázán. (Když přidružíte popisek s komponentou pomocí gtk_label_set_mnemonic_widget(), je vztah ATK_RELATION_LABEL_FOR vygenerován automaticky, takže následující kód nebude nutný):

    Příklad 1-2Vytvoření vztahu mezi GtkLabel a 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));
    }
    
  • 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 zpřístupnění vlastních komponent.

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