Blame atk/atkeditabletext.c

Packit d0bcc1
/* ATK - The Accessibility Toolkit for GTK+
Packit d0bcc1
 * Copyright 2001 Sun Microsystems Inc.
Packit d0bcc1
 *
Packit d0bcc1
 * This library is free software; you can redistribute it and/or
Packit d0bcc1
 * modify it under the terms of the GNU Library General Public
Packit d0bcc1
 * License as published by the Free Software Foundation; either
Packit d0bcc1
 * version 2 of the License, or (at your option) any later version.
Packit d0bcc1
 *
Packit d0bcc1
 * This library is distributed in the hope that it will be useful,
Packit d0bcc1
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit d0bcc1
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit d0bcc1
 * Library General Public License for more details.
Packit d0bcc1
 *
Packit d0bcc1
 * You should have received a copy of the GNU Library General Public
Packit d0bcc1
 * License along with this library; if not, write to the
Packit d0bcc1
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit d0bcc1
 * Boston, MA 02111-1307, USA.
Packit d0bcc1
 */
Packit d0bcc1
Packit d0bcc1
#include "config.h"
Packit d0bcc1
Packit d0bcc1
#include "atkeditabletext.h"
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * SECTION:atkeditabletext
Packit d0bcc1
 * @Short_description: The ATK interface implemented by components
Packit d0bcc1
 *  containing user-editable text content.
Packit d0bcc1
 * @Title:AtkEditableText
Packit d0bcc1
 *
Packit d0bcc1
 * #AtkEditableText should be implemented by UI components which
Packit d0bcc1
 * contain text which the user can edit, via the #AtkObject
