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.
24 * component.c : bonobo wrapper for accessible component implementation
28 #include <bonobo/Bonobo.h>
33 * This pulls the CORBA definitions for the "Accessibility::Accessible" server
35 #include <libspi/Accessibility.h>
38 * This pulls the definition of the SpiEditableText bonobo object
40 #include "editabletext.h"
43 * Static function declarations
47 spi_editable_text_class_init (SpiEditableTextClass *klass);
49 spi_editable_text_init (SpiEditableText *editable);
51 spi_editable_text_finalize (GObject *obj);
53 impl_setAttributes (PortableServer_Servant _servant,
54 const CORBA_char * attributes,
55 const CORBA_long startPos,
56 const CORBA_long endPos,
57 CORBA_Environment * ev);
59 impl_setTextContents (PortableServer_Servant _servant,
60 const CORBA_char * newContents,
61 CORBA_Environment * ev);
63 impl_insertText (PortableServer_Servant _servant,
64 const CORBA_long position,
65 const CORBA_char * text,
66 const CORBA_long length,
67 CORBA_Environment * ev);
69 impl_copyText (PortableServer_Servant _servant,
70 const CORBA_long startPos, const CORBA_long endPos,
71 CORBA_Environment * ev);
73 impl_cutText (PortableServer_Servant _servant,
74 const CORBA_long startPos, const CORBA_long endPos,
75 CORBA_Environment * ev);
77 impl_deleteText (PortableServer_Servant _servant,
78 const CORBA_long startPos, const CORBA_long endPos,
79 CORBA_Environment * ev);
81 impl_pasteText (PortableServer_Servant _servant,
82 const CORBA_long position, CORBA_Environment * ev);
84 static GObjectClass *parent_class;
87 BONOBO_TYPE_FUNC_FULL (SpiEditableText,
88 Accessibility_EditableText,
93 spi_editable_text_class_init (SpiEditableTextClass *klass)
95 GObjectClass * object_class = (GObjectClass *) klass;
96 POA_Accessibility_EditableText__epv *epv = &klass->epv;
97 parent_class = g_type_interface_peek_parent (klass);
99 object_class->finalize = spi_editable_text_finalize;
101 /* Initialize epv table */
103 epv->setAttributes = impl_setAttributes;
104 epv->setTextContents = impl_setTextContents;
105 epv->insertText = impl_insertText;
106 epv->copyText = impl_copyText;
107 epv->cutText = impl_cutText;
108 epv->deleteText = impl_deleteText;
109 epv->pasteText = impl_pasteText;
113 spi_editable_text_init (SpiEditableText *editable)
118 spi_editable_text_finalize (GObject *obj)
120 parent_class->finalize (obj);
124 spi_editable_text_interface_new (AtkObject *obj)
126 SpiEditableText *new_editable =
127 SPI_EDITABLE_TEXT(g_object_new (SPI_EDITABLE_TEXT_TYPE, NULL));
128 (SPI_TEXT (new_editable))->atko = obj;
134 impl_setAttributes (PortableServer_Servant _servant,
135 const CORBA_char * attributes,
136 const CORBA_long startPos,
137 const CORBA_long endPos,
138 CORBA_Environment * ev)
140 SpiEditableText *editable;
142 obj = (bonobo_object_from_servant (_servant));
143 g_return_val_if_fail (IS_SPI_EDITABLE_TEXT (obj), FALSE);
144 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
145 g_return_val_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko), FALSE);
147 g_print ("setRunAttributes not implemented.\n");
153 impl_setTextContents (PortableServer_Servant _servant,
154 const CORBA_char * newContents,
155 CORBA_Environment * ev)
157 SpiEditableText *editable;
159 obj = (bonobo_object_from_servant (_servant));
160 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
161 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
162 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
164 atk_editable_text_set_text_contents (ATK_EDITABLE_TEXT( SPI_TEXT (editable)->atko),
165 (gchar *) newContents);
171 impl_insertText (PortableServer_Servant _servant,
172 const CORBA_long position,
173 const CORBA_char * text,
174 const CORBA_long length,
175 CORBA_Environment * ev)
177 SpiEditableText *editable;
179 obj = (bonobo_object_from_servant (_servant));
180 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
181 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
182 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
184 atk_editable_text_insert_text (ATK_EDITABLE_TEXT( SPI_TEXT (editable)->atko),
192 impl_copyText (PortableServer_Servant _servant,
193 const CORBA_long startPos, const CORBA_long endPos,
194 CORBA_Environment * ev)
196 SpiEditableText *editable;
198 obj = (bonobo_object_from_servant (_servant));
199 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
200 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
201 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
203 atk_editable_text_copy_text (ATK_EDITABLE_TEXT( SPI_TEXT(editable)->atko),
204 (gint) startPos, (gint) endPos);
210 impl_cutText (PortableServer_Servant _servant,
211 const CORBA_long startPos, const CORBA_long endPos,
212 CORBA_Environment * ev)
214 SpiEditableText *editable;
216 obj = (bonobo_object_from_servant (_servant));
217 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
218 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
219 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
221 atk_editable_text_cut_text (ATK_EDITABLE_TEXT(SPI_TEXT (editable)->atko),
222 (gint) startPos, (gint) endPos);
229 impl_deleteText (PortableServer_Servant _servant,
230 const CORBA_long startPos, const CORBA_long endPos,
231 CORBA_Environment * ev)
233 SpiEditableText *editable;
235 obj = (bonobo_object_from_servant (_servant));
236 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
237 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
238 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
240 atk_editable_text_delete_text (ATK_EDITABLE_TEXT( SPI_TEXT(editable)->atko),
241 (gint) startPos, (gint) endPos);
246 impl_pasteText (PortableServer_Servant _servant,
247 const CORBA_long position, CORBA_Environment * ev)
249 SpiEditableText *editable;
251 obj = (bonobo_object_from_servant (_servant));
252 g_return_if_fail (IS_SPI_EDITABLE_TEXT (obj));
253 editable = SPI_EDITABLE_TEXT(bonobo_object_from_servant (_servant));
254 g_return_if_fail (ATK_IS_EDITABLE_TEXT ( (SPI_TEXT (obj))->atko));
256 atk_editable_text_paste_text (ATK_EDITABLE_TEXT( SPI_TEXT(editable)->atko), position);