// Generated by gmmproc 2.51.6 -- DO NOT MODIFY!
#ifndef _GTKMM_SHORTCUTSSHORTCUT_H
#define _GTKMM_SHORTCUTSSHORTCUT_H


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

/* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
 */

#include <gtkmm/box.h>
#include <gtkmm/enums.h>
#include <giomm/icon.h>


#ifndef DOXYGEN_SHOULD_SKIP_THIS
using GtkShortcutsShortcut = struct _GtkShortcutsShortcut;
using GtkShortcutsShortcutClass = struct _GtkShortcutsShortcutClass;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */


#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Gtk
{ class ShortcutsShortcut_Class; } // namespace Gtk
#endif //DOXYGEN_SHOULD_SKIP_THIS

namespace Gtk
{
/** @addtogroup gtkmmEnums gtkmm Enums and Flags */

/** 
 *  @var ShortcutType SHORTCUT_ACCELERATOR
 * The shortcut is a keyboard accelerator. The Gtk::ShortcutsShortcut::property_accelerator()
 * property will be used.
 * 
 *  @var ShortcutType SHORTCUT_GESTURE_PINCH
 * The shortcut is a pinch gesture. GTK+ provides and icon and subtitle.
 * 
 *  @var ShortcutType SHORTCUT_GESTURE_STRETCH
 * The shortcut is a stretch gesture. GTK+ provides and icon and subtitle.
 * 
 *  @var ShortcutType SHORTCUT_GESTURE_ROTATE_CLOCKWISE
 * The shortcut is a clockwise rotation gesture. GTK+ provides and icon and subtitle.
 * 
 *  @var ShortcutType SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE
 * The shortcut is a counterclockwise rotation gesture. GTK+ provides and icon and subtitle.
 * 
 *  @var ShortcutType SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT
 * The shortcut is a two-finger swipe gesture. GTK+ provides and icon and subtitle.
 * 
 *  @var ShortcutType SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT
 * The shortcut is a two-finger swipe gesture. GTK+ provides and icon and subtitle.
 * 
 *  @var ShortcutType SHORTCUT_GESTURE
 * The shortcut is a gesture. The Gtk::ShortcutsShortcut::property_icon() property will be
 * used.
 * 
 *  @enum ShortcutType
 * 
 * GtkShortcutType specifies the kind of shortcut that is being described.
 * More values may be added to this enumeration over time.
 * 
 * @newin{3,20}
 *
 * @ingroup gtkmmEnums
 */
enum ShortcutType
{
  SHORTCUT_ACCELERATOR,
  SHORTCUT_GESTURE_PINCH,
  SHORTCUT_GESTURE_STRETCH,
  SHORTCUT_GESTURE_ROTATE_CLOCKWISE,
  SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE,
  SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT,
  SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT,
  SHORTCUT_GESTURE
};

} // namespace Gtk

#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class Value<Gtk::ShortcutType> : public Glib::Value_Enum<Gtk::ShortcutType>
{
public:
  static GType value_type() G_GNUC_CONST;
};

} // namespace Glib
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

namespace Gtk
{


/** Represents a keyboard shortcut in a ShortcutsWindow.
 *
 * A ShortcutsShortcut represents a single keyboard shortcut or gesture
 * with a short text. This widget is only meant to be used with ShortcutsWindow.
 *
 * @newin{3,20}
 *
 * @ingroup Widgets
 */

class ShortcutsShortcut : public Box
{
  public:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  typedef ShortcutsShortcut CppObjectType;
  typedef ShortcutsShortcut_Class CppClassType;
  typedef GtkShortcutsShortcut BaseObjectType;
  typedef GtkShortcutsShortcutClass BaseClassType;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

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

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

