/* $Id: hyperlink.hg,v 1.4 2006/04/12 11:11:24 murrayc Exp $ */

/* Copyright (C) 2003 The gtkmm Development Team
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <atkmm/action.h>

_DEFS(atkmm,atk)
_PINCLUDE(glibmm/private/object_p.h)
_PINCLUDE(atk/atkobject.h)


namespace Atk
{

class Object;

/* An ATK object which encapsulates a link or set of links in a hypertext document.
 * It implements the AtkAction interface.
 */
class Hyperlink
  : public Glib::Object,
    public Atk::Action
{
  _CLASS_GOBJECT(Hyperlink, AtkHyperlink, ATK_HYPERLINK, Glib::Object, GObject)
  _IMPLEMENTS_INTERFACE(Action)

protected:

public:

  _WRAP_METHOD(Glib::ustring get_uri(int i) const, atk_hyperlink_get_uri)

  _WRAP_METHOD(Glib::RefPtr<Atk::Object> get_object(int i), atk_hyperlink_get_object, refreturn)
  _WRAP_METHOD(Glib::RefPtr<const Atk::Object> get_object(int i) const, atk_hyperlink_get_object, refreturn, constversion)
  
  _WRAP_METHOD(int get_end_index() const, atk_hyperlink_get_end_index)

  _WRAP_METHOD(int get_start_index() const, atk_hyperlink_get_start_index)

  _WRAP_METHOD(bool is_valid() const, atk_hyperlink_is_valid)

  _WRAP_METHOD(bool is_inline() const, atk_hyperlink_is_inline)

  _WRAP_METHOD(int get_n_anchors() const, atk_hyperlink_get_n_anchors)
  _WRAP_METHOD(bool is_selected_link() const, atk_hyperlink_is_selected_link)

  _WRAP_SIGNAL(void link_activated(), "link_activated")

  _WRAP_PROPERTY("selected-link", bool)
  _WRAP_PROPERTY("number-of-anchors", int)
  _WRAP_PROPERTY("end-index", int)
  _WRAP_PROPERTY("start-index", int)
  
protected:
  _WRAP_VFUNC(gchar* get_uri(int i) const, get_uri)
  _WRAP_VFUNC(Glib::RefPtr<Atk::Object> get_object(int i), get_object)
  _WRAP_VFUNC(int get_end_index() const, get_end_index)
  _WRAP_VFUNC(int get_start_index() const, get_start_index)
  _WRAP_VFUNC(bool is_valid() const, is_valid)
  _WRAP_VFUNC(int get_n_anchors() const, get_n_anchors)
  _WRAP_VFUNC(guint link_state() const, link_state)
  _WRAP_VFUNC(bool is_selected_link() const, is_selected_link) 
};

} // namespace Atk

