// -*- c++ -*-
//  Generated by gtkmmproc from ./../druid.gen_h -- DO NOT MODIFY!
#ifndef _GNOMEMM_DRUID_H
#define _GNOMEMM_DRUID_H

/* $Id: druid.gen_h,v 1.5 2001/04/28 15:10:32 murrayc Exp $ */


/* druid.gen_h
 *
 * Copyright (C) 1999 The Gtk-- 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 <gtk--/container.h>
#include <gnome--/druid-page.h>
#include <libgnomeui/gnome-druid.h>

namespace Gnome {
class Druid;
class Druid_Class;
}
namespace Gtk { Gnome::Druid *wrap (GnomeDruid *o); }
namespace Gnome
{

namespace Druid_Helpers {

class PageList
  {
    public:
      typedef DruidPage*                value_type;
      typedef value_type &         reference;
      typedef const value_type &   const_reference;

      typedef G_List_Iterator<value_type>        iterator;
      typedef G_List_ConstIterator<iterator>     const_iterator;
      typedef G_List_ReverseIterator<iterator>   reverse_iterator;
      typedef G_List_ConstIterator<reverse_iterator>   const_reverse_iterator;

      typedef size_t               difference_type;
      typedef size_t               size_type;

    private:
      GnomeDruid *parent_;

      GList*& glist() const;      // front of list

      iterator begin_() const;
      iterator end_() const;

    public:
      inline iterator begin()
        {return begin_();}
      inline iterator end()
        {return end_();}

      inline const_iterator begin() const
        { return const_iterator(begin_()); }
      inline const_iterator end() const
        { return const_iterator(end_()); }

      inline reverse_iterator rbegin()
        { return reverse_iterator(end_()); }
      inline reverse_iterator rend()
        { return reverse_iterator(begin_()); }

      inline const_reverse_iterator rbegin() const
        { return const_reverse_iterator(reverse_iterator(end_())); }
      inline const_reverse_iterator rend() const
        { return const_reverse_iterator(reverse_iterator(begin_())); }

      size_type size(void) const;
      inline size_type max_size(void) { return size_type(-1); }
      inline bool empty(void) { return glist() == 0; }

      iterator insert(iterator loc,DruidPage &e);
      void push_front(DruidPage& e);
      void push_back(DruidPage& e);

      inline void pop_front()   { erase(begin()); }
      inline void pop_back()    { erase(--end()); }

      void clear();

      iterator erase(iterator);
      void erase(iterator start, iterator stop);
      void remove(const_reference);
      void remove(DruidPage& w);

      value_type operator[](size_type l) const;
  };

} /* namespace Druid_Helpers */

class Druid : public Gtk::Container
{

public:
  typedef Druid          CppObjectType;
  typedef Druid_Class    CppClassType;
  typedef GnomeDruid           BaseObjectType;
  typedef GnomeDruidClass      BaseClassType;

private:
  friend class Druid_Class;
  static CppClassType druid_class;

  Druid(const Druid&);
  Druid& operator=(const Druid&); // not implemented

protected:
  void   initialize_class();
  explicit Druid(GnomeDruid *castitem);

public:
  static GtkType get_type();
  GnomeDruid* gtkobj()             { return (GnomeDruid*)(gtkobject); }
  const GnomeDruid* gtkobj() const { return (GnomeDruid*)(gtkobject); }
  static bool isA(Gtk::Object *checkcast);

  // Hook for proxies
  static const char* const signal_names[];

  virtual ~Druid();

private:

public:
  typedef Druid_Helpers::PageList PageList;
  typedef DruidPage Page;

  Druid();

  void set_buttons_sensitive(bool back_sensitive,bool next_sensitive,bool cancel_sensitive);


  void set_show_finish(bool show_finish);

  //: (deprecated)

  void prepend_page(const Gnome::DruidPage& page);

  //: (deprecated)

  void insert_page(const Gnome::DruidPage& back_page,const Gnome::DruidPage& page);

  //: (deprecated)

  void append_page(const Gnome::DruidPage& page);


  void set_page(const Gnome::DruidPage& page);



  Page* get_current() const;

  PageList& pages()
    {return reinterpret_cast<PageList&>(gtkobject); }
  const PageList& pages() const
    {return reinterpret_cast<const PageList&>(gtkobject); }

public:

  union
    {
      CppObjectType * druid_self;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,0> cancel;
    };

protected:
  // impl functions
    virtual void cancel_impl();

};


}


#endif
