/* gtkassistant.h
 * Copyright (C) 1999  Red Hat, Inc.
 * Copyright (C) 2002  Anders Carlsson <andersca@gnu.org>
 * Copyright (C) 2003  Matthias Clasen <maclas@gmx.de>
 *
 * 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., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
#ifndef __GTK_ASSISTANT_H__
#define __GTK_ASSISTANT_H__

#include <gtk/gtkcontainer.h>

G_BEGIN_DECLS

#define GTK_TYPE_ASSISTANT             (gtk_assistant_get_type ())
#define GTK_ASSISTANT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ASSISTANT, GtkAssistant))
#define GTK_ASSISTANT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ASSISTANT, GtkAssistantClass))
#define GTK_IS_ASSISTANT(obj)	       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ASSISTANT))
#define GTK_IS_ASSISTANT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((obj), GTK_TYPE_ASSISTANT))
#define GTK_ASSISTANT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ASSISTANT, GtkAssistantClass))

typedef struct _GtkAssistant        GtkAssistant;
typedef struct _GtkAssistantClass   GtkAssistantClass;
typedef struct _GtkAssistantPrivate GtkAssistantPrivate;

struct _GtkAssistant
{
  GtkContainer container;

  /*< private >*/

  GtkAssistantPrivate *private_data;
};

struct _GtkAssistantClass
{
  GtkContainerClass parent_class;

  void     (*cancel)	(GtkAssistant *assistant, GtkWidget *page);
  void     (*prepare)	(GtkAssistant *assistant, GtkWidget *page);
  gboolean (*back)	(GtkAssistant *assistant, GtkWidget *page);
  gboolean (*next)	(GtkAssistant *assistant, GtkWidget *page);
  gboolean (*finish)	(GtkAssistant *assistant, GtkWidget *page);
  void     (*close)	(GtkAssistant *assistant, GtkWidget *page);

  /* Padding for future expansion */
  void (*_gtk_reserved1) (void);
  void (*_gtk_reserved2) (void);
  void (*_gtk_reserved3) (void);
  void (*_gtk_reserved4) (void);
};

GType      gtk_assistant_get_type              (void);
GtkWidget *gtk_assistant_new                   (void);

void gtk_assistant_set_sidebar_image           (GtkAssistant  *assistant,
						GdkPixbuf     *image);
void gtk_assistant_set_sidebar_image_alignment (GtkAssistant  *assistant,
						gfloat         alignment);
void gtk_assistant_set_sidebar_color           (GtkAssistant  *assistant,
						GdkColor      *color);
void gtk_assistant_set_header_image            (GtkAssistant  *assistant,
						GdkPixbuf     *image);
void gtk_assistant_set_header_color            (GtkAssistant  *assistant,
						GdkColor      *color);
void gtk_assistant_set_header_text_color       (GtkAssistant  *assistant,
						GdkColor      *color);

void gtk_assistant_set_buttons_sensitive       (GtkAssistant  *assistant,
						gboolean       back_sensitive,
						gboolean       forward_sensitive,
						gboolean       cancel_sensitive);

void gtk_assistant_insert_page                 (GtkAssistant  *assistant,
						GtkWidget     *sibling,
						GtkWidget     *page);
void gtk_assistant_append_page                 (GtkAssistant  *assistant,
				                GtkWidget     *page);
void gtk_assistant_prepend_page                (GtkAssistant  *assistant,
				                GtkWidget     *page);

void gtk_assistant_set_current_page            (GtkAssistant  *assistant,
				                GtkWidget     *page);
GtkWidget *gtk_assistant_get_current_page      (GtkAssistant  *assistant);

void gtk_assistant_set_current_page_num        (GtkAssistant  *assistant,
						gint           page_num);
gint gtk_assistant_get_current_page_num        (GtkAssistant  *assistant);

gint gtk_assistant_get_n_pages                 (GtkAssistant  *assistant);
GtkWidget *gtk_assistant_get_nth_page          (GtkAssistant  *assistant,
						gint           page_num);

void gtk_assistant_set_page_type               (GtkAssistant        *assistant,
				                GtkWidget           *page,
				                GtkAssistantPageType type);
GtkAssistantPageType gtk_assistant_get_page_type (GtkAssistant  *assistant,
				                  GtkWidget     *page);

void gtk_assistant_set_page_title              (GtkAssistant  *assistant,
				                GtkWidget     *page,
				                const gchar   *title);
gchar *gtk_assistant_get_page_title            (GtkAssistant  *assistant,
				                GtkWidget     *page);

G_END_DECLS

#endif /* __GTK_ASSISTANT_H__ */
