#ifndef __SP_XMLVIEW_ATTR_LIST_H__
#define __SP_XMLVIEW_ATTR_LIST_H__

/*
 * Specialization of GtkCList for editing XML node attributes
 *
 * Authors:
 *   MenTaLguY <mental@rydia.net>
 *
 * Copyright (C) 2002 MenTaLguY
 *
 * Released under the GNU GPL; see COPYING for details
 */

#include <stdio.h>
#include <gtk/gtkclist.h>
#include "../xml/repr.h"

#include <glib.h>

G_BEGIN_DECLS

#define SP_TYPE_XMLVIEW_ATTR_LIST (sp_xmlview_attr_list_get_type ())
#define SP_XMLVIEW_ATTR_LIST(o) (GTK_CHECK_CAST ((o), SP_TYPE_XMLVIEW_ATTR_LIST, SPXMLViewAttrList))
#define SP_IS_XMLVIEW_ATTR_LIST(o) (GTK_CHECK_TYPE ((o), SP_TYPE_XMLVIEW_ATTR_LIST))
#define SP_XMLVIEW_ATTR_LIST_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_XMLVIEW_ATTR_LIST))

typedef struct _SPXMLViewAttrList SPXMLViewAttrList;
typedef struct _SPXMLViewAttrListClass SPXMLViewAttrListClass;

struct _SPXMLViewAttrList
{
	GtkCList list;

	SPRepr * repr;
};

struct _SPXMLViewAttrListClass
{
	GtkCListClass parent_class;
};

GtkType sp_xmlview_attr_list_get_type (void);
GtkWidget * sp_xmlview_attr_list_new (SPRepr * repr);

#define SP_XMLVIEW_ATTR_LIST_GET_REPR(list) (SP_XMLVIEW_ATTR_LIST (list)->repr)

#define sp_xmlview_attr_list_get_row_key(list, row) (GPOINTER_TO_INT (gtk_clist_get_row_data ((list), (row))))
#define sp_xmlview_attr_list_find_row_from_key(list, key) (gtk_clist_find_row_from_data ((list), GINT_TO_POINTER ((key))))

void sp_xmlview_attr_list_set_repr (SPXMLViewAttrList * list, SPRepr * repr);

G_END_DECLS

#endif
