// Generated by gmmproc 2.51.2 -- DO NOT MODIFY!
#ifndef _GTKMM_SETTINGS_H
#define _GTKMM_SETTINGS_H


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


#include <gtkmm/toolbar.h>


#ifndef DOXYGEN_SHOULD_SKIP_THIS
using GtkSettings = struct _GtkSettings;
using GtkSettingsClass = struct _GtkSettingsClass;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */


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

namespace Gtk
{

/** Sharing settings between applications.
 *
 */

class Settings : public Glib::Object
{
   
#ifndef DOXYGEN_SHOULD_SKIP_THIS

public:
  using CppObjectType = Settings;
  using CppClassType = Settings_Class;
  using BaseObjectType = GtkSettings;
  using BaseClassType = GtkSettingsClass;

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

private:  friend class Settings_Class;
  static CppClassType settings_class_;

protected:
  explicit Settings(const Glib::ConstructParams& construct_params);
  explicit Settings(GtkSettings* castitem);

#endif /* DOXYGEN_SHOULD_SKIP_THIS */

public:

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

  ~Settings() 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.
  GtkSettings*       gobj()       { return reinterpret_cast<GtkSettings*>(gobject_); }

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

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

private:

protected:


public:

  
  /** Gets the Gtk::Settings object for the default GDK screen, creating
   * it if necessary. See get_for_screen().
   * 
   * @return A Gtk::Settings object. If there is
   * no default screen, then returns <tt>nullptr</tt>.
   */
  static Glib::RefPtr<Settings> get_default();

  
  /** Gets the Gtk::Settings object for @a screen, creating it if necessary.
   * 
   * @newin{2,2}
   * 
   * @param screen A Gdk::Screen.
   * @return A Gtk::Settings object.
   */
  static Glib::RefPtr<Settings> get_for_screen(const Glib::RefPtr<Gdk::Screen>& screen);

  
  /** Undoes the effect of calling Glib::object_set() to install an
   * application-specific value for a setting. After this call,
   * the setting will again follow the session-wide value for
   * this setting.
   * 
   * @newin{3,20}
   * 
   * @param name The name of the setting to reset.
   */
  void reset_property(const Glib::ustring& name);

