<?xml version="1.0" standalone="no"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">

<refentry id="class-gtkplug">
  <refnamediv>
    <refname>gtk.Plug</refname>
    <refpurpose>A toplevel window for embedding into other
processes.</refpurpose>
  </refnamediv>

  <refsect1>
    <title>Synopsis</title>

    <classsynopsis language="python">
      <ooclass><classname>gtk.Plug</classname></ooclass>
      <ooclass><classname><link
linkend="class-gtkwindow">gtk.Window</link></classname></ooclass>
      <constructorsynopsis language="python">
	<methodname><link
linkend="constructor-gtkplug">gtk.Plug</link></methodname>
	<methodparam><parameter
		       role="keyword">socket_id</parameter></methodparam>
      </constructorsynopsis>
      <methodsynopsis language="python">
	<methodname><link
linkend="method-gtkplug--construct">construct</link></methodname>
	<methodparam><parameter
		       role="keyword">socket_id</parameter></methodparam>
      </methodsynopsis>
      <methodsynopsis language="python">
	<methodname><link
linkend="method-gtkplug--get-id">get_id</link></methodname>
	<methodparam></methodparam>  </methodsynopsis>
      
      <methodsynopsis language="python">
	<methodname><link linkend="method-gtksocket--get-embedded">get_embedded</link></methodname>
	<methodparam></methodparam>
      </methodsynopsis>
      <methodsynopsis language="python">
	<methodname><link linkend="method-gtksocket--get-socket-window">get_socket_window</link></methodname>
	<methodparam></methodparam>
      </methodsynopsis>
    </classsynopsis>
    
    

    <programlisting>
<emphasis role="bold">Functions</emphasis>

<methodsynopsis language="python">
	<methodname><link linkend="function-gtk--plug-new-for-display">gtk.plug_new_for_display</link></methodname>
	<methodparam><parameter role="keyword">display</parameter></methodparam>
	<methodparam><parameter role="keyword">socket_id</parameter></methodparam>
      </methodsynopsis></programlisting>

  </refsect1>

  <refsect1>
    <title>Ancestry</title>

<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
  +-- <link linkend="class-gtkobject">gtk.Object</link>
    +-- <link linkend="class-gtkwidget">gtk.Widget</link>
      +-- <link linkend="class-gtkcontainer">gtk.Container</link>
        +-- <link linkend="class-gtkbin">gtk.Bin</link>
          +-- <link linkend="class-gtkwindow">gtk.Window</link>
            +-- <link linkend="class-gtkplug">gtk.Plug</link>
</synopsis>

  </refsect1>

  <refsect1 id="properties-gtkplug">
    <title>gtk.Plug Properties</title>

    <para><link linkend="properties-gtkobject">gtk.Object Properties</link></para>
    <para><link linkend="properties-gtkwidget">gtk.Widget Properties</link></para>
    <para><link linkend="properties-gtkcontainer">gtk.Container Properties</link></para>
    <para><link linkend="properties-gtkwindow">gtk.Window Properties</link></para>
    
    <blockquote role="properties">
        <informaltable pgwide="1" frame="none">
            <tgroup cols="3">
                <colspec column="1" colwidth="1in"/>
                <colspec column="2" colwidth="1in"/>
                <colspec column="3" colwidth="4in"/>
                <tbody>

                <row valign="top">
                    <entry>"embedded"</entry>
                    <entry>Read</entry>
                    <entry><literal>True</literal> if the plug is embedded in a socket.
                    Default value: <literal>False</literal>
                    Available in GTK+ 2.12.</entry>
                </row>
		<row valign="top">
		    <entry>"socket-window"</entry>
		    <entry>Read</entry>
		    <entry>The window of the socket the plug is embedded in.
		    Available in GTK+ 2.14.
		    </entry>
		</row>
                </tbody>
            </tgroup>
        </informaltable>
    </blockquote>
  </refsect1>

  <refsect1 id="style-properties-gtkplug">
    <title>gtk.Plug Style Properties</title>

    <para><link linkend="style-properties-gtkwidget">gtk.Widget Style Properties</link></para>

  </refsect1>

  <refsect1 id="signal-prototypes-gtkplug">
    <title>gtk.Plug Signal Prototypes</title>

    <para><link linkend="signal-prototypes-gobject">gobject.GObject Signal Prototypes</link></para>
    <para><link linkend="signal-prototypes-gtkobject">gtk.Object Signal Prototypes</link></para>
    <para><link linkend="signal-prototypes-gtkwidget">gtk.Widget Signal Prototypes</link></para>
    <para><link linkend="signal-prototypes-gtkcontainer">gtk.Container Signal Prototypes</link></para>
    <para><link linkend="signal-prototypes-gtkwindow">gtk.Window Signal Prototypes</link></para>

    <variablelist>
      <varlistentry>
        <term>"<link linkend="signal-gtkplug--embedded">embedded</link>"</term>
        <listitem>
          <methodsynopsis language="python"><methodname>callback</methodname>
            <methodparam><parameter>plug</parameter></methodparam>
            <methodparam><parameter>user_param1</parameter></methodparam>
            <methodparam><parameter>...</parameter></methodparam>
          </methodsynopsis>
        </listitem>
      </varlistentry>
    </variablelist>

  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>Together with <link
