+
+gboolean
+modest_text_utils_is_forbidden_char (const gchar character,
+ ModestTextUtilsForbiddenCharType type)
+{
+ gint i, len;
+ const gchar *forbidden_chars = NULL;
+
+ /* We need to get the length in the switch because the
+ compiler needs to know the size at compile time */
+ switch (type) {
+ case ACCOUNT_TITLE_FORBIDDEN_CHARS:
+ forbidden_chars = account_title_forbidden_chars;
+ len = G_N_ELEMENTS (account_title_forbidden_chars);
+ break;
+ case FOLDER_NAME_FORBIDDEN_CHARS:
+ forbidden_chars = folder_name_forbidden_chars;
+ len = G_N_ELEMENTS (folder_name_forbidden_chars);
+ break;
+ case USER_NAME_FORBIDDEN_NAMES:
+ forbidden_chars = user_name_forbidden_chars;
+ len = G_N_ELEMENTS (user_name_forbidden_chars);
+ break;
+ default:
+ g_return_val_if_reached (TRUE);
+ }
+
+ for (i = 0; i < len ; i++)
+ if (forbidden_chars[i] == character)
+ return TRUE;
+
+ return FALSE; /* it's valid! */
+}
+
+gchar *
+modest_text_utils_label_get_selection (GtkLabel *label)
+{
+ gint start, end;
+ gchar *selection;
+
+ if (gtk_label_get_selection_bounds (GTK_LABEL (label), &start, &end)) {
+ const gchar *start_offset;
+ const gchar *end_offset;
+ start_offset = gtk_label_get_text (GTK_LABEL (label));
+ start_offset = g_utf8_offset_to_pointer (start_offset, start);
+ end_offset = gtk_label_get_text (GTK_LABEL (label));
+ end_offset = g_utf8_offset_to_pointer (end_offset, end);
+ selection = g_strndup (start_offset, end_offset - start_offset);
+ return selection;
+ } else {
+ return g_strdup ("");
+ }
+}