<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="Gtk" version="3.0"/>
  <include name="SpiceClientGLib" version="2.0"/>
  <package name="spice-client-gtk-3.0"/>
  <c:include name="spice-widget.h"/>
  <namespace name="SpiceClientGtk"
             version="3.0"
             shared-library="libspice-client-gtk-3.0.so.5,libspice-client-glib-2.0.so.8"
             c:identifier-prefixes="Spice"
             c:symbol-prefixes="spice">
    <class name="Display"
           c:symbol-prefix="display"
           c:type="SpiceDisplay"
           parent="Gtk.EventBox"
           glib:type-name="SpiceDisplay"
           glib:get-type="spice_display_get_type"
           glib:type-struct="DisplayClass">
      <doc xml:space="preserve">The #SpiceDisplay struct is opaque and should not be accessed directly.</doc>
      <implements name="Atk.ImplementorIface"/>
      <implements name="Gtk.Buildable"/>
      <constructor name="new" c:identifier="spice_display_new">
        <doc xml:space="preserve">Creates a new #SpiceDisplay widget.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #SpiceDisplay widget.</doc>
          <type name="Display" c:type="SpiceDisplay*"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve">a #SpiceSession</doc>
            <type name="SpiceClientGLib.Session" c:type="SpiceSession*"/>
          </parameter>
          <parameter name="channel_id" transfer-ownership="none">
            <doc xml:space="preserve">the display channel ID to associate with #SpiceDisplay</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_monitor"
                   c:identifier="spice_display_new_with_monitor"
                   version="0.13">
        <doc xml:space="preserve">Creates a new #SpiceDisplay widget associated with the monitor id.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #SpiceDisplay widget.</doc>
          <type name="Display" c:type="SpiceDisplay*"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve">a #SpiceSession</doc>
            <type name="SpiceClientGLib.Session" c:type="SpiceSession*"/>
          </parameter>
          <parameter name="channel_id" transfer-ownership="none">
            <doc xml:space="preserve">the display channel ID to associate with #SpiceDisplay</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="monitor_id" transfer-ownership="none">
            <doc xml:space="preserve">the monitor id within the display channel</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_grab_keys" c:identifier="spice_display_get_grab_keys">
        <doc xml:space="preserve">Finds the current grab key combination for the @display.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current grab key combination.</doc>
          <type name="GrabSequence" c:type="SpiceGrabSequence*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">the display widget</doc>
            <type name="Display" c:type="SpiceDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pixbuf" c:identifier="spice_display_get_pixbuf">
        <doc xml:space="preserve">Take a screenshot of the display.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GdkPixbuf with the screenshot image buffer</doc>
          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #SpiceDisplay</doc>
            <type name="Display" c:type="SpiceDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="mouse_ungrab" c:identifier="spice_display_mouse_ungrab">
        <doc xml:space="preserve">Ungrab the mouse.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">a #SpiceDisplay</doc>
            <type name="Display" c:type="SpiceDisplay*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="send_keys" c:identifier="spice_display_send_keys">
        <doc xml:space="preserve">Send keyval press/release events to the display.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">The #SpiceDisplay</doc>
            <type name="Display" c:type="SpiceDisplay*"/>
          </instance-parameter>
          <parameter name="keyvals" transfer-ownership="none">
            <doc xml:space="preserve">Keyval array</doc>
            <array length="1" zero-terminated="0" c:type="const guint*">
              <type name="guint" c:type="guint"/>
            </array>
          </parameter>
          <parameter name="nkeyvals" transfer-ownership="none">
            <doc xml:space="preserve">Length of keyvals</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">#SpiceDisplayKeyEvent action</doc>
            <type name="DisplayKeyEvent" c:type="SpiceDisplayKeyEvent"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_grab_keys" c:identifier="spice_display_set_grab_keys">
        <doc xml:space="preserve">Set the key combination to grab/ungrab the keyboard. The default is
"Control L + Alt L".</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve">the display widget</doc>
            <type name="Display" c:type="SpiceDisplay*"/>
          </instance-parameter>
          <parameter name="seq" transfer-ownership="none">
            <doc xml:space="preserve">key sequence</doc>
            <type name="GrabSequence" c:type="SpiceGrabSequence*"/>
          </parameter>
        </parameters>
      </method>
      <property name="channel-id"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">channel-id for this #SpiceDisplay</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="disable-inputs"
                version="0.8"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Disable all keyboard &amp; mouse inputs.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="grab-keyboard"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="grab-mouse"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="keypress-delay"
                version="0.13"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Delay in ms of non-modifiers key press events. If the key is
released before this delay, a single press &amp; release event is
sent to the server. If the key is pressed longer than the
keypress-delay, the server will receive the delayed press
event, and a following release event when the key is released.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="monitor-id"
                version="0.13"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Select monitor from #SpiceDisplay to show.
