Diretrizes de codificação para suporte a acessibilidade

Aqui estão algumas coisas que você pode fazer em seu código para fazer seu programa funcionar o melhor possível com tecnologias assistivas. (Você pode encontrar uma lista de coisas para considerar ao projetar sua GUI na seção Diretrizes de interface de usuário para suporte a acessibilidade afrente do seu documento):

  • Para componentes que não exibem um texto curto (tal como um botão gráfico), especifique um nome para ele com atk_object_set_name(). Você pode se interessar em fazer isso para botões com apenas imagens, painéis que fornecem agrupamentos lógicos, áreas de texto e por aí vai.

  • Se você não conseguir fornecer uma dica de ferramenta para um componente, use atk_object_set_description() para fornecer uma descrição que tecnologias assistivas possam fornecer ao usuário. Por exemplo, para fornecer uma descrição de acessibilidade para um botão de fechar, com rótulo Close:

    Example 1-1Fornecendo uma descrição de acessibilidade para um GtkButton
    {
      AtkObject *obj;
      obj = gtk_widget_get_accessible(button);
      atk_object_set_description(obj,_("Closes the window"));
    }
    
  • Use atk_image_set_description() para fornecer uma descrição para todas as imagens e ícones em seu programa.

  • Se vários componentes formam um grupo lógico, tente colocá-los em um contêiner.

  • Quando você tiver um rótulo que descreve outro componente, use atk_relation_set_add_relation() de forma que as tecnologias assistivas possam localizar o componente com o qual o rótulo está associado. (Se você associar o rótulo com o componente usando gtk_label_set_mnemonic_widget(), a relação ATK_RELATION_LABEL_FOR é gerada automaticamente, então o seguinte código não mais seria necessário):

    Example 1-2Relacionando um GtkLabel a um 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));
    }
    
  • Se você criou um widget personalizado, certifique-se de que ele ofereça suporte a acessibilidade. Componentes personalizados que são descendentes de outros widgets GTK devem sobrescrever as informações de acessibilidade conformidade necessário. Para mais informações, veja Criando componentes acessíveis personalizados.

  • Não quebre o que você consegue de graça! Se sua GUI tiver um contêiner inacessível, quaisquer componentes dentro daquele contêiner podem ficar inacessível.