Packit d0bcc1
 * corresponding to that component (see #AtkObject).
Packit d0bcc1
 *
Packit d0bcc1
 * #AtkEditableText is a subclass of #AtkText, and as such, an object
Packit d0bcc1
 * which implements #AtkEditableText is by definition an #AtkText
Packit d0bcc1
 * implementor as well.
Packit d0bcc1
 *
Packit d0bcc1
 * See also: #AtkText
Packit d0bcc1
 */
Packit d0bcc1
Packit d0bcc1
GType
Packit d0bcc1
atk_editable_text_get_type (void)
Packit d0bcc1
{
Packit d0bcc1
  static GType type = 0;
Packit d0bcc1
Packit d0bcc1
  if (!type) {
Packit d0bcc1
    static const GTypeInfo tinfo =
Packit d0bcc1
    {
Packit d0bcc1
      sizeof (AtkEditableTextIface),
Packit d0bcc1
      (GBaseInitFunc) NULL,
Packit d0bcc1
      (GBaseFinalizeFunc) NULL,
Packit d0bcc1
Packit d0bcc1
    };
Packit d0bcc1
Packit d0bcc1
    type = g_type_register_static (G_TYPE_INTERFACE, "AtkEditableText", &tinfo, 0);
Packit d0bcc1
  }
Packit d0bcc1
Packit d0bcc1
  return type;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 *atk_editable_text_set_run_attributes:
Packit d0bcc1
 *@text: an #AtkEditableText
Packit d0bcc1
 *@attrib_set: an #AtkAttributeSet
Packit d0bcc1
 *@start_offset: start of range in which to set attributes
Packit d0bcc1
 *@end_offset: end of range in which to set attributes
Packit d0bcc1
 *
Packit d0bcc1
 *Sets the attributes for a specified range. See the ATK_ATTRIBUTE
Packit d0bcc1
 *macros (such as #ATK_ATTRIBUTE_LEFT_MARGIN) for examples of attributes 
Packit d0bcc1
 *that can be set. Note that other attributes that do not have corresponding
Packit d0bcc1
 *ATK_ATTRIBUTE macros may also be set for certain text widgets.
Packit d0bcc1
 *
Packit d0bcc1
 *Returns: %TRUE if attributes successfully set for the specified
Packit d0bcc1
 *range, otherwise %FALSE
Packit d0bcc1
 **/
Packit d0bcc1
gboolean
Packit d0bcc1
atk_editable_text_set_run_attributes (AtkEditableText *text,
Packit d0bcc1
                                      AtkAttributeSet *attrib_set,
Packit d0bcc1
			              gint start_offset,
Packit d0bcc1
                                      gint end_offset)
Packit d0bcc1
{
Packit d0bcc1
  AtkEditableTextIface *iface;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_EDITABLE_TEXT (text), FALSE);
Packit d0bcc1
Packit d0bcc1
  iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
Packit d0bcc1
Packit d0bcc1
  if (iface->set_run_attributes)
Packit d0bcc1
    {
Packit d0bcc1
      return (*(iface->set_run_attributes)) (text, attrib_set, start_offset, end_offset);
Packit d0bcc1
    }
Packit d0bcc1
  else
Packit d0bcc1
    {
Packit d0bcc1
      return FALSE;
Packit d0bcc1
    }
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_editable_text_set_text_contents:
Packit d0bcc1
 * @text: an #AtkEditableText
Packit d0bcc1
 * @string: string to set for text contents of @text
Packit d0bcc1
 *
Packit d0bcc1
 * Set text contents of @text.
Packit d0bcc1
 **/
Packit d0bcc1
void 
Packit d0bcc1
atk_editable_text_set_text_contents (AtkEditableText  *text,
Packit d0bcc1
                                     const gchar      *string)
Packit d0bcc1
{
Packit d0bcc1
  AtkEditableTextIface *iface;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
Packit d0bcc1
Packit d0bcc1
  iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
Packit d0bcc1
Packit d0bcc1
  if (iface->set_text_contents)
Packit d0bcc1
    (*(iface->set_text_contents)) (text, string);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_editable_text_insert_text:
Packit d0bcc1
 * @text: an #AtkEditableText
Packit d0bcc1
 * @string: the text to insert
Packit d0bcc1
 * @length: the length of text to insert, in bytes
Packit d0bcc1
 * @position: The caller initializes this to 
Packit d0bcc1
 * the position at which to insert the text. After the call it
Packit d0bcc1
 * points at the position after the newly inserted text.
Packit d0bcc1
 *
Packit d0bcc1
 * Insert text at a given position.
Packit d0bcc1
 **/
Packit d0bcc1
void 
Packit d0bcc1
atk_editable_text_insert_text (AtkEditableText  *text,
Packit d0bcc1
                               const gchar      *string,
Packit d0bcc1
                               gint             length,
Packit d0bcc1
                               gint             *position)
Packit d0bcc1
{
Packit d0bcc1
  AtkEditableTextIface *iface;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
Packit d0bcc1
Packit d0bcc1
  iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
Packit d0bcc1
Packit d0bcc1
  if (iface->insert_text)
Packit d0bcc1
    (*(iface->insert_text)) (text, string, length, position);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_editable_text_copy_text:
Packit d0bcc1
 * @text: an #AtkEditableText
Packit d0bcc1
 * @start_pos: start position
Packit d0bcc1
 * @end_pos: end position
Packit d0bcc1
 *
Packit d0bcc1
 * Copy text from @start_pos up to, but not including @end_pos 
Packit d0bcc1
 * to the clipboard.
Packit d0bcc1
 **/
Packit d0bcc1
void 
Packit d0bcc1
atk_editable_text_copy_text (AtkEditableText  *text,
Packit d0bcc1
                             gint             start_pos,
Packit d0bcc1
                             gint             end_pos)
Packit d0bcc1
{
Packit d0bcc1
  AtkEditableTextIface *iface;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
Packit d0bcc1
Packit d0bcc1
  iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
Packit d0bcc1
Packit d0bcc1
  if (iface->copy_text)
Packit d0bcc1
    (*(iface->copy_text)) (text, start_pos, end_pos);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_editable_text_cut_text:
Packit d0bcc1
 * @text: an #AtkEditableText
Packit d0bcc1
 * @start_pos: start position
Packit d0bcc1
 * @end_pos: end position
Packit d0bcc1
 *
Packit d0bcc1
 * Copy text from @start_pos up to, but not including @end_pos
Packit d0bcc1
 * to the clipboard and then delete from the widget.
Packit d0bcc1
 **/
Packit d0bcc1
void 
Packit d0bcc1
atk_editable_text_cut_text  (AtkEditableText  *text,
Packit d0bcc1
                             gint             start_pos,
Packit d0bcc1
                             gint             end_pos)
Packit d0bcc1
{
Packit d0bcc1
  AtkEditableTextIface *iface;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
Packit d0bcc1
Packit d0bcc1
  iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
Packit d0bcc1
Packit d0bcc1
  if (iface->cut_text)
Packit d0bcc1
    (*(iface->cut_text)) (text, start_pos, end_pos);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_editable_text_delete_text:
Packit d0bcc1
 * @text: an #AtkEditableText
Packit d0bcc1
 * @start_pos: start position
Packit d0bcc1
 * @end_pos: end position
Packit d0bcc1
 *
Packit d0bcc1
 * Delete text @start_pos up to, but not including @end_pos.
Packit d0bcc1
 **/
Packit d0bcc1
void 
Packit d0bcc1
atk_editable_text_delete_text (AtkEditableText  *text,
Packit d0bcc1
                               gint             start_pos,
Packit d0bcc1
                               gint             end_pos)
Packit d0bcc1
{
Packit d0bcc1
  AtkEditableTextIface *iface;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
Packit d0bcc1
Packit d0bcc1
  iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
Packit d0bcc1
Packit d0bcc1
  if (iface->delete_text)
Packit d0bcc1
    (*(iface->delete_text)) (text, start_pos, end_pos);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_editable_text_paste_text:
Packit d0bcc1
 * @text: an #AtkEditableText
Packit d0bcc1
 * @position: position to paste
Packit d0bcc1
 *
Packit d0bcc1
 * Paste text from clipboard to specified @position.
Packit d0bcc1
 **/
Packit d0bcc1
void 
Packit d0bcc1
atk_editable_text_paste_text (AtkEditableText  *text,
Packit d0bcc1
                              gint             position)
Packit d0bcc1
{
Packit d0bcc1
  AtkEditableTextIface *iface;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
Packit d0bcc1
Packit d0bcc1
  iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
Packit d0bcc1
Packit d0bcc1
  if (iface->paste_text)
Packit d0bcc1
    (*(iface->paste_text)) (text, position);
Packit d0bcc1
}