// -*- c++ -*-
// Generated by gtkmmproc -- DO NOT MODIFY!
#ifndef _LIBVTEMM_TERMINAL_H
#define _LIBVTEMM_TERMINAL_H

#include <libvtemmconfig.h>


#include <glibmm.h>

/* terminal.h
 *
 * Copyright (C) 2008, 2009, 2010 libvtemm Development Team
 *
 * This file is part of libvtemm.
 *
 * libvtemm is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * libvtemm 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 Public License for more details.
 *
 * You should have received a copy of the GNU Lesser Public License
 * along with libvtemm.  If not, see <http://www.gnu.org/licenses/>.
 */


#include <sigc++/slot.h>
#include <giomm/cancellable.h>
#include <giomm/outputstream.h>
#include <gdkmm/color.h>
#include <gdkmm/pixbuf.h>
#include <gdkmm/cursor.h>
#include <pangomm/fontdescription.h>
#include <gtkmm/widget.h>
#include <gtkmm/menushell.h>
#include <gtkmm/adjustment.h>
#include <libvtemm/cursorposition.h>
#include <libvtemm/match.h>
#ifndef LIBVTEMM_DISABLE_DEPRECATED
#include <libvtemm/padding.h>
#endif // LIBVTEMM_DISABLE_DEPRECATED
#include <libvtemm/shared.h>
#include <libvtemm/textandcharattrs.h>

#include <string>

#ifndef DOXYGEN_SHOULD_SKIP_THIS
typedef struct _VteTerminal VteTerminal;
typedef struct _VteTerminalClass VteTerminalClass;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */


namespace Gnome
{

namespace Vte
{ class Terminal_Class; } // namespace Vte

} // namespace Gnome
namespace Gnome
{

namespace Vte
{

/** @addtogroup libvtemmEnums libvtemm Enums and Flags */

/** TerminalEraseBinding - An enumerated type which can be used to indicate
 *  which string the terminal should send to an application when the user
 *  presses the Delete or Backspace keys.
 * @ingroup libvtemmEnums
 */
enum TerminalEraseBinding
{
  ERASE_AUTO,
  ERASE_ASCII_BACKSPACE,
  ERASE_ASCII_DELETE,
  ERASE_DELETE_SEQUENCE,
  ERASE_TTY
};

} // namespace Vte

} // namespace Gnome


#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class Value<Gnome::Vte::TerminalEraseBinding> : public Glib::Value_Enum<Gnome::Vte::TerminalEraseBinding>
{
public:
  static GType value_type() G_GNUC_CONST;
};

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


namespace Gnome
{

namespace Vte
{

/** @var TerminalEraseBinding ERASE_AUTO
 * For backspace, attempt to determine the right value from the terminal's IO
 * settings; for delete, use the control sequence.
 */

/** @var TerminalEraseBinding ERASE_ASCII_BACKSPACE
 * Send an ASCII backspace character (0x08).
 */

/** @var TerminalEraseBinding ERASE_ASCII_DELETE
 * Send an ASCII delete character (0x7F).
 */

/** @var TerminalEraseBinding ERASE_DELETE_SEQUENCE
 * Send the "\@\@7" control sequence.
 */

/** @var TerminalEraseBinding ERASE_TTY
 * Send terminal's "erase" setting.
 */

/** TerminalCursorBlinkMode - An enumerated type which can be used to indicate
 * the cursor blink mode for the terminal.
 * @ingroup libvtemmEnums
 */
enum TerminalCursorBlinkMode
{
  CURSOR_BLINK_SYSTEM,
  CURSOR_BLINK_ON,
  CURSOR_BLINK_OFF
};

} // namespace Vte

} // namespace Gnome


#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class Value<Gnome::Vte::TerminalCursorBlinkMode> : public Glib::Value_Enum<Gnome::Vte::TerminalCursorBlinkMode>
{
public:
  static GType value_type() G_GNUC_CONST;
};

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


namespace Gnome
{

namespace Vte
{

/** @var TerminalCursorBlinkMode CURSOR_BLINK_SYSTEM
 * Follow GTK+ settings for cursor blinking.
 */

/** @var TerminalCursorBlinkMode CURSOR_BLINK_ON
 * Cursor blinks.
 */

/** @var TerminalCursorBlinkMode CURSOR_BLINK_OFF
 * Cursor does not blink.
 */

/** TerminalCursorShape - An enumerated type which can be used to indicate what
 * should the terminal draw at the cursor position.
 * @ingroup libvtemmEnums
 */
enum TerminalCursorShape
{
  CURSOR_SHAPE_BLOCK,
  CURSOR_SHAPE_IBEAM,
  CURSOR_SHAPE_UNDERLINE
};

} // namespace Vte

} // namespace Gnome


#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class Value<Gnome::Vte::TerminalCursorShape> : public Glib::Value_Enum<Gnome::Vte::TerminalCursorShape>
{
public:
  static GType value_type() G_GNUC_CONST;
};

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


