Guías de programación para soporte de accesibilidad

Aquí hay algunas cosas que puede codificar para hacer que su programa trabaje tan bien como sea posible con las tecnologías de asistencia. (Puede encontrar una lista de cosas que tener en cuenta cuando diseñe su IGU en la sección Guías de la interfaz de usuario para soportar accesibilidad más tarde en sus documentos):

  • Para los componentes que no muestren una cadena corta (tales como un botón gráfico), especifique un nombre para ellos con atk_object_set_name(). Puede querer hacerlo para botones con imagen exclusivamente, paneles que proporcionen agrupaciones lógicas, áreas de texto y demás.

  • Si no puede proporcionar una sugerencia para un componente, use atk_object_set_description() en su lugar para proporcionar una descripción que las tecnologías de asistencia puedan proporcionar al usuario. Por ejemplo, para proporcionar una descripción accesible para un botón Cerrar.

    Ejemplo 1-1Proporcionar una descripción accesible para un GtkButton
    {
      AtkObject *obj;
      obj = gtk_widget_get_accessible(button);
      atk_object_set_description(obj,_("Cierra la ventana"));
    }
    
  • Use atk_image_set_description() para proporcionar una descripción de texto para todas las imágenes e iconos de su programa.

  • Si varios componentes forman un grupo lógico, intente ponerlos en un contenedor.

  • Cuando tenga una etiqueta que describe otro componente, utilice atk_relation_set_add_relation() para que la tecnología de asistencia pueda encontrar el componente con el que la etiqueta está asociada. (Si asocia la etiqueta con el componente usando gtk_label_set_mnemonic_widget(), generalmente la relación de ATK_RELATION_LABEL_FOR se genera automáticamente, así que el siguiente código podría no ser necesario):

    Ejemplo 1-2Relacionar un GtkLabel con 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 crea un widget personalizado, asegúrese que soporta accesibilidad. Los componentes personalizados que descienden de otros widgets GTK deben reemplazar la información heredada de accesibilidad según sea necesario. Para obtener más información, consulte la Creación de componentes accesibles personalizados.

  • No rompa lo que consigue gratis. Si su IGU tiene un contenedor inaccesible, cualquier componente dentro de ese contenedor puede resultar inaccesible.