// Generated by gmmproc 2.54.0 -- DO NOT MODIFY!
#ifndef _GTKMM_PLUG_H
#define _GTKMM_PLUG_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/window.h>
#include <gtk/gtkx.h> //Necessary for the X11 Window type.
//This file is used only on systems with the X11 backend.
//This is available only #ifdef GDK_WINDOWING_X11.
//Otherwise this source file will not be compiled,
//and no class defined in it will be registered by wrap_init().
#ifndef DOXYGEN_SHOULD_SKIP_THIS
using GtkPlug = struct _GtkPlug;
using GtkPlugClass = struct _GtkPlugClass;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace Gtk
{ class Plug_Class; } // namespace Gtk
#endif //DOXYGEN_SHOULD_SKIP_THIS
namespace Gtk
{
//Note that Window (not Gtk::Window) is the (awfully named) type from the X11 header.
//gtkx.h (needed to get GtkPlug and GtkSocket) pulls this in,
//assuming that you will be careful when doing so.
/** Toplevel for embedding into other processes.
*
* Together with Gtk::Socket, Gtk::Plug provides the ability to embed
* widgets from one process into another process in a fashion that is
* transparent to the user. One process creates a Gtk::Socket widget
* and passes the ID of that widget's window to the other process,
* which then creates a Gtk::Plug with that window ID. Any widgets
* contained in the Gtk::Plug then will appear inside the first
* application's window.
*
* The communication between a Gtk::Socket and a Gtk::Plug follows the
* XEmbed protocol. This protocol has also been implemented in other toolkits,
* e.g. Qt, allowing the same level of
* integration when embedding a Qt widget
* in GTK+ or vice versa.
*
* @note
* The Gtk::Plug and Gtk::Socket widgets are only available when GTK+ and gtkmm
* are compiled for the X11 platform and %GDK_WINDOWING_X11 is defined.
* They can only be used on a GdkX11Display.
*/
class Plug : public Window
{
public:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
typedef Plug CppObjectType;
typedef Plug_Class CppClassType;
typedef GtkPlug BaseObjectType;
typedef GtkPlugClass BaseClassType;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
Plug(Plug&& src) noexcept;
Plug& operator=(Plug&& src) noexcept;
// noncopyable
Plug(const Plug&) = delete;
Plug& operator=(const Plug&) = delete;
~Plug() noexcept override;
#ifndef DOXYGEN_SHOULD_SKIP_THIS
private:
friend class Plug_Class;
static CppClassType plug_class_;
protected:
explicit Plug(const Glib::ConstructParams& construct_params);
explicit Plug(GtkPlug* castitem);
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
public:
/** Get the GType for this class, for use with the underlying GObject type system.
*/
static GType get_type() G_GNUC_CONST;
#ifndef DOXYGEN_SHOULD_SKIP_THIS
static GType get_base_type() G_GNUC_CONST;
#endif
///Provides access to the underlying C GtkObject.
GtkPlug* gobj() { return reinterpret_cast<GtkPlug*>(gobject_); }
///Provides access to the underlying C GtkObject.
const GtkPlug* gobj() const { return reinterpret_cast<GtkPlug*>(gobject_); }
public:
//C++ methods used to invoke GTK+ virtual functions:
protected:
//GTK+ Virtual Functions (override these to change behaviour):
//Default Signal Handlers::
/// This is a default handler for the signal signal_embedded().
virtual void on_embedded();
private:
public:
Plug();
explicit Plug(::Window socket_id);
Plug(const Glib::RefPtr<Gdk::Display>& display, ::Window socket_id);
/** Gets the window ID of a Gtk::Plug widget, which can then
* be used to embed this window inside another window, for
* instance with Gtk::Socket::add_id().
*
* @return The window ID for the plug.
*/
::Window get_id() const;
/** Determines whether the plug is embedded in a socket.
*
* @newin{2,14}
*
* @return <tt>true</tt> if the plug is embedded in a socket.
*/
bool get_embedded() const;
/** Retrieves the socket the plug is embedded in.
*
* @newin{2,14}
*
* @return The window of the socket, or <tt>nullptr</tt>.
*/
Glib::RefPtr<Gdk::Window> get_socket_window();
/** Retrieves the socket the plug is embedded in.
*
* @newin{2,14}
*
* @return The window of the socket, or <tt>nullptr</tt>.
*/
Glib::RefPtr<const Gdk::Window> get_socket_window() const;
/** <tt>true</tt> if the plug is embedded in a socket.
*
* @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_embedded() const;
/** The window of the socket the plug is embedded in.
*
* @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::RefPtr<Gdk::Window> > property_socket_window() const;
/**
* @par Slot Prototype:
* <tt>void on_my_%embedded()</tt>
*
* Flags: Run Last
*
* Gets emitted when the plug becomes embedded in a socket.
*/
Glib::SignalProxy< void > signal_embedded();
};
} //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::Plug
*/
Gtk::Plug* wrap(GtkPlug* object, bool take_copy = false);
} //namespace Glib
#endif /* _GTKMM_PLUG_H */