<h1>Creating Windows</h1>

A single procedure is used to control the creation and setup of windows with a WebKit view:

<verbatim>
  (make-window URI/CONTENT
               [#:universal-access-from-file-uris? UNIVERSAL-ACCESS-FROM-FILE-URIS?]
               [#:file-access-from-file-uris? FILE-ACCESS-FROM-FILE-URIS?]
               [#:spell-checking? SPELL-CHECKING?]
               [#:clipboard-access? CLIPBOARD-ACCESS?]
               [#:developer-extras? DEVELOPER-EXTRAS?]
               [#:width WIDTH]
               [#:height HEIGHT]
               [#:scrollbar-visible? SCROLLBAR-VISIBLE?]
               [#:status-visible? STATUS-VISIBLE?]
               [#:fullscreen? FULLSCREEN?]
               [#:initialize! INITIALIZE!]
               [#:yield-interval YIELD-INTERVAL]
               [#:timeout TIMEOUT])
    => WINDOW/VOID
</verbatim>

The procedure takes the following steps:

  #  A new Gtk+ window is created, which contains a scrolled WebKit view and a status bar.
  #  The WebKit view is initialized using the parameters <tt>UNIVERSAL-ACCESS-FROM-FILE-URIS?</tt> (default <tt>#f</tt>), <tt>FILE-ACCESS-FROM-FILE-URIS?</tt> (default <tt>#f</tt>), <tt>SPELL-CHECKING?</tt> (default <tt>#t</tt>), <tt>CLIPBOARD-ACCESS?</tt> (default <tt>#f</tt>) and <tt>DEVELOPER-EXTRAS?</tt> (default <tt>#f</tt>). The exact meaning of these parameters is documented in the Reference Manual].
  #  The window around the WebKit view is initialized using the parameters <tt>WIDTH</tt> (default <tt>-1</tt> or "natural" size), <tt>HEIGHT</tt> (default <tt>-1</tt> or "natural" size) and <tt>FULLSCREEN?</tt> (default <tt>#f</tt>), the scrollbars around the WebKit view are enabled iff <tt>SCROLLBAR-VISIBLE?</tt> is true (default <tt>#t</tt>) and the status bar below the WebKit view is shown iff <tt>STATUS-VISIBLE?</tt> is true (default <tt>#t</tt>).
  #  Content is loaded into the WebKit view as specified by — if this parameter is a string, it is used as a URI, otherwise it must be a list of the form <verbatim>(CONTENT [#:mime-type MIME-TYPE] [#:encoding ENCODING] [#:base-uri BASE-URI])</verbatim> where <tt>CONTENT</tt> is a string and the optional arguments <tt>MIME-TYPE</tt> (default <tt>#f</tt>), <tt>ENCODING</tt> (default <tt>#f</tt>) and <tt>BASE-URI</tt> (default <tt>#f</tt>) determine how the content is interpreted.
  #  It is ensured that the new window becomes visible.
  #  If <tt>INITIALIZE!</tt> is <tt>#f</tt> (the default), <tt>make-window</tt> enters the Gtk+ main loop and waits for the WebKit view to initialize a JavaScript context for its content document. If that happens, the main loop is terminated and <tt>make-window</tt> returns the wrapped DOM window object of the loaded document. If the <tt>TIMEOUT</tt> (default <tt>#f</tt>) expires before that happens, <tt>make-window</tt> returns <tt>#f</tt>. The <tt>TIMEOUT</tt> can be a number of seconds or a SRFI-18 time object. The <tt>YIELD-INTERVAL</tt> (default <tt>0.5</tt>) is passed on to the main loop.
  #  If <tt>INITIALIZE!</tt> is true, it is applied to the wrapped DOM window object of the loaded document when it becomes available and the main loop is running. <tt>make-window</tt> simply returns <tt>#f</tt> in that case without waiting for this condition.

For information how to use the wrapped window object, see [Dealing with JavaScript Objects], for information about the Gtk+ main loop see [Running the Main Loop].