linkend="class-gtksocket"><classname>gtk.Socket</classname></link>, <link
linkend="class-gtkplug"><classname>gtk.Plug</classname></link> 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 <link
linkend="class-gtksocket"><classname>gtk.Socket</classname></link> widget
and, passes the ID of that widgets window to the other process, which then
creates a <link
linkend="class-gtkplug"><classname>gtk.Plug</classname></link> with that
window ID. Any widgets contained in the <link
linkend="class-gtkplug"><classname>gtk.Plug</classname></link> then will
appear inside the first applications window.</para>

  </refsect1>

  <refsect1 id="constructor-gtkplug">
    <title>Constructor</title>

    <programlisting><constructorsynopsis language="python">
	<methodname>gtk.Plug</methodname>
	<methodparam><parameter
		       role="keyword">socket_id</parameter></methodparam>
      </constructorsynopsis></programlisting>
    <variablelist>
      <varlistentry>
	<term><parameter role="keyword">socket_id</parameter>&nbsp;:</term>
	<listitem><simpara> the window ID of the socket, or
0.</simpara></listitem>
      </varlistentry>
      <varlistentry>
	<term><emphasis>Returns</emphasis>&nbsp;:</term>
	<listitem><simpara>a <link
	linkend="class-gtkwidget"><classname>gtk.Widget</classname></link></simpara></listitem>
      </varlistentry>
    </variablelist>

    <para>Creates a new <link
linkend="class-gtkplug"><classname>gtk.Plug</classname></link> widget inside
the <link linkend="class-gtksocket"><classname>gtk.Socket</classname></link>
identified by <parameter>socket_id</parameter>. If
<parameter>socket_id</parameter> is 0, the plug is left "unplugged" and can
later be plugged into a <link
linkend="class-gtksocket"><classname>gtk.Socket</classname></link> by the
<link
linkend="method-gtksocket--add-id"><methodname>gtk.Socket.add_id</methodname>()</link> 
method.</para>

  </refsect1>

  <refsect1>
    <title>Methods</title>

    <refsect2 id="method-gtkplug--construct">
      <title>gtk.Plug.construct</title>

      <programlisting><methodsynopsis language="python">
	  <methodname>construct</methodname>
	  <methodparam><parameter
			 role="keyword">socket_id</parameter></methodparam>
	</methodsynopsis></programlisting>
      <variablelist>
	<varlistentry>
	  <term><parameter
role="keyword">socket_id</parameter>&nbsp;:</term>
	  <listitem><simpara>the window ID of the
socket</simpara></listitem>
	</varlistentry>
      </variablelist>

      <warning>
	<para>This method is <emphasis>not</emphasis> available in PyGTK 2.2
and above.</para>
      </warning>

      <para>The <methodname>construct</methodname>() method finishes the
initialization of plug for the <link
linkend="class-gtksocket"><classname>gtk.Socket</classname></link>
identified by <parameter>socket_id</parameter>. This method will generally
only be used by subclasses of <link
linkend="class-gtkplug"><classname>gtk.Plug</classname></link>.</para>

    </refsect2>

    <refsect2 id="method-gtkplug--get-id">
      <title>gtk.Plug.get_id</title>

      <programlisting><methodsynopsis language="python">
	  <methodname>get_id</methodname>
	  <methodparam></methodparam>  </methodsynopsis></programlisting>
      <variablelist>
	<varlistentry>
	  <term><emphasis>Returns</emphasis>&nbsp;:</term>
	  <listitem><simpara>the window ID for the plug</simpara></listitem>
	</varlistentry>
      </variablelist>

      <para>The <methodname>get_id</methodname>() method returns the window
