diff --git a/collects/browser/browser.scrbl b/collects/browser/browser.scrbl index 4a1032c9b2..aacb2bb56a 100644 --- a/collects/browser/browser.scrbl +++ b/collects/browser/browser.scrbl @@ -23,24 +23,24 @@ @title{@bold{Browser}: Simple HTML Rendering} -The @schememodname[browser] library provides the following -procedures and classes for parsing and viewing HTML files. The -@schememodname[browser/htmltext] library provides a simplified -interface for rendering to a subclass of the MrEd @scheme[text%] -class. The @schememodname[browser/external] library provides utilities -for launching an external browser (such as Firefox). +The @schememodname[browser] library provides the following procedures +and classes for parsing and viewing HTML files. The +@schememodname[browser/htmltext] library provides a simplified interface +for rendering to a subclass of the MrEd @scheme[text%] class. The +@schememodname[browser/external] library provides utilities for +launching an external browser (such as Firefox). @section[#:tag "browser"]{Browser} @defmodule[browser] -The browser supports basic HTML commands, plus special Scheme -hyperlinks of the form @(litchar "..."). When -the user clicks on such a link, the string @scheme[sexpr] is parsed as -a Scheme program and evaluated. Since @scheme[sexpr] is likely to -contain Scheme strings, and since escape characters are difficult for -people to read, a @litchar{|} character in @scheme[sexpr] is -converted to a @litchar{"} character before it is parsed. Thus, +The browser supports basic HTML commands, plus special Scheme hyperlinks +of the form @litchar{...}. When the user clicks +on such a link, the string @scheme[sexpr] is parsed as a Scheme program +and evaluated. Since @scheme[sexpr] is likely to contain Scheme +strings, and since escape characters are difficult for people to read, a +@litchar{|} character in @scheme[sexpr] is converted to a @litchar{"} +character before it is parsed. Thus, @verbatim[#:indent 2]{ Nowhere @@ -49,214 +49,211 @@ converted to a @litchar{"} character before it is parsed. Thus, creates a ``Nowhere'' hyperlink, which executes the Scheme program @schemeblock[ -"This goes nowhere." + "This goes nowhere." ] -The value of that program is a string. When a Scheme hyperlink returns -a string, it is parsed as a new HTML document. Thus, where the use +The value of that program is a string. When a Scheme hyperlink returns +a string, it is parsed as a new HTML document. Thus, where the use clicks on ``Nowhere,'' the result is a new page that says ``This goes nowhere.'' -The browser also treats comment forms containing @(litchar "MZSCHEME=sexpr") -specially. Whereas the @(litchar "...") form executes the -expression when the user clicks, the @(litchar "MZSCHEME") expression in a comment -is executed immediately during HTML rendering. If the result is a -string, the comment is replaced in the input HTML stream with the -content of the string. Thus, +The browser also treats comment forms containing +@litchar{MZSCHEME=sexpr} specially. Whereas the +@litchar{...} form executes the expression when +the user clicks, the @litchar{MZSCHEME} expression in a comment is +executed immediately during HTML rendering. If the result is a string, +the comment is replaced in the input HTML stream with the content of the +string. Thus, @verbatim[#:indent 2]{ } inserts the path of the current working directory into the containing -document (and ``Here'' is boldfaced). If the result is a snip instead -of a string, it replaces the comment in the document. Other types of +document (and ``Here'' is boldfaced). If the result is a snip instead +of a string, it replaces the comment in the document. Other types of return values are ignored. -If the html file is being accessed as a @(litchar "file:") url, the +If the html file is being accessed as a @litchar{file:} url, the @scheme[current-load-relative-directory] parameter is set to the directory during the evaluation of the mzscheme code (in both -examples). The Scheme code is executed through @scheme[eval]. +examples). The Scheme code is executed through @scheme[eval]. -The @(litchar "MZSCHEME") forms are disabled unless the web page is a -@(litchar "file:") url that points into the @scheme[doc] collection. +The @litchar{MZSCHEME} forms are disabled unless the web page is a +@litchar{file:} url that points into the @scheme[doc] collection. @defproc[(open-url [url (or/c url? string? input-port?)]) (is-a?/c hyper-frame%)]{ - Opens the given url - in a vanilla browser frame and returns - the frame. The frame is an instance of - @scheme[hyper-frame%]. + Opens the given url in a vanilla browser frame and returns the + frame. The frame is an instance of @scheme[hyper-frame%]. } @defboolparam[html-img-ok ok?]{ - A parameter that determines whether the browser attempts to - download and render images. + A parameter that determines whether the browser attempts to download + and render images. } @defboolparam[html-eval-ok ok?]{ - A parameter that determines whether @(litchar "MZSCHEME=") - tags are evaluated. + A parameter that determines whether @litchar{MZSCHEME=} tags are + evaluated. } @; ---------------------------------------------------------------------- @defmixin[hyper-frame-mixin (frame%) ()]{ - @defconstructor/auto-super[([url (or/c url? string? input-port?)])]{ - Shows the frame and visits @scheme[url]. - } + @defconstructor/auto-super[([url (or/c url? string? input-port?)])]{ + Shows the frame and visits @scheme[url]. + } - @defmethod[(get-hyper-panel%) (subclass?/c panel%)]{ - Returns the class that is instantiated when the frame is created. - Must be a panel with hyper-panel-mixin mixed in. Defaults to - just returning @scheme[hyper-panel%]. - } + @defmethod[(get-hyper-panel%) (subclass?/c panel%)]{ + Returns the class that is instantiated when the frame is created. + Must be a panel with hyper-panel-mixin mixed in. Defaults to just + returning @scheme[hyper-panel%]. + } - @defmethod[(get-hyper-panel) (is-a?/c panel%)]{ - Returns the hyper panel in this frame. - } + @defmethod[(get-hyper-panel) (is-a?/c panel%)]{ + Returns the hyper panel in this frame. + } } @; ---------------------------------------------------------------------- -@defclass[hyper-no-show-frame% (hyper-frame-mixin (frame:status-line-mixin frame:basic%)) ()] +@defclass[hyper-no-show-frame% + (hyper-frame-mixin (frame:status-line-mixin frame:basic%)) + ()] @; ---------------------------------------------------------------------- @defmixin[hyper-no-show-frame-mixin (frame%) ()]{ - The same as the @scheme[hyper-frame-mixin], except that it - doesn't show the frame and the initialization arguments - are unchanged. + The same as the @scheme[hyper-frame-mixin], except that it doesn't + show the frame and the initialization arguments are unchanged. } @; ---------------------------------------------------------------------- -@defclass[hyper-frame% (hyper-no-show-frame-mixin (frame:status-line-mixin frame:basic%)) ()] +@defclass[hyper-frame% + (hyper-no-show-frame-mixin (frame:status-line-mixin frame:basic%)) + ()] @; ---------------------------------------------------------------------- @defmixin[hyper-text-mixin (text%) ()]{ - An instance of a @scheme[hyper-text-mixin]-extended class - should be displayed only in an instance of a class created - with @scheme[hyper-canvas-mixin]. + An instance of a @scheme[hyper-text-mixin]-extended class should be + displayed only in an instance of a class created with + @scheme[hyper-canvas-mixin]. - @defconstructor/auto-super[([url (or/c url? string? input-port?)] - [status-frame (or/c (is-a?/c top-level-window<%>) false/c)] - [post-data (or/c false/c bytes?)])]{ - The @scheme[url] is loaded into the @scheme[text%] object - (using the @method[hyper-text-mixin reload] method), a - top-level window for status messages and dialogs, a progress - procedure used as for @scheme[get-url], and either @scheme[#f] - or a post string to be sent to a web server (technically - changing the GET to a POST). + @defconstructor/auto-super[([url (or/c url? string? input-port?)] + [status-frame + (or/c (is-a?/c top-level-window<%>) false/c)] + [post-data (or/c false/c bytes?)])]{ + The @scheme[url] is loaded into the @scheme[text%] object (using the + @method[hyper-text-mixin reload] method), a top-level window for + status messages and dialogs, a progress procedure used as for + @scheme[get-url], and either @scheme[#f] or a post string to be sent + to a web server (technically changing the GET to a POST). - Sets the autowrap-bitmap to @scheme[#f]. - } + Sets the autowrap-bitmap to @scheme[#f]. + } - @defmethod[(map-shift-style [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?] - [shift-style style<%>]) - void?]{ - Maps the given style over the given range. - } + @defmethod[(map-shift-style [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?] + [shift-style style<%>]) + void?]{ + Maps the given style over the given range. + } - @defmethod[(make-link-style [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?]) - void?]{ - Changes the style for the given range to the link style. - } + @defmethod[(make-link-style [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?]) + void?]{ + Changes the style for the given range to the link style. + } - @defmethod[(get-url) (or/c url? string? input-port? false/c)]{ - Returns the URL displayed by the editor, or @scheme[#f] if there - is none. - } + @defmethod[(get-url) (or/c url? string? input-port? false/c)]{ + Returns the URL displayed by the editor, or @scheme[#f] if there is + none. + } - @defmethod[(get-title) string?]{ - Gets the page's title. - } + @defmethod[(get-title) string?]{ + Gets the page's title. + } - @defmethod[(set-title [str string?]) void?]{ - Sets the page's title. - } + @defmethod[(set-title [str string?]) void?]{ + Sets the page's title. + } - @defmethod[(hyper-delta) style-delta%]{ - Override this method to set the link style. - } + @defmethod[(hyper-delta) style-delta%]{ + Override this method to set the link style. + } - @defmethod[(add-tag [name string?] [pos exact-nonnegative-integer?]) void?]{ - Installs a tag. - } + @defmethod[(add-tag [name string?] [pos exact-nonnegative-integer?]) void?]{ + Installs a tag. + } - @defmethod[(find-tag [name/number (or/c string? exact-nonnegative-integer?)]) - (or/c exact-nonnegative-integer? false/c)]{ - Finds the location of a tag in the buffer (where tags - are installed in HTML with @(litchar "")) and returns its position. If - @scheme[name] is a number, the number is returned - (assumed to be an offset rather than a - tag). Otherwise, if the tag is not found, @scheme[#f] - is returned. - } + @defmethod[(find-tag [name/number (or/c string? exact-nonnegative-integer?)]) + (or/c exact-nonnegative-integer? false/c)]{ + Finds the location of a tag in the buffer (where tags are installed + in HTML with @litchar{}) and returns its position. + If @scheme[name] is a number, the number is returned (assumed to be + an offset rather than a tag). Otherwise, if the tag is not found, + @scheme[#f] is returned. + } - @defmethod[(remove-tag [name string?]) void?]{ - Removes a tag. - } + @defmethod[(remove-tag [name string?]) void?]{ + Removes a tag. + } - @defmethod[(post-url [url (or/c string? url?)] - [post-data-bytes (or/c bytes? false/c) #f]) void?]{ - Follows the link, optionally with the given post data. - } + @defmethod[(post-url [url (or/c string? url?)] + [post-data-bytes (or/c bytes? false/c) #f]) void?]{ + Follows the link, optionally with the given post data. + } - @defmethod[(add-link [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?] - [url (or/c url? string?)]) - void?]{ - Installs a hyperlink. - } + @defmethod[(add-link [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?] + [url (or/c url? string?)]) + void?]{ + Installs a hyperlink. + } - @defmethod[(add-scheme-callback [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?] - [scheme-expr string?]) - void?]{ - Installs a Scheme evaluation hyperlink. - } + @defmethod[(add-scheme-callback [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?] + [scheme-expr string?]) + void?]{ + Installs a Scheme evaluation hyperlink. + } - @defmethod[(add-thunk-callback [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?] - [thunk (-> any)]) - void?]{ - Installs a thunk-based hyperlink. - } + @defmethod[(add-thunk-callback [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?] + [thunk (-> any)]) + void?]{ + Installs a thunk-based hyperlink. + } - @defmethod[(eval-scheme-string [str string?]) any]{ - Called to handle the @(litchar "...") - tag and @(litchar "") comments (see above). - Evaluates the string; if the result is a string, - it is opened as an HTML page. - } + @defmethod[(eval-scheme-string [str string?]) any]{ + Called to handle the @litchar{...} tag and + @litchar{} comments (see above). Evaluates the + string; if the result is a string, it is opened as an HTML page. + } - @defmethod[(reload) void?]{ - Reloads the current page. + @defmethod[(reload) void?]{ + Reloads the current page. - The text defaultly uses the basic style named - @scheme["Html Standard"] in the editor (if it exists). - } + The text defaultly uses the basic style named + @scheme["Html Standard"] in the editor (if it exists). + } - @defmethod[(remap-url [url (or/c url? string?)]) (or/c url? string?)]{ - When visiting a new page, this method is called to remap - the url. The remapped url is used in place of the - original url. If this method returns @scheme[#f], the page doesn't - go anywhere. + @defmethod[(remap-url [url (or/c url? string?)]) (or/c url? string?)]{ + When visiting a new page, this method is called to remap the url. + The remapped url is used in place of the original url. If this + method returns @scheme[#f], the page doesn't go anywhere. - This method may be killed (if the user clicks the - ``stop'' button). - } - - @defmethod[(get-hyper-keymap) (is-a?/c keymap%)]{ - Returns a keymap suitable for frame-level handling of events to - redirect page-up, @|etc| to the browser canvas. - } + This method may be killed (if the user clicks the ``stop'' button). + } + + @defmethod[(get-hyper-keymap) (is-a?/c keymap%)]{ + Returns a keymap suitable for frame-level handling of events to + redirect page-up, @|etc| to the browser canvas. + } } @@ -264,8 +261,8 @@ The @(litchar "MZSCHEME") forms are disabled unless the web page is a @defclass[hyper-text% (hyper-text-mixin text:keymap%) ()]{ - Extends the @scheme[text:keymap%] class to support standard - key bindings in the browser window. + Extends the @scheme[text:keymap%] class to support standard key + bindings in the browser window. } @@ -273,135 +270,130 @@ The @(litchar "MZSCHEME") forms are disabled unless the web page is a @defmixin[hyper-canvas-mixin (editor-canvas%) ()]{ - A @scheme[hyper-can-mixin]-extended canvas's parent should be - an instance of a class derived with - @scheme[hyper-panel-mixin]. + A @scheme[hyper-can-mixin]-extended canvas's parent should be an + instance of a class derived with @scheme[hyper-panel-mixin]. - @defconstructor/auto-super[()]{ - } + @defconstructor/auto-super[()]{ + } - @defmethod[(get-editor%) (subclass?/c text%)]{ + @defmethod[(get-editor%) (subclass?/c text%)]{ - Returns the class used to implement the editor in the browser - window. It should be derived from @scheme[hyper-text%] and - should pass on the initialization arguments to - @scheme[hyper-text%]. + Returns the class used to implement the editor in the browser + window. It should be derived from @scheme[hyper-text%] and should + pass on the initialization arguments to @scheme[hyper-text%]. - The dynamic extent of the initialization of this - editor is called on a thread that may be killed (via a - custodian shutdown). In that case, the editor in the browser's - editor-canvas may not be an instance of this class. - } + The dynamic extent of the initialization of this editor is called on + a thread that may be killed (via a custodian shutdown). In that + case, the editor in the browser's editor-canvas may not be an + instance of this class. + } - @defmethod[(current-page) any/c]{ - Returns a representation of the currently displayed page, which - includes a particular editor and a visible range within the - editor. - } + @defmethod[(current-page) any/c]{ + Returns a representation of the currently displayed page, which + includes a particular editor and a visible range within the editor. + } - @defmethod[(goto-url [url (or/c url? string?)] - [relative-to-url (or/c url? string? false/c)] - [progress-proc (boolean? . -> . any) void] - [post-data (or/c bytes? false/c) #f]) - void?]{ - Changes to the given url, loading it by calling the @scheme[make-editor] - method. If @scheme[relative-to-url] is not @scheme[#f], it must be - a URL for resolving @scheme[url] as a relative URL. - @scheme[url] may also be a port, in which case, - @scheme[relative-to-url] must be @scheme[#f]. + @defmethod[(goto-url [url (or/c url? string?)] + [relative-to-url (or/c url? string? false/c)] + [progress-proc (boolean? . -> . any) void] + [post-data (or/c bytes? false/c) #f]) + void?]{ + Changes to the given url, loading it by calling the + @scheme[make-editor] method. If @scheme[relative-to-url] is not + @scheme[#f], it must be a URL for resolving @scheme[url] as a + relative URL. @scheme[url] may also be a port, in which case, + @scheme[relative-to-url] must be @scheme[#f]. - The @scheme[progress-proc] procedure is called with a boolean at the - point where the URL has been resolved and enough progress has - been made to dismiss any message that the URL is being - resolved. The procedure is called with @scheme[#t] if the URL will be - loaded into a browser window, @scheme[#f] otherwise (e.g., the user will - save the URL content to a file). + The @scheme[progress-proc] procedure is called with a boolean at the + point where the URL has been resolved and enough progress has been + made to dismiss any message that the URL is being resolved. The + procedure is called with @scheme[#t] if the URL will be loaded into + a browser window, @scheme[#f] otherwise (e.g., the user will save + the URL content to a file). - If @scheme[post-data-bytes] is a byte string instead of false, the URL - GET is changed to a POST with the given data. - } + If @scheme[post-data-bytes] is a byte string instead of false, the + URL GET is changed to a POST with the given data. + } - @defmethod[(set-page [page any/c] [notify? any/c]) void?]{ - Changes to the given page. If @scheme[notify?] is not @scheme[#f], - the canvas's parent is notified about the change by calling its - @scheme[leaving-page] method. - } + @defmethod[(set-page [page any/c] [notify? any/c]) void?]{ + Changes to the given page. If @scheme[notify?] is not @scheme[#f], + the canvas's parent is notified about the change by calling its + @scheme[leaving-page] method. + } - @defmethod[(after-set-page) void?]{ - Called during @scheme[set-page]. Defaultly does nothing. - } + @defmethod[(after-set-page) void?]{ + Called during @scheme[set-page]. Defaultly does nothing. + } } @; ---------------------------------------------------------------------- @defmixin[hyper-panel-mixin (area-container<%>) ()]{ - @defconstructor/auto-super[([info-line? any/c])]{ - Creates controls and a hyper text canvas. The - controls permit a user to move back and forth in the hypertext - history. - - The @scheme[info-line?] argument indicates whether the browser - should contain a line to display special @(litchar "DOCNOTE") - tags in a page. Such tags are used primarily by the PLT - documentation.} - - @defmethod[(make-canvas [container (is-a?/c area-container<%>)]) void?]{ - Creates the panel's hypertext canvas, an instance of a class - derived using @scheme[hyper-canvas-mixin]. This - method is called during initialization. - } + @defconstructor/auto-super[([info-line? any/c])]{ + Creates controls and a hyper text canvas. The controls permit a + user to move back and forth in the hypertext history. - @defmethod[(get-canvas%) (subclass?/c editor-canvas%)]{ - Returns the class instantiated by make-canvas. It must be derived from - @scheme[hyper-canvas-mixin]. - } + The @scheme[info-line?] argument indicates whether the browser + should contain a line to display special @litchar{DOCNOTE} tags in a + page. Such tags are used primarily by the PLT documentation. + } - @defmethod[(make-control-bar-panel [container (is-a?/c area-container<%>)]) - any/c]{ - Creates the panel's sub-container for the control bar containing - the navigation buttons. If @scheme[#f] is returned, the panel will - have no control bar. The default method instantiates - @scheme[horizontal-panel%]. - } + @defmethod[(make-canvas [container (is-a?/c area-container<%>)]) void?]{ + Creates the panel's hypertext canvas, an instance of a class derived + using @scheme[hyper-canvas-mixin]. This method is called during + initialization. + } - @defmethod[(rewind) void?]{ - Goes back one page, if possible. - } + @defmethod[(get-canvas%) (subclass?/c editor-canvas%)]{ + Returns the class instantiated by make-canvas. It must be derived + from @scheme[hyper-canvas-mixin]. + } - @defmethod[(forward) void?]{ - Goes forward one page, if possible. - } + @defmethod[(make-control-bar-panel [container (is-a?/c area-container<%>)]) + any/c]{ + Creates the panel's sub-container for the control bar containing the + navigation buttons. If @scheme[#f] is returned, the panel will have + no control bar. The default method instantiates + @scheme[horizontal-panel%]. + } - @defmethod[(get-canvas) (is-a?/c editor-canvas%)]{ - Gets the hypertext canvas. - } + @defmethod[(rewind) void?]{ + Goes back one page, if possible. + } - @defmethod[(on-navigate) void?]{ - Callback that is invoked any time the displayed hypertext page - changes (either by clicking on a link in the canvas or by - @scheme[rewind] or @scheme[forward] calls). - } + @defmethod[(forward) void?]{ + Goes forward one page, if possible. + } - @defmethod[(leaving-page [page any/c] [new-page any/c]) - any]{ - This method is called by the hypertext canvas to notify the - panel that the hypertext page changed. The @scheme[page] is @scheme[#f] - if @scheme[new-page] is the first page for the canvas. See also - @scheme[page->editor]. - } + @defmethod[(get-canvas) (is-a?/c editor-canvas%)]{ + Gets the hypertext canvas. + } - @defmethod[(filter-notes [notes (listof string?)]) - (listof string?)]{ - Given the notes from a page as a list of strings (where - each string is a note), returns a single string to print - above the page. - } + @defmethod[(on-navigate) void?]{ + Callback that is invoked any time the displayed hypertext page + changes (either by clicking on a link in the canvas or by + @scheme[rewind] or @scheme[forward] calls). + } - @defmethod[(reload) void?]{ - Reloads the currently visible page by calling the @scheme[reload] - method of the currently displayed hyper-text. - } + @defmethod[(leaving-page [page any/c] [new-page any/c]) + any]{ + This method is called by the hypertext canvas to notify the panel + that the hypertext page changed. The @scheme[page] is @scheme[#f] + if @scheme[new-page] is the first page for the canvas. See also + @scheme[page->editor]. + } + + @defmethod[(filter-notes [notes (listof string?)]) + (listof string?)]{ + Given the notes from a page as a list of strings (where each string + is a note), returns a single string to print above the page. + } + + @defmethod[(reload) void?]{ + Reloads the currently visible page by calling the @scheme[reload] + method of the currently displayed hyper-text. + } } @; ---------------------------------------------------------------------- @@ -411,46 +403,43 @@ The @(litchar "MZSCHEME") forms are disabled unless the web page is a @; ---------------------------------------------------------------------- @defproc[(editor->page [editor (is-a?/c text%)]) any/c]{ - Creates a page record for the given editor, - suitable for use with the @scheme[set-page] method of - @scheme[hyper-canvas-mixin]. + Creates a page record for the given editor, suitable for use with the + @scheme[set-page] method of @scheme[hyper-canvas-mixin]. } @defproc[(page->editor [page any/c]) (is-a?/c text%)]{ - Extracts the editor from a page record. + Extracts the editor from a page record. } @defparam[bullet-size n exact-nonnegative-integer?]{ - Parameter controlling the point size of a - bullet. + Parameter controlling the point size of a bullet. } @defclass[image-map-snip% snip% ()]{ - Instances of this class behave like @scheme[image-snip%] objects, - except they have a @(litchar " ... ") associated with them and - when clicking on them (in the map) they will cause their - init arg text to follow the corresponding link. + Instances of this class behave like @scheme[image-snip%] objects, + except they have a @litchar{ ... } associated with them and + when clicking on them (in the map) they will cause their init arg text + to follow the corresponding link. - @defconstructor[([html-text (is-a?/c html-text<%>)])]{ - } + @defconstructor[([html-text (is-a?/c html-text<%>)])]{ + } - @defmethod[(set-key [key string?]) void?]{ - Sets the key for the image map (eg, "#key"). - } + @defmethod[(set-key [key string?]) void?]{ + Sets the key for the image map (eg, @scheme["#key"]). + } - @defmethod[(get-key) string?]{ - Returns the current key. - } + @defmethod[(get-key) string?]{ + Returns the current key. + } - @defmethod[(add-area [shape string?] - [region (listof number?)] - [href string?]) - void?]{ - Registers the shape named by @scheme[shape] whose - coordinates are specified by @scheme[region] to go to - @scheme[href] when that region of the image - is clicked on. - } + @defmethod[(add-area [shape string?] + [region (listof number?)] + [href string?]) + void?]{ + Registers the shape named by @scheme[shape] whose coordinates are + specified by @scheme[region] to go to @scheme[href] when that region + of the image is clicked on. + } } @; ---------------------------------------------------------------------- @@ -460,9 +449,9 @@ The @(litchar "MZSCHEME") forms are disabled unless the web page is a @defmodule[browser/browser-unit] @defthing[browser@ unit?]{ - -Imports @scheme[mred^], @scheme[tcp^], and @scheme[url^], and exports -@scheme[browser^].} + Imports @scheme[mred^], @scheme[tcp^], and @scheme[url^], and exports + @scheme[browser^]. +} @; ---------------------------------------------------------------------- @@ -471,9 +460,8 @@ Imports @scheme[mred^], @scheme[tcp^], and @scheme[url^], and exports @defmodule[browser/browser-sig] @defsignature[browser^ ()]{ - -Includes all of the bindings of the @schememodname[browser] -library.} + Includes all of the bindings of the @schememodname[browser] library. +} @; ---------------------------------------------------------------------- @@ -483,75 +471,73 @@ library.} @definterface[html-text<%> (text%)]{ - @defmethod[(get-url) (or/c url? string? false/c)]{ - Returns a base URL used for building - relative URLs, or @scheme[#f] if no base is available. - } + @defmethod[(get-url) (or/c url? string? false/c)]{ + Returns a base URL used for building relative URLs, or @scheme[#f] + if no base is available. + } - @defmethod[(set-title [str string?]) void?]{ - Registers the title @scheme[str] - for the rendered page. - } + @defmethod[(set-title [str string?]) void?]{ + Registers the title @scheme[str] for the rendered page. + } - @defmethod[(add-link [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?] - [url (or/c url? string?)]) - void?]{ - Registers a hyperlink for the given region in rendered page. - } + @defmethod[(add-link [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?] + [url (or/c url? string?)]) + void?]{ + Registers a hyperlink for the given region in rendered page. + } - @defmethod[(add-tag [name string?] [pos exact-nonnegative-integer?]) void?]{ - Installs a tag. - } + @defmethod[(add-tag [name string?] [pos exact-nonnegative-integer?]) void?]{ + Installs a tag. + } - @defmethod[(make-link-style [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?]) - void?]{ - Changes the style for the given range to the link style. - } + @defmethod[(make-link-style [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?]) + void?]{ + Changes the style for the given range to the link style. + } - @defmethod[(add-scheme-callback [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?] - [scheme-expr string?]) - void?]{ - Installs a Scheme evaluation hyperlink. - } + @defmethod[(add-scheme-callback [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?] + [scheme-expr string?]) + void?]{ + Installs a Scheme evaluation hyperlink. + } - @defmethod[(add-thunk-callback [start exact-nonnegative-integer?] - [end exact-nonnegative-integer?] - [thunk (-> any)]) - void?]{ - Installs a thunk-based hyperlink. - } + @defmethod[(add-thunk-callback [start exact-nonnegative-integer?] + [end exact-nonnegative-integer?] + [thunk (-> any)]) + void?]{ + Installs a thunk-based hyperlink. + } - @defmethod[(post-url [url (or/c string? url?)] - [post-data-bytes (or/c bytes? false/c) #f]) void?]{ - Follows the link, optionally with the given post data. - } + @defmethod[(post-url [url (or/c string? url?)] + [post-data-bytes (or/c bytes? false/c) #f]) void?]{ + Follows the link, optionally with the given post data. + } } @defmixin[html-text-mixin (text%) ()]{ - Extends the given @scheme[text%] class with implementations of the - @scheme[html-text<%>] methods. Hyperlinks are attached to clickbacks - that use @net-send-url from @schememodname[net/sendurl]. + Extends the given @scheme[text%] class with implementations of the + @scheme[html-text<%>] methods. Hyperlinks are attached to clickbacks + that use @net-send-url from @schememodname[net/sendurl]. } -@defproc[(render-html-to-text [in input-port?] +@defproc[(render-html-to-text [in input-port?] [dest (is-a? html-text<%>)] - [load-img? any/c] + [load-img? any/c] [eval-mz? any/c]) void?]{ + Reads HTML from @scheme[in] and renders it to @scheme[dest]. If + @scheme[load-img?] is @scheme[#f], then images are rendered as Xed-out + boxes. If @scheme[eval-mz?] is @scheme[#f], then @litchar{MZSCHEME} + hyperlink expressions and comments are not evaluated. - Reads HTML from @scheme[in] and renders it to @scheme[dest]. - If @scheme[load-img?] is @scheme[#f], then images are rendered - as Xed-out boxes. If @scheme[eval-mz?] is @scheme[#f], then - @litchar{MZSCHEME} hyperlink expressions and comments are not - evaluated. - - Uses the style named @scheme["Html Standard"] in the editor's - style-list (if it exists) for all of the inserted text's - default style.} + Uses the style named @scheme["Html Standard"] in the editor's + style-list (if it exists) for all of the inserted text's default + style. +} @; ---------------------------------------------------------------------- @@ -560,32 +546,33 @@ library.} @defmodule[browser/external] @defproc[(send-url [str null] [separate-window? void #t]) null]{ - Like @net-send-url from @scheme[net/sendurl] , but under Unix, - the user is prompted for a browser to use if none is recorded - in the preferences file. + Like @net-send-url from @scheme[net/sendurl], but under Unix, the user + is prompted for a browser to use if none is recorded in the + preferences file. } @defproc[(browser-preference? [v any/c]) boolean?]{ - Returns @scheme[#t] if @scheme[v] is a valid browser preference. + Returns @scheme[#t] if @scheme[v] is a valid browser preference. } @defproc[(update-browser-preference [url (or/c string? false/c)]) void?]{ - Under Unix, prompts the user for a browser preference and records - the user choice as a framework preference (even if one is already - recorded). If @scheme[url] is not @scheme[#f], it is used in the - dialog to explain which URL is to be opened; if it is @scheme[#f], - the @scheme['internal] will be one of the options for the user. + Under Unix, prompts the user for a browser preference and records the + user choice as a framework preference (even if one is already + recorded). If @scheme[url] is not @scheme[#f], it is used in the + dialog to explain which URL is to be opened; if it is @scheme[#f], the + @scheme['internal] will be one of the options for the user. } @defproc[(install-help-browser-preference-panel) void?]{ - Installs a framework preference panel for ``Browser'' options. + Installs a framework preference panel for ``Browser'' options. } -@defproc[(add-to-browser-prefs-panel [proc ((is-a?/c panel%) . -> . any)]) void?]{ - The @scheme[proc] is called when the ``Browser'' panel is constructed for - preferences. The supplied argument is the panel, so @scheme[proc] can add - additional option controls. If the panel is already created, @scheme[proc] - is called immediately. +@defproc[(add-to-browser-prefs-panel [proc ((is-a?/c panel%) . -> . any)]) + void?]{ + The @scheme[proc] is called when the ``Browser'' panel is constructed + for preferences. The supplied argument is the panel, so @scheme[proc] + can add additional option controls. If the panel is already created, + @scheme[proc] is called immediately. } @; ---------------------------------------------------------------------- @@ -595,7 +582,6 @@ library.} @defmodule[browser/tool] @defthing[tool@ unit?]{ - A unit that implements a DrScheme tool to add the ``Browser'' preference panel. }