/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/* eggassistant.h
 * Copyright (C) 2005 Carlos Garnacho Parro
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser 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 __EGG_ASSISTANT_H
#define __EGG_ASSISTANT_H

G_BEGIN_DECLS

#include <gtk/gtk.h>
#include "eggassistantpage.h"

#define EGG_TYPE_ASSISTANT         (egg_assistant_get_type ())
#define EGG_ASSISTANT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EGG_TYPE_ASSISTANT, EggAssistant))
#define EGG_ASSISTANT_CLASS(c)     (G_TYPE_CHECK_CLASS_CAST    ((c), EGG_TYPE_ASSISTANT, EggAssistantClass))
#define EGG_IS_ASSISTANT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EGG_TYPE_ASSISTANT))
#define EGG_IS_ASSISTANT_CLASS(c)  (G_TYPE_CHECK_CLASS_TYPE    ((c), EGG_TYPE_ASSISTANT))
#define EGG_ASSISTANT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS  ((o), EGG_TYPE_ASSISTANT, EggAssistantClass))

typedef struct _EggAssistant      EggAssistant;
typedef struct _EggAssistantClass EggAssistantClass;

struct _EggAssistant
{
  GtkDialog parent;

  GtkWidget *forward;
  GtkWidget *back;
  GtkWidget *close;
  GtkWidget *apply;
};

struct _EggAssistantClass
{
  GtkDialogClass parent_class;

  /* padding for possible expansion */
  gpointer padding1;
  gpointer padding2;
  gpointer padding3;
  gpointer padding4;
  gpointer padding5;
  gpointer padding6;
  gpointer padding7;
};

typedef gint (*EggAssistantPageFunc) (gint current_page, gpointer data);

GType             egg_assistant_get_type (void) G_GNUC_CONST;

GtkWidget        *egg_assistant_new (GtkWindow *parent);

gint              egg_assistant_get_current_page (EggAssistant *assistant);
gint              egg_assistant_get_n_pages      (EggAssistant *assistant);
EggAssistantPage *egg_assistant_get_nth_page     (EggAssistant *assistant, gint n_page);

gint              egg_assistant_prepend_page     (EggAssistant *assistant, EggAssistantPage *page);
gint              egg_assistant_append_page      (EggAssistant *assistant, EggAssistantPage *page);
gint              egg_assistant_insert_page      (EggAssistant *assistant, EggAssistantPage *page, gint position);

void              egg_assistant_set_forward_page_func (EggAssistant         *assistant,
						       EggAssistantPageFunc  page_func,
						       gpointer              data);
void              egg_assistant_set_back_page_func    (EggAssistant         *assistant,
						       EggAssistantPageFunc  page_func,
						       gpointer              data);

void              egg_assistant_set_buttons_sensitive (EggAssistant *assistant,
						       gboolean      close_sensitive,
						       gboolean      back_sensitive,
						       gboolean      forward_sensitive);

G_END_DECLS

#endif /* __EGG_ASSISTANT_H */
