static void
uint_filter_cb (GtkEditable *editable,
                gchar *text,
                gint length,
                gint *position,
                gpointer user_data)
{
	GtkWidget *ok_button = user_data;
	gboolean changed;

	changed = utils_filter_editable_on_insert_text (editable,
	                                                text, length, position, user_data,
	                                                utils_char_is_ascii_digit,
	                                                uint_filter_cb);

	if (changed) {
		g_free (last_edited);
		last_edited = gtk_editable_get_chars (editable, 0, -1);
	}

	/* Desensitize the OK button during input to simplify input validation.
	 * All routes will be validated on focus-out, which will then re-enable
	 * the OK button if the routes are valid.
	 */
	gtk_widget_set_sensitive (ok_button, FALSE);
}
static void
dns_servers_filter_cb (GtkEditable *editable,
                       gchar *text,
                       gint length,
                       gint *position,
                       gpointer user_data)
{
	utils_filter_editable_on_insert_text (editable,
	                                      text, length, position, user_data,
	                                      _char_is_ascii_dns_servers,
	                                      dns_servers_filter_cb);
}
static void
wep_entry_filter_cb (GtkEditable *editable,
                     gchar *text,
                     gint length,
                     gint *position,
                     gpointer data)
{
	WirelessSecurityWEPKey *sec = (WirelessSecurityWEPKey *) data;

	if (sec->type == NM_WEP_KEY_TYPE_KEY) {
		utils_filter_editable_on_insert_text (editable,
		                                      text, length, position, data,
		                                      utils_char_is_ascii_print,
		                                      wep_entry_filter_cb);
	}
}
static void
ip_address_filter_cb (GtkEditable *editable,
                      gchar *text,
                      gint length,
                      gint *position,
                      gpointer user_data)
{
	CEPageIP4 *self = CE_PAGE_IP4 (user_data);
	CEPageIP4Private *priv = CE_PAGE_IP4_GET_PRIVATE (self);
	gboolean changed;

	changed = utils_filter_editable_on_insert_text (editable,
	                                                text, length, position, user_data,
	                                                utils_char_is_ascii_ip4_address,
	                                                ip_address_filter_cb);

	if (changed) {
		g_free (priv->last_edited);
		priv->last_edited = gtk_editable_get_chars (editable, 0, -1);
	}
}