1 /* ATK - The Accessibility Toolkit for GTK+
2 * Copyright 2001 Sun Microsystems Inc.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
20 #include "atkeditabletext.h"
23 struct _AtkEditableTextIfaceClass
28 typedef struct _AtkEditableTextIfaceClass AtkEditableTextIfaceClass;
31 atk_editable_text_get_type ()
33 static GType type = 0;
36 static const GTypeInfo tinfo =
38 sizeof (AtkEditableTextIface),
40 (GBaseFinalizeFunc) NULL,
44 type = g_type_register_static (G_TYPE_INTERFACE, "AtkEditableText", &tinfo, 0);
51 *atk_editable_text_set_run_attributes:
52 *@text: an #AtkEditableText
53 *@attrib_set: an #AtkAttributeSet
54 *@start_offset: start of range in which to set attributes
55 *@end_offset: end of range in which to set attributes
57 *Sets the attributes for a specified range. See the ATK_ATTRIBUTE
58 *macros (such as #ATK_ATTRIBUTE_LEFT_MARGIN) for examples of attributes
59 *that can be set. Note that other attributes that do not have corresponding
60 *ATK_ATTRIBUTE macros may also be set for certain text widgets.
62 *Returns: %TRUE if attributes successfully set for the specified
63 *range, otherwise %FALSE
66 atk_editable_text_set_run_attributes (AtkEditableText *text,
67 AtkAttributeSet *attrib_set,
71 AtkEditableTextIface *iface;
73 g_return_val_if_fail (text != NULL, FALSE);
74 g_return_val_if_fail (ATK_IS_EDITABLE_TEXT (text), FALSE);
76 iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
78 if (iface->set_run_attributes)
80 return (*(iface->set_run_attributes)) (text, attrib_set, start_offset, end_offset);
90 * atk_editable_text_set_text_contents:
91 * @text: an #AtkEditableText
92 * @string: string to set for text contents of @text
94 * Set text contents of @text.
97 atk_editable_text_set_text_contents (AtkEditableText *text,
100 AtkEditableTextIface *iface;
102 g_return_if_fail (text != NULL);
103 g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
105 iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
107 if (iface->set_text_contents)
108 (*(iface->set_text_contents)) (text, string);
112 * atk_editable_text_insert_text:
113 * @text: an #AtkEditableText
114 * @string: the text to insert
115 * @length: the length of text to insert, in bytes
116 * @position: The caller initializes this to
117 * the position at which to insert the text. After the call it
118 * points at the position after the newly inserted text.
120 * Insert text at a given position.
123 atk_editable_text_insert_text (AtkEditableText *text,
128 AtkEditableTextIface *iface;
130 g_return_if_fail (text != NULL);
131 g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
133 iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
135 if (iface->insert_text)
136 (*(iface->insert_text)) (text, string, length, position);
140 * atk_editable_text_copy_text:
141 * @text: an #AtkEditableText
142 * @start_pos: start position
143 * @end_pos: end position
145 * Copy text from @start_pos up to, but not including @end_pos
149 atk_editable_text_copy_text (AtkEditableText *text,
153 AtkEditableTextIface *iface;
155 g_return_if_fail (text != NULL);
156 g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
158 iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
160 if (iface->copy_text)
161 (*(iface->copy_text)) (text, start_pos, end_pos);
165 * atk_editable_text_cut_text:
166 * @text: an #AtkEditableText
167 * @start_pos: start position
168 * @end_pos: end position
170 * Copy text from @start_pos up to, but not including @end_pos
171 * to the clipboard and then delete from the widget.
174 atk_editable_text_cut_text (AtkEditableText *text,
178 AtkEditableTextIface *iface;
180 g_return_if_fail (text != NULL);
181 g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
183 iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
186 (*(iface->cut_text)) (text, start_pos, end_pos);
190 * atk_editable_text_delete_text:
191 * @text: an #AtkEditableText
192 * @start_pos: start position
193 * @end_pos: end position
195 * Delete text @start_pos up to, but not including @end_pos.
198 atk_editable_text_delete_text (AtkEditableText *text,
202 AtkEditableTextIface *iface;
204 g_return_if_fail (text != NULL);
205 g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
207 iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
209 if (iface->delete_text)
210 (*(iface->delete_text)) (text, start_pos, end_pos);
214 * atk_editable_text_paste_text:
215 * @text: an #AtkEditableText
216 * @position: position to paste
218 * Paste text from clipboard to specified @position.
221 atk_editable_text_paste_text (AtkEditableText *text,
224 AtkEditableTextIface *iface;
226 g_return_if_fail (text != NULL);
227 g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
229 iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
231 if (iface->paste_text)
232 (*(iface->paste_text)) (text, position);