#include <atk/atk.h>
#include <droute/droute.h>
-#include "spi-common/spi-dbus.h"
+#include "common/spi-dbus.h"
+
+#include "accessible-marshaller.h"
static dbus_bool_t
-impl_get_characterCount (DBusMessageIter * iter,
+impl_get_CharacterCount (DBusMessageIter * iter,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static dbus_bool_t
-impl_get_caretOffset (DBusMessageIter * iter,
+impl_get_CaretOffset (DBusMessageIter * iter,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static DBusMessage *
-impl_getText (DBusConnection * bus, DBusMessage * message, void *user_data)
+impl_GetText (DBusConnection * bus, DBusMessage * message, void *user_data)
{
AtkText *text = (AtkText *) user_data;
dbus_int32_t startOffset, endOffset;
}
static DBusMessage *
-impl_setCaretOffset (DBusConnection * bus, DBusMessage * message,
+impl_SetCaretOffset (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static DBusMessage *
-impl_getTextBeforeOffset (DBusConnection * bus, DBusMessage * message,
+impl_GetTextBeforeOffset (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
reply = dbus_message_new_method_return (message);
if (reply)
{
- dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset,
- DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_STRING,
- &txt, DBUS_TYPE_INVALID);
+ dbus_message_append_args (reply, DBUS_TYPE_STRING, &txt, DBUS_TYPE_INT32,
+ &startOffset, DBUS_TYPE_INT32, &endOffset,
+ DBUS_TYPE_INVALID);
}
g_free (txt);
return reply;
}
static DBusMessage *
-impl_getTextAtOffset (DBusConnection * bus, DBusMessage * message,
+impl_GetTextAtOffset (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
reply = dbus_message_new_method_return (message);
if (reply)
{
- dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset,
- DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_STRING,
- &txt, DBUS_TYPE_INVALID);
+ dbus_message_append_args (reply, DBUS_TYPE_STRING, &txt, DBUS_TYPE_INT32,
+ &startOffset, DBUS_TYPE_INT32, &endOffset,
+ DBUS_TYPE_INVALID);
}
g_free (txt);
return reply;
}
static DBusMessage *
-impl_getTextAfterOffset (DBusConnection * bus, DBusMessage * message,
+impl_GetTextAfterOffset (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
reply = dbus_message_new_method_return (message);
if (reply)
{
- dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset,
- DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_STRING,
- &txt, DBUS_TYPE_INVALID);
+ dbus_message_append_args (reply, DBUS_TYPE_STRING, &txt, DBUS_TYPE_INT32,
+ &startOffset, DBUS_TYPE_INT32, &endOffset,
+ DBUS_TYPE_INVALID);
}
g_free (txt);
return reply;
}
static DBusMessage *
-impl_getCharacterAtOffset (DBusConnection * bus, DBusMessage * message,
+impl_GetCharacterAtOffset (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static DBusMessage *
-impl_getAttributeValue (DBusConnection * bus, DBusMessage * message,
+impl_GetAttributeValue (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
reply = dbus_message_new_method_return (message);
if (reply)
{
- dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset,
- DBUS_TYPE_INT32, &endOffset,
- DBUS_TYPE_BOOLEAN, &defined, DBUS_TYPE_STRING,
- &rv, DBUS_TYPE_INVALID);
+ dbus_message_append_args (reply, DBUS_TYPE_STRING, &rv, DBUS_TYPE_INT32,
+ &startOffset, DBUS_TYPE_INT32, &endOffset,
+ DBUS_TYPE_BOOLEAN, &defined, DBUS_TYPE_INVALID);
}
atk_attribute_set_free (set);
return reply;
}
static DBusMessage *
-impl_getAttributes (DBusConnection * bus, DBusMessage * message,
+impl_GetAttributes (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
dbus_int32_t offset;
dbus_int32_t startOffset, endOffset;
gint intstart_offset, intend_offset;
- char *rv;
DBusError error;
DBusMessage *reply;
AtkAttributeSet *set;
+ DBusMessageIter iter;
g_return_val_if_fail (ATK_IS_TEXT (user_data),
droute_not_yet_handled_error (message));
set = atk_text_get_run_attributes (text, offset,
&intstart_offset, &intend_offset);
- rv = _string_from_attribute_set (set);
-
startOffset = intstart_offset;
endOffset = intend_offset;
reply = dbus_message_new_method_return (message);
if (reply)
{
- dbus_message_append_args (reply, DBUS_TYPE_STRING, &rv, DBUS_TYPE_INT32, &startOffset,
+ dbus_message_iter_init_append (reply, &iter);
+ spi_atk_append_attribute_set (&iter, set);
+ dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset,
DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_INVALID);
}
atk_attribute_set_free (set);
- g_free(rv);
return reply;
}
static DBusMessage *
-impl_getDefaultAttributes (DBusConnection * bus, DBusMessage * message,
+impl_GetDefaultAttributes (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
- char *rv;
DBusError error;
DBusMessage *reply;
AtkAttributeSet *set;
+ DBusMessageIter iter;
g_return_val_if_fail (ATK_IS_TEXT (user_data),
droute_not_yet_handled_error (message));
dbus_error_init (&error);
set = atk_text_get_default_attributes (text);
- rv = _string_from_attribute_set (set);
reply = dbus_message_new_method_return (message);
if (reply)
{
- dbus_message_append_args (reply, DBUS_TYPE_STRING, &rv,
- DBUS_TYPE_INVALID);
+ dbus_message_iter_init_append (reply, &iter);
+ spi_atk_append_attribute_set (&iter, set);
}
- g_free (rv);
atk_attribute_set_free (set);
return reply;
}
static DBusMessage *
-impl_getCharacterExtents (DBusConnection * bus, DBusMessage * message,
+impl_GetCharacterExtents (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
dbus_int32_t offset;
- dbus_int16_t coordType;
+ dbus_uint32_t coordType;
dbus_int32_t x, y, width, height;
gint ix = 0, iy = 0, iw = 0, ih = 0;
DBusError error;
droute_not_yet_handled_error (message));
dbus_error_init (&error);
if (!dbus_message_get_args
- (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_INT16, &coordType,
+ (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_UINT32, &coordType,
DBUS_TYPE_INVALID))
{
return droute_invalid_arguments_error (message);
}
static DBusMessage *
-impl_getOffsetAtPoint (DBusConnection * bus, DBusMessage * message,
+impl_GetOffsetAtPoint (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
dbus_int32_t x, y;
- dbus_int16_t coordType;
+ dbus_uint32_t coordType;
dbus_int32_t rv;
DBusError error;
DBusMessage *reply;
dbus_error_init (&error);
if (!dbus_message_get_args
(message, &error, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y,
- DBUS_TYPE_INT16, &coordType, DBUS_TYPE_INVALID))
+ DBUS_TYPE_UINT32, &coordType, DBUS_TYPE_INVALID))
{
return droute_invalid_arguments_error (message);
}
}
static DBusMessage *
-impl_getNSelections (DBusConnection * bus, DBusMessage * message,
+impl_GetNSelections (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static DBusMessage *
-impl_getSelection (DBusConnection * bus, DBusMessage * message,
+impl_GetSelection (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static DBusMessage *
-impl_addSelection (DBusConnection * bus, DBusMessage * message,
+impl_AddSelection (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static DBusMessage *
-impl_removeSelection (DBusConnection * bus, DBusMessage * message,
+impl_RemoveSelection (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static DBusMessage *
-impl_setSelection (DBusConnection * bus, DBusMessage * message,
+impl_SetSelection (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
}
static DBusMessage *
-impl_getRangeExtents (DBusConnection * bus, DBusMessage * message,
+impl_GetRangeExtents (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
dbus_int32_t startOffset, endOffset;
- dbus_int16_t coordType;
+ dbus_uint32_t coordType;
AtkTextRectangle rect;
dbus_int32_t x, y, width, height;
DBusError error;
dbus_error_init (&error);
if (!dbus_message_get_args
(message, &error, DBUS_TYPE_INT32, &startOffset, DBUS_TYPE_INT32,
- &endOffset, DBUS_TYPE_INT16, &coordType, DBUS_TYPE_INVALID))
+ &endOffset, DBUS_TYPE_UINT32, &coordType, DBUS_TYPE_INVALID))
{
return droute_invalid_arguments_error (message);
}
#define MAXRANGELEN 512
static DBusMessage *
-impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message,
+impl_GetBoundedRanges (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
dbus_int32_t x, y, width, height;
- dbus_int16_t coordType, xClipType, yClipType;
+ dbus_uint32_t coordType, xClipType, yClipType;
DBusError error;
AtkTextRange **range_list = NULL;
AtkTextRectangle rect;
dbus_error_init (&error);
if (!dbus_message_get_args
(message, &error, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y,
- DBUS_TYPE_INT32, &height, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT16,
- &coordType, DBUS_TYPE_INT32, &xClipType, DBUS_TYPE_INT32, &yClipType,
+ DBUS_TYPE_INT32, &height, DBUS_TYPE_INT32, &width, DBUS_TYPE_UINT32,
+ &coordType, DBUS_TYPE_UINT32, &xClipType, DBUS_TYPE_UINT32, &yClipType,
DBUS_TYPE_INVALID))
{
return droute_invalid_arguments_error (message);
}
static DBusMessage *
-impl_getAttributeRun (DBusConnection * bus, DBusMessage * message,
+impl_GetAttributeRun (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
DBusError error;
DBusMessage *reply;
AtkAttributeSet *attributes, *default_attributes = NULL;
AtkAttribute *attr = NULL;
- char **retval;
- gint n_attributes = 0, total_attributes = 0, n_default_attributes = 0;
- gint i, j;
+ DBusMessageIter iter, iterArray;
g_return_val_if_fail (ATK_IS_TEXT (user_data),
droute_not_yet_handled_error (message));
atk_text_get_run_attributes (text, offset, &intstart_offset,
&intend_offset);
- if (attributes)
- total_attributes = n_attributes = g_slist_length (attributes);
+ reply = dbus_message_new_method_return (message);
+ if (!reply)
+ return NULL;
+ dbus_message_iter_init_append (reply, &iter);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{ss}", &iterArray);
+ spi_atk_append_attribute_set_inner (&iterArray, attributes);
if (includeDefaults)
{
default_attributes = atk_text_get_default_attributes (text);
- if (default_attributes)
- n_default_attributes = g_slist_length (default_attributes);
- total_attributes += n_default_attributes;
+ spi_atk_append_attribute_set_inner (&iterArray, default_attributes);
}
+ dbus_message_iter_close_container (&iter, &iterArray);
startOffset = intstart_offset;
endOffset = intend_offset;
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &startOffset);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &endOffset);
- retval = (char **) g_malloc (total_attributes * sizeof (char *));
-
- if (total_attributes)
- {
- for (i = 0; i < n_attributes; ++i)
- {
- attr = g_slist_nth_data (attributes, i);
- retval[i] = g_strconcat (attr->name, ":", attr->value, NULL);
- }
-
- for (j = 0; j < n_default_attributes; ++i, ++j)
- {
- attr = g_slist_nth_data (default_attributes, j);
- retval[i] = g_strconcat (attr->name, ":", attr->value, NULL);
- }
+ atk_attribute_set_free (attributes);
+ if (default_attributes)
+ atk_attribute_set_free (default_attributes);
- atk_attribute_set_free (attributes);
- if (default_attributes)
- atk_attribute_set_free (default_attributes);
- }
- reply = dbus_message_new_method_return (message);
- if (reply)
- {
- dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset,
- DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_ARRAY,
- DBUS_TYPE_STRING, &retval, total_attributes,
- DBUS_TYPE_INVALID);
- }
- for (i = 0; i < total_attributes; i++)
- g_free (retval[i]);
- g_free (retval);
return reply;
}
static DBusMessage *
-impl_getDefaultAttributeSet (DBusConnection * bus, DBusMessage * message,
+impl_GetDefaultAttributeSet (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
AtkText *text = (AtkText *) user_data;
DBusMessage *reply;
+ DBusMessageIter iter;
AtkAttributeSet *attributes;
- AtkAttribute *attr = NULL;
- char **retval;
- gint n_attributes = 0;
- gint i;
g_return_val_if_fail (ATK_IS_TEXT (user_data),
droute_not_yet_handled_error (message));
attributes = atk_text_get_default_attributes (text);
- if (attributes)
- n_attributes = g_slist_length (attributes);
-
- retval = g_new (char *, n_attributes);
- for (i = 0; i < n_attributes; ++i)
- {
- attr = g_slist_nth_data (attributes, i);
- retval[i] = g_strconcat (attr->name, ":", attr->value, NULL);
- }
- if (attributes)
- atk_attribute_set_free (attributes);
reply = dbus_message_new_method_return (message);
if (reply)
{
- dbus_message_append_args (reply, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
- &retval, n_attributes, DBUS_TYPE_INVALID);
+ dbus_message_iter_init_append (reply, &iter);
+ spi_atk_append_attribute_set (&iter, attributes);
}
- for (i = 0; i < n_attributes; i++)
- g_free (retval[i]);
- g_free (retval);
+
+ if (attributes)
+ atk_attribute_set_free (attributes);
+
return reply;
}
static DRouteMethod methods[] = {
- {impl_getText, "getText"},
- {impl_setCaretOffset, "setCaretOffset"},
- {impl_getTextBeforeOffset, "getTextBeforeOffset"},
- {impl_getTextAtOffset, "getTextAtOffset"},
- {impl_getTextAfterOffset, "getTextAfterOffset"},
- {impl_getCharacterAtOffset, "getCharacterAtOffset"},
- {impl_getAttributeValue, "getAttributeValue"},
- {impl_getAttributes, "getAttributes"},
- {impl_getDefaultAttributes, "getDefaultAttributes"},
- {impl_getCharacterExtents, "getCharacterExtents"},
- {impl_getOffsetAtPoint, "getOffsetAtPoint"},
- {impl_getNSelections, "getNSelections"},
- {impl_getSelection, "getSelection"},
- {impl_addSelection, "addSelection"},
- {impl_removeSelection, "removeSelection"},
- {impl_setSelection, "setSelection"},
- {impl_getRangeExtents, "getRangeExtents"},
- {impl_getBoundedRanges, "getBoundedRanges"},
- {impl_getAttributeRun, "getAttributeRun"},
- {impl_getDefaultAttributeSet, "getDefaultAttributeSet"},
+ {impl_GetText, "GetText"},
+ {impl_SetCaretOffset, "SetCaretOffset"},
+ {impl_GetTextBeforeOffset, "GetTextBeforeOffset"},
+ {impl_GetTextAtOffset, "GetTextAtOffset"},
+ {impl_GetTextAfterOffset, "GetTextAfterOffset"},
+ {impl_GetCharacterAtOffset, "GetCharacterAtOffset"},
+ {impl_GetAttributeValue, "GetAttributeValue"},
+ {impl_GetAttributes, "GetAttributes"},
+ {impl_GetDefaultAttributes, "GetDefaultAttributes"},
+ {impl_GetCharacterExtents, "GetCharacterExtents"},
+ {impl_GetOffsetAtPoint, "GetOffsetAtPoint"},
+ {impl_GetNSelections, "GetNSelections"},
+ {impl_GetSelection, "GetSelection"},
+ {impl_AddSelection, "AddSelection"},
+ {impl_RemoveSelection, "RemoveSelection"},
+ {impl_SetSelection, "SetSelection"},
+ {impl_GetRangeExtents, "GetRangeExtents"},
+ {impl_GetBoundedRanges, "GetBoundedRanges"},
+ {impl_GetAttributeRun, "GetAttributeRun"},
+ {impl_GetDefaultAttributeSet, "GetDefaultAttributeSet"},
{NULL, NULL}
};
static DRouteProperty properties[] = {
- {impl_get_characterCount, NULL, "characterCount"},
- {impl_get_caretOffset, NULL, "caretOffset"},
+ {impl_get_CharacterCount, NULL, "CharacterCount"},
+ {impl_get_CaretOffset, NULL, "CaretOffset"},
{NULL, NULL, NULL}
};