% htmlwindow.tex at 14/Mar/99 20:13:37
%
-
\section{\class{wxHtmlWindow}}\label{wxhtmlwindow}
wxHtmlWindow is probably the only class you will directly use
unless you want to do something special (like adding new tag
-handlers or MIME filters)
+handlers or MIME filters).
+
+The purpose of this class is to display HTML pages (either local
+file or downloaded via HTTP protocol) in a window. The width
+of the window is constant - given in the constructor - and virtual height
+is changed dynamically depending on page size.
+Once the window is created you can set its content by calling
+\helpref{SetPage(text)}{wxhtmlwindowsetpage},
+\helpref{LoadPage(filename)}{wxhtmlwindowloadpage} or
+\helpref{LoadFile}{wxhtmlwindowloadfile}.
-Purpose of this class is to display HTML page (either local
-file or downloaded via HTTP protocol) in a window. Width
-of window is constant - given in constructor - virtual height
-is changed dynamicly depending on page size.
-Once the window is created you can set it's content by calling
-\helpref{SetPage(text)}{wxhtmlwindowsetpage} or
-\helpref{LoadPage(filename)}{wxhtmlwindowloadpage}.
+\wxheading{Note}
+wxHtmlWindow uses the \helpref{wxImage}{wximage} class for displaying images.
+Don't forget to initialize all image formats you need before loading any page!
+(See \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers} and
+\helpref{wxImage::AddHandler}{wximageaddhandler}.)
\wxheading{Derived from}
-wxScrolledWindow
+\helpref{wxScrolledWindow}{wxscrolledwindow}
\wxheading{Include files}
-<wxhtml/wxhtmlwin.h>
+<wx/html/htmlwin.h>
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxHW\_SCROLLBAR\_NEVER}}{Never display scrollbars, not
+even when the page is larger than the window.}
+\twocolitem{\windowstyle{wxHP\_SCROLLBAR\_AUTO}}{Display scrollbars only if
+page's size exceeds window's size.}
+\twocolitem{\windowstyle{wxHP\_NO\_SELECTION}}{Don't allow the user to select
+text.}
+\end{twocollist}
\membersection{wxHtmlWindow::wxHtmlWindow}\label{wxhtmlwindowwxhtmlwindow}
Default constructor.
-\func{}{wxHtmlWindow}{\param{wxWindow }{*parent}, \param{wxWindowID }{id = -1}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{const wxString\& }{name = "htmlWindow"}, \param{bool }{scrollable = TRUE}}
+\func{}{wxHtmlWindow}{\param{wxWindow }{*parent}, \param{wxWindowID }{id = -1}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxHW\_SCROLLBAR\_AUTO}, \param{const wxString\& }{name = "htmlWindow"}}
-Constructor. The parameters are same as in wxScrollWindow ctor.
-(Too lazy to document it once again... :-)
+Constructor. The parameters are the same as for the \helpref{wxScrolledWindow}{wxscrolledwindow} constructor.
\wxheading{Parameters}
-\docparam{scrollable}{if false then no scrollbars are displayed, even if size of page is larger than window size}
+\docparam{style}{Window style. See \helpref{wxHtmlWindow}{wxhtmlwindow}.}
+\membersection{wxHtmlWindow::AddFilter}\label{wxhtmlwindowaddfilter}
+\func{static void}{AddFilter}{\param{wxHtmlFilter }{*filter}}
-\membersection{wxHtmlWindow::SetPage}\label{wxhtmlwindowsetpage}
+Adds \helpref{input filter}{filters} to the static list of available
+filters. These filters are present by default:
-\func{bool}{SetPage}{\param{const wxString\& }{source}}
+\begin{itemize}\itemsep=0pt
+\item {\tt text/html} MIME type
+\item {\tt image/*} MIME types
+\item Plain Text filter (this filter is used if no other filter matches)
+\end{itemize}
-Sets HTML page and display it. This won't {\bf load} the page!!
-It will display the {\it source}. See example:
+\membersection{wxHtmlWindow::AppendToPage}\label{wxhtmlwindowappendtopage}
-\begin{verbatim}
-htmlwin -> SetPage("<html><body>Hello, world!</body></html>");
-\end{verbatim}
+\func{bool}{AppendToPage}{\param{const wxString\& }{source}}
-If you want to load document from some location use
-\helpref{LoadPage}{wxhtmlwindowloadpage} instead.
+Appends HTML fragment to currently displayed text and refreshes the window.
\wxheading{Parameters}
-\docparam{source}{The HTML document source to be displayed.}
-
+\docparam{source}{HTML code fragment}
\wxheading{Return value}
-FALSE if an error occured, TRUE otherwise
-
-\membersection{wxHtmlWindow::LoadPage}\label{wxhtmlwindowloadpage}
-
-\func{bool}{LoadPage}{\param{const wxString\& }{location}}
+false if an error occurred, true otherwise.
-Unlike SetPage this function first loads HTML page from {\it location}
-and then displays it. See example:
+\membersection{wxHtmlWindow::GetInternalRepresentation}\label{wxhtmlwindowgetinternalrepresentation}
-\begin{verbatim}
-htmlwin -> SetPage("help/myproject/index.htm");
-\end{verbatim}
+\constfunc{wxHtmlContainerCell*}{GetInternalRepresentation}{\void}
-\wxheading{Parameters}
+Returns pointer to the top-level container.
-\docparam{location}{The address of document. See \helpref{wxFileSystem}{wxfilesystem} for details on address format and behaviour of "opener".}
+See also: \helpref{Cells Overview}{cells},
+\helpref{Printing Overview}{printing}
-\wxheading{Return value}
+\membersection{wxHtmlWindow::GetOpenedAnchor}\label{wxhtmlwindowgetopenedanchor}
-FALSE if an error occured, TRUE otherwise
+\func{wxString}{GetOpenedAnchor}{\void}
+Returns anchor within currently opened page
+(see \helpref{GetOpenedPage}{wxhtmlwindowgetopenedpage}).
+If no page is opened or if the displayed page wasn't
+produced by call to LoadPage, empty string is returned.
\membersection{wxHtmlWindow::GetOpenedPage}\label{wxhtmlwindowgetopenedpage}
Returns full location of the opened page. If no page is opened or if the displayed page wasn't
produced by call to LoadPage, empty string is returned.
+\membersection{wxHtmlWindow::GetOpenedPageTitle}\label{wxhtmlwindowgetopenedpagetitle}
+\func{wxString}{GetOpenedPageTitle}{\void}
-\membersection{wxHtmlWindow::SetRelatedFrame}\label{wxhtmlwindowsetrelatedframe}
+Returns title of the opened page or wxEmptyString if current page does not contain {\tt <TITLE>} tag.
-\func{void}{SetRelatedFrame}{\param{wxFrame* }{frame}, \param{const wxString\& }{format}}
+\membersection{wxHtmlWindow::GetRelatedFrame}\label{wxhtmlwindowgetrelatedframe}
-Sets frame in which page title will be displayed. {\it format} is format of
-frame title, e.g. "HtmlHelp : \%s". It must contain exactly one \%s. This
-\%s is substituted with HTML page title.
+\constfunc{wxFrame*}{GetRelatedFrame}{\void}
+Returns the related frame.
+\membersection{wxHtmlWindow::HistoryBack}\label{wxhtmlwindowhistoryback}
+\func{bool}{HistoryBack}{\void}
-\membersection{wxHtmlWindow::GetRelatedFrame}\label{wxhtmlwindowgetrelatedframe}
+Moves back to the previous page. (each page displayed using
+\helpref{LoadPage}{wxhtmlwindowloadpage} is stored in history list.)
-\constfunc{wxFrame*}{GetRelatedFrame}{\void}
+\membersection{wxHtmlWindow::HistoryCanBack}\label{wxhtmlwindowhistorycanback}
-Returns the related frame.
+\func{bool}{HistoryCanBack}{\void}
+Returns true if it is possible to go back in the history (i.e. HistoryBack()
+won't fail).
-\membersection{wxHtmlWindow::SetRelatedStatusBar}\label{wxhtmlwindowsetrelatedstatusbar}
+\membersection{wxHtmlWindow::HistoryCanForward}\label{wxhtmlwindowhistorycanforward}
-\func{void}{SetRelatedStatusBar}{\param{int }{bar}}
+\func{bool}{HistoryCanForward}{\void}
-{\bf After} calling \helpref{SetRelatedFrame}{wxhtmlwindowsetrelatedframe},
-this sets statusbar slot where messages will be displayed.
-(Default is -1 = no messages.)
+Returns true if it is possible to go forward in the history (i.e. HistoryBack()
+won't fail).
-\wxheading{Parameters}
-\docparam{bar}{statusbar slot number (0..n)}
+\membersection{wxHtmlWindow::HistoryClear}\label{wxhtmlwindowhistoryclear}
-\membersection{wxHtmlWindow::SetFonts}\label{wxhtmlwindowsetfonts}
+\func{void}{HistoryClear}{\void}
-\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{int }{normal\_italic\_mode}, \param{wxString }{fixed\_face}, \param{int }{fixed\_italic\_mode}, \param{int }{*sizes}}
+Clears history.
-This function sets font sizes and faces.
+\membersection{wxHtmlWindow::HistoryForward}\label{wxhtmlwindowhistoryforward}
-\wxheading{Parameters}
+\func{bool}{HistoryForward}{\void}
-\docparam{normal_face}{This is face name for normal (i.e. non-fixed) font.
-It can be either empty string (then the default face is choosen) or
-platform-specific face name. Examples are "helvetica" under Unix or
-"Times New Roman" under Windows.}
+Moves to next page in history.
-\docparam{normal_italic_mode}{This is either wxSLANT or wxITALIC.
-It determines how
-italic (<I>..</I>) text is handled. See wxFont documentation for
-details. For example you should use wxSLANT in conjuction with
-"helvetica" face or wxITALIC with "times" face.}
+\membersection{wxHtmlWindow::LoadFile}\label{wxhtmlwindowloadfile}
-\docparam{fixed_face}{The same thing for fixed face ( <TT>..</TT> )}
+\func{virtual bool}{LoadFile}{\param{const wxFileName\& }{filename}}
-\docparam{fixed_italic_mode}{The same thing for fixed face.}
+Loads HTML page from file and displays it.
-\docparam{sizes}{This is an array of 7 items of {\it int} type.
-The values represent size of font with HTML size from -2 to +4
-( <FONT SIZE=-2> to <FONT SIZE=+4> )}
+\wxheading{Return value}
-\wxheading{Defaults}
+false if an error occurred, true otherwise
-Under wxGTK:
+\wxheading{See also}
-\begin{verbatim}
- SetFonts("", wxSLANT, "", wxSLANT, {10, 12, 14, 16, 19, 24, 32});
-\end{verbatim}
+\helpref{LoadPage}{wxhtmlwindowloadpage}
+
+\membersection{wxHtmlWindow::LoadPage}\label{wxhtmlwindowloadpage}
+
+\func{virtual bool}{LoadPage}{\param{const wxString\& }{location}}
-Under Windows:
+Unlike SetPage this function first loads HTML page from {\it location}
+and then displays it. See example:
\begin{verbatim}
- SetFonts("", wxSLANT, "", wxSLANT, {7, 8, 10, 12, 16, 22, 30});
+htmlwin->LoadPage("help/myproject/index.htm");
\end{verbatim}
-Athough it seems different the fact is that the fonts are of approximately
-same size under both platforms (due to wxMSW / wxGTK inconsistency)
+\wxheading{Parameters}
+\docparam{location}{The address of document. See \helpref{wxFileSystem}{wxfilesystem} for details on address format and behaviour of "opener".}
-\membersection{wxHtmlWindow::SetBorders}\label{wxhtmlwindowsetborders}
+\wxheading{Return value}
-\func{void}{SetBorders}{\param{int }{b}}
+false if an error occurred, true otherwise
-This function sets the space between border of window and HTML contents. See image:
+\wxheading{See also}
-\image{}{border.bmp}
+\helpref{LoadFile}{wxhtmlwindowloadfile}
+
+\membersection{wxHtmlWindow::OnCellClicked}\label{wxhtmlwindowoncellclicked}
+
+\func{virtual void}{OnCellClicked}{\param{wxHtmlCell }{*cell}, \param{wxCoord }{x}, \param{wxCoord }{y}, \param{const wxMouseEvent\& }{event}}
+
+This method is called when a mouse button is clicked inside wxHtmlWindow.
+The default behaviour is to call
+\helpref{OnLinkClicked}{wxhtmlwindowonlinkclicked} if the cell contains a
+hypertext link.
\wxheading{Parameters}
-\docparam{b}{indentation from borders in pixels}
+\docparam{cell}{The cell inside which the mouse was clicked, always a simple
+(i.e. non container) cell}
+
+\docparam{x, y}{The logical coordinates of the click point}
+
+\docparam{event}{The mouse event containing other information about the click}
+
+\membersection{wxHtmlWindow::OnCellMouseHover}\label{wxhtmlwindowoncellmousehover}
+
+\func{virtual void}{OnCellMouseHover}{\param{wxHtmlCell }{*cell}, \param{wxCoord }{x}, \param{wxCoord }{y}}
+
+This method is called when a mouse moves over an HTML cell.
+
+\wxheading{Parameters}
+
+\docparam{cell}{The cell inside which the mouse is currently, always a simple
+(i.e. non container) cell}
+
+\docparam{x, y}{The logical coordinates of the click point}
+
+\membersection{wxHtmlWindow::OnLinkClicked}\label{wxhtmlwindowonlinkclicked}
+
+\func{virtual void}{OnLinkClicked}{\param{const wxHtmlLinkInfo\& }{link}}
+
+Called when user clicks on hypertext link. Default behaviour is to call
+\helpref{LoadPage}{wxhtmlwindowloadpage} and do nothing else.
+
+Also see \helpref{wxHtmlLinkInfo}{wxhtmllinkinfo}.
+
+\membersection{wxHtmlWindow::OnOpeningURL}\label{wxhtmlwindowonopeningurl}
+
+\func{virtual wxHtmlOpeningStatus}{OnOpeningURL}{\param{wxHtmlURLType }{type},\param{const wxString\& }{url}, \param{wxString *}{redirect}}
+
+Called when an URL is being opened (either when the user clicks on a link or
+an image is loaded). The URL will be opened only if OnOpeningURL returns
+{\tt wxHTML\_OPEN}. This method is called by
+\helpref{wxHtmlParser::OpenURL}{wxhtmlparseropenurl}.
+You can override OnOpeningURL to selectively block some
+URLs (e.g. for security reasons) or to redirect them elsewhere. Default
+behaviour is to always return {\tt wxHTML\_OPEN}.
+
+\wxheading{Parameters}
+
+\docparam{type}{Indicates type of the resource. Is one of
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf wxHTML\_URL\_PAGE}}{Opening a HTML page.}
+\twocolitem{{\bf wxHTML\_URL\_IMAGE}}{Opening an image.}
+\twocolitem{{\bf wxHTML\_URL\_OTHER}}{Opening a resource that doesn't fall into
+any other category.}
+\end{twocollist}}
+
+\docparam{url}{URL being opened.}
+
+\docparam{redirect}{Pointer to wxString variable that must be filled with an
+URL if OnOpeningURL returns {\tt wxHTML\_REDIRECT}.}
+
+\wxheading{Return value}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf wxHTML\_OPEN}}{Open the URL.}
+\twocolitem{{\bf wxHTML\_BLOCK}}{Deny access to the URL, \helpref{wxHtmlParser::OpenURL}{wxhtmlparseropenurl} will return NULL.}
+\twocolitem{{\bf wxHTML\_REDIRECT}}{Don't open {\it url}, redirect to another
+URL. OnOpeningURL must fill {\it *redirect} with the new URL. OnOpeningURL will
+be called again on returned URL.}
+\end{twocollist}
+
+\membersection{wxHtmlWindow::OnSetTitle}\label{wxhtmlwindowonsettitle}
+
+\func{virtual void}{OnSetTitle}{\param{const wxString\& }{title}}
+
+Called on parsing {\tt <TITLE>} tag.
\membersection{wxHtmlWindow::ReadCustomization}\label{wxhtmlwindowreadcustomization}
if given, otherwise it saves info into currently selected path.
The values are stored in sub-path {\tt wxHtmlWindow}
-Read values : all things set by SetFonts, SetBorders.
+Read values: all things set by SetFonts, SetBorders.
\wxheading{Parameters}
-\docparam{cfg}{wxConfig from which you wanna read configuration}
+\docparam{cfg}{wxConfig from which you want to read the configuration.}
\docparam{path}{Optional path in config tree. If not given current path is used.}
+\membersection{wxHtmlWindow::SetBorders}\label{wxhtmlwindowsetborders}
-\membersection{wxHtmlWindow::WriteCustomization}\label{wxhtmlwindowwritecustomization}
+\func{void}{SetBorders}{\param{int }{b}}
-\func{virtual void}{WriteCustomization}{\param{wxConfigBase }{*cfg}, \param{wxString }{path = wxEmptyString}}
+This function sets the space between border of window and HTML contents. See image:
-Saves custom settings into wxConfig. It uses the path 'path'
-if given, otherwise it saves info into currently selected path.
-Regardless path is given or not the function creates sub-path
-{\tt wxHtmlWindow}
+\helponly{\image{}{border.bmp}}
+
+\wxheading{Parameters}
-Saved values : all things set by SetFonts, SetBorders.
+\docparam{b}{indentation from borders in pixels}
+
+\membersection{wxHtmlWindow::SetFonts}\label{wxhtmlwindowsetfonts}
+
+\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
+
+This function sets font sizes and faces.
\wxheading{Parameters}
-\docparam{cfg}{wxConfig to which you wanna save configuration}
+\docparam{normal\_face}{This is face name for normal (i.e. non-fixed) font.
+It can be either empty string (then the default face is chosen) or
+platform-specific face name. Examples are "helvetica" under Unix or
+"Times New Roman" under Windows.}
-\docparam{path}{Optional path in config tree. If not given current path is used.}
+\docparam{fixed\_face}{The same thing for fixed face ( <TT>..</TT> )}
+\docparam{sizes}{This is an array of 7 items of {\it int} type.
+The values represent size of font with HTML size from -2 to +4
+( <FONT SIZE=-2> to <FONT SIZE=+4> ). Default sizes are used if {\it sizes}
+is NULL.}
-\membersection{wxHtmlWindow::GetInternalRepresentation}\label{wxhtmlwindowgetinternalrepresentation}
+\wxheading{Defaults}
-\constfunc{wxHtmlContainerCell*}{GetInternalRepresentation}{\void}
+Default font sizes are defined by constants wxHTML\_FONT\_SIZE\_1,
+wxHTML\_FONT\_SIZE\_2, ..., wxHTML\_FONT\_SIZE\_7. Note that they differ among
+platforms. Default face names are empty strings.
-Returns pointer to the top-level container.
+\membersection{wxHtmlWindow::SetPage}\label{wxhtmlwindowsetpage}
-See also :
-\helpref{Cells Overview}{cells},
-\helpref{Printing Overview}{printing}
+\func{bool}{SetPage}{\param{const wxString\& }{source}}
+Sets HTML page and display it. This won't {\bf load} the page!!
+It will display the {\it source}. See example:
-\membersection{wxHtmlWindow::AddFilter}\label{wxhtmlwindowaddfilter}
+\begin{verbatim}
+htmlwin -> SetPage("<html><body>Hello, world!</body></html>");
+\end{verbatim}
-\func{static void}{AddFilter}{\param{wxHtmlFilter }{*filter}}
+If you want to load a document from some location use
+\helpref{LoadPage}{wxhtmlwindowloadpage} instead.
-Adds \helpref{input filter}{filters} to the static list of available
-filters. These filters are present by default:
+\wxheading{Parameters}
-\begin{itemize}
-\item {\tt text/html} MIME type
-\item {\tt image/*} MIME types
-\item Plain Text filter (this filter is used if no other filter matches)
-\end{itemize}
+\docparam{source}{The HTML document source to be displayed.}
+\wxheading{Return value}
-\membersection{wxHtmlWindow::HistoryBack}\label{wxhtmlwindowhistoryback}
+false if an error occurred, true otherwise.
-\func{bool}{HistoryBack}{\void}
+\membersection{wxHtmlWindow::SetRelatedFrame}\label{wxhtmlwindowsetrelatedframe}
-Moves back to the previous page. (each page displayed using
-\helpref{LoadPage}{wxhtmlwindowloadpage} is stored in history list.)
+\func{void}{SetRelatedFrame}{\param{wxFrame* }{frame}, \param{const wxString\& }{format}}
+Sets the frame in which page title will be displayed. {\it format} is format of
+frame title, e.g. "HtmlHelp : \%s". It must contain exactly one \%s. This
+\%s is substituted with HTML page title.
-\membersection{wxHtmlWindow::HistoryForward}\label{wxhtmlwindowhistoryforward}
+\membersection{wxHtmlWindow::SetRelatedStatusBar}\label{wxhtmlwindowsetrelatedstatusbar}
-\func{bool}{HistoryForward}{\void}
+\func{void}{SetRelatedStatusBar}{\param{int }{bar}}
-Moves to next page in history.
+{\bf After} calling \helpref{SetRelatedFrame}{wxhtmlwindowsetrelatedframe},
+this sets statusbar slot where messages will be displayed.
+(Default is -1 = no messages.)
-\membersection{wxHtmlWindow::HistoryClear}\label{wxhtmlwindowhistoryclear}
+\wxheading{Parameters}
-\func{void}{HistoryClear}{\void}
+\docparam{bar}{statusbar slot number (0..n)}
-Clears history.
+\membersection{wxHtmlWindow::WriteCustomization}\label{wxhtmlwindowwritecustomization}
-\membersection{wxHtmlWindow::OnLinkClicked}\label{wxhtmlwindowonlinkclicked}
+\func{virtual void}{WriteCustomization}{\param{wxConfigBase }{*cfg}, \param{wxString }{path = wxEmptyString}}
-\func{virtual void}{OnLinkClicked}{\param{const wxString\& }{link}}
+Saves custom settings into wxConfig. It uses the path 'path'
+if given, otherwise it saves info into currently selected path.
+Regardless of whether the path is given or not, the function creates sub-path
+{\tt wxHtmlWindow}.
-Called when user clicks on hypertext link. Default behaviour is to call
-\helpref{LoadPage}{wxhtmlwindowloadpage} and do nothing else.
+Saved values: all things set by SetFonts, SetBorders.
+
+\wxheading{Parameters}
+
+\docparam{cfg}{wxConfig to which you want to save the configuration.}
+\docparam{path}{Optional path in config tree. If not given, the current path is used.}