2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
5 * Copyright 2001, 2002 Sun Microsystems Inc.,
6 * Copyright 2001, 2002 Ximian, Inc.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
24 /* editabletext.c : implements the EditableText interface */
28 #include <atk/atkeditabletext.h>
29 #include <libspi/editabletext.h>
31 /* Static function declarations */
34 spi_editable_text_class_init (SpiEditableTextClass *klass);
36 spi_editable_text_init (SpiEditableText *editable);
38 impl_setAttributes (PortableServer_Servant servant,
39 const CORBA_char * attributes,
40 const CORBA_long startPos,
41 const CORBA_long endPos,
42 CORBA_Environment *ev);
44 impl_setTextContents (PortableServer_Servant servant,
45 const CORBA_char * newContents,
46 CORBA_Environment *ev);
48 impl_insertText (PortableServer_Servant servant,
49 const CORBA_long position,
50 const CORBA_char * text,
51 const CORBA_long length,
52 CORBA_Environment *ev);
54 impl_copyText (PortableServer_Servant servant,
55 const CORBA_long startPos, const CORBA_long endPos,
56 CORBA_Environment *ev);
58 impl_cutText (PortableServer_Servant servant,
59 const CORBA_long startPos, const CORBA_long endPos,
60 CORBA_Environment *ev);
62 impl_deleteText (PortableServer_Servant servant,
63 const CORBA_long startPos, const CORBA_long endPos,
64 CORBA_Environment *ev);
66 impl_pasteText (PortableServer_Servant servant,
67 const CORBA_long position, CORBA_Environment *ev);
69 BONOBO_TYPE_FUNC_FULL (SpiEditableText,
70 Accessibility_EditableText,
75 spi_editable_text_class_init (SpiEditableTextClass *klass)
77 POA_Accessibility_EditableText__epv *epv = &klass->epv;
79 /* Initialize epv table */
81 epv->setAttributes = impl_setAttributes;
82 epv->setTextContents = impl_setTextContents;
83 epv->insertText = impl_insertText;
84 epv->copyText = impl_copyText;
85 epv->cutText = impl_cutText;
86 epv->deleteText = impl_deleteText;
87 epv->pasteText = impl_pasteText;
92 spi_editable_text_init (SpiEditableText *editable)
98 spi_editable_text_interface_new (AtkObject *obj)
100 SpiEditableText *new_editable = g_object_new (
101 SPI_EDITABLE_TEXT_TYPE, NULL);
103 spi_text_construct (SPI_TEXT (new_editable), obj);
109 static AtkEditableText *
110 get_editable_text_from_servant (PortableServer_Servant servant)
112 SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant));
114 g_return_val_if_fail (object, NULL);
115 g_return_val_if_fail (ATK_IS_OBJECT(object->gobj), NULL);
116 return ATK_EDITABLE_TEXT (object->gobj);
121 impl_setAttributes (PortableServer_Servant servant,
122 const CORBA_char * attributes,
123 const CORBA_long startPos,
124 const CORBA_long endPos,
125 CORBA_Environment *ev)
127 AtkEditableText *editable = get_editable_text_from_servant (servant);
129 g_return_val_if_fail (editable != NULL, FALSE);
131 g_print ("setRunAttributes not implemented.\n");
138 impl_setTextContents (PortableServer_Servant servant,
139 const CORBA_char *newContents,
140 CORBA_Environment *ev)
142 AtkEditableText *editable = get_editable_text_from_servant (servant);
144 g_return_val_if_fail (editable != NULL, FALSE);
146 atk_editable_text_set_text_contents (editable, newContents);
153 impl_insertText (PortableServer_Servant servant,
154 const CORBA_long position,
155 const CORBA_char *text,
156 const CORBA_long length,
157 CORBA_Environment *ev)
159 AtkEditableText *editable = get_editable_text_from_servant (servant);
162 g_return_val_if_fail (editable != NULL, FALSE);
165 atk_editable_text_insert_text (editable,
174 impl_copyText (PortableServer_Servant servant,
175 const CORBA_long startPos, const CORBA_long endPos,
176 CORBA_Environment *ev)
178 AtkEditableText *editable = get_editable_text_from_servant (servant);
180 g_return_if_fail (editable != NULL);
182 atk_editable_text_copy_text (editable, startPos, endPos);
188 impl_cutText (PortableServer_Servant servant,
189 const CORBA_long startPos, const CORBA_long endPos,
190 CORBA_Environment *ev)
192 AtkEditableText *editable = get_editable_text_from_servant (servant);
194 g_return_val_if_fail (editable != NULL, FALSE);
196 atk_editable_text_cut_text (editable, startPos, endPos);
203 impl_deleteText (PortableServer_Servant servant,
204 const CORBA_long startPos, const CORBA_long endPos,
205 CORBA_Environment *ev)
207 AtkEditableText *editable = get_editable_text_from_servant (servant);
209 g_return_val_if_fail (editable != NULL, FALSE);
211 atk_editable_text_delete_text (editable, startPos, endPos);
218 impl_pasteText (PortableServer_Servant servant,
219 const CORBA_long position, CORBA_Environment *ev)
221 AtkEditableText *editable = get_editable_text_from_servant (servant);
223 g_return_val_if_fail (editable != NULL, FALSE);
225 atk_editable_text_paste_text (editable, position);