namespace Gnome
{

namespace Vte
{

/** @var TerminalCursorShape CURSOR_SHAPE_BLOCK
 * Draw a block cursor - this is the default.
 */

/** @var TerminalCursorShape CURSOR_SHAPE_IBEAM
 * Draw a vertical bar on the left side of character - this is similar to the
 * default cursor for other GTK+ widgets.
 */

/** @var TerminalCursorShape CURSOR_SHAPE_UNDERLINE
 * Draw a horizontal bar below the character.
 */

/** TerminalWriteFlags - A flag type to determine how terminal contents should
 * be written to an output stream.
 * @ingroup libvtemmEnums
 * @par Bitwise operators:
 * <tt>%TerminalWriteFlags operator|(TerminalWriteFlags, TerminalWriteFlags)</tt><br>
 * <tt>%TerminalWriteFlags operator&(TerminalWriteFlags, TerminalWriteFlags)</tt><br>
 * <tt>%TerminalWriteFlags operator^(TerminalWriteFlags, TerminalWriteFlags)</tt><br>
 * <tt>%TerminalWriteFlags operator~(TerminalWriteFlags)</tt><br>
 * <tt>%TerminalWriteFlags& operator|=(TerminalWriteFlags&, TerminalWriteFlags)</tt><br>
 * <tt>%TerminalWriteFlags& operator&=(TerminalWriteFlags&, TerminalWriteFlags)</tt><br>
 * <tt>%TerminalWriteFlags& operator^=(TerminalWriteFlags&, TerminalWriteFlags)</tt><br>
 */
enum TerminalWriteFlags
{
  TERMINAL_WRITE_DEFAULT = 0x0
};

/** @ingroup libvtemmEnums */
inline TerminalWriteFlags operator|(TerminalWriteFlags lhs, TerminalWriteFlags rhs)
  { return static_cast<TerminalWriteFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }

/** @ingroup libvtemmEnums */
inline TerminalWriteFlags operator&(TerminalWriteFlags lhs, TerminalWriteFlags rhs)
  { return static_cast<TerminalWriteFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }

/** @ingroup libvtemmEnums */
inline TerminalWriteFlags operator^(TerminalWriteFlags lhs, TerminalWriteFlags rhs)
  { return static_cast<TerminalWriteFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }

/** @ingroup libvtemmEnums */
inline TerminalWriteFlags operator~(TerminalWriteFlags flags)
  { return static_cast<TerminalWriteFlags>(~static_cast<unsigned>(flags)); }

/** @ingroup libvtemmEnums */
inline TerminalWriteFlags& operator|=(TerminalWriteFlags& lhs, TerminalWriteFlags rhs)
  { return (lhs = static_cast<TerminalWriteFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }

/** @ingroup libvtemmEnums */
inline TerminalWriteFlags& operator&=(TerminalWriteFlags& lhs, TerminalWriteFlags rhs)
  { return (lhs = static_cast<TerminalWriteFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }

/** @ingroup libvtemmEnums */
inline TerminalWriteFlags& operator^=(TerminalWriteFlags& lhs, TerminalWriteFlags rhs)
  { return (lhs = static_cast<TerminalWriteFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }

} // namespace Vte

} // namespace Gnome


#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Glib
{

template <>
class Value<Gnome::Vte::TerminalWriteFlags> : public Glib::Value_Flags<Gnome::Vte::TerminalWriteFlags>
{
public:
  static GType value_type() G_GNUC_CONST;
};

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


namespace Gnome
{

namespace Vte
{

/** @var TerminalWriteFlags TERMINAL_WRITE_DEFAULT
 * Write contents as UTF-8 text - this is the default.
 */


/** Terminal - a terminal emulator implemented as a gtkmm widget.
 */

class Terminal : public Gtk::Widget
{
  public:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  typedef Terminal CppObjectType;
  typedef Terminal_Class CppClassType;
  typedef VteTerminal BaseObjectType;
  typedef VteTerminalClass BaseClassType;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

  virtual ~Terminal();

#ifndef DOXYGEN_SHOULD_SKIP_THIS

private:
  friend class Terminal_Class;
  static CppClassType terminal_class_;

  // noncopyable
  Terminal(const Terminal&);
  Terminal& operator=(const Terminal&);

protected:
  explicit Terminal(const Glib::ConstructParams& construct_params);
  explicit Terminal(VteTerminal* castitem);

#endif /* DOXYGEN_SHOULD_SKIP_THIS */

public:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  static GType get_type()      G_GNUC_CONST;


  static GType get_base_type() G_GNUC_CONST;
#endif

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

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


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

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

  //Default Signal Handlers::
  virtual void on_eof();
  virtual void on_child_exited();
  virtual void on_emulation_changed();
  virtual void on_encoding_changed();
  virtual void on_char_size_changed(guint char_width, guint char_height);
  virtual void on_window_title_changed();
  virtual void on_icon_title_changed();
  virtual void on_selection_changed();
  virtual void on_contents_changed();
  virtual void on_cursor_moved();
  virtual void on_status_line_changed();
  virtual void on_commit(const Glib::ustring& text);
  virtual void on_deiconify_window();
  virtual void on_iconify_window();
  virtual void on_raise_window();
  virtual void on_lower_window();
  virtual void on_refresh_window();
  virtual void on_restore_window();
  virtual void on_maximize_window();
  virtual void on_resize_window(guint width, guint height);
  virtual void on_move_window(guint x, guint y);
  virtual void on_increase_font_size();
  virtual void on_decrease_font_size();
  virtual void on_text_modified();
  virtual void on_text_inserted();
  virtual void on_text_deleted();
  virtual void on_text_scrolled(int delta);
  virtual void on_copy_clipboard();
  virtual void on_paste_clipboard();
  virtual void on_beep();


private:

  // wrapped by hand
  
  // deprecated
  
  // bogus
  
public:
  Terminal();

  /** Starts the specified command under a newly-allocated controlling
   * pseudo-terminal.  The argv[0] is expected to be the name of the file being run,
   * as it would be if execve() were being called. TERM is automatically set to
   * reflect the terminal widget's emulation setting. If @a lastlog, @a utmp, or
   *  @a wtmp are \c true, logs the session to the specified system log files.
   *  @a argv and @a envv can be in two formats: with last string empty and with last
   * string non-empty, so result of Glib::shell_parse_argv() or user-defined vector
   * with all strings non-empty can be passed.
   * @param command The name of a binary to run, or empty string to get user's shell.
   * @param argv An argument list to be passed to @a command.
   * @param envv A list of environment variables to be
   * added to the environment before starting @a command.
   * @param directory The name of a directory the command should start in, or
   * empty string to inherit starting directory from parent.
   * @param lastlog \c true if the session should be logged to the lastlog.
   * @param utmp \c true if the session should be logged to the utmp/utmpx log.
   * @param wtmp \c true if the session should be logged to the wtmp/wtmpx log.
   * @return The ID of the new process.
   */
  Glib::Pid fork_command(const std::string& command = std::string(),
                         const StdStringArrayHandle& argv = StdStringArrayHandle(0, Glib::OWNERSHIP_NONE),
                         const StdStringArrayHandle& envv = StdStringArrayHandle(0, Glib::OWNERSHIP_NONE),
                         const std::string& directory = std::string(),
                         bool lastlog = false,
                         bool utmp = false,
                         bool wtmp = false);

  /** Starts a new child process under a newly-allocated controlling
   * pseudo-terminal.  TERM is automatically set to reflect the terminal widget's
   * emulation setting.  If @a lastlog, @a utmp, or @a wtmp are \c true, logs the session
   * to the specified system log files.
   * See fork_command() for description about format of @a envv parameter.
   * @param envv A list of environment variables to be
   * added to the environment before starting returning in the child process.
   * @param directory The name of a directory the command should start in, or
   * empty string to inherit starting directory from parent.
   * @param lastlog \c true if the session should be logged to the lastlog.
   * @param utmp \c true if the session should be logged to the utmp/utmpx log.
   * @param wtmp \c true if the session should be logged to the wtmp/wtmpx log.
   * @return The ID of the new process in the parent.
   */
  Glib::Pid forkpty(const StdStringArrayHandle& envv = StdStringArrayHandle(0, Glib::OWNERSHIP_NONE),
                    const std::string& directory = std::string(),
                    bool lastlog = false,
                    bool utmp = false,
                    bool wtmp = false);

  /** Interprets @a data as if it were data received from a child process.  This
   * can either be used to drive the terminal without a child process, or just
   * to mess with your users.
   * @param data A string in the terminal's current encoding.
   */
  void feed(const Glib::ustring& data);

  /** Sends a block of UTF-8 text to the child as if it were entered by the user
   * at the keyboard.
   * @param text Data to send to the child.
   */
  void feed_child(const Glib::ustring& text);

  /** Sends a block of binary data to the child.
   * @param data Data to send to the child.
   */
  void feed_child_binary(const std::string& data);

  
  /** Places the selected text in the terminal in the \c GDK_SELECTION_CLIPBOARD
   * selection.
   */
  void copy_clipboard();

  
  /** Sends the contents of the \c GDK_SELECTION_CLIPBOARD selection to the
   * terminal's child.  If necessary, the data is converted from UTF-8 to the
   * terminal's current encoding. It's called on paste menu item, or when
   * user presses Shift+Insert.
   */
  void paste_clipboard();

  
  /** Places the selected text in the terminal in the \c GDK_SELECTION_PRIMARY
   * selection.
   */
  void copy_primary();

  
  /** Sends the contents of the \c GDK_SELECTION_PRIMARY selection to the terminal's
   * child.  If necessary, the data is converted from UTF-8 to the terminal's
   * current encoding.  The terminal will call also paste the
   * \c GDK_SELECTION_PRIMARY selection when the user clicks with the the second
   * mouse button.
   */
  void paste_primary();

  
  /** Selects all text within the terminal (including the scrollback buffer).
   */
  void select_all();

  
  /** Clears the current selection.
   */
  void select_none();

  
  /** Attempts to change the terminal's size in terms of rows and columns.  If
   * the attempt succeeds, the widget will resize itself to the proper size.
   * @param columns The desired number of columns.
   * @param rows The desired number of rows.
   */
  void set_size(long columns, long rows);

  
  /** Controls whether or not the terminal will beep when the child outputs the
   * "bl" sequence.
   * @param is_audible <tt>true</tt> if the terminal should beep.
   */
  void set_audible_bell(bool is_audible = true);
  
  /** Checks whether or not the terminal will beep when the child outputs the
   * "bl" sequence.
   * @return <tt>true</tt> if audible bell is enabled, <tt>false</tt> if not.
   */
  bool get_audible_bell() const;
  
  /** Controls whether or not the terminal will present a visible bell to the
   * user when the child outputs the "bl" sequence.  The terminal
   * will clear itself to the default foreground color and then repaint itself.
   * @param is_visible <tt>true</tt> if the terminal should flash.
   */
  void set_visible_bell(bool is_visible = true);
  
  /** Checks whether or not the terminal will present a visible bell to the
   * user when the child outputs the "bl" sequence.  The terminal
   * will clear itself to the default foreground color and then repaint itself.
   * @return <tt>true</tt> if visible bell is enabled, <tt>false</tt> if not.
   */
  bool get_visible_bell() const;

  
  /** Controls whether or not the terminal will scroll the background image (if
   * one is set) when the text in the window must be scrolled.
   * @param scroll \c true if the terminal should scroll the background image along with
   * text.
   */
  void set_scroll_background(bool scroll = true);
  
  /** Controls whether or not the terminal will forcibly scroll to the bottom of
   * the viewable history when the new data is received from the child.
   * @param scroll <tt>true</tt> if the terminal should scroll on output.
   */
  void set_scroll_on_output(bool scroll = true);
  
  /** Controls whether or not the terminal will forcibly scroll to the bottom of
   * the viewable history when the user presses a key.  Modifier keys do not
   * trigger this behavior.
   * @param scroll <tt>true</tt> if the terminal should scroll on keystrokes.
   */
  void set_scroll_on_keystroke(bool scroll = true);

  
  /** Sets the color used to draw dim text in the default foreground color.
   * @param dim The new dim color.
   */
  void set_color_dim(const Gdk::Color& dim);
  
  /** Sets the color used to draw bold text in the default foreground color.
   * @param bold The new bold color.
   */
  void set_color_bold(const Gdk::Color& bold);
  
  /** Sets the foreground color used to draw normal text
   * @param foreground The new foreground color.
   */
  void set_color_foreground(const Gdk::Color& foreground);
  
  /** Sets the background color for text which does not have a specific background
   * color assigned.  Only has effect when no background image is set and when
   * the terminal is not transparent.
   * @param background The new background color.
   */
  void set_color_background(const Gdk::Color& background);

  
  /** Sets the background color for text which is under the cursor.
   * @param cursor_background The new color to use for the text cursor.
   */
  void set_color_cursor(const Gdk::Color& cursor_background);

  /** Text under the cursor will be drawn with foreground and background colors
   * reversed.
   */
  void set_default_color_cursor();

  
  /** Sets the background color for text which is highlighted.
   * @param highlight_background The new color to use for highlighted text.
   */
  void set_color_highlight(const Gdk::Color& highlight_background);

  /** Highlighted text (which is usually highlighted because it is selected)
   * will be drawn with foreground and background colors reversed.
   */
  void set_default_color_highlight();

  /** The terminal widget uses a 28-color model comprised of the default foreground
   * and background colors, the bold foreground color, the dim foreground
   * color, an eight color palette, bold versions of the eight color palette,
   * and a dim version of the the eight color palette.
   *
   * Size of @a palette must be either 0, 8, 16, or 24. If size of @a palette is 8 or 16,
   * the third (dim) and possibly the second (bold) 8-color palettes are extrapolated
   * from the new background color and the items in @a palette.
   * @param foreground The new foreground color.
   * @param background The new background color.
   * @param palette The color palette.
   */
  void set_colors(const Gdk::Color& foreground, const Gdk::Color& background, const Gdk::ArrayHandle_Color& palette);
  
  /** Reset the terminal palette to reasonable compiled-in defaults.
   */
  void set_default_colors();

  /** The terminal widget uses a 28-color model comprised of the default foreground
   * and background colors, the bold foreground color, the dim foreground
   * color, an eight color palette, bold versions of the eight color palette,
   * and a dim version of the the eight color palette.
   *
   * Size of @a palette must be either 0, 8, 16, or 24.  If size of @a palette is greater
   * than 0, the new foreground color is taken from @a palette[7] and the new background color is taken from
   * @a palette[0].  If size of @a palette is 8 or 16, the third (dim) and possibly the
   * second (bold) 8-color palettes are extrapolated from the new background
   * color and the items in @a palette.
   * @param palette The color palette
   */
  void set_default_colors(const Gdk::ArrayHandle_Color& palette);

  
  /** Sets a background image for the widget. Text which would otherwise be
   * drawn using the default background color will instead be drawn over the
   * specified image. If necessary, the image will be tiled to cover the
   * widget's entire visible area. If specified by
   * set_background_saturation(), the terminal will tint its
   * in-memory copy of the image before applying it to the terminal. If @a image will
   * be Glib::RefPtr<Gdk::PixBuf>() then background will be canceled
   * (or just use unset_background_image()).
   * @param image A Glib::RefPtr<Gdk::Pixbuf> to use.
   */
  void set_background_image(const Glib::RefPtr<Gdk::Pixbuf>& image);
  
  /** Sets a background image for the widget.  If specified by
   * set_background_saturation(), the terminal will tint its
   * in-memory copy of the image before applying it to the terminal.
   * @param path Path to an image file.
   */
  void set_background_image_file(const std::string& path);

  /** Convenience method which cancels background image. Equivalent to
   * set_background_image(Glib::RefPtr<Gdk::Pixbuf>()).
   */
  void unset_background_image();

  
  /** If a background image has been set using
   * set_background_image(), set_background_image_file(), or
   * set_background_transparent(), and the value set by
   * set_background_saturation() is less than one, the terminal
   * will adjust the color of the image before drawing the image.  To do so,
   * the terminal will create a copy of the background image (or snapshot of
   * the root window) and modify its pixel values.  The initial tint color
   * is black.
   * @param color A color which the terminal background should be tinted to if its
   * saturation is not 1.0.
   */
  void set_background_tint_color(const Gdk::Color& color);
  
  /** If a background image has been set using
   * set_background_image(),
   * set_background_image_file(), or
   * set_background_transparent(), and the saturation value is less
   * than 1.0, the terminal will adjust the colors of the image before drawing
   * the image.  To do so, the terminal will create a copy of the background
   * image (or snapshot of the root window) and modify its pixel values.
   * @param saturation A floating point value between 0.0 and 1.0.
   */
  void set_background_saturation(double saturation);
  
  /** Sets the terminal's background image to the pixmap stored in the root
   * window, adjusted so that if there are no windows below your application,
   * the widget will appear to be transparent.
   * @param transparent <tt>true</tt> if the terminal should fake transparency.
   */
  void set_background_transparent(bool transparent = true);
  
  /** Sets the opacity of the terminal background, were 0 means completely
   * transparent and 65535 means completely opaque.
   * @param opacity The new opacity.
   */
  void set_opacity(guint16 opacity);

  
  /** Sets whether or not the cursor will blink. Using Gnome::Vte::CURSOR_BLINK_SYSTEM
   * will use the Gtk::Settings::property_gtk_cursor_blink() setting.
   * @param mode The Gnome::Vte::TerminalCursorBlinkMode to use.
   */
  void set_cursor_blink_mode(TerminalCursorBlinkMode mode);

  
  /** Gets cursor blink mode.
   * @return Cursor blink mode.
   */
  TerminalCursorBlinkMode get_cursor_blink_mode() const;

  
  /** Sets the shape of the cursor drawn.
   * @param shape The Gnome::Vte::TerminalCursorShape to use.
   */
  void set_cursor_shape(TerminalCursorShape shape);

  
  /** Gets the shape of the cursor drawn.
   * @return The Gnome::Vte::TerminalCursorShape used to draw cursor.
   */
  TerminalCursorShape get_cursor_shape() const;

  
  /** Sets the length of the scrollback buffer used by the terminal.  The size of
   * the scrollback buffer will be set to the larger of this value and the number
   * of visible rows the widget can display, so 0 can safely be used to disable
   * scrollback.
   * 
   * A negative value means "infinite scrollback".
   * 
   * Note that this setting only affects the normal screen buffer.
   * For terminal types which have an alternate screen buffer, no scrollback is
   * allowed on the alternate screen buffer.
   * @param lines The length of the history buffer.
   */
  void set_scrollback_lines(long lines);

  
  /** Appends menu items for various input methods to the given menu.  The
   * user can select one of these items to modify the input method used by
   * the terminal.
   * @param menushell A Gtk::MenuShell.
   */
  void im_append_menuitems(Gtk::MenuShell& menushell);

  
  /** Sets the font used for rendering all text displayed by the terminal,
   * overriding any fonts set using Gtk::Widget::modify_font().  The terminal
   * will immediately attempt to load the desired font, retrieve its
   * metrics, and attempt to resize itself to keep the same number of rows
   * and columns.
   * @param font_desc The Pango::FontDescription of the desired font.
   */
  void set_font(const Pango::FontDescription& font_desc);
  
  /** A convenience function which converts @a name into a Pango::FontDescription and
   * passes it to set_font().
   * @param name A string describing the font.
   */
  void set_font_from_string(const Glib::ustring& name);
  
  /** Queries the terminal for information about the fonts which will be
   * used to draw text in the terminal.
   * @return A Pango::FontDescription describing the font the terminal is
   * currently using to render text.
   */
  Pango::FontDescription get_font() const;
  
  /** Controls whether or not the terminal will attempt to draw bold text,
   * either by using a bold font variant or by repainting text with a different
   * offset.
   * @param allow_bold <tt>true</tt> if the terminal should attempt to draw bold text.
   */
  void set_allow_bold(bool allow_bold = true);
  
  /** Checks whether or not the terminal will attempt to draw bold text by
   * repainting text with a one-pixel offset.
   * @return <tt>true</tt> if bolding is enabled, <tt>false</tt> if not.
   */
  bool get_allow_bold() const;

  
  /** Checks if the terminal currently contains selected text.  Note that this
   * is different from determining if the terminal is the owner of any
   * Gtk::Clipboard items.
   * @return <tt>true</tt> if part of the text in the terminal is selected.
   */
  bool get_has_selection() const;

  
  /** When the user double-clicks to start selection, the terminal will extend
   * the selection on word boundaries.  It will treat characters included in @a spec
   * as parts of words, and all other characters as word separators. Ranges of
   * characters can be specified by separating them with a hyphen.
   *
   * As a special case, if @a spec is empty string, the terminal will
   * treat all graphic non-punctuation non-space characters as word characters.
   * @param spec A specification.
   */
  void set_word_chars(const Glib::ustring& spec);
  
  /** Checks if a particular character is considered to be part of a word or not,
   * based on the values last passed to set_word_chars().
   * @param c A candidate Unicode code point.
   * @return <tt>true</tt> if the character is considered to be part of a word.
   */
  bool is_word_char(gunichar c);

  
  /** Modifies the terminal's backspace key binding, which controls what
   * string or control sequence the terminal sends to its child when the user
   * presses the backspace key.
   * @param binding A Vte::TerminalEraseBinding for the backspace key.
   */
  void set_backspace_binding(TerminalEraseBinding binding);
  
  /** Modifies the terminal's delete key binding, which controls what
   * string or control sequence the terminal sends to its child when the user
   * presses the delete key.
   * @param binding A Vte::TerminalEraseBinding for the delete key.
   */
  void set_delete_binding(TerminalEraseBinding binding);

  
  /** Changes the value of the terminal's mouse autohide setting.  When autohiding
   * is enabled, the mouse cursor will be hidden when the user presses a key and
   * shown when the user moves the mouse.  This setting can be read using
   * get_mouse_autohide().
   * @param setting <tt>true</tt> if the autohide should be enabled.
   */
  void set_mouse_autohide(bool setting = true);
  
  /** Determines the value of the terminal's mouse autohide setting.  When
   * autohiding is enabled, the mouse cursor will be hidden when the user presses
   * a key and shown when the user moves the mouse.  This setting can be changed
   * using set_mouse_autohide().
   * @return <tt>true</tt> if autohiding is enabled, <tt>false</tt> if not.
   */
  bool get_mouse_autohide() const;

  
  /** Resets as much of the terminal's internal state as possible, discarding any
   * unprocessed input data, resetting character attributes, cursor state,
   * national character set state, status line, terminal modes (insert/delete),
   * selection state, and encoding.
   * @param full <tt>true</tt> to reset tabstops.
   * @param clear_history <tt>true</tt> to empty the terminal's scrollback buffer.
   */
  void reset(bool full, bool clear_history);

  /** For instance,
   * bool on_selected(long column, long row);
   *
   * @see get_text(), get_text_include_trailing_spaces(), get_text_range().
   */
  typedef sigc::slot<bool, long /* column */, long /* row */> SlotSelectedCallback;

  /** Convenience callback, which always returns @c true.
   *
   * @see get_text(), get_text_include_trailing_spaces(), get_text_range().
   */
  static bool always_selected(long, long);

  /** Convenience callback, which always returns @c false.
   *
   * @see get_text(), get_text_include_trailing_spaces(), get_text_range().
   */
  static bool never_selected(long, long);

  /** Extracts a view of the visible part of the terminal. Characters will only be
   * read if @a slot returns \c true after being passed the column and row, respectively.
   * A Gnome::Vte::CharAttributes structure is added to Gnome::Vte::TextAndCharAttrs return value for
   * each byte added to the returned string detailing the character's position,
   * colors, and other characteristics. Remember: to get byte representation of
   * gotten text, use std::string.
   * @param slot A slot for callback.
   * @return A Gnome::Vte::TextAndCharAttrs with text that may be empty and stored text
   * attributes.
   */
  TextAndCharAttrs get_text(const SlotSelectedCallback& slot) const;

  /** Extracts a view of the visible part of the terminal. Characters will only be
   * read if @a slot returns \c true after being passed the column and row, respectively.
   * A Gnome::Vte::CharAttributes structure is added to Gnome::Vte::TextAndCharAttrs return value for
   * each byte added to the returned string detailing the character's position,
   * colors, and other characteristics. This function differs from get_text() in that
   * trailing spaces at the end of lines are included. Remember: to get byte
   * representation of gotten text, use std::string.
   * @param slot A slot for callback.
   * @return A Gnome::Vte::TextAndCharAttrs with text that may be empty and stored text
   * attributes.
   */
  TextAndCharAttrs get_text_include_trailing_spaces(const SlotSelectedCallback& slot) const;

  /** Extracts a view of the visible part of the terminal. Characters will only be
   * read if @a slot returns \c true after being passed the column and row, respectively.
   * A Gnome::Vte::CharAttributes structure is added to Gnome::Vte::TextAndCharAttrs return value for
   * each byte added to the returned string detailing the character's position,
   * colors, and other characteristics. The entire scrollback buffer is scanned, so
   * it is possible to read the entire contents of the buffer using this function.
   * Remember: to get byte representation of gotten text, use std::string.
   * @param start_row First row to search for data.
   * @param start_col First column to search for data.
   * @param end_row Last row to search for data.
   * @param end_col Last column to search for data.
   * @param slot A slot for callback.
   * @return A Gnome::Vte::TextAndCharAttrs with text that may be empty and stored text
   * attributes.
   */
  TextAndCharAttrs get_text_range(long start_row, long start_col, long end_row, long end_col, const SlotSelectedCallback& slot) const;

  /** Reads the location of the insertion cursor and returns it.  The row
   * coordinate is absolute.
   * @return Gnome::Vte::CursorPosition instance holding both coordinates.
   */
  CursorPosition get_cursor_position() const;

  
  /** Clears the list of regular expressions the terminal uses to highlight text
   * when the user moves the mouse cursor.
   */
  void match_clear_all();

  
  /** Adds the regular expression @a regex to the list of matching expressions. When the
   * user moves the mouse cursor over a section of displayed text which matches
   * this expression, the text will be highlighted.
   * @param regex A Glib::RefPtr<Glib::Regex>.
   * @param flags The Glib::RegexMatchFlags to use when matching the regex.
   * @return An integer associated with this expression.
   */
  int match_add_gregex(Glib::RefPtr<Glib::Regex> regex, Glib::RegexMatchFlags flags);

  
  /** Sets which cursor the terminal will use if the pointer is over the pattern
   * specified by @a tag. The terminal keeps a reference to @a cursor.
   * @param tag The tag of the regex which should use the specified cursor.
   * @param cursor The Gdk::Cursor which the terminal should use when the pattern is
   * highlighted.
   */
  void match_set_cursor(int tag, Gdk::Cursor& cursor);

  
  /** Sets which cursor the terminal will use if the pointer is over the pattern
   * specified by @a tag.
   * @param tag The tag of the regex which should use the specified cursor.
   * @param cursor_type A Gdk::CursorType.
   */
  void match_set_cursor_type(int tag, Gdk::CursorType cursor_type);

  
  /** Sets which cursor the terminal will use if the pointer is over the pattern
   * specified by @a tag.
   * @param tag The tag of the regex which should use the specified cursor.
   * @param cursor_name The name of the cursor.
   */
  void match_set_cursor_name(int tag, const Glib::ustring& cursor_name);

  
  /** Removes the regular expression which is associated with the given @a tag from
   * the list of expressions which the terminal will highlight when the user
   * moves the mouse cursor over matching text.
   * @param tag The tag of the regex to remove.
   */
  void match_remove(int tag);

  /** Checks if the text in and around the specified position matches any of the
   * regular expressions previously set using match_add_gregex(). If a
   * match exists, the text string and the number associated with the matched regular
   * expression is returned.
   *
   * If more than one regular expression has been set with
   * match_add_gregex(), then expressions are checked in the order in
   * which they were added.
   * @param column The text column.
   * @param row The text row.
   * @return A Gnome::Vte::Match instance holding string which matches one of the
   * previously set regular expressions and a tag of matched regular expression.
   */
  Match match_check(long column, long row);

  
  /** Sets what type of terminal the widget attempts to emulate by scanning for
   * control sequences defined in the system's termcap file.  Unless you
   * are interested in this feature, always use "xterm".
   * @param emulation The name of a terminal description.
   */
  void set_emulation(const Glib::ustring& emulation);

  /** Sets default type of terminal the widget attempts to emulate.
   */
  void set_default_emulation();
  
  /** Queries the terminal for its current emulation, as last set by a call to
   * set_emulation().
   * @return The name of the terminal type the widget is attempting to emulate.
   */
  Glib::ustring get_emulation() const;

  
  /** Queries the terminal for its default emulation, which is attempted if
   * set_default_emulation() is used.
   * @return The name of the default terminal type the widget attempts to emulate.
   */
  Glib::ustring get_default_emulation() const;

  
  /** Changes the encoding the terminal will expect data from the child to
   * be encoded with.  For certain terminal types, applications executing in the
   * terminal can change the encoding.  The default encoding is defined by the
   * application's locale settings.
   * @param codeset A valid Glib::IConv encoding.
   */
  void set_encoding(const std::string& codeset);
  
  /** Determines the name of the encoding in which the terminal expects data to be
   * encoded.
   * @return The current encoding for the terminal.
   */
  std::string get_encoding() const;

  
  /** Some terminal emulations specify a status line which is separate from the
   * main display area, and define a means for applications to move the cursor
   * to the status line and back.
   * @return The current contents of the terminal's status line.  For terminals
   * like "xterm", this will usually be the empty string.
   */
  Glib::ustring get_status_line() const;


#ifndef LIBVTEMM_DISABLE_DEPRECATED
  /** Determines the amount of additional space the widget is using to pad the
   * edges of its visible area. This is necessary for cases where characters in
   * the selected font don't themselves include a padding area and the text
   * itself would otherwise be contiguous with the window border. Applications
   * which use the terminal's row count, column count, char height, and
   * char width to set geometry hints using
   * Gtk::Window::set_geometry_hints() will need to add this value to the base
   * size. The values returned in Gnome::Vte::Padding are the total padding
   * used in each direction, and do not need to be doubled.
   * @return Gnome::Vte::Padding instance holding both paddings.
   *
   * @deprecated Use "inner-border" style property instead.
   */
  Padding get_padding() const;
#endif // LIBVTEMM_DISABLE_DEPRECATED

  
  /** Attach an existing PTY master side to the terminal widget. Use
   * instead of fork_command() or forkpty().
   * @param pty_master A file descriptor of the master end of a PTY.
   */
  void set_pty(int pty_master);

  
  /** Gets the file descriptor, or -1 if the terminal has no PTY.
   * @return The file descriptor, or -1 if the terminal has no PTY.
   */
  int get_pty() const;

  
  /** Gets terminal's adjustment for use in scrollbar for example.
   * @return Terminal's adjustment.
   */
  Gtk::Adjustment& get_adjustment();
  
  /** An accessor function provided for the benefit of language bindings.
   * @return The contents of @a terminal's adjustment field.
   */
  const Gtk::Adjustment& get_adjustment() const;

  
  /** Gets terminal's char width for use in Gdk::Geometry for example.
   * @return Terminal's char width.
   */
  long get_char_width() const;

  
  /** Gets terminal's char height for use in Gdk::Geometry for example.
   * @return Terminal's char height.
   */
  long get_char_height() const;

  
  /** Gets terminal's row count.
   * @return Terminal's row count.
   */
  long get_row_count() const;

  
  /** Gets terminal's column count.
   * @return Terminal's column count.
   */
  long get_column_count() const;

  
  /** Gets terminal's window title.
   * @return Terminal's window title.
   */
  Glib::ustring get_window_title() const;

  
  /** Gets terminal's icon title.
   * @return Terminal's icon title.
   */
  Glib::ustring get_icon_title() const;

  
  /** Gets the exit status of the command started by fork_command().
   * See your C library's documentation for more details on how to interpret the
   * exit status.
   *
   * Note that this function may only be called from the signal handler of
   * the "child-exited" signal.
   * @return The child's exit status.
   */
  int get_child_exit_status() const;

  /** Write contents of the current contents of terminal (including any
   *  scrollback history) to @a stream according to @a flags.
   *
   * The operation can be cancelled by triggering the cancellable object from
   * another thread. If the operation was cancelled, the Gio::Error with
   * CANCELLED will be thrown.
   *
   * This is a synchronous operation and will make the widget (and input
   * processing) during the write operation, which may take a long time
   * depending on scrollback history and @a stream availability for writing.
   *
   * @param stream A Gio::OutputStream to write to.
   * @param cancellable Optional Gio::Cancellable object.
   * @param flags A set of TerminalWriteFlags.
   * @return @c true on success, @c false if there was an error.
   *
   * @newin{0,24}
   */
#ifdef GLIBMM_EXCEPTIONS_ENABLED
  bool write_contents(const Glib::RefPtr<Gio::OutputStream>& stream, const Glib::RefPtr<Gio::Cancellable>& cancellable, TerminalWriteFlags flags = TERMINAL_WRITE_DEFAULT);
#else
  bool write_contents(const Glib::RefPtr<Gio::OutputStream>& stream, const Glib::RefPtr<Gio::Cancellable>& cancellable, TerminalWriteFlags flags, std::auto_ptr<Glib::Error>& error);
#endif //GLIBMM_EXCEPTIONS_ENABLED

  /** Write contents of the current contents of terminal (including any
   *  scrollback history) to @a stream according to @a flags.
   *
   * This is a synchronous operation and will make the widget (and input
   * processing) during the write operation, which may take a long time
   * depending on scrollback history and @a stream availability for writing.
   *
   * @param stream A Gio::OutputStream to write to.
   * @param flags A set of TerminalWriteFlags.
   * @return @c true on success, @c false if there was an error.
   *
   * @newin{0,24}
   */
#ifdef GLIBMM_EXCEPTIONS_ENABLED
  bool write_contents(const Glib::RefPtr<Gio::OutputStream>& stream, TerminalWriteFlags flags = TERMINAL_WRITE_DEFAULT);
#else
  bool write_contents(const Glib::RefPtr<Gio::OutputStream>& stream, TerminalWriteFlags flags, std::auto_ptr<Glib::Error>& error);
#endif //GLIBMM_EXCEPTIONS_ENABLED

  
  /**
   * @par Prototype:
   * <tt>void on_my_%eof()</tt>
   */

  Glib::SignalProxy0< void > signal_eof();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%child_exited()</tt>
   */

  Glib::SignalProxy0< void > signal_child_exited();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%emulation_changed()</tt>
   */

  Glib::SignalProxy0< void > signal_emulation_changed();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%encoding_changed()</tt>
   */

  Glib::SignalProxy0< void > signal_encoding_changed();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%char_size_changed(guint char_width, guint char_height)</tt>
   */

  Glib::SignalProxy2< void,guint,guint > signal_char_size_changed();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%window_title_changed()</tt>
   */

  Glib::SignalProxy0< void > signal_window_title_changed();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%icon_title_changed()</tt>
   */

  Glib::SignalProxy0< void > signal_icon_title_changed();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%selection_changed()</tt>
   */

  Glib::SignalProxy0< void > signal_selection_changed();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%contents_changed()</tt>
   */

  Glib::SignalProxy0< void > signal_contents_changed();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%cursor_moved()</tt>
   */

  Glib::SignalProxy0< void > signal_cursor_moved();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%status_line_changed()</tt>
   */

  Glib::SignalProxy0< void > signal_status_line_changed();

  
  Glib::SignalProxy1< void,const Glib::ustring& > signal_commit();

    
  /**
   * @par Prototype:
   * <tt>void on_my_%deiconify_window()</tt>
   */

  Glib::SignalProxy0< void > signal_deiconify_window();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%iconify_window()</tt>
   */

  Glib::SignalProxy0< void > signal_iconify_window();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%raise_window()</tt>
   */

  Glib::SignalProxy0< void > signal_raise_window();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%lower_window()</tt>
   */

  Glib::SignalProxy0< void > signal_lower_window();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%refresh_window()</tt>
   */

  Glib::SignalProxy0< void > signal_refresh_window();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%restore_window()</tt>
   */

  Glib::SignalProxy0< void > signal_restore_window();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%maximize_window()</tt>
   */

  Glib::SignalProxy0< void > signal_maximize_window();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%resize_window(guint width, guint height)</tt>
   */

  Glib::SignalProxy2< void,guint,guint > signal_resize_window();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%move_window(guint x, guint y)</tt>
   */

  Glib::SignalProxy2< void,guint,guint > signal_move_window();


  /**
   * @par Prototype:
   * <tt>void on_my_%increase_font_size()</tt>
   */

  Glib::SignalProxy0< void > signal_increase_font_size();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%decrease_font_size()</tt>
   */

  Glib::SignalProxy0< void > signal_decrease_font_size();


  /**
   * @par Prototype:
   * <tt>void on_my_%text_modified()</tt>
   */

  Glib::SignalProxy0< void > signal_text_modified();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%text_inserted()</tt>
   */

  Glib::SignalProxy0< void > signal_text_inserted();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%text_deleted()</tt>
   */

  Glib::SignalProxy0< void > signal_text_deleted();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%text_scrolled(int delta)</tt>
   */

  Glib::SignalProxy1< void,int > signal_text_scrolled();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%copy_clipboard()</tt>
   */

  Glib::SignalProxy0< void > signal_copy_clipboard();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%paste_clipboard()</tt>
   */

  Glib::SignalProxy0< void > signal_paste_clipboard();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%set_scroll_adjustments(Gtk::Adjustment& hadjustment, Gtk::Adjustment& vadjustment)</tt>
   */

  Glib::SignalProxy2< void,Gtk::Adjustment&,Gtk::Adjustment& > signal_set_scroll_adjustments();

  
  /**
   * @par Prototype:
   * <tt>void on_my_%beep()</tt>
   */

  Glib::SignalProxy0< void > signal_beep();


  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<bool> property_allow_bold() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<bool> property_allow_bold() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<bool> property_audible_bell() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<bool> property_audible_bell() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<Glib::ustring> property_background_image_file() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Glib::ustring> property_background_image_file() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<Gdk::Pixbuf> property_background_image_pixbuf() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Gdk::Pixbuf> property_background_image_pixbuf() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<double> property_background_opacity() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<double> property_background_opacity() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<double> property_background_saturation() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<double> property_background_saturation() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<Gdk::Color> property_background_tint_color() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Gdk::Color> property_background_tint_color() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<bool> property_background_transparent() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<bool> property_background_transparent() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<TerminalEraseBinding> property_backspace_binding() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<TerminalEraseBinding> property_backspace_binding() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<TerminalCursorBlinkMode> property_cursor_blink_mode() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<TerminalCursorBlinkMode> property_cursor_blink_mode() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<TerminalCursorShape> property_cursor_shape() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<TerminalCursorShape> property_cursor_shape() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<TerminalEraseBinding> property_delete_binding() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<TerminalEraseBinding> property_delete_binding() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<Glib::ustring> property_emulation() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Glib::ustring> property_emulation() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<Glib::ustring> property_encoding() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Glib::ustring> property_encoding() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<Pango::FontDescription> property_font_desc() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Pango::FontDescription> property_font_desc() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Glib::ustring> property_icon_title() const;
#endif //#GLIBMM_PROPERTIES_ENABLED


  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<bool> property_pointer_autohide() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<bool> property_pointer_autohide() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<int> property_pty() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<int> property_pty() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<bool> property_scroll_background() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<bool> property_scroll_background() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<bool> property_scroll_on_keystroke() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<bool> property_scroll_on_keystroke() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<bool> property_scroll_on_output() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<bool> property_scroll_on_output() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<int> property_scrollback_lines() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<int> property_scrollback_lines() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<bool> property_visible_bell() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<bool> property_visible_bell() const;
#endif //#GLIBMM_PROPERTIES_ENABLED

  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Glib::ustring> property_window_title() const;
#endif //#GLIBMM_PROPERTIES_ENABLED


  #ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy<Glib::ustring> property_word_chars() ;
#endif //#GLIBMM_PROPERTIES_ENABLED

#ifdef GLIBMM_PROPERTIES_ENABLED
/** 
   *
   * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
   * the value of the property changes.
   */
  Glib::PropertyProxy_ReadOnly<Glib::ustring> property_word_chars() const;
#endif //#GLIBMM_PROPERTIES_ENABLED


};

} // namespace Vte

} // namespace Gnome


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 Gnome::Vte::Terminal
   */
  Gnome::Vte::Terminal* wrap(VteTerminal* object, bool take_copy = false);
} //namespace Glib


#endif /* _LIBVTEMM_TERMINAL_H */