ID of the <link
linkend="class-gtkplug"><classname>gtk.Plug</classname></link> widget, which
can be used to embed this window inside another window, for instance with
<link
linkend="method-gtksocket--add-id"><methodname>gtk.Socket.add_id</methodname>()</link>.</para>

    </refsect2>
    
    <refsect2 id="method-gtksocket--get-embedded">
      <title>gtk.Socket.get_embedded</title>

      <programlisting><methodsynopsis language="python">
	  <methodname>get_embedded</methodname>
	  <methodparam></methodparam>  </methodsynopsis></programlisting>
      <variablelist>
	<varlistentry>
	  <term><emphasis>Returns</emphasis>&nbsp;:</term>
	  <listitem><simpara><literal>True</literal> if the plug is embedded in
	  a socket.</simpara></listitem>
	</varlistentry>
      </variablelist>
      
      <note>
	  <para>This method is available in PyGTK 2.14 and above.</para>
      </note>
      
      <para>
	The <methodname>get_embedded</methodname>() method determines whether
	the plug is embedded in a socket.
      </para>

    </refsect2>


  <refsect2 id="method-gtksocket--get-socket-window">
      <title>gtk.Socket.get_socket_window</title>

      <programlisting><methodsynopsis language="python">
	  <methodname>get_socket_window</methodname>
	  <methodparam></methodparam>  </methodsynopsis></programlisting>
      <variablelist>
	<varlistentry>
	  <term><emphasis>Returns</emphasis>&nbsp;:</term>
	  <listitem><simpara>the window of the socket if available, or
	  <literal>None</literal>.</simpara></listitem>
	</varlistentry>
      </variablelist>
      
      <note>
	  <para>This method is available in PyGTK 2.14 and above.</para>
      </note>

      <para>
	The <methodname>get_socket_window</methodname>() method retrieves the
	socket the plug is embedded in.
      </para>

    </refsect2>

  </refsect1>

  <refsect1>
    <title>Functions</title>

    <refsect2 id="function-gtk--plug-new-for-display">
      <title>gtk.plug_new_for_display</title>

      <programlisting><methodsynopsis language="python">
	  <methodname>gtk.plug_new_for_display</methodname>
	  <methodparam><parameter
			 role="keyword">display</parameter></methodparam>
	  <methodparam><parameter
			 role="keyword">socket_id</parameter></methodparam>
	</methodsynopsis></programlisting>
      <variablelist>
	<varlistentry>
	  <term><parameter role="keyword">display</parameter>&nbsp;:</term>
	  <listitem><simpara>the <link
	  linkend="class-gdkdisplay"><classname>gtk.gdk.Display</classname></link>
	  associated with
	  <parameter>socket_id's</parameter>.</simpara></listitem>
	</varlistentry>
	<varlistentry>
	  <term><parameter
	  role="keyword">socket_id</parameter>&nbsp;:</term>
	  <listitem><simpara> the window ID of the socket's
	  window.</simpara></listitem>
	</varlistentry>
	<varlistentry>
	<term><emphasis>Returns</emphasis>&nbsp;:</term>
	  <listitem><simpara>a <link
	  linkend="class-gtkplug"><classname>gtk.Plug</classname></link>
	  object</simpara></listitem>
	</varlistentry>
      </variablelist>

      <note>
	<para>This function is available in PyGTK 2.2 and above.</para>
      </note>

      <para>The <function>gtk.plug_new_for_display</function>() function
creates a new plug widget inside the <link
linkend="class-gtksocket"><classname>gtk.Socket</classname></link> specified
by <parameter>socket_id</parameter> on the <link
linkend="class-gdkdisplay"><classname>gtk.gdk.Display</classname></link>
specified by display.</para>

    </refsect2>

  </refsect1>

  <refsect1>
    <title>Signals</title>

    <refsect2 id="signal-gtkplug--embedded">
      <title>The "embedded" gtk.Plug Signal</title>

      <programlisting><methodsynopsis language="python">
	  <methodname>callback</methodname>
	  <methodparam><parameter>plug</parameter></methodparam>
	  <methodparam><parameter>user_param1</parameter></methodparam>
	  <methodparam><parameter>...</parameter></methodparam>
	</methodsynopsis></programlisting>

      <variablelist>
	<varlistentry>
	  <term><parameter>plug</parameter>&nbsp;:</term>
	  <listitem><simpara>the plug that received the
signal</simpara></listitem>
	</varlistentry>
	<varlistentry>
	  <term><parameter>user_param1</parameter>&nbsp;:</term>
          <listitem><simpara>the first user parameter (if any) specified
with the <link
linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
method</simpara></listitem>
	</varlistentry>
	<varlistentry>
	  <term><parameter>...</parameter>&nbsp;:</term>
	  <listitem><simpara>additional user parameters (if
any)</simpara></listitem>
	</varlistentry>
      </variablelist>

      <para>The "embedded" signal is emitted when the plug window is
reparented to the socket window.</para>

    </refsect2>

  </refsect1>

</refentry>