The value -1 means the whole display is shown.
By default, the monitor 0 is selected.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="only-downscale"
                version="0.14"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">If scaling, only scale down, never up.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="ready" version="0.13" transfer-ownership="none">
        <doc xml:space="preserve">Indicate whether the display is ready to be shown. It takes
into account several conditions, such as the channel display
"mark" state, whether the monitor area is visible..</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="resize-guest"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="scaling"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="session"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">#SpiceSession for this #SpiceDisplay</doc>
        <type name="SpiceClientGLib.Session"/>
      </property>
      <property name="zoom-level"
                version="0.10"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Zoom level in percentage, from 10 to 400. Default to 100.
(this option is only supported with cairo backend when scaling
is enabled)</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <glib:signal name="grab-keys-pressed" when="first">
        <doc xml:space="preserve">Notify when the grab keys have been pressed</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="keyboard-grab" when="first">
        <doc xml:space="preserve">Notify when the keyboard grab is active or not.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve">1 if grabbed, 0 otherwise.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="mouse-grab" when="first">
        <doc xml:space="preserve">Notify when the mouse grab is active or not.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve">1 if grabbed, 0 otherwise.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="DisplayClass"
            c:type="SpiceDisplayClass"
            disguised="1"
            glib:is-gtype-struct-for="Display">
      <doc xml:space="preserve">Class structure for #SpiceDisplay. It is opaque and should not be accessed directly.</doc>
    </record>
    <enumeration name="DisplayKeyEvent"
                 glib:type-name="SpiceDisplayKeyEvent"
                 glib:get-type="spice_display_key_event_get_type"
                 c:type="SpiceDisplayKeyEvent">
      <doc xml:space="preserve">Constants for key events.</doc>
      <member name="press"
              value="1"
              c:identifier="SPICE_DISPLAY_KEY_EVENT_PRESS"
              glib:nick="press">
        <doc xml:space="preserve">key press</doc>
      </member>
      <member name="release"
              value="2"
              c:identifier="SPICE_DISPLAY_KEY_EVENT_RELEASE"
              glib:nick="release">
        <doc xml:space="preserve">key release</doc>
      </member>
      <member name="click"
              value="3"
              c:identifier="SPICE_DISPLAY_KEY_EVENT_CLICK"
              glib:nick="click">
        <doc xml:space="preserve">key click (press and release)</doc>
      </member>
    </enumeration>
    <record name="GrabSequence"
            c:type="SpiceGrabSequence"
            glib:type-name="SpiceGrabSequence"
            glib:get-type="spice_grab_sequence_get_type"
            c:symbol-prefix="grab_sequence">
      <doc xml:space="preserve">An opaque type that represents a grab sequence.</doc>
      <constructor name="new" c:identifier="spice_grab_sequence_new">
        <doc xml:space="preserve">Creates a new grab sequence from a list of keysym values</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new grab sequence object</doc>
          <type name="GrabSequence" c:type="SpiceGrabSequence*"/>
        </return-value>
        <parameters>
          <parameter name="nkeysyms" transfer-ownership="none">
            <doc xml:space="preserve">length of @keysyms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="keysyms" transfer-ownership="none">
            <doc xml:space="preserve">the keysym values</doc>
            <array length="0" zero-terminated="0" c:type="guint*">
              <type name="guint" c:type="guint"/>
            </array>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_string"
                   c:identifier="spice_grab_sequence_new_from_string">
        <doc xml:space="preserve">Creates a new #SpiceGrabSequence from the string representation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #SpiceGrabSequence.</doc>
          <type name="GrabSequence" c:type="SpiceGrabSequence*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">a string of '+' separated key names (ex: "Control_L+Alt_L")</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="as_string" c:identifier="spice_grab_sequence_as_string">
        <doc xml:space="preserve">Creates a string representing the @sequence.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string representing the key sequence</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="sequence" transfer-ownership="none">
            <doc xml:space="preserve">a #SpiceGrabSequence</doc>
            <type name="GrabSequence" c:type="SpiceGrabSequence*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="spice_grab_sequence_copy">
        <doc xml:space="preserve">Creates a copy of the @sequence.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a copy of @sequence</doc>
          <type name="GrabSequence" c:type="SpiceGrabSequence*"/>
        </return-value>
        <parameters>
          <instance-parameter name="sequence" transfer-ownership="none">
            <doc xml:space="preserve">sequence to copy</doc>
            <type name="GrabSequence" c:type="SpiceGrabSequence*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="spice_grab_sequence_free">
        <doc xml:space="preserve">Free @sequence.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sequence" transfer-ownership="none">
            <doc xml:space="preserve">a #SpiceGrabSequence</doc>
            <type name="GrabSequence" c:type="SpiceGrabSequence*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="GtkSession"
           c:symbol-prefix="gtk_session"
           c:type="SpiceGtkSession"
           parent="GObject.Object"
           glib:type-name="SpiceGtkSession"
           glib:get-type="spice_gtk_session_get_type"
           glib:type-struct="GtkSessionClass">
      <doc xml:space="preserve">The #SpiceGtkSession struct is opaque and should not be accessed directly.</doc>
      <function name="get" c:identifier="spice_gtk_session_get">
        <doc xml:space="preserve">Gets the #SpiceGtkSession associated with the passed in #SpiceSession.
