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

/* $Id: radiomenuitem.h,v 1.3 2005/06/09 18:14:22 taybin Exp $ */

/* radiomenuitem.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--/checkmenuitem.h>
#include <gtk/gtkradiomenuitem.h>

namespace Gtk {
class RadioMenuItem;
class RadioMenuItem_Class;
}
namespace Gtk { Gtk::RadioMenuItem *wrap (GtkRadioMenuItem *o); }
namespace Gtk
{

class RadioMenuItem;

namespace RadioMenuItem_Helpers {
  //: Group transfer agent for RadioMenuItem
  //- Radio items must be grouped together to function.
  //- To set up this group, construct a Group and then pass it
  //- to the constructor of all radio items.  You do not need
  //- to keep the group beyond the initial construction.
  //- It should not be called with new.
  class Group
    {
      friend class Gtk::RadioMenuItem;
      GSList *group_;
      void* operator new(size_t);
      void add(RadioMenuItem& item);
      public:
        Group(GSList* group) : group_(group) {}
	Group() : group_(0) {}
	operator GSList* () const { return group_; }
    };
}

//: A choice from multiple check menu items.
//- A radio menu item is a check menu item that belongs to a group. Only
//- one of the radio menu items from a group is selected at a time.
class RadioMenuItem : public CheckMenuItem {

public:
  typedef RadioMenuItem          CppObjectType;
  typedef RadioMenuItem_Class    CppClassType;
  typedef GtkRadioMenuItem           BaseObjectType;
  typedef GtkRadioMenuItemClass      BaseClassType;

private:
  friend class RadioMenuItem_Class;
  static CppClassType radio_menu_item_class;

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

protected:
  void   initialize_class();
  explicit RadioMenuItem(GtkRadioMenuItem *castitem);

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

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

  virtual ~RadioMenuItem();

private:

public:

  typedef RadioMenuItem_Helpers::Group Group;

  RadioMenuItem(Group &groupx);
  RadioMenuItem(Group &groupx, const string &label, gfloat xalign=0.0, gfloat yalign=0.5 );



  //: Returns the group to which the radio menu item belongs.
  //- Returns: Its group.

  Group group();

  //: Sets the group of a radio menu item, or changes it.
  //- group: The new group.

  void set_group(Group group);

protected:
  void constructor(Group group);

public:

protected:
  // impl functions

};

}


//+ PROPERTIES(gtkradiomenuitem)
//. name: check_menu_item
//. type: GtkCheckMenuItem
//. get:
//. set:
//. desc:

//. name: group
//. type: GSList*
//. get:
//. set:
//. desc:

#endif