  /** Maximum time allowed between two clicks for them to be considered a double click (in milliseconds).
   *
   * @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< int > property_gtk_double_click_time() ;

/** Maximum time allowed between two clicks for them to be considered a double click (in milliseconds).
   *
   * @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< int > property_gtk_double_click_time() const;

  /** Maximum distance allowed between two clicks for them to be considered a double click (in pixels).
   *
   * @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< int > property_gtk_double_click_distance() ;

/** Maximum distance allowed between two clicks for them to be considered a double click (in pixels).
   *
   * @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< int > property_gtk_double_click_distance() const;

  /** Whether the cursor should blink.
   * 
   * Also see the Gtk::Settings::property_gtk_cursor_blink_timeout() setting,
   * which allows more flexible control over cursor blinking.
   *
   * @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_gtk_cursor_blink() ;

/** Whether the cursor should blink.
   * 
   * Also see the Gtk::Settings::property_gtk_cursor_blink_timeout() setting,
   * which allows more flexible control over cursor blinking.
   *
   * @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_gtk_cursor_blink() const;

  /** Length of the cursor blink cycle, in milliseconds.
   *
   * @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< int > property_gtk_cursor_blink_time() ;

/** Length of the cursor blink cycle, in milliseconds.
   *
   * @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< int > property_gtk_cursor_blink_time() const;

  /** Time after which the cursor stops blinking, in seconds.
   * The timer is reset after each user interaction.
   * 
   * Setting this to zero has the same effect as setting
   * Gtk::Settings::property_gtk_cursor_blink() to <tt>false</tt>.
   * 
   * @newin{2,12}
   *
   * @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< int > property_gtk_cursor_blink_timeout() ;

/** Time after which the cursor stops blinking, in seconds.
   * The timer is reset after each user interaction.
   * 
   * Setting this to zero has the same effect as setting
   * Gtk::Settings::property_gtk_cursor_blink() to <tt>false</tt>.
   * 
   * @newin{2,12}
   *
   * @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< int > property_gtk_cursor_blink_timeout() const;
 //since 3.4
  /** Whether two cursors should be displayed for mixed left-to-right and right-to-left text.
   *
   * @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_gtk_split_cursor() ;

/** Whether two cursors should be displayed for mixed left-to-right and right-to-left text.
   *
   * @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_gtk_split_cursor() const;

  /** Name of theme to load.
   *
   * @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_gtk_theme_name() ;

/** Name of theme to load.
   *
   * @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_gtk_theme_name() const;

  /** Name of key theme to load.
   *
   * @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_gtk_key_theme_name() ;

/** Name of key theme to load.
   *
   * @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_gtk_key_theme_name() const;

  /** Number of pixels the cursor can move before dragging.
   *
   * @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< int > property_gtk_dnd_drag_threshold() ;

/** Number of pixels the cursor can move before dragging.
   *
   * @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< int > property_gtk_dnd_drag_threshold() const;

  /** The default font to use. GTK+ uses the family name and size from this string.
   *
   * @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_gtk_font_name() ;

/** The default font to use. GTK+ uses the family name and size from this string.
   *
   * @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_gtk_font_name() const;

  /** List of currently active GTK modules.
   *
   * @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_gtk_modules() ;

/** List of currently active GTK modules.
   *
   * @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_gtk_modules() const;

//#ifdef GDK_WINDOWING_X11
  /** Whether to antialias Xft fonts; 0=no, 1=yes, -1=default.
   *
   * @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< int > property_gtk_xft_antialias() ;

/** Whether to antialias Xft fonts; 0=no, 1=yes, -1=default.
   *
   * @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< int > property_gtk_xft_antialias() const;

  /** Whether to hint Xft fonts; 0=no, 1=yes, -1=default.
   *
   * @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< int > property_gtk_xft_hinting() ;

/** Whether to hint Xft fonts; 0=no, 1=yes, -1=default.
   *
   * @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< int > property_gtk_xft_hinting() const;

  /** What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull.
   *
   * @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_gtk_xft_hintstyle() ;

/** What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull.
   *
   * @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_gtk_xft_hintstyle() const;

  /** Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr.
   *
   * @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_gtk_xft_rgba() ;

/** Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr.
   *
   * @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_gtk_xft_rgba() const;

  /** Resolution for Xft, in 1024 * dots/inch. -1 to use 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< int > property_gtk_xft_dpi() ;

/** Resolution for Xft, in 1024 * dots/inch. -1 to use 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< int > property_gtk_xft_dpi() const;

  /** Name of the cursor theme to use, or NULL to use the default theme.
   *
   * @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_gtk_cursor_theme_name() ;

/** Name of the cursor theme to use, or NULL to use the default theme.
   *
   * @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_gtk_cursor_theme_name() const;

  /** Size to use for cursors, or 0 to use the default size.
   *
   * @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< int > property_gtk_cursor_theme_size() ;

/** Size to use for cursors, or 0 to use the default size.
   *
   * @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< int > property_gtk_cursor_theme_size() const;

//#endif
  /** Whether buttons in dialogs should use the alternative button order.
   *
   * @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_gtk_alternative_button_order() ;

/** Whether buttons in dialogs should use the alternative button order.
   *
   * @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_gtk_alternative_button_order() const;

  /** Controls the direction of the sort indicators in sorted list and tree
   * views. By default an arrow pointing down means the column is sorted
   * in ascending order. When set to <tt>true</tt>, this order will be inverted.
   * 
   * @newin{2,12}
   *
   * @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_gtk_alternative_sort_arrows() ;

/** Controls the direction of the sort indicators in sorted list and tree
   * views. By default an arrow pointing down means the column is sorted
   * in ascending order. When set to <tt>true</tt>, this order will be inverted.
   * 
   * @newin{2,12}
   *
   * @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_gtk_alternative_sort_arrows() const;

  /** Whether to enable toolkit-wide animations.
   *
   * @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_gtk_enable_animations() ;

/** Whether to enable toolkit-wide animations.
   *
   * @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_gtk_enable_animations() const;

  /** When <tt>true</tt>, keyboard navigation and other input-related errors
   * will cause a beep. Since the error bell is implemented using
   * gdk_window_beep(), the windowing system may offer ways to
   * configure the error bell in many ways, such as flashing the
   * window or similar visual effects.
   * 
   * @newin{2,12}
   *
   * @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_gtk_error_bell() ;

/** When <tt>true</tt>, keyboard navigation and other input-related errors
   * will cause a beep. Since the error bell is implemented using
   * gdk_window_beep(), the windowing system may offer ways to
   * configure the error bell in many ways, such as flashing the
   * window or similar visual effects.
   * 
   * @newin{2,12}
   *
   * @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_gtk_error_bell() const;

  /** A comma-separated list of print backends to use in the print
   * dialog. Available print backends depend on the GTK+ installation,
   * and may include "file", "cups", "lpr" or "papi".
   * 
   * @newin{2,10}
   *
   * @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_gtk_print_backends() ;

/** A comma-separated list of print backends to use in the print
   * dialog. Available print backends depend on the GTK+ installation,
   * and may include "file", "cups", "lpr" or "papi".
   * 
   * @newin{2,10}
   *
   * @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_gtk_print_backends() const;

  /** A command to run for displaying the print preview. The command
   * should contain a `%f` placeholder, which will get replaced by
   * the path to the pdf file. The command may also contain a `%s`
   * placeholder, which will get replaced by the path to a file
   * containing the print settings in the format produced by
   * Gtk::PrintSettings::to_file().
   * 
   * The preview application is responsible for removing the pdf file
   * and the print settings file when it is done.
   * 
   * @newin{2,10}
   *
   * @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_gtk_print_preview_command() ;

/** A command to run for displaying the print preview. The command
   * should contain a `%f` placeholder, which will get replaced by
   * the path to the pdf file. The command may also contain a `%s`
   * placeholder, which will get replaced by the path to a file
   * containing the print settings in the format produced by
   * Gtk::PrintSettings::to_file().
   * 
   * The preview application is responsible for removing the pdf file
   * and the print settings file when it is done.
   * 
   * @newin{2,10}
   *
   * @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_gtk_print_preview_command() const;

  /** Whether menu items should have visible accelerators which can be
   * activated.
   * 
   * @newin{2,12}
   *
   * @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_gtk_enable_accels() ;

/** Whether menu items should have visible accelerators which can be
   * activated.
   * 
   * @newin{2,12}
   *
   * @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_gtk_enable_accels() const;

  /** Which IM (input method) module should be used by default. This is the
   * input method that will be used if the user has not explicitly chosen
   * another input method from the IM context menu.
   * This also can be a colon-separated list of input methods, which GTK+
   * will try in turn until it finds one available on the system.
   * 
   * See Gtk::IMContext.
   *
   * @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_gtk_im_module() ;

/** Which IM (input method) module should be used by default. This is the
   * input method that will be used if the user has not explicitly chosen
   * another input method from the IM context menu.
   * This also can be a colon-separated list of input methods, which GTK+
   * will try in turn until it finds one available on the system.
   * 
   * See Gtk::IMContext.
   *
   * @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_gtk_im_module() const;

  /** The maximum age, in days, of the items inside the recently used
   * resources list. Items older than this setting will be excised
   * from the list. If set to 0, the list will always be empty; if
   * set to -1, no item will be removed.
   * 
   * @newin{2,14}
   *
   * @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< int > property_gtk_recent_files_max_age() ;

/** The maximum age, in days, of the items inside the recently used
   * resources list. Items older than this setting will be excised
   * from the list. If set to 0, the list will always be empty; if
   * set to -1, no item will be removed.
   * 
   * @newin{2,14}
   *
   * @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< int > property_gtk_recent_files_max_age() const;

  /** Timestamp of current fontconfig configuration.
   *
   * @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< int > property_gtk_fontconfig_timestamp() ;

/** Timestamp of current fontconfig configuration.
   *
   * @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< int > property_gtk_fontconfig_timestamp() const;

  /** The XDG sound theme to use for event sounds.
   * 
   * See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
   * for more information on event sounds and sound themes.
   * 
   * GTK+ itself does not support event sounds, you have to use a loadable
   * module like the one that comes with libcanberra.
   * 
   * @newin{2,14}
   *
   * @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_gtk_sound_theme_name() ;

/** The XDG sound theme to use for event sounds.
   * 
   * See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
   * for more information on event sounds and sound themes.
   * 
   * GTK+ itself does not support event sounds, you have to use a loadable
   * module like the one that comes with libcanberra.
   * 
   * @newin{2,14}
   *
   * @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_gtk_sound_theme_name() const;

  /** Whether to play event sounds as feedback to user input.
   * 
   * See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
   * for more information on event sounds and sound themes.
   * 
   * GTK+ itself does not support event sounds, you have to use a loadable
   * module like the one that comes with libcanberra.
   * 
   * @newin{2,14}
   *
   * @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_gtk_enable_input_feedback_sounds() ;

/** Whether to play event sounds as feedback to user input.
   * 
   * See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
   * for more information on event sounds and sound themes.
   * 
   * GTK+ itself does not support event sounds, you have to use a loadable
   * module like the one that comes with libcanberra.
   * 
   * @newin{2,14}
   *
   * @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_gtk_enable_input_feedback_sounds() const;

  /** Whether to play any event sounds at all.
   * 
   * See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
   * for more information on event sounds and sound themes.
   * 
   * GTK+ itself does not support event sounds, you have to use a loadable
   * module like the one that comes with libcanberra.
   * 
   * @newin{2,14}
   *
   * @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_gtk_enable_event_sounds() ;

/** Whether to play any event sounds at all.
   * 
   * See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
   * for more information on event sounds and sound themes.
   * 
   * GTK+ itself does not support event sounds, you have to use a loadable
   * module like the one that comes with libcanberra.
   * 
   * @newin{2,14}
   *
   * @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_gtk_enable_event_sounds() const;

  /** Whether the application prefers to use a dark theme. If a GTK+ theme
   * includes a dark variant, it will be used instead of the configured
   * theme.
   * 
   * Some applications benefit from minimizing the amount of light pollution that
   * interferes with the content. Good candidates for dark themes are photo and
   * video editors that make the actual content get all the attention and minimize
   * the distraction of the chrome.
   * 
   * Dark themes should not be used for documents, where large spaces are white/light
   * and the dark chrome creates too much contrast (web browser, text editor...).
   * 
   * @newin{3,0}
   *
   * @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_gtk_application_prefer_dark_theme() ;

/** Whether the application prefers to use a dark theme. If a GTK+ theme
   * includes a dark variant, it will be used instead of the configured
   * theme.
   * 
   * Some applications benefit from minimizing the amount of light pollution that
   * interferes with the content. Good candidates for dark themes are photo and
   * video editors that make the actual content get all the attention and minimize
   * the distraction of the chrome.
   * 
   * Dark themes should not be used for documents, where large spaces are white/light
   * and the dark chrome creates too much contrast (web browser, text editor...).
   * 
   * @newin{3,0}
   *
   * @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_gtk_application_prefer_dark_theme() const;
  // since 2.22
  /** Set to TRUE if the desktop environment is displaying the app menu, FALSE if the app should display it itself.
   *
   * @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_gtk_shell_shows_app_menu() ;

/** Set to TRUE if the desktop environment is displaying the app menu, FALSE if the app should display it itself.
   *
   * @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_gtk_shell_shows_app_menu() const;
 //since 3.4
  /** Set to TRUE if the desktop environment is displaying the menubar, FALSE if the app should display it itself.
   *
   * @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_gtk_shell_shows_menubar() ;

/** Set to TRUE if the desktop environment is displaying the menubar, FALSE if the app should display it itself.
   *
   * @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_gtk_shell_shows_menubar() const;
 //since 3.4
  /** Set to TRUE if the desktop environment is displaying the desktop folder, FALSE if not.
   *
   * @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_gtk_shell_shows_desktop() ;

/** Set to TRUE if the desktop environment is displaying the desktop folder, FALSE if not.
   *
   * @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_gtk_shell_shows_desktop() const;
 //since 3.12
  /** Whether a middle click on a mouse should paste the
   * 'PRIMARY' clipboard content at the cursor location.
   * 
   * @newin{3,4}
   *
   * @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_gtk_enable_primary_paste() ;

/** Whether a middle click on a mouse should paste the
   * 'PRIMARY' clipboard content at the cursor location.
   * 
   * @newin{3,4}
   *
   * @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_gtk_enable_primary_paste() const;
 //since 3.6

  /** Whether to select the contents of a selectable label when it is focused.
   *
   * @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_gtk_label_select_on_focus() ;

/** Whether to select the contents of a selectable label when it is focused.
   *
   * @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_gtk_label_select_on_focus() const;
 //since 3.4
  /** How long to show the last input character in hidden
   * entries. This value is in milliseconds. 0 disables showing the
   * last char. 600 is a good value for enabling it.
   * 
   * @newin{2,10}
   *
   * @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< guint > property_gtk_entry_password_hint_timeout() ;

/** How long to show the last input character in hidden
   * entries. This value is in milliseconds. 0 disables showing the
   * last char. 600 is a good value for enabling it.
   * 
   * @newin{2,10}
   *
   * @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< guint > property_gtk_entry_password_hint_timeout() const;
 //since 3.4
  //TODO: Add others added since?

  /** Whether to select the contents of an entry when it is focused.
   *
   * @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_gtk_entry_select_on_focus() ;

/** Whether to select the contents of an entry when it is focused.
   *
   * @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_gtk_entry_select_on_focus() const;


  /** Name of icon theme to use.
   *
   * @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_gtk_icon_theme_name() ;

/** Name of icon theme to use.
   *
   * @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_gtk_icon_theme_name() const;


  /** Whether GTK+ should keep track of items inside the recently used
   * resources list. If set to <tt>false</tt>, the list will always be empty.
   * 
   * @newin{3,8}
   *
   * @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_gtk_recent_files_enabled() ;

/** Whether GTK+ should keep track of items inside the recently used
   * resources list. If set to <tt>false</tt>, the list will always be empty.
   * 
   * @newin{3,8}
   *
   * @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_gtk_recent_files_enabled() const;

  /** Whether a click in a Gtk::Range trough should scroll to the click position or
   * scroll by a single page in the respective direction.
   * 
   * @newin{3,6}
   *
   * @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_gtk_primary_button_warps_slider() ;

/** Whether a click in a Gtk::Range trough should scroll to the click position or
   * scroll by a single page in the respective direction.
   * 
   * @newin{3,6}
   *
   * @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_gtk_primary_button_warps_slider() const;


  /** This setting determines which buttons should be put in the
   * titlebar of client-side decorated windows, and whether they
   * should be placed at the left of right.
   * 
   * The format of the string is button names, separated by commas.
   * A colon separates the buttons that should appear on the left
   * from those on the right. Recognized button names are minimize,
   * maximize, close, icon (the window icon) and menu (a menu button
   * for the fallback app menu).
   * 
   * For example, "menu:minimize,maximize,close" specifies a menu
   * on the left, and minimize, maximize and close buttons on the right.
   * 
   * Note that buttons will only be shown when they are meaningful.
   * E.g. a menu button only appears when the desktop shell does not
   * show the app menu, and a close button only appears on a window
   * that can be closed.
   * 
   * Also note that the setting can be overridden with the
   * Gtk::HeaderBar::property_decoration_layout() property.
   * 
   * @newin{3,12}
   *
   * @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_gtk_decoration_layout() ;

/** This setting determines which buttons should be put in the
   * titlebar of client-side decorated windows, and whether they
   * should be placed at the left of right.
   * 
   * The format of the string is button names, separated by commas.
   * A colon separates the buttons that should appear on the left
   * from those on the right. Recognized button names are minimize,
   * maximize, close, icon (the window icon) and menu (a menu button
   * for the fallback app menu).
   * 
   * For example, "menu:minimize,maximize,close" specifies a menu
   * on the left, and minimize, maximize and close buttons on the right.
   * 
   * Note that buttons will only be shown when they are meaningful.
   * E.g. a menu button only appears when the desktop shell does not
   * show the app menu, and a close button only appears on a window
   * that can be closed.
   * 
   * Also note that the setting can be overridden with the
   * Gtk::HeaderBar::property_decoration_layout() property.
   * 
   * @newin{3,12}
   *
   * @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_gtk_decoration_layout() const;
 // since 3.12
  /** This setting determines the action to take when a double-click
   * occurs on the titlebar of client-side decorated windows.
   * 
   * Recognized actions are minimize, toggle-maximize, menu, lower
   * or none.
   * 
   * @newin{3,20}
   *
   * @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_gtk_titlebar_double_click() ;

/** This setting determines the action to take when a double-click
   * occurs on the titlebar of client-side decorated windows.
   * 
   * Recognized actions are minimize, toggle-maximize, menu, lower
   * or none.
   * 
   * @newin{3,20}
   *
   * @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_gtk_titlebar_double_click() const;

  /** This setting determines the action to take when a middle-click
   * occurs on the titlebar of client-side decorated windows.
   * 
   * Recognized actions are minimize, toggle-maximize, menu, lower
   * or none.
   * 
   * @newin{3,20}
   *
   * @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_gtk_titlebar_middle_click() ;

/** This setting determines the action to take when a middle-click
   * occurs on the titlebar of client-side decorated windows.
   * 
   * Recognized actions are minimize, toggle-maximize, menu, lower
   * or none.
   * 
   * @newin{3,20}
   *
   * @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_gtk_titlebar_middle_click() const;

  /** This setting determines the action to take when a right-click
   * occurs on the titlebar of client-side decorated windows.
   * 
   * Recognized actions are minimize, toggle-maximize, menu, lower
   * or none.
   * 
   * @newin{3,20}
   *
   * @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_gtk_titlebar_right_click() ;

/** This setting determines the action to take when a right-click
   * occurs on the titlebar of client-side decorated windows.
   * 
   * Recognized actions are minimize, toggle-maximize, menu, lower
   * or none.
   * 
   * @newin{3,20}
   *
   * @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_gtk_titlebar_right_click() const;

  /** Whether builtin GTK+ dialogs such as the file chooser, the
   * color chooser or the font chooser will use a header bar at
   * the top to show action widgets, or an action area at the bottom.
   * 
   * This setting does not affect custom dialogs using GtkDialog
   * directly, or message dialogs.
   * 
   * @newin{3,12}
   *
   * @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_gtk_dialogs_use_header() ;

/** Whether builtin GTK+ dialogs such as the file chooser, the
   * color chooser or the font chooser will use a header bar at
   * the top to show action widgets, or an action area at the bottom.
   * 
   * This setting does not affect custom dialogs using GtkDialog
   * directly, or message dialogs.
   * 
   * @newin{3,12}
   *
   * @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_gtk_dialogs_use_header() const;
 // since 3.12

  /** The time for a button or touch press to be considered a "long press".
   * 
   * @newin{3,14}
   *
   * @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< guint > property_gtk_long_press_time() ;

/** The time for a button or touch press to be considered a "long press".
   * 
   * @newin{3,14}
   *
   * @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< guint > property_gtk_long_press_time() const;
 // since 3.14
  /** Whether GTK+ should make sure that text can be navigated with
   * a caret, even if it is not editable. This is useful when using
   * a screen reader.
   * 
   * @newin{3,20}
   *
   * @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_gtk_keynav_use_caret() ;

/** Whether GTK+ should make sure that text can be navigated with
   * a caret, even if it is not editable. This is useful when using
   * a screen reader.
   * 
   * @newin{3,20}
   *
   * @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_gtk_keynav_use_caret() const;


public:

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

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

  //Default Signal Handlers::


};

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


#endif /* _GTKMM_SETTINGS_H */

