// Generated by gmmproc 2.66.7 -- DO NOT MODIFY! #ifndef _GTKMM_PLUG_H #define _GTKMM_PLUG_H #include #include /* 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 #include //Necessary for the X11 Window type. //This file is used only on systems with the X11 backend. //This is available only #ifdef GDKMM_X11_BACKEND_ENABLED. //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 GTKMM_API 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 GTKMM_API 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 GTKMM_API 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 GObject. GtkPlug* gobj() { return reinterpret_cast(gobject_); } /// Provides access to the underlying C GObject. const GtkPlug* gobj() const { return reinterpret_cast(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& 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 true 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 nullptr. */ Glib::RefPtr get_socket_window(); /** Retrieves the socket the plug is embedded in. * * @newin{2,14} * * @return The window of the socket, or nullptr. */ Glib::RefPtr get_socket_window() const; /** true if the plug is embedded in a socket. * * @newin{2,12} * * Default value: false * * @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 > property_socket_window() const; /** * @par Slot Prototype: * void on_my_%embedded() * * 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 */ GTKMM_API Gtk::Plug* wrap(GtkPlug* object, bool take_copy = false); } //namespace Glib #endif /* _GTKMM_PLUG_H */