  ~ShortcutsShortcut() noexcept override;

#ifndef DOXYGEN_SHOULD_SKIP_THIS

private:
  friend class ShortcutsShortcut_Class;
  static CppClassType shortcutsshortcut_class_;

protected:
  explicit ShortcutsShortcut(const Glib::ConstructParams& construct_params);
  explicit ShortcutsShortcut(GtkShortcutsShortcut* 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 GtkObject.
  GtkShortcutsShortcut*       gobj()       { return reinterpret_cast<GtkShortcutsShortcut*>(gobject_); }

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


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

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

  //Default Signal Handlers::


private:


public:
  ShortcutsShortcut();

  /** The accelerator(s) represented by this object. This property is used
   * if Gtk::ShortcutsShortcut::property_shortcut_type() is set to Gtk::SHORTCUT_ACCELERATOR.
   * 
   * The syntax of this property is (an extension of) the syntax understood by
   * gtk_accelerator_parse(). Multiple accelerators can be specified by separating
   * them with a space, but keep in mind that the available width is limited.
   * It is also possible to specify ranges of shortcuts, using ... between the keys.
   * Sequences of keys can be specified using a + or & between the keys.
   * 
   * Examples:
   * - A single shortcut: <ctl><alt>delete
   * - Two alternative shortcuts: <shift>a Home
   * - A range of shortcuts: <alt>1...<alt>9
   * - Several keys pressed together: Control_L&Control_R
   * - A sequence of shortcuts or keys: <ctl>c+<ctl>x
   * 
   * Use + instead of & when the keys may (or have to be) pressed sequentially (e.g
   * use t+t for 'press the t key twice').
   * 
   * Note that <, > and & need to be escaped as <, > and & when used
   * in .ui files.
   *
   * @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_accelerator() ;

/** The accelerator(s) represented by this object. This property is used
   * if Gtk::ShortcutsShortcut::property_shortcut_type() is set to Gtk::SHORTCUT_ACCELERATOR.
   * 
   * The syntax of this property is (an extension of) the syntax understood by
   * gtk_accelerator_parse(). Multiple accelerators can be specified by separating
   * them with a space, but keep in mind that the available width is limited.
   * It is also possible to specify ranges of shortcuts, using ... between the keys.
   * Sequences of keys can be specified using a + or & between the keys.
   * 
   * Examples:
   * - A single shortcut: <ctl><alt>delete
   * - Two alternative shortcuts: <shift>a Home
   * - A range of shortcuts: <alt>1...<alt>9
   * - Several keys pressed together: Control_L&Control_R
   * - A sequence of shortcuts or keys: <ctl>c+<ctl>x
   * 
   * Use + instead of & when the keys may (or have to be) pressed sequentially (e.g
   * use t+t for 'press the t key twice').
   * 
   * Note that <, > and & need to be escaped as <, > and & when used
   * in .ui files.
   *
   * @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_accelerator() const;

  /** An icon to represent the shortcut or gesture. This property is used if
   * Gtk::ShortcutsShortcut::property_shortcut_type() is set to Gtk::SHORTCUT_GESTURE.
   * For the other predefined gesture types, GTK+ provides an icon on its own.
   *
   * @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_icon() ;

/** An icon to represent the shortcut or gesture. This property is used if
   * Gtk::ShortcutsShortcut::property_shortcut_type() is set to Gtk::SHORTCUT_GESTURE.
   * For the other predefined gesture types, GTK+ provides an icon on its own.
   *
   * @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_icon() const;

  /** <tt>true</tt> if an icon has been set.
   *
   * @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_icon_set() ;

/** <tt>true</tt> if an icon has been set.
   *
   * @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_icon_set() const;

  /** The textual description for the shortcut or gesture represented by
   * this object. This should be a short string that can fit in a single line.
   *
   * @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_title() ;

/** The textual description for the shortcut or gesture represented by
   * this object. This should be a short string that can fit in a single line.
   *
   * @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_title() const;

  /** The subtitle for the shortcut or gesture.
   * 
   * This is typically used for gestures and should be a short, one-line
   * text that describes the gesture itself. For the predefined gesture
   * types, GTK+ provides a subtitle on its own.
   *
   * @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_subtitle() ;

/** The subtitle for the shortcut or gesture.
   * 
   * This is typically used for gestures and should be a short, one-line
   * text that describes the gesture itself. For the predefined gesture
   * types, GTK+ provides a subtitle on its own.
   *
   * @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_subtitle() const;

  /** <tt>true</tt> if a subtitle has been set.
   *
   * @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_subtitle_set() ;

/** <tt>true</tt> if a subtitle has been set.
   *
   * @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_subtitle_set() const;

  /** The text direction for which this shortcut is active. If the shortcut
   * is used regardless of the text direction, set this property to
   * Gtk::TEXT_DIR_NONE.
   *
   * @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< TextDirection > property_direction() ;

/** The text direction for which this shortcut is active. If the shortcut
   * is used regardless of the text direction, set this property to
   * Gtk::TEXT_DIR_NONE.
   *
   * @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< TextDirection > property_direction() const;

  /** The type of shortcut that is represented.
   *
   * @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< ShortcutType > property_shortcut_type() ;

/** The type of shortcut that is represented.
   *
   * @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< ShortcutType > property_shortcut_type() const;

  /** A detailed action name. If this is set for a shortcut
   * of type Gtk::SHORTCUT_ACCELERATOR, then GTK+ will use
   * the accelerators that are associated with the action
   * via Gtk::Application::set_accels_for_action(), and setting
   * Gtk::ShortcutsShortcut::signal_accelerator() is not necessary.
   * 
   * @newin{3,22}
   *
   * @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_action_name() ;

/** A detailed action name. If this is set for a shortcut
   * of type Gtk::SHORTCUT_ACCELERATOR, then GTK+ will use
   * the accelerators that are associated with the action
   * via Gtk::Application::set_accels_for_action(), and setting
   * Gtk::ShortcutsShortcut::signal_accelerator() is not necessary.
   * 
   * @newin{3,22}
   *
   * @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_action_name() 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::ShortcutsShortcut
   */
  Gtk::ShortcutsShortcut* wrap(GtkShortcutsShortcut* object, bool take_copy = false);
} //namespace Glib


#endif /* _GTKMM_SHORTCUTSSHORTCUT_H */

