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

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

/* listitem.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/gtklistitem.h>

namespace Gtk {
class ListItem;
class ListItem_Class;
}
namespace Gtk { Gtk::ListItem *wrap (GtkListItem *o); }
namespace Gtk
{
//: An item in a {\class Gtk::List}.
//- The {\class Gtk::ListItem} widget is used for each item in a {\class Gtk::List}.
class ListItem : public Item {

public:
  typedef ListItem          CppObjectType;
  typedef ListItem_Class    CppClassType;
  typedef GtkListItem           BaseObjectType;
  typedef GtkListItemClass      BaseClassType;

private:
  friend class ListItem_Class;
  static CppClassType list_item_class;

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

protected:
  void   initialize_class();
  explicit ListItem(GtkListItem *castitem);

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

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

  virtual ~ListItem();

private:

public:

  ListItem();
  //: Creates a new {\class Gtk::ListItem} with a child label containing the given string.
  //- label: The string to use for the child label.
  explicit ListItem(const string &label,gfloat x=0.0,gfloat y=0.5);



  // gtk_list_item_(de)select are just a wrapper for gtk_item_(de)select
  // and defined in Gtk_Item, so they do not be redefined here
  // void select();
  // void deselect();

public:

  union
    {
      CppObjectType * list_item_self;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,0> toggle_focus_row;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,1> select_all;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,2> unselect_all;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,3> undo_selection;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,4> start_selection;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,5> end_selection;
      Gtk::ProxySignal3<void,GtkScrollType,gfloat,gboolean,CppObjectType,BaseObjectType,6> extend_selection;
      Gtk::ProxySignal2<void,GtkScrollType,gfloat,CppObjectType,BaseObjectType,7> scroll_horizontal;
      Gtk::ProxySignal2<void,GtkScrollType,gfloat,CppObjectType,BaseObjectType,8> scroll_vertical;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,9> toggle_add_mode;
    };

protected:
  // impl functions
    virtual void toggle_focus_row_impl();
    virtual void select_all_impl();
    virtual void unselect_all_impl();
    virtual void undo_selection_impl();
    virtual void start_selection_impl();
    virtual void end_selection_impl();
    virtual void extend_selection_impl(GtkScrollType scroll_type,gfloat position,gboolean auto_start_selection);
    virtual void scroll_horizontal_impl(GtkScrollType scroll_type,gfloat position);
    virtual void scroll_vertical_impl(GtkScrollType scroll_type,gfloat position);
    virtual void toggle_add_mode_impl();

};

}


#endif
