获取辅助功能的编程指南
这里列出了一些可以在代码里做的事情,让程序更好的利用辅助技术。(当你想设计GUI的时候,可以看看后文里提到的这份列表 支持辅助功能的UI ):
-
用于那些不显示短字符串的组件(比如图形按钮),使用 atk_object_set_name()为它指定一个名字。你可以用于纯图片按钮、具有逻辑分组的面板、文本区域等等。
-
如果你没有为组件提供提示信息,使用 atk_object_set_description() 函数为用户提供一个辅助说明。例如,为一个 按钮提供辅助说明:
Example 1-1 为 GtkButton 提供辅助性说明{ AtkObject *obj; obj = gtk_widget_get_accessible(button); atk_object_set_description(obj,_("Closes the window")); }
-
使用 atk_image_set_description() 可以为程序中所有图片图标提供一个文本说明。
-
如果多个组件逻辑上是一组的,建议将它们放在一个容器里。
-
Whenever you have a label that describes another component, use atk_relation_set_add_relation() so that assistive technologies can find the component with which the label is associated. (If you associate the label with the component using gtk_label_set_mnemonic_widget(), the ATK_RELATION_LABEL_FOR relation is generated automatically, so the following code would not be necessary):
Example 1-2 为一个 GtkWidget 关联一个 GtkLabel{ 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)); }
-
如果创建了一个自定义 widget,要确认是否支持辅助功能。自定义组件通常继承于其他 GTK 部件,所以必要时得重写辅助功能信息。更多信息请参考 让自定义组件获得辅助功能 。
-
不要重复造轮子!如果你的 GUI 有一个非辅助性的容器,那么该容器内的任何组件都可能失去辅助性。