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

/* $Id: treeitem.h,v 1.2 2003/06/17 16:37:41 pbd Exp $ */

/* treeitem.h
 *
 * Copyright (C) 1998-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--/item.h>
#include <gtk/gtktreeitem.h>

namespace Gtk {
class TreeItem;
class TreeItem_Class;
}
namespace Gtk { Gtk::TreeItem *wrap (GtkTreeItem *o); }
namespace Gtk
{
class Tree;
class TreeItem : public Item {

public:
  typedef TreeItem          CppObjectType;
  typedef TreeItem_Class    CppClassType;
  typedef GtkTreeItem           BaseObjectType;
  typedef GtkTreeItemClass      BaseClassType;

private:
  friend class TreeItem_Class;
  static CppClassType tree_item_class;

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

protected:
  void   initialize_class();
  explicit TreeItem(GtkTreeItem *castitem);

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

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

  virtual ~TreeItem();

private:

public:

/*
  Not implemented:
    these are defined in base class, not needed here
      void select();
      void deselect();
*/

  explicit TreeItem(const Gdk_Pixmap &pixmap,
                    const Gdk_Bitmap &bitmap,
                    const string &label,
                    gfloat x=0.0,
                    gfloat y=0.5);

  explicit TreeItem(const string &label,gfloat x=0.0,gfloat y=0.5);
  TreeItem();

  Gtk::Tree* get_subtree() const;



  //- You cannot do set_subtree before you've added the treeitem to some
  //- container. (Setting subtree requires parent of the TreeItem to exists
  //- and it doesnt exists until you added it to some container.)


  void set_subtree(Gtk::Widget& subtree);



  void remove_subtree();

public:

  union
    {
      CppObjectType * tree_item_self;
      Gtk::EmitProxySignal0<void,CppObjectType,BaseObjectType,0,&gtk_tree_item_expand> expand;
      Gtk::EmitProxySignal0<void,CppObjectType,BaseObjectType,1,&gtk_tree_item_collapse> collapse;
    };

protected:
  // impl functions
    virtual void expand_impl();
    virtual void collapse_impl();

};

}


//+ PROPERTIES(Gtk_TreeItem)
//. name: subtree
//. type: Gtk_Widget*
//. get:
//. set:
//. desc:

//. name: pixmaps_box
//. type: Gtk_Widget*
//. get:
//. set:
//. desc:

//. name: pixmaps
//. type: GList*
//. get:
//. set:
//. desc: pixmap node for this items color depth

//. name: expanded
//. type: guint:1
//. get:
//. set:
//. desc:

#endif
