// Generated by gmmproc 2.66.8 -- DO NOT MODIFY!
#ifndef _GTKMM_IMAGEMENUITEM_H
#define _GTKMM_IMAGEMENUITEM_H

#include <gtkmmconfig.h>

#ifndef GTKMM_DISABLE_DEPRECATED


#include <glibmm/ustring.h>
#include <sigc++/sigc++.h>

/* Copyright (C) 1998-2002 The gtkmm Development Team
 *
 * 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.1 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, see <https://www.gnu.org/licenses/>.
 */

// To exclude this file from the documentation when build-deprecated-api=false.


#include <gtkmm/menuitem.h>
#include <gtkmm/stockid.h>
#include <gtkmm/accelgroup.h>


 // This whole file is deprecated.

#ifndef DOXYGEN_SHOULD_SKIP_THIS
using GtkImageMenuItem = struct _GtkImageMenuItem;
using GtkImageMenuItemClass = struct _GtkImageMenuItemClass;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */


#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Gtk
{ class GTKMM_API ImageMenuItem_Class; } // namespace Gtk
#endif //DOXYGEN_SHOULD_SKIP_THIS

namespace Gtk
{

/** A menu item with an icon.
 *
 * A GtkImageMenuItem is a menu item which has an icon next to the text label. Note that the
 * user can disable display of menu icons, so make sure to still fill in the text label.
 *
 * @deprecated Use Gtk::MenuItem instead.
 *
 * @ingroup Menus
 * @ingroup Widgets                                                                                                                                                S
 */

class GTKMM_API ImageMenuItem : public MenuItem
{
  public:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  typedef ImageMenuItem CppObjectType;
  typedef ImageMenuItem_Class CppClassType;
  typedef GtkImageMenuItem BaseObjectType;
  typedef GtkImageMenuItemClass BaseClassType;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

  ImageMenuItem(ImageMenuItem&& src) noexcept;
  ImageMenuItem& operator=(ImageMenuItem&& src) noexcept;

  // noncopyable
  ImageMenuItem(const ImageMenuItem&) = delete;
  ImageMenuItem& operator=(const ImageMenuItem&) = delete;

  ~ImageMenuItem() noexcept override;

#ifndef DOXYGEN_SHOULD_SKIP_THIS

private:
  friend class GTKMM_API ImageMenuItem_Class;
  static CppClassType imagemenuitem_class_;

protected:
  explicit ImageMenuItem(const Glib::ConstructParams& construct_params);
  explicit ImageMenuItem(GtkImageMenuItem* castitem);

#endif /* DOXYGEN_SHOULD_SKIP_THIS */

public:

  /** Get the GType for this class, for use with the underlying GObject type system.
   */
  static GType get_type()      G_GNUC_CONST;

#ifndef DOXYGEN_SHOULD_SKIP_THIS


  static GType get_base_type() G_GNUC_CONST;
#endif

  /// Provides access to the underlying C GObject.
  GtkImageMenuItem*       gobj()       { return reinterpret_cast<GtkImageMenuItem*>(gobject_); }

  /// Provides access to the underlying C GObject.
  const GtkImageMenuItem* gobj() const { return reinterpret_cast<GtkImageMenuItem*>(gobject_); }


public:
  //C++ methods used to invoke GTK+ virtual functions:

protected:
  //GTK+ Virtual Functions (override these to change behaviour):

  //Default Signal Handlers::


private:

public:

  ImageMenuItem();
  explicit ImageMenuItem(Widget& image,
                         const Glib::ustring& label, bool mnemonic = false);
  explicit ImageMenuItem(const Glib::ustring& label, bool mnemonic = false);
  explicit ImageMenuItem(const StockID& id);

  
  /** If <tt>true</tt>, the menu item will ignore the Gtk::Settings::property_gtk_menu_images()
   * setting and always show the image, if available.
   * 
   * Use this property if the menuitem would be useless or hard to use
   * without the image.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10
   * 
   * @param always_show <tt>true</tt> if the menuitem should always show the image.
   */
  void set_always_show_image(bool always_show =  true);
  
  /** Returns whether the menu item will ignore the Gtk::Settings::property_gtk_menu_images()
   * setting and always show the image, if available.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10
   * 
   * @return <tt>true</tt> if the menu item will always show the image.
   */
  bool get_always_show_image() const;

  
  /** Sets the image of @a image_menu_item to the given widget.
   * Note that it depends on the show-menu-images setting whether
   * the image will be displayed or not.
   * 
   * Deprecated: 3.10
   * 
   * @param image A widget to set as the image for the menu item.
   */
  void set_image(Widget& image);
  
  /** Gets the widget that is currently set as the image of @a image_menu_item.
   * See set_image().
   * 
   * Deprecated: 3.10
   * 
   * @return The widget set as image of @a image_menu_item.
   */
  Widget* get_image();
  
