diff options
Diffstat (limited to 'atk/atkeditabletext.c')
-rw-r--r-- | atk/atkeditabletext.c | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/atk/atkeditabletext.c b/atk/atkeditabletext.c new file mode 100644 index 0000000000..d44f8bff91 --- /dev/null +++ b/atk/atkeditabletext.c @@ -0,0 +1,237 @@ +/* ATK - The Accessibility Toolkit for GTK+ + * Copyright 2001 Sun Microsystems Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include "atkeditabletext.h" + +/** + * SECTION:atkeditabletext + * @Short_description: The ATK interface implemented by components + * containing user-editable text content. + * @Title:AtkEditableText + * + * #AtkEditableText should be implemented by UI components which + * contain text which the user can edit, via the #AtkObject + * corresponding to that component (see #AtkObject). + * + * #AtkEditableText is a subclass of #AtkText, and as such, an object + * which implements #AtkEditableText is by definition an #AtkText + * implementor as well. + * + * See also: #AtkText + */ + +GType +atk_editable_text_get_type (void) +{ + static GType type = 0; + + if (!type) { + static const GTypeInfo tinfo = + { + sizeof (AtkEditableTextIface), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + + }; + + type = g_type_register_static (G_TYPE_INTERFACE, "AtkEditableText", &tinfo, 0); + } + + return type; +} + +/** + *atk_editable_text_set_run_attributes: + *@text: an #AtkEditableText + *@attrib_set: an #AtkAttributeSet + *@start_offset: start of range in which to set attributes + *@end_offset: end of range in which to set attributes + * + *Sets the attributes for a specified range. See the ATK_ATTRIBUTE + *macros (such as #ATK_ATTRIBUTE_LEFT_MARGIN) for examples of attributes + *that can be set. Note that other attributes that do not have corresponding + *ATK_ATTRIBUTE macros may also be set for certain text widgets. + * + *Returns: %TRUE if attributes successfully set for the specified + *range, otherwise %FALSE + **/ +gboolean +atk_editable_text_set_run_attributes (AtkEditableText *text, + AtkAttributeSet *attrib_set, + gint start_offset, + gint end_offset) +{ + AtkEditableTextIface *iface; + + g_return_val_if_fail (ATK_IS_EDITABLE_TEXT (text), FALSE); + + iface = ATK_EDITABLE_TEXT_GET_IFACE (text); + + if (iface->set_run_attributes) + { + return (*(iface->set_run_attributes)) (text, attrib_set, start_offset, end_offset); + } + else + { + return FALSE; + } +} + + +/** + * atk_editable_text_set_text_contents: + * @text: an #AtkEditableText + * @string: string to set for text contents of @text + * + * Set text contents of @text. + **/ +void +atk_editable_text_set_text_contents (AtkEditableText *text, + const gchar *string) +{ + AtkEditableTextIface *iface; + + g_return_if_fail (ATK_IS_EDITABLE_TEXT (text)); + + iface = ATK_EDITABLE_TEXT_GET_IFACE (text); + + if (iface->set_text_contents) + (*(iface->set_text_contents)) (text, string); +} + +/** + * atk_editable_text_insert_text: + * @text: an #AtkEditableText + * @string: the text to insert + * @length: the length of text to insert, in bytes + * @position: The caller initializes this to + * the position at which to insert the text. After the call it + * points at the position after the newly inserted text. + * + * Insert text at a given position. + **/ +void +atk_editable_text_insert_text (AtkEditableText *text, + const gchar *string, + gint length, + gint *position) +{ + AtkEditableTextIface *iface; + + g_return_if_fail (ATK_IS_EDITABLE_TEXT (text)); + + iface = ATK_EDITABLE_TEXT_GET_IFACE (text); + + if (iface->insert_text) + (*(iface->insert_text)) (text, string, length, position); +} + +/** + * atk_editable_text_copy_text: + * @text: an #AtkEditableText + * @start_pos: start position + * @end_pos: end position + * + * Copy text from @start_pos up to, but not including @end_pos + * to the clipboard. + **/ +void +atk_editable_text_copy_text (AtkEditableText *text, + gint start_pos, + gint end_pos) +{ + AtkEditableTextIface *iface; + + g_return_if_fail (ATK_IS_EDITABLE_TEXT (text)); + + iface = ATK_EDITABLE_TEXT_GET_IFACE (text); + + if (iface->copy_text) + (*(iface->copy_text)) (text, start_pos, end_pos); +} + +/** + * atk_editable_text_cut_text: + * @text: an #AtkEditableText + * @start_pos: start position + * @end_pos: end position + * + * Copy text from @start_pos up to, but not including @end_pos + * to the clipboard and then delete from the widget. + **/ +void +atk_editable_text_cut_text (AtkEditableText *text, + gint start_pos, + gint end_pos) +{ + AtkEditableTextIface *iface; + + g_return_if_fail (ATK_IS_EDITABLE_TEXT (text)); + + iface = ATK_EDITABLE_TEXT_GET_IFACE (text); + + if (iface->cut_text) + (*(iface->cut_text)) (text, start_pos, end_pos); +} + +/** + * atk_editable_text_delete_text: + * @text: an #AtkEditableText + * @start_pos: start position + * @end_pos: end position + * + * Delete text @start_pos up to, but not including @end_pos. + **/ +void +atk_editable_text_delete_text (AtkEditableText *text, + gint start_pos, + gint end_pos) +{ + AtkEditableTextIface *iface; + + g_return_if_fail (ATK_IS_EDITABLE_TEXT (text)); + + iface = ATK_EDITABLE_TEXT_GET_IFACE (text); + + if (iface->delete_text) + (*(iface->delete_text)) (text, start_pos, end_pos); +} + +/** + * atk_editable_text_paste_text: + * @text: an #AtkEditableText + * @position: position to paste + * + * Paste text from clipboard to specified @position. + **/ +void +atk_editable_text_paste_text (AtkEditableText *text, + gint position) +{ + AtkEditableTextIface *iface; + + g_return_if_fail (ATK_IS_EDITABLE_TEXT (text)); + + iface = ATK_EDITABLE_TEXT_GET_IFACE (text); + + if (iface->paste_text) + (*(iface->paste_text)) (text, position); +} |