// Generated by gmmproc 2.66.6 -- DO NOT MODIFY!
#ifndef _GTKMM_ACTION_H
#define _GTKMM_ACTION_H

#include <gtkmmconfig.h>


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

/* Copyright (C) 2003 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, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */


#include <vector>

#include <gtkmm/widget.h>
#include <gtkmm/accelgroup.h>
#include <giomm/icon.h>


//TODO: Do this when we can stop using Gtk::Action in virtual functions in Gtk::Activatable, when we break ABI:
//_IS_DEPRECATED // This whole file is deprecated.

#ifndef DOXYGEN_SHOULD_SKIP_THIS
using GtkAction = struct _GtkAction;
using GtkActionClass = struct _GtkActionClass;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */


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

namespace Gtk
{

class GTKMM_API ActionGroup; //deprecated
class GTKMM_API Menu;
class GTKMM_API MenuItem;
class GTKMM_API ToolItem;
class GTKMM_API Image;
class GTKMM_API StockID; //deprecated

/** A deprecated action which can be triggered by a menu or toolbar item.
 *
 * Actions represent operations that the user can perform, along with
 * some information about how it should be presented in the user interface.
 * Each action provides methods to create icons, menu items and toolbar
 * items representing itself.
 *
 * As well as the callback that is called when the action is activated,
 * the following is also associated with the action:
 *
 *  - a name (not translated, for path lookup)
 *  - a label (translated, for display)
 *  - an accelerator
 *  - whether the label indicates a stock id
 *  - a tooltip (optional, translated)
 *  - a toolbar label (optional, shorter than label)
 *
 * The action will also have some state information:
 *
 *  - visible (shown/hidden)
 *  - sensitive (enabled/disabled)
 *
 * Apart from regular actions, there are toggle actions,
 * which can be toggled between two states and radio actions,
 * of which only one in a group can be in the "active" state.
 * Other actions can be implemented as Gtk::Action subclasses.
 *
 * Each action can have one or more proxy menu item, toolbar button or other proxy widgets.
 * Proxies mirror the state of the action (text label, tooltip, icon, visible, sensitive, etc),
 * and should change when the action's state changes. When the proxy is activated,
 * it should activate its action.
 *
 * @deprecated Use Gio::Action and Gio::SimpleAction instead, and associate actions
 * with Gtk::Actionable widgets. Use Gio::MenuModel for creating menus with
 * Gtk::Menu(const Glib::RefPtr<Gio::MenuModel>& model).<br>
 * Some gtkmm widgets don't derive from Gtk::Actionable, although the corresponding
 * gtk+ widgets implement the GtkActionable interface. This discrepancy can't be
 * fixed until we can break ABI. You can sometimes work around this problem
 * by using a widget's %gobj() method and calling a gtk_actionable_*() method
 * directly. Several examples in the
 * <a href="https://developer.gnome.org/gtkmm-tutorial/stable/">Programming with gtkmm 3</a>
 * book use Gio::SimpleAction, such as the menus and toolbars examples.
 */

class GTKMM_API Action
  : public Glib::Object,
    public Buildable
{
  
#ifndef DOXYGEN_SHOULD_SKIP_THIS

public:
  using CppObjectType = Action;
  using CppClassType = Action_Class;
  using BaseObjectType = GtkAction;
  using BaseClassType = GtkActionClass;

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

private:  friend class Action_Class;
  static CppClassType action_class_;

protected:
  explicit Action(const Glib::ConstructParams& construct_params);
  explicit Action(GtkAction* castitem);

#endif /* DOXYGEN_SHOULD_SKIP_THIS */

public:

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

  ~Action() noexcept override;

  /** 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.
  GtkAction*       gobj()       { return reinterpret_cast<GtkAction*>(gobject_); }

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

  ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
  GtkAction* gobj_copy();

private:

  
protected:
  /** Creates an empty action.
   */
  Action();

#ifndef GTKMM_DISABLE_DEPRECATED

  /** Creates an action with a stock ID.
   * The stock ID is used to set a default icon, text and accelerator for the
   * action.
   *
   * @param name     A unique name for the action.
   * @param stock_id The stock icon to display in widgets representing the
   *                 action.
   * @param label    The label displayed in menu items and on buttons.
   * @param tooltip  A tooltip for the action.
   * @deprecated There is no corresponding replacement when using Gio::Action.
   */
  explicit Action(const Glib::ustring& name, const StockID& stock_id = StockID(), const Glib::ustring& label = Glib::ustring(), const Glib::ustring& tooltip = Glib::ustring());

  /** Creates an action with an icon name.
   * The action's icon will reflect the specified icon name in the user's
   * icon theme.
   *
   * @param name      A unique name for the action.
   * @param icon_name An IconTheme icon name used for widgets representing the
   *                  action.
   * @param label     The label displayed in menu items and on buttons.
   * @param tooltip   A tooltip for the action.
   * @deprecated See set_icon_name(), set_label() and set_tooltip() for
   *             replacements when using Gio::Action.
   */
  explicit Action(const Glib::ustring& name, const Glib::ustring& icon_name, const Glib::ustring& label = Glib::ustring(), const Glib::ustring& tooltip = Glib::ustring());
#endif // GTKMM_DISABLE_DEPRECATED


public:
  //Note that gtk_action_new() does not allow name to be NULL, which suggests that we should not have a default constructor,
  //but it's OK to set the name later:
  
  static Glib::RefPtr<Action> create();


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Creates an action.
   *
   * @param name    A unique name for the action.
   * @param label   The label displayed in menu items and on buttons.
   * @param tooltip A tooltip for the action.
   *
   * @return A new Action.
   * @deprecated See set_label() and set_tooltip() for replacements when using Gio::Action.
   */
  static Glib::RefPtr<Action> create(const Glib::ustring& name, const Glib::ustring& label = Glib::ustring(), const Glib::ustring& tooltip = Glib::ustring());

  /** Creates an action with a stock ID.
   * The stock ID is used to set a default icon, text and accelerator for the
   * action.
   *
   * @param name     A unique name for the action.
   * @param stock_id The stock icon to display in widgets representing the
   *                 action.
   * @param label    The label displayed in menu items and on buttons.
   * @param tooltip  A tooltip for the action.
   *
   * @return A new Action.
   * @deprecated There is no corresponding replacement when using Gio::Action.
   */
  static Glib::RefPtr<Action> create(const Glib::ustring& name, const Gtk::StockID& stock_id, const Glib::ustring& label = Glib::ustring(), const Glib::ustring& tooltip = Glib::ustring());

  /** Create an action with an icon name.
   * The action's icon will reflect the specified icon name in the user's
   * icon theme.
   *
   * @param name      A unique name for the action.
   * @param icon_name An IconTheme icon name used for widgets representing the
   *                  action.
   * @param label     The label displayed in menu items and on buttons.
   * @param tooltip   A tooltip for the action.
   *
   * @return A new Action.
   * @deprecated See set_icon_name(), set_label() and set_tooltip() for
   *             replacements when using Gio::Action.
   */
  static Glib::RefPtr<Action> create_with_icon_name(const Glib::ustring& name, const Glib::ustring& icon_name, const Glib::ustring& label, const Glib::ustring& tooltip);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns the name of the action.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Glib::action_get_name() on a Gio::Action instead
   * 
   * @deprecated Use Gio::Action::get_name() on a Gio::Action instead.
   * 
   * @return The name of the action. The string belongs to GTK+ and should not
   * be freed.
   */
  Glib::ustring get_name() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns whether the action is effectively sensitive.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Glib::action_get_enabled() on a Gio::Action
   * instead
   * 
   * @deprecated Use Gio::Action::get_enabled() on a Gio::Action instead.
   * 
   * @return <tt>true</tt> if the action and its associated action group 
   * are both sensitive.
   */
  bool is_sensitive() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns whether the action itself is sensitive. Note that this doesn’t 
   * necessarily mean effective sensitivity. See is_sensitive() 
   * for that.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Glib::action_get_enabled() on a Gio::Action
   * instead
   * 
   * @deprecated Use Gio::Action::get_enabled() on a Gio::Action instead.
   * 
   * @return <tt>true</tt> if the action itself is sensitive.
   */
  bool get_sensitive() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the :sensitive property of the action to @a sensitive. Note that 
   * this doesn’t necessarily mean effective sensitivity. See 
   * is_sensitive() 
   * for that.
   * 
   * @newin{2,6}
   * 
   * Deprecated: 3.10: Use Glib::simple_action_set_enabled() on a SimpleAction
   * instead
   * 
   * @deprecated Use Gio::SimpleAction::set_enabled() on a Gio::SimpleAction instead.
   * 
   * @param sensitive <tt>true</tt> to make the action sensitive.
   */
  void set_sensitive(bool sensitive =  true);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns whether the action is effectively visible.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor the state of
   * Gtk::Actionable widgets directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor the state of Gtk::Actionable widgets directly.
   * 
   * @return <tt>true</tt> if the action and its associated action group 
   * are both visible.
   */
  bool is_visible() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns whether the action itself is visible. Note that this doesn’t 
   * necessarily mean effective visibility. See is_sensitive() 
   * for that.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor the state of
   * Gtk::Actionable widgets directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor the state of Gtk::Actionable widgets directly.
   * 
   * @return <tt>true</tt> if the action itself is visible.
   */
  bool get_visible() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the :visible property of the action to @a visible. Note that 
   * this doesn’t necessarily mean effective visibility. See 
   * is_visible() 
   * for that.
   * 
   * @newin{2,6}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor the state of
   * Gtk::Actionable widgets directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor the state of Gtk::Actionable widgets directly.
   * 
   * @param visible <tt>true</tt> to make the action visible.
   */
  void set_visible(bool visible =  true);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Emits the “activate” signal on the specified action, if it isn't
   * insensitive. This gets called by the proxy widgets when they get 
   * activated.
   * 
   * It can also be used to manually activate an action.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Glib::action_group_activate_action() on a Gio::Action instead
   * 
   * @deprecated Use Gio::ActionGroup::activate_action() on a Gio::Action instead.
   */
  void activate();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** This function is intended for use by action implementations to
   * create icons displayed in the proxy widgets.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Glib::menu_item_set_icon() to set an icon on a MenuItem,
   * or Gtk::Container::add() to add a Gtk::Image to a Gtk::Button
   * 
   * @deprecated Use Gio::MenuItem::set_icon() to set an icon on a Gio::MenuItem, or Gtk::Container::add() to add a Gtk::Image to a Gtk::Button.
   * 
   * @param icon_size The size of the icon (Gtk::IconSize) that should
   * be created.
   * @return A widget that displays the icon for this action.
   */
  Image* create_icon(IconSize icon_size);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Creates a menu item widget that proxies for the given action.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Glib::menu_item_new() and associate it with a Gio::Action
   * instead.
   * 
   * @deprecated Use a Gio::MenuItem and associate it with a Gio::Action instead.
   * 
   * @return A menu item connected to the action.
   */
  MenuItem* create_menu_item();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Creates a toolbar item widget that proxies for the given action.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use a Gtk::ToolItem and associate it with a Gio::Action using
   * Gtk::Actionable::set_action_name() instead
   * 
   * @deprecated Use a Gtk::ToolItem and associate it with a Gio::Action using Gtk::Actionable::set_action_name() instead. (Impossible until GtkToolItem implements the GActionable interface.)
   * 
   * @return A toolbar item connected to the action.
   */
  ToolItem* create_tool_item();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** If @a action provides a Gtk::Menu widget as a submenu for the menu
   * item or the toolbar item it creates, this function returns an
   * instance of that menu.
   * 
   * @newin{2,12}
   * 
   * Deprecated: 3.10: Use Gio::Action and Gio::MenuModel instead, and create a
   * Gtk::Menu with Gtk::Menu::new_from_model()
   * 
   * @deprecated Use Gio::Action and Gio::MenuModel instead, and create a Gtk::Menu with Gtk::Menu(const Glib::RefPtr<Gio::MenuModel>& model).
   * 
   * @return The menu item provided by the
   * action, or <tt>nullptr</tt>.
   */
  Menu* create_menu();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns the proxy widgets for an action.
   * See also Gtk::Activatable::get_related_action().
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   * 
   * @return A SList of proxy widgets. The list is owned by GTK+
   * and must not be modified.
   */
  std::vector<Widget*> get_proxies();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns the proxy widgets for an action.
   * See also Gtk::Activatable::get_related_action().
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   * 
   * @return A SList of proxy widgets. The list is owned by GTK+
   * and must not be modified.
   */
  std::vector<const Widget*> get_proxies() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Installs the accelerator for @a action if @a action has an
   * accel path and group. See set_accel_path() and 
   * set_accel_group()
   * 
   * Since multiple proxies may independently trigger the installation
   * of the accelerator, the @a action counts the number of times this
   * function has been called and doesn’t remove the accelerator until
   * disconnect_accelerator() has been called as many times.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Gio::Action and the accelerator group on an associated
   * Gtk::Menu instead
   * 
   * @deprecated Use Gio::Action and the accelerator group on an associated Gtk::Menu instead.
   */
  void connect_accelerator();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Undoes the effect of one call to connect_accelerator().
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Gio::Action and the accelerator group on an associated
   * Gtk::Menu instead
   * 
   * @deprecated Use Gio::Action and the accelerator group on an associated Gtk::Menu instead.
   */
  void disconnect_accelerator();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns the accel path for this action.  
   * 
   * @newin{2,6}
   * 
   * Deprecated: 3.10: Use Gio::Action and the accelerator path on an associated
   * Gtk::Menu instead
   * 
   * @deprecated Use Gio::Action and the accelerator path on an associated Gtk::Menu instead.
   * 
   * @return The accel path for this action, or <tt>nullptr</tt>
   * if none is set. The returned string is owned by GTK+ 
   * and must not be freed or modified.
   */
  Glib::ustring get_accel_path() const;
#endif // GTKMM_DISABLE_DEPRECATED


  /// For instance, void on_activate();
  typedef sigc::slot<void> SlotActivate;

  
#ifndef GTKMM_DISABLE_DEPRECATED

  /**
   * @par Slot Prototype:
   * <tt>void on_my_%activate()</tt>
   *
   * Flags: Run First, No Recurse
   *
   * The "activate" signal is emitted when the action is activated.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use SimpleAction::signal_activate() instead
   * 
   * @deprecated Use Gio::SimpleAction::signal_activate() instead.
   */

  Glib::SignalProxy< void > signal_activate();
#endif // GTKMM_DISABLE_DEPRECATED


  //Used by AccelGroup:
  
#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the accel path for this action.  All proxy widgets associated
   * with the action will have this accel path, so that their
   * accelerators are consistent.
   * 
   * Note that @a accel_path string will be stored in a Quark. Therefore, if you
   * pass a static string, you can save some memory by interning it first with 
   * Glib::intern_static_string().
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Gio::Action and the accelerator path on an associated
   * Gtk::Menu instead
   * 
   * @deprecated Use Gio::Action and the accelerator path on an associated Gtk::Menu instead.
   * 
   * @param accel_path The accelerator path.
   */
  void set_accel_path(const Glib::ustring& accel_path);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the Gtk::AccelGroup in which the accelerator for this action
   * will be installed.
   * 
   * @newin{2,4}
   * 
   * Deprecated: 3.10: Use Gio::Action and the accelerator group on an associated
   * Gtk::Menu instead
   * 
   * @deprecated Use Gio::Action and the accelerator group on an associated Gtk::Menu instead.
   * 
   * @param accel_group A Gtk::AccelGroup or <tt>nullptr</tt>.
   */
  void set_accel_group(const Glib::RefPtr<AccelGroup>& accel_group);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the label of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and set a label on a menu item with
   * Glib::menu_item_set_label(). For Gtk::Actionable widgets, use the widget-specific
   * API to set a label
   * 
   * @deprecated Use Gio::Action instead, and set a label on a menu item with Gio::MenuItem::set_label(). For Gtk::Actionable widgets, use the widget-specific API to set a label.
   * 
   * @param label The label text to set.
   */
  void set_label(const Glib::ustring& label);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Gets the label text of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and get a label from a menu item
   * with Glib::menu_item_get_attribute_value(). For Gtk::Actionable widgets, use the
   * widget-specific API to get a label
   * 
   * @deprecated Use Gio::Action instead, and get a label from a menu item with Gio::MenuItem::get_attribute_value(). For Gtk::Actionable widgets, use the widget-specific API to get a label.
   * 
   * @return The label text.
   */
  Glib::ustring get_label() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets a shorter label text on @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, which has no equivalent of short
   * labels
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   * 
   * @param short_label The label text to set.
   */
  void set_short_label(const Glib::ustring& short_label);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Gets the short label text of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, which has no equivalent of short
   * labels
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   * 
   * @return The short label text.
   */
  Glib::ustring get_short_label() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the tooltip text on @a action
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and set tooltips on associated
   * Gtk::Actionable widgets with Gtk::Widget::set_tooltip_text()
   * 
   * @deprecated Use Gio::Action instead, and set tooltips on associated Gtk::Actionable widgets with Gtk::Widget::set_tooltip_text().
   * 
   * @param tooltip The tooltip text.
   */
  void set_tooltip(const Glib::ustring& tooltip);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Gets the tooltip text of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and get tooltips from associated
   * Gtk::Actionable widgets with Gtk::Widget::get_tooltip_text()
   * 
   * @deprecated Use Gio::Action instead, and get tooltips from associated Gtk::Actionable widgets with Gtk::Widget::get_tooltip_text().
   * 
   * @return The tooltip text.
   */
  Glib::ustring get_tooltip() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the stock id on @a action
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, which has no equivalent of stock
   * items
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   * 
   * @param stock_id The stock id.
   */
  void set_stock_id(const StockID& stock_id);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Gets the stock id of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, which has no equivalent of stock
   * items
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   * 
   * @return The stock id.
   */
  StockID get_stock_id() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the icon of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and Glib::menu_item_set_icon() to set an
   * icon on a MenuItem associated with a Gio::Action, or Gtk::Container::add() to
   * add a Gtk::Image to a Gtk::Button
   * 
   * @deprecated Use Gio::Action instead, and Gio::MenuItem::set_icon() to set an icon on a Gio::MenuItem associated with a Gio::Action, or Gtk::Container::add() to add a Gtk::Image to a Gtk::Button.
   * 
   * @param icon The Gio::Icon to set.
   */
  void set_gicon(const Glib::RefPtr<Gio::Icon>& icon);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Gets the gicon of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and
   * Glib::menu_item_get_attribute_value() to get an icon from a MenuItem
   * associated with a Gio::Action
   * 
   * @deprecated Use Gio::Action instead, and Gio::MenuItem::get_attribute_value() to get an icon from a Gio::MenuItem associated with a Gio::Action.
   * 
   * @return The action’s Gio::Icon if one is set.
   */
  Glib::RefPtr<Gio::Icon> get_gicon();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Gets the gicon of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and
   * Glib::menu_item_get_attribute_value() to get an icon from a MenuItem
   * associated with a Gio::Action
   * 
   * @deprecated Use Gio::Action instead, and Gio::MenuItem::get_attribute_value() to get an icon from a Gio::MenuItem associated with a Gio::Action.
   * 
   * @return The action’s Gio::Icon if one is set.
   */
  Glib::RefPtr<const Gio::Icon> get_gicon() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets the icon name on @a action
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and Glib::menu_item_set_icon() to set an
   * icon on a MenuItem associated with a Gio::Action, or Gtk::Container::add() to
   * add a Gtk::Image to a Gtk::Button
   * 
   * @deprecated Use Gio::Action instead, and Gio::MenuItem::set_icon() to set an icon on a Gio::MenuItem associated with a Gio::Action, or Gtk::Container::add() to add a Gtk::Image to a Gtk::Button.
   * 
   * @param icon_name The icon name to set.
   */
  void set_icon_name(const Glib::ustring& icon_name);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Gets the icon name of @a action.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and
   * Glib::menu_item_get_attribute_value() to get an icon from a MenuItem
   * associated with a Gio::Action
   * 
   * @deprecated Use Gio::Action instead, and Gio::MenuItem::get_attribute_value() to get an icon from a Gio::MenuItem associated with a Gio::Action.
   * 
   * @return The icon name.
   */
  Glib::ustring get_icon_name() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets whether @a action is visible when horizontal
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor the
   * visibility of associated widgets and menu items directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor the visibility of associated widgets and menu items directly.
   * 
   * @param visible_horizontal Whether the action is visible horizontally.
   */
  void set_visible_horizontal(bool visible_horizontal =  true);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Checks whether @a action is visible when horizontal
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor the
   * visibility of associated widgets and menu items directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor the visibility of associated widgets and menu items directly.
   * 
   * @return Whether @a action is visible when horizontal.
   */
  bool get_visible_horizontal() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets whether @a action is visible when vertical 
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor the
   * visibility of associated widgets and menu items directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor the visibility of associated widgets and menu items directly.
   * 
   * @param visible_vertical Whether the action is visible vertically.
   */
  void set_visible_vertical(bool visible_vertical =  true);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Checks whether @a action is visible when horizontal
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor the
   * visibility of associated widgets and menu items directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor the visibility of associated widgets and menu items directly.
   * 
   * @return Whether @a action is visible when horizontal.
   */
  bool get_visible_vertical() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets whether the action is important, this attribute is used
   * primarily by toolbar items to decide whether to show a label
   * or not.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor whether
   * labels are shown directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor whether labels are shown directly.
   * 
   * @param is_important <tt>true</tt> to make the action important.
   */
  void set_is_important(bool is_important =  true);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Checks whether @a action is important or not
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Gio::Action instead, and control and monitor whether
   * labels are shown directly
   * 
   * @deprecated Use Gio::Action instead, and control and monitor whether labels are shown directly.
   * 
   * @return Whether @a action is important.
   */
  bool get_is_important() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Sets whether @a action's menu item proxies will ignore the
   * Gtk::Settings::property_gtk_menu_images() setting and always show their image, if available.
   * 
   * Use this if the menu item would be useless or hard to use
   * without their image.
   * 
   * @newin{2,20}
   * 
   * Deprecated: 3.10: Use Glib::menu_item_set_icon() on a MenuItem instead, if the
   * item should have an image
   * 
   * @deprecated Use Gio::MenuItem::set_icon() on a Gio::MenuItem instead, if the item should have an image.
   * 
   * @param always_show <tt>true</tt> if menuitem proxies should always show their image.
   */
  void set_always_show_image(bool always_show =  true);
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Returns whether @a action's menu item proxies will always
   * show their image, if available.
   * 
   * @newin{2,20}
   * 
   * Deprecated: 3.10: Use Glib::menu_item_get_attribute_value() on a MenuItem
   * instead
   * 
   * @deprecated Use Gio::MenuItem::get_attribute_value() on a Gio::MenuItem instead.
   * 
   * @return <tt>true</tt> if the menu item proxies will always show their image.
   */
  bool get_always_show_image() const;
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Disable activation signals from the action 
   * 
   * This is needed when updating the state of your proxy
   * Gtk::Activatable widget could result in calling activate(),
   * this is a convenience function to avoid recursing in those
   * cases (updating toggle state for instance).
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Glib::simple_action_set_enabled() to disable the
   * SimpleAction instead
   * 
   * @deprecated Use Gio::SimpleAction::set_enabled() to disable the Gio::SimpleAction instead.
   */
  void block_activate();
#endif // GTKMM_DISABLE_DEPRECATED


#ifndef GTKMM_DISABLE_DEPRECATED

  /** Reenable activation signals from the action 
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use Glib::simple_action_set_enabled() to enable the
   * SimpleAction instead
   * 
   * @deprecated Use Gio::SimpleAction::set_enabled() to enable the Gio::SimpleAction instead.
   */
  void unblock_activate();
#endif // GTKMM_DISABLE_DEPRECATED


  //gtk_action_get_accel_closure() is too C-specific:
  

#ifndef GTKMM_DISABLE_DEPRECATED

/** A unique name for the action.
   * 
   * Deprecated: 3.10: Use Gio::Action::property_name() instead
   * 
   * @deprecated Use Gio::Action::property_name() instead.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_name() const;


#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** The label used for menu items and buttons that activate
   * this action. If the label is <tt>nullptr</tt>, GTK+ uses the stock 
   * label specified via the stock-id property.
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * Deprecated: 3.10: Use the "label" attribute on MenuItem instead
   * 
   * @deprecated Use the 'label' attribute on Gio::MenuItem instead.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_label() ;

/** The label used for menu items and buttons that activate
   * this action. If the label is <tt>nullptr</tt>, GTK+ uses the stock 
   * label specified via the stock-id property.
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * Deprecated: 3.10: Use the "label" attribute on MenuItem instead
   * 
   * @deprecated Use the 'label' attribute on Gio::MenuItem instead.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_label() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** A shorter label that may be used on toolbar buttons.
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_short_label() ;

/** A shorter label that may be used on toolbar buttons.
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_short_label() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** A tooltip for this action.
   * 
   * Deprecated: 3.10: Use Gtk::Widget::set_tooltip_text() instead
   * 
   * @deprecated Use Gtk::Widget::set_tooltip_text() and Gtk::Widget::get_tooltip_text() instead.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_tooltip() ;

/** A tooltip for this action.
   * 
   * Deprecated: 3.10: Use Gtk::Widget::set_tooltip_text() instead
   * 
   * @deprecated Use Gtk::Widget::set_tooltip_text() and Gtk::Widget::get_tooltip_text() instead.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_tooltip() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** The stock icon displayed in widgets representing this action.
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: ""
   *
   * @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< StockID > property_stock_id() ;

/** The stock icon displayed in widgets representing this action.
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: ""
   *
   * @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< StockID > property_stock_id() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** The Gio::Icon displayed in the Gtk::Action.
   * 
   * Note that the stock icon is preferred, if the Gtk::Action::property_stock_id() 
   * property holds the id of an existing stock icon.
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use the "icon" attribute on a MenuItem instead
   * 
   * @deprecated Use the 'icon' attribute on Gio::MenuItem 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< Glib::RefPtr<Gio::Icon> > property_gicon() ;

/** The Gio::Icon displayed in the Gtk::Action.
   * 
   * Note that the stock icon is preferred, if the Gtk::Action::property_stock_id() 
   * property holds the id of an existing stock icon.
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * @newin{2,16}
   * 
   * Deprecated: 3.10: Use the "icon" attribute on a MenuItem instead
   * 
   * @deprecated Use the 'icon' attribute on Gio::MenuItem 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< Glib::RefPtr<Gio::Icon> > property_gicon() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** The name of the icon from the icon theme. 
   * 
   * Note that the stock icon is preferred, if the Gtk::Action::property_stock_id() 
   * property holds the id of an existing stock icon, and the Gio::Icon is
   * preferred if the Gtk::Action::property_gicon() property is set. 
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * @newin{2,10}
   * 
   * Deprecated: 3.10: Use the "icon" attribute on a MenuItem instead
   * 
   * @deprecated Use the 'icon' attribute on Gio::MenuItem instead.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_icon_name() ;

/** The name of the icon from the icon theme. 
   * 
   * Note that the stock icon is preferred, if the Gtk::Action::property_stock_id() 
   * property holds the id of an existing stock icon, and the Gio::Icon is
   * preferred if the Gtk::Action::property_gicon() property is set. 
   * 
   * This is an appearance property and thus only applies if 
   * Gtk::Activatable::property_use_action_appearance() is <tt>true</tt>.
   * 
   * @newin{2,10}
   * 
   * Deprecated: 3.10: Use the "icon" attribute on a MenuItem instead
   * 
   * @deprecated Use the 'icon' attribute on Gio::MenuItem instead.
   *
   * Default value: ""
   *
   * @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< Glib::ustring > property_icon_name() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** Whether the toolbar item is visible when the toolbar is in a horizontal orientation.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_visible_horizontal() ;

/** Whether the toolbar item is visible when the toolbar is in a horizontal orientation.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_visible_horizontal() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** Whether the toolbar item is visible when the toolbar is in a vertical orientation.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_visible_vertical() ;

/** Whether the toolbar item is visible when the toolbar is in a vertical orientation.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_visible_vertical() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** When <tt>true</tt>, toolitem proxies for this action are represented in the 
   * toolbar overflow menu.
   * 
   * @newin{2,6}
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_visible_overflown() ;

/** When <tt>true</tt>, toolitem proxies for this action are represented in the 
   * toolbar overflow menu.
   * 
   * @newin{2,6}
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_visible_overflown() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** Whether the action is considered important. When <tt>true</tt>, toolitem
   * proxies for this action show text in GTK_TOOLBAR_BOTH_HORIZ mode.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * 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_is_important() ;

/** Whether the action is considered important. When <tt>true</tt>, toolitem
   * proxies for this action show text in GTK_TOOLBAR_BOTH_HORIZ mode.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * 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_is_important() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** When <tt>true</tt>, empty menu proxies for this action are hidden.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_hide_if_empty() ;

/** When <tt>true</tt>, empty menu proxies for this action are hidden.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_hide_if_empty() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** Whether the action is enabled.
   * 
   * Deprecated: 3.10: Use Gio::Action::property_enabled() and SimpleAction::property_enabled()
   * instead
   * 
   * @deprecated Use Gio::Action::property_enabled() and Gio::SimpleAction::property_enabled() instead.
   *
   * Default value: <tt>true</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_sensitive() ;

/** Whether the action is enabled.
   * 
   * Deprecated: 3.10: Use Gio::Action::property_enabled() and SimpleAction::property_enabled()
   * instead
   * 
   * @deprecated Use Gio::Action::property_enabled() and Gio::SimpleAction::property_enabled() instead.
   *
   * Default value: <tt>true</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_sensitive() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** Whether the action is visible.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_visible() ;

/** Whether the action is visible.
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * Default value: <tt>true</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_visible() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** The GtkActionGroup this GtkAction is associated with, or <tt>nullptr</tt>
   * (for internal use).
   * 
   * Deprecated: 3.10: Lookup the Gio::Action using Glib::action_map_lookup_action()
   * instead
   * 
   * @deprecated Lookup the Gio::Action using Gio::ActionMap::lookup_action() 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< Glib::RefPtr<ActionGroup> > property_action_group() ;

/** The GtkActionGroup this GtkAction is associated with, or <tt>nullptr</tt>
   * (for internal use).
   * 
   * Deprecated: 3.10: Lookup the Gio::Action using Glib::action_map_lookup_action()
   * instead
   * 
   * @deprecated Lookup the Gio::Action using Gio::ActionMap::lookup_action() 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< Glib::RefPtr<ActionGroup> > property_action_group() const;

#endif // GTKMM_DISABLE_DEPRECATED

  
#ifndef GTKMM_DISABLE_DEPRECATED

/** If <tt>true</tt>, the action's menu item proxies will ignore the Gtk::Settings::property_gtk_menu_images() 
   * setting and always show their image, if available.
   * 
   * Use this property if the menu item would be useless or hard to use
   * without their image. 
   * 
   * @newin{2,20}
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * 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 action's menu item proxies will ignore the Gtk::Settings::property_gtk_menu_images() 
   * setting and always show their image, if available.
   * 
   * Use this property if the menu item would be useless or hard to use
   * without their image. 
   * 
   * @newin{2,20}
   * 
   * Deprecated: 3.10: There is no corresponding replacement when using
   * Gio::Action
   * 
   * @deprecated There is no corresponding replacement when using Gio::Action.
   *
   * 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;

#endif // GTKMM_DISABLE_DEPRECATED


protected:
  //Widget-creation routines:
    virtual Widget* create_menu_item_vfunc();

    virtual Widget* create_tool_item_vfunc();

    virtual void connect_proxy_vfunc(Widget* proxy);

    virtual void disconnect_proxy_vfunc(Widget* proxy);


public:

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

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

  //Default Signal Handlers::
  /// This is a default handler for the signal signal_activate().
  virtual void on_activate();


};

} // 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::Action
   */
  GTKMM_API
  Glib::RefPtr<Gtk::Action> wrap(GtkAction* object, bool take_copy = false);
}


#endif /* _GTKMM_ACTION_H */

