2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
5 * Copyright 2001 Sun Microsystems Inc.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
23 /* editabletext.c : implements the EditableText interface */
27 #include <libspi/editabletext.h>
29 /* Static function declarations */
32 spi_editable_text_class_init (SpiEditableTextClass *klass);
34 spi_editable_text_init (SpiEditableText *editable);
36 spi_editable_text_finalize (GObject *obj);
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 static GObjectClass *parent_class;
72 BONOBO_TYPE_FUNC_FULL (SpiEditableText,
73 Accessibility_EditableText,
78 spi_editable_text_class_init (SpiEditableTextClass *klass)
80 GObjectClass * object_class = (GObjectClass *) klass;
81 POA_Accessibility_EditableText__epv *epv = &klass->epv;
82 parent_class = g_type_interface_peek_parent (klass);
84 object_class->finalize = spi_editable_text_finalize;
86 /* Initialize epv table */
88 epv->setAttributes = impl_setAttributes;
89 epv->setTextContents = impl_setTextContents;
90 epv->insertText = impl_insertText;
91 epv->copyText = impl_copyText;
92 epv->cutText = impl_cutText;
93 epv->deleteText = impl_deleteText;
94 epv->pasteText = impl_pasteText;
98 spi_editable_text_init (SpiEditableText *editable)
103 spi_editable_text_finalize (GObject *obj)
105 parent_class->finalize (obj);
109 spi_editable_text_interface_new (AtkObject *obj)
111 SpiEditableText *new_editable =
112 SPI_EDITABLE_TEXT(g_object_new (SPI_EDITABLE_TEXT_TYPE, NULL));
113 (SPI_TEXT (new_editable))->atko = obj;
119 impl_setAttributes (PortableServer_Servant _servant,
120 const CORBA_char * attributes,
121 const CORBA_long startPos,
122 const CORBA_long endPos,
123 CORBA_Environment * ev)
125 SpiEditableText *editable;
127 obj = (bonobo_object_from_servant (_servant));
128 g_return_val_if_fail (IS_SPI_EDITABLE_TEXT (obj), FALSE);
129 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
130 g_return_val_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko), FALSE);
132 g_print ("setRunAttributes not implemented.\n");
138 impl_setTextContents (PortableServer_Servant _servant,
139 const CORBA_char * newContents,
140 CORBA_Environment * ev)
142 SpiEditableText *editable;
144 obj = (bonobo_object_from_servant (_servant));
145 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
146 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
147 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
149 atk_editable_text_set_text_contents (ATK_EDITABLE_TEXT( SPI_TEXT (editable)->atko),
150 (gchar *) newContents);
156 impl_insertText (PortableServer_Servant _servant,
157 const CORBA_long position,
158 const CORBA_char * text,
159 const CORBA_long length,
160 CORBA_Environment * ev)
162 SpiEditableText *editable;
164 obj = (bonobo_object_from_servant (_servant));
165 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
166 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
167 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
169 atk_editable_text_insert_text (ATK_EDITABLE_TEXT( SPI_TEXT (editable)->atko),
177 impl_copyText (PortableServer_Servant _servant,
178 const CORBA_long startPos, const CORBA_long endPos,
179 CORBA_Environment * ev)
181 SpiEditableText *editable;
183 obj = (bonobo_object_from_servant (_servant));
184 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
185 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
186 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
188 atk_editable_text_copy_text (ATK_EDITABLE_TEXT( SPI_TEXT(editable)->atko),
189 (gint) startPos, (gint) endPos);
195 impl_cutText (PortableServer_Servant _servant,
196 const CORBA_long startPos, const CORBA_long endPos,
197 CORBA_Environment * ev)
199 SpiEditableText *editable;
201 obj = (bonobo_object_from_servant (_servant));
202 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
203 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
204 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
206 atk_editable_text_cut_text (ATK_EDITABLE_TEXT(SPI_TEXT (editable)->atko),
207 (gint) startPos, (gint) endPos);
214 impl_deleteText (PortableServer_Servant _servant,
215 const CORBA_long startPos, const CORBA_long endPos,
216 CORBA_Environment * ev)
218 SpiEditableText *editable;
220 obj = (bonobo_object_from_servant (_servant));
221 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
222 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
223 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
225 atk_editable_text_delete_text (ATK_EDITABLE_TEXT( SPI_TEXT(editable)->atko),
226 (gint) startPos, (gint) endPos);
231 impl_pasteText (PortableServer_Servant _servant,
232 const CORBA_long position, CORBA_Environment * ev)
234 SpiEditableText *editable;
236 obj = (bonobo_object_from_servant (_servant));
237 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
238 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
239 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
241 atk_editable_text_paste_text (ATK_EDITABLE_TEXT( SPI_TEXT(editable)->atko), position);