  /** Gets the widget that is currently set as the image of @a image_menu_item.
   * See set_image().
   * 
   * Deprecated: 3.10
   * 
   * @return The widget set as image of @a image_menu_item.
   */
  const Widget* get_image() const;

  
  /** If <tt>true</tt>, the label set in the menuitem is used as a
   * stock id to select the stock item for the item.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10
   * 
   * @param use_stock <tt>true</tt> if the menuitem should use a stock item.
   */
  void set_use_stock(bool use_stock =  true);
  
  /** Checks whether the label set in the menuitem is used as a
   * stock id to select the stock item for the item.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10
   * 
   * @return <tt>true</tt> if the label set in the menuitem is used as a
   * stock id to select the stock item for the item.
   */
  bool get_use_stock() const;
  
  /** Specifies an @a accel_group to add the menu items accelerator to
   * (this only applies to stock items so a stock item must already
   * be set, make sure to call set_use_stock()
   * and Gtk::MenuItem::set_label() with a valid stock item first).
   * 
   * If you want this menu item to have changeable accelerators then
   * you shouldnt need this (see new_from_stock()).
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10
   * 
   * @param accel_group The Gtk::AccelGroup.
   */
  void set_accel_group(const Glib::RefPtr<AccelGroup>& accel_group);

  /** Child widget to appear next to the menu text.
   * 
   * Deprecated: 3.10: Use a Gtk::MenuItem containing a Gtk::Box with
   * a Gtk::AccelLabel and a Gtk::Image instead
   *
   * @return A PropertyProxy that allows you to get or set the value of the property,
   * or receive notification when the value of the property changes.
   */
  Glib::PropertyProxy< Widget* > property_image() ;

/** Child widget to appear next to the menu text.
   * 
   * Deprecated: 3.10: Use a Gtk::MenuItem containing a Gtk::Box with
   * a Gtk::AccelLabel and a Gtk::Image instead
   *
   * @return A PropertyProxy_ReadOnly that allows you to get the value of the property,
   * or receive notification when the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly< Widget* > property_image() const;

  /** If <tt>true</tt>, the label set in the menuitem is used as a
   * stock id to select the stock item for the item.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use a named icon from the Gtk::IconTheme instead
   *
   * Default value: <tt>false</tt>
   *
   * @return A PropertyProxy that allows you to get or set the value of the property,
   * or receive notification when the value of the property changes.
   */
  Glib::PropertyProxy< bool > property_use_stock() ;

/** If <tt>true</tt>, the label set in the menuitem is used as a
   * stock id to select the stock item for the item.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use a named icon from the Gtk::IconTheme instead
   *
   * Default value: <tt>false</tt>
   *
   * @return A PropertyProxy_ReadOnly that allows you to get the value of the property,
   * or receive notification when the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly< bool > property_use_stock() const;

  /** The Accel Group to use for stock accelerator keys
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gtk::Widget::add_accelerator() instead
   *
   * @return A PropertyProxy_WriteOnly that allows you to set the value of the property,
   * or receive notification when the value of the property changes.
   */
  Glib::PropertyProxy_WriteOnly< Glib::RefPtr<AccelGroup> > property_accel_group() ;


  /** If <tt>true</tt>, the menu item will always show the image, if available.
   * 
   * Use this property only if the menuitem would be useless or hard to use
   * without the image.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use a Gtk::MenuItem containing a Gtk::Box with
   * a Gtk::AccelLabel and a Gtk::Image instead
   *
   * Default value: <tt>false</tt>
   *
   * @return A PropertyProxy that allows you to get or set the value of the property,
   * or receive notification when the value of the property changes.
   */
  Glib::PropertyProxy< bool > property_always_show_image() ;

/** If <tt>true</tt>, the menu item will always show the image, if available.
   * 
   * Use this property only if the menuitem would be useless or hard to use
   * without the image.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use a Gtk::MenuItem containing a Gtk::Box with
   * a Gtk::AccelLabel and a Gtk::Image instead
   *
   * Default value: <tt>false</tt>
   *
   * @return A PropertyProxy_ReadOnly that allows you to get the value of the property,
   * or receive notification when the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly< bool > property_always_show_image() const;


};

} //namespace Gtk


namespace Glib
{
  /** A Glib::wrap() method for this object.
   *
   * @param object The C instance.
   * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
   * @result A C++ instance that wraps this C instance.
   *
   * @relates Gtk::ImageMenuItem
   */
  GTKMM_API
  Gtk::ImageMenuItem* wrap(GtkImageMenuItem* object, bool take_copy = false);
} //namespace Glib


#endif // GTKMM_DISABLE_DEPRECATED


#endif /* _GTKMM_IMAGEMENUITEM_H */