A new #SpiceGtkSession instance will be created the first time this
function is called for a certain #SpiceSession.

Note that this function returns a weak reference, which should not be used
after the #SpiceSession itself has been unref-ed by the caller.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a weak reference to the #SpiceGtkSession associated with the passed in #SpiceSession

Since 0.8</doc>
          <type name="GtkSession" c:type="SpiceGtkSession*"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve">#SpiceSession for which to get the #SpiceGtkSession</doc>
            <type name="SpiceClientGLib.Session" c:type="SpiceSession*"/>
          </parameter>
        </parameters>
      </function>
      <method name="copy_to_guest"
              c:identifier="spice_gtk_session_copy_to_guest">
        <doc xml:space="preserve">Copy client-side clipboard to guest clipboard.

Since 0.8</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">#SpiceGtkSession</doc>
            <type name="GtkSession" c:type="SpiceGtkSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="paste_from_guest"
              c:identifier="spice_gtk_session_paste_from_guest">
        <doc xml:space="preserve">Copy guest clipboard to client-side clipboard.

Since 0.8</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">#SpiceGtkSession</doc>
            <type name="GtkSession" c:type="SpiceGtkSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="auto-clipboard"
                version="0.8"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">When this is true the clipboard gets automatically shared between host
and guest.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="auto-usbredir"
                version="0.8"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Automatically redirect newly plugged in USB devices. Note the auto
redirection only happens when a #SpiceDisplay associated with the
session had keyboard focus.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="pointer-grabbed"
                version="0.27"
                transfer-ownership="none">
        <doc xml:space="preserve">Returns %TRUE if the pointer is currently grabbed by this session.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="session"
                version="0.8"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">#SpiceSession this #SpiceGtkSession is associated with</doc>
        <type name="SpiceClientGLib.Session"/>
      </property>
      <property name="sync-modifiers"
                version="0.32"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Automatically sync modifiers (Caps, Num and Scroll locks) with the guest.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
    </class>
    <record name="GtkSessionClass"
            c:type="SpiceGtkSessionClass"
            disguised="1"
            glib:is-gtype-struct-for="GtkSession">
      <doc xml:space="preserve">Class structure for #SpiceGtkSession. It is opaque and should not be accessed directly.</doc>
    </record>
    <class name="UsbDeviceWidget"
           c:symbol-prefix="usb_device_widget"
           c:type="SpiceUsbDeviceWidget"
           parent="Gtk.Box"
           glib:type-name="SpiceUsbDeviceWidget"
           glib:get-type="spice_usb_device_widget_get_type"
           glib:type-struct="UsbDeviceWidgetClass">
      <doc xml:space="preserve">The #SpiceUsbDeviceWidget struct is opaque and should not be accessed directly.</doc>
      <implements name="Atk.ImplementorIface"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.Orientable"/>
      <constructor name="new" c:identifier="spice_usb_device_widget_new">
        <doc xml:space="preserve">Creates a new widget to control USB redirection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #SpiceUsbDeviceWidget instance</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve">#SpiceSession for which to widget will control USB redirection</doc>
            <type name="SpiceClientGLib.Session" c:type="SpiceSession*"/>
          </parameter>
          <parameter name="device_format_string"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">String passed to
spice_usb_device_get_description()</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="device-format-string"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Format string to pass to spice_usb_device_get_description() for getting
the device USB descriptions.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="session"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">#SpiceSession this #SpiceUsbDeviceWidget is associated with</doc>
        <type name="SpiceClientGLib.Session"/>
      </property>
      <glib:signal name="connect-failed" when="first">
        <doc xml:space="preserve">The #SpiceUsbDeviceWidget::connect-failed signal is emitted whenever
the user has requested for a device to be redirected and this has
failed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve">#SpiceUsbDevice boxed object corresponding to the added device</doc>
            <type name="SpiceClientGLib.UsbDevice"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">#GError describing the reason why the connect failed</doc>
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="UsbDeviceWidgetClass"
            c:type="SpiceUsbDeviceWidgetClass"
            disguised="1"
            glib:is-gtype-struct-for="UsbDeviceWidget">
      <doc xml:space="preserve">Class structure for #SpiceUsbDeviceWidget. It is opaque and should not be accessed directly.</doc>
    </record>
    <record name="UsbDeviceWidgetPrivate"
            c:type="SpiceUsbDeviceWidgetPrivate"
            disguised="1">
    </record>
  </namespace>
</repository>
