void
setup_a11y_tabs (GladeXML *dialog, GConfChangeSet *changeset)
{
	GConfClient *client;
	GtkWidget *w;

	client = gconf_client_get_default ();
	gconf_client_add_dir (client, CONFIG_ROOT, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
	g_object_unref (client);

	/* Accessibility tab */

	w = WID ("master_enable");
	gconf_peditor_new_boolean (changeset,
				   CONFIG_ROOT "/enable",
				   w, NULL);

	w = WID ("stickykeys_enable");
	gconf_peditor_new_boolean (changeset,
				   CONFIG_ROOT "/stickykeys_enable",
				   w, NULL);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (stickykeys_enable_toggled_cb), dialog);
	stickykeys_enable_toggled_cb (w, dialog);

	w = WID ("slowkeys_enable");
	gconf_peditor_new_boolean (changeset,
				   CONFIG_ROOT "/slowkeys_enable",
				   w, NULL);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (slowkeys_enable_toggled_cb), dialog);
	slowkeys_enable_toggled_cb (w, dialog);

	w = WID ("bouncekeys_enable");
	gconf_peditor_new_boolean (changeset,
				   CONFIG_ROOT "/bouncekeys_enable",
				   w, NULL);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (bouncekeys_enable_toggled_cb), dialog);
	bouncekeys_enable_toggled_cb (w, dialog);

	gconf_peditor_new_numeric_range (changeset,
					 CONFIG_ROOT "/slowkeys_delay",
					 WID ("slowkeys_delay_slide"), NULL);
	gconf_peditor_new_numeric_range (changeset,
					 CONFIG_ROOT "/bouncekeys_delay",
					 WID ("bouncekeys_delay_slide"), NULL);

	w = WID ("notifications_button");
	g_signal_connect (w, "clicked",
			  G_CALLBACK (notifications_button_clicked_cb), dialog);

	/* Mouse Keys tab */

	w = WID ("mousekeys_enable");
	gconf_peditor_new_boolean (changeset,
				   CONFIG_ROOT "/mousekeys_enable",
				   w, NULL);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (mousekeys_enable_toggled_cb), dialog);
	mousekeys_enable_toggled_cb (w, dialog);

	gconf_peditor_new_numeric_range (changeset,
					 CONFIG_ROOT "/mousekeys_accel_time",
					 WID ("mousekeys_accel_time_slide"),
					 "conv-to-widget-cb", mousekeys_accel_time_to_widget,
					 "conv-from-widget-cb", mousekeys_accel_time_from_widget,
					 NULL);
	gconf_peditor_new_numeric_range (changeset,
					 CONFIG_ROOT "/mousekeys_max_speed",
					 WID ("mousekeys_max_speed_slide"), NULL);
	gconf_peditor_new_numeric_range (changeset,
					 CONFIG_ROOT "/mousekeys_init_delay",
					 WID ("mousekeys_init_delay_slide"), NULL);
}
void
setup_a11y_tabs (GtkBuilder *dialog)
{
	GtkWidget *w;

	a11y_settings = g_settings_new (A11Y_SCHEMA);

	/* Accessibility tab */
	g_settings_bind (a11y_settings,
					 "enable",
					 WID ("master_enable"),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	w = WID ("stickykeys_enable");
	g_settings_bind (a11y_settings,
					 "stickykeys-enable",
					 w,
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (stickykeys_enable_toggled_cb), dialog);
	stickykeys_enable_toggled_cb (w, dialog);

	g_settings_bind (a11y_settings,
					 "stickykeys-two-key-off",
					 WID ("stickykeys_two_key_off"),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);

	w = WID ("slowkeys_enable");
	g_settings_bind (a11y_settings,
					 "slowkeys-enable",
					 w,
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (slowkeys_enable_toggled_cb), dialog);
	slowkeys_enable_toggled_cb (w, dialog);

	w = WID ("bouncekeys_enable");
	g_settings_bind (a11y_settings,
					 "bouncekeys-enable",
					 w,
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (bouncekeys_enable_toggled_cb), dialog);
	bouncekeys_enable_toggled_cb (w, dialog);

	g_settings_bind (a11y_settings,
					 "slowkeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("slowkeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "bouncekeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("bouncekeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);

	w = WID ("notifications_button");
	g_signal_connect (w, "clicked",
			  G_CALLBACK (notifications_button_clicked_cb), dialog);

	/* Mouse Keys tab */

	w = WID ("mousekeys_enable");
	g_settings_bind (a11y_settings,
					 "mousekeys-enable",
					 w,
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (mousekeys_enable_toggled_cb), dialog);
	mousekeys_enable_toggled_cb (w, dialog);

	g_settings_bind (a11y_settings,
					 "slowkeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("slowkeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "bouncekeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("bouncekeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "slowkeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("slowkeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "bouncekeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("bouncekeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);

	g_settings_bind (a11y_settings,
					 "mousekeys-accel-time",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("mousekeys_accel_time_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "mousekeys-max-speed",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("mousekeys_max_speed_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "mousekeys-init-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("mousekeys_init_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);

#if !GTK_CHECK_VERSION (3, 0, 0)
	const char *range_names[] = {
		"slowkeys_delay_slide",
		"bouncekeys_delay_slide",
		"mousekeys_accel_time_slide",
		"mousekeys_max_speed_slide",
		"mousekeys_init_delay_slide"
	};

	int i;
	for (i = 0; i < 5; ++i) {
		gtk_range_set_update_policy (GTK_RANGE (WID (range_names[i])), GTK_UPDATE_DISCONTINUOUS);
	}
#endif
}
void
setup_a11y_tabs (GtkBuilder *dialog)
{
	GtkWidget *w;

	a11y_settings = g_settings_new (A11Y_SCHEMA);

	/* Accessibility tab */
	g_settings_bind (a11y_settings,
					 "enable",
					 WID ("master_enable"),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	w = WID ("stickykeys_enable");
	g_settings_bind (a11y_settings,
					 "stickykeys-enable",
					 w,
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (stickykeys_enable_toggled_cb), dialog);
	stickykeys_enable_toggled_cb (w, dialog);

	g_settings_bind (a11y_settings,
					 "stickykeys-two-key-off",
					 WID ("stickykeys_two_key_off"),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);

	w = WID ("slowkeys_enable");
	g_settings_bind (a11y_settings,
					 "slowkeys-enable",
					 w,
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (slowkeys_enable_toggled_cb), dialog);
	slowkeys_enable_toggled_cb (w, dialog);

	w = WID ("bouncekeys_enable");
	g_settings_bind (a11y_settings,
					 "bouncekeys-enable",
					 w,
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (bouncekeys_enable_toggled_cb), dialog);
	bouncekeys_enable_toggled_cb (w, dialog);

	g_settings_bind (a11y_settings,
					 "slowkeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("slowkeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "bouncekeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("bouncekeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);

	w = WID ("notifications_button");
	g_signal_connect (w, "clicked",
			  G_CALLBACK (notifications_button_clicked_cb), dialog);

	/* Mouse Keys tab */

	w = WID ("mousekeys_enable");
	g_settings_bind (a11y_settings,
					 "mousekeys-enable",
					 w,
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (w, "toggled",
			  G_CALLBACK (mousekeys_enable_toggled_cb), dialog);
	mousekeys_enable_toggled_cb (w, dialog);

	g_settings_bind (a11y_settings,
					 "slowkeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("slowkeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "bouncekeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("bouncekeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "slowkeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("slowkeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "bouncekeys-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("bouncekeys_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);

	g_settings_bind (a11y_settings,
					 "mousekeys-accel-time",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("mousekeys_accel_time_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "mousekeys-max-speed",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("mousekeys_max_speed_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (a11y_settings,
					 "mousekeys-init-delay",
					 gtk_range_get_adjustment (GTK_RANGE (WID ("mousekeys_init_delay_slide"))),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);
}