class KHTMLWidget

Basic HTML Widget. Does not handle scrollbars or frames. More...

Definition#include <html.h>
InheritsKDNDWidget (kdecore)
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Public Types

Public Methods

Public Slots

Signals

Public Static Methods

Protected Types

Protected Methods

Protected Slots

Protected Members


Detailed Description

This widget is good for use in your custom application which does not necessarily want to handle frames, or want custom control of scrollbars. To add content to the widget you should do the follwing:


 view->begin( "file:/tmp/test.html" );
 view->parse();
 view->write( "&lt;HTML&gt;&lt;TITLE&gt;...." );
 .....
 view->end();
 view->show();

The widget will take care of resize events and paint events. Have a look at the set of signals emitted by this widget. You should connect to most of them.

Note: All HTML is parsed in the background using Qt timers, so you will not see any content displayed until the event loop is running.

 KHTMLWidget ( QWidget *parent = 0L, const char *name = 0L, const char *pixdir = 0L )

Create a new HTML widget. The widget is empty by default. You must use begin, write, end and parse to fill the widget with content.

Note: pixdir should not be used - it is provided only for backward compatability and has no effect.

Parameters:
_nameis the name of the widget. Usually this name is only meaningful for Qt but in this case it is the name of the HTML window. This means you can reference this name in the &lt; href=... target=... &gt; tag. If this argument is 0L then a unique default name is chosen.

KHTMLWidget ()

[virtual]

void  begin ( const char *_url = 0L, int _x_offset = 0, int _y_offset = 0 )

Clears the widget and prepares it for new content. If you display for example "file:/tmp/test.html", you can use the following code to get a value for '_url':


 KURL u( "file:/tmp/test.html" );
 view->begin( u.directoryURL() );

Parameters:
_urlis the url of the document to be displayed. Even if you are generating the HTML on the fly, it may be useful to specify a directory so that any pixmaps are found.
_dxis the initial horizontal scrollbar value. Usually you don't want to use this.
_dyis the initial vertical scrollbar value. Usually you don't want to use this.

void  write ( const char * )

Writes another part of the HTML code to the widget. You may call this function many times in sequence. But remember: The less calls the faster the widget is.

void  end ()

Call this after your last call to write.

void  parse ()

Begin parsing any HTML that has been written using the write method.

You may call this function immediately after calling begin. In this case the HTML will be passed and displayed whenever the event loop is active. This allows background parsing and display of the HTML as it arrives.

void  stopParser ()

Stop parsing the HTML immediately.

void  print ()

Print current HTML page to the printer.

void  calcSize ()

Recalculate the size and position of objects in the page. This is mainly intended for internal use.

void  selectByURL ( QPainter *_painter, const char *_url, bool _select )

[virtual]

Selects all objects which refer to _url. All selected ojects are redrawn if they changed their selection mode.

void  select ( QPainter *_painter, bool _select )

[virtual]

Selects/Unselects all objects with an associated URL. This is usually used to disable a selection. All objects are redrawn afterwards if they changed their selection mode.

void  select ( QPainter * _painter, QRect &_rect )

[virtual]

Selects all objects with an associated URL in this rectangle and deselects all objects outside the rectangle.

Parameters:
_rectis a rectangle in display coordinates. This means that the point (0,0) is the upper/left most point of the widget but must not be this one for the HTML page. This happens if the widget is being scrolled.

void  select ( QPainter *_painter, QRegExp& _pattern, bool _select )

[virtual]

Select all objects with a URL matching the regular expression.

If _painter is null a new painter is created.

void  getSelected ( QStrList &_list )

[virtual]

Gets a list of all selected URLs. The list may be Null. You can test this using list.isNull().

void  selectText ( int _x1, int _y1, int _x2, int _y2 )

[virtual]

Selects all text between ( _x1, _y1 ) and ( _x2, y2 ). The selection area selects text line by line, NOT by bounding rectangle.

void  getSelectedText ( QString &_str )

[virtual]

Get the text the user has marked.

Parameters:
_stris the QString which will contain the text the user selected. The selected text is appended to any text currently in _str.

bool  isTextSelected ()

[const]

Has the user selected any text? Call getSelectedText to retrieve the selected text.

Returns: true if there is text selected.

void  findTextBegin ()

Initiate a text search.

bool  findTextNext ( const QRegExp &exp )

Find the next occurrance of the expression.

void  findTextEnd ()

end a text search.

const char*  getURL ( QPoint &_point )

Checks out whether there is a URL under the point and returns a pointer to this URL or 0L if there is none.

Parameters:
_pointthe point to test for the presence of a URL. The point is relative to this widget.

int  docWidth ()

[const]

Returns: the width of the parsed HTML code. Remember that the documents width depends on the width of the widget.

int  docHeight ()

[const]

Returns: the height of the parsed HTML code. Remember that the documents height depends on the width of the widget.

KURLgetDocumentURL ()

Returns: the url of this document

KURLgetBaseURL ()

Returns: the base URL of this document

int  xOffset ()

[const]

Returns: the horizontal position the view has been scrolled to.

int  yOffset ()

[const]

Returns: the vertical position the view has been scrolled to.

bool  gotoAnchor ()

Find the default anchor. If the anchor is found, the widget scrolls to the closest position. Returns TRUE if the anchor has been found.

bool  gotoAnchor ( const char *_name )

Find the anchor named '_name'. If the anchor is found, the widget scrolls to the closest position. Returns TRUE if the anchor has been found. If the anchor could not be found it is retried when a new part of the document arrives.

bool  gotoXY ( int _x_offset, int _y_offset )

Jumps to position _x_offset, _y_offset. Returns TRUE if the position was available

void  autoScrollY ( int _delay, int _dy )

Causes the widget contents to scroll automatically. Call stopAutoScrollY to stop. Stops automatically when the top or bottom of the document is reached.

Parameters:
_delayTime in milliseconds to wait before scrolling the document again.
_dyThe amount to scroll the document when _delay elapses.

void  stopAutoScrollY ()

Stops the document from autoScrollY ing.

bool  isAutoScrollingY ()

Returns if the widget is currently auto scrolling.

void  setView ( KHTMLView *_view )

If this widget belongs to a HTMLView, then this function is used to tell the widget about its owner.

See also: htmlView, getView

KHTMLView*  getView ()

Returns: the KHTMLView this widget belongs to.

bool  isFrameSet ()

Returns: TRUE if the currently displayed document is a frame set.

void  setIsFrameSet ( bool _b )

Tells this widget that it displays a frameset. For internal use only.

KHTMLView*  getSelectedFrame ()

Returns: a pointer to the currently selected frame ( KHTMLView ) if we are displaying a frameset, otherwise 0L. If this widget is the selected one then htmlView is returned. Otherwise all HTMLFrameSet instances are asked.

bool  isFrame ()

Returns: TRUE if the currently displayed document is a frame.

void  setIsFrame ( bool _frame)

Tell the widget wether it is a frame or not. For internal use only.

void  setMarginWidth ( int _w )

Sets the margin width in pixels. This function is used to implement the <tt>&lt;frame marginwidth=... &gt;</tt> tag. It is called from KHTMLView and is for INTERNAL USE ONLY.

See also: leftBorder, rightBorder, setMarginWidth

void  setMarginHeight ( int _h )

Sets the margin height in pixels. This function is used to implement the <tt>&lt;frame marginheight=... &gt;</tt> tag. It is called from KHTMLView and is for INTERNAL USE ONLY.

See also: topBorder, bottomBorder, setMarginHeight

bool  isSelected ()

Returns: if the user selected this widget.

See also: bIsSelected, setSelected

void  setSelected ( bool _active )

Switches the 'selected state' of this widget. This results in the drawing or deleting of the black border around the widget.

void  setDefaultFontBase ( int size )

Sets the base font size ( range: 2-5, default: 3 ).

Note that font sizes are not defined in points. Font sizes range from 1 (smallest) to 7 (biggest).

void  setFontSizes (const int *newFontSizes)

void  getFontSizes (int *newFontSizes)

void  resetFontSizes ( void )

void  setStandardFont ( const char *name )

Sets the standard font style.

Parameters:
nameis the font name to use for standard text.

void  setFixedFont ( const char *name )

Sets the fixed font style.

Parameters:
nameis the font name to use for fixed text, e.g. the <tt>&lt;pre&gt;</tt> tag.

void  setDefaultBGColor ( const QColor &col )

Sets the default background color to use when one isn't specified explicitly by <tt>&lt;body bgcolor=...&gt;</tt>

void  setDefaultTextColors ( const QColor &normal, const QColor &link, const QColor &vlink )

Sets the default text colors.

void  setUnderlineLinks ( bool ul )

Set whether links are drawn in underlined text.

void  setURLCursor ( const QCursor &c )

Sets the cursor to use when the cursor is on a link.

void  setForceDefault ( bool force )

Force use of user defined colors

void  setGranularity ( int g )

Cryptic? This is used to set the number of tokens to parse in one timeslice during background processing.

You probably don't need to touch this.

void  requestFile ( HTMLObject *_obj, const char *_url )

void  cancelRequestFile ( HTMLObject *_obj )

void  cancelAllRequests ()

void  requestBackgroundImage ( const char *_url )

void  paintSingleObject ( HTMLObject *_obj )

void  paint ( HTMLChain *_chain, int x, int y, int w, int h )

void  paint ( HTMLCellInfo * )

void  scheduleUpdate ( bool clear )

void  calcAbsolutePos ()

Internal use - calculates the absolute position of the objects.

HTMLMap * getMap ( const char *mapurl )

void  registerFormats ()

[static]

JSEnvironment*  getJSEnvironment ()

Returns: a pointer to the JSEnvironment instance used by this widget. Every call to this function will result in the same pointer.

JSWindowObject*  getJSWindowObject ()

A convenience function to access the JSWindowObject of this html widget.

QList<KHTMLWidget>*  getFrameList ()

Returns: a list of all frames.

bool  setCharset (const char *name)

Set document charset.

Any <META ...> setting charsets overrides this setting

Returns: TRUE if successfull

void  setOverrideCharset (const char *name = 0)

set a charset, which will override the <meta ...> setting

bool  setMarker ( const char *_url )

bool  selectFromMarker ( const char *_url )

bool  cellDown ( bool select )

bool  cellUp ( bool select )

bool  cellLeft ( bool select )

bool  cellRight ( bool select )

void  cellSelected ()

void  cellActivated ()

void  cellContextMenu ()

void  cellSequenceChanged ()

void  resetCurrentKeySeq ()

void  data ( const char *_url, const char *_data, int _len, bool _eof )

SavedPagesaveYourself (SavedPage *p = 0)

void  restore (SavedPage *)

void  restorePosition ( int x, int y )

void  buildFrameSet (SavedPage *p, QString *s)

[protected]

void  buildFrameTree (SavedPage *p, HTMLFrameSet *f)

[protected]

int initialXPos

[protected]

int initialYPos

[protected]

void  setTitle ( const char * )

[signal]

This signal is emitted whenever the Widget wants to change the window's title. Usually this is the text enclosed in <tt>&lt;title&gt;....&lt;/title&gt;</tt>.

void  goUp ()

[signal]

The user pressed ALT + Up

void  goLeft ()

[signal]

The user pressed ALT + Left

void  goRight ()

[signal]

The user pressed ALT + Right

void  doubleClick ( const char * _url, int _button)

[signal]

The user double clicked on a URL.

Parameters:
_urlthe URL that the user clicked on.
_buttonthe mouse button that was used.

void  scrollVert ( int _y )

[signal]

Tells the parent, that the widget has scrolled. This may happen if the user selects an <tt>&lt;a href="#anchor"&gt;</tt>.

void  scrollHorz ( int _x )

[signal]

Tells the parent, that the widget has scrolled. This may happen if the user selects an &lt;a href="#anchor"&gt;.

void  URLSelected ( const char *_url, int _button )

[signal]

Signals that a URL has been selected using a single click.

Parameters:
_urlis the URL clicked on.
_buttonis the mouse button clicked.

void  URLSelected ( const char *_url, int _button, const char *_target )

[signal]

Signals that a URL has been selected using a single click.

Parameters:
_urlis the URL clicked on.
_buttonis the mouse button clicked.
_targetis the target window or 0L if there is none. ( Used to implement frames ).

void  onURL ( const char *_url )

[signal]

Signals that the mouse cursor has moved on or off a URL.

Parameters:
_urlis the URL that the mouse cursor has moved onto. _url is null if the cursor moved off a URL.

void  textSelected ( bool _selected )

[signal]

Signal that the user has selected text or the existing selection has become unselected. The text may be retrieved using getSelectedText. This is a good signal to connect to for enabling/disabling the Copy menu item or calling XSetSelectionOwner().

Parameters:
_selectedis true if the user has selected text or false if the current selection has been removed.

void  documentChanged ()

[signal]

Indicates the document has changed due to new URL loaded or progressive update. This signal may be emitted several times while the document is being parsed. It is an ideal opportunity to update any scrollbars.

void  documentStarted ()

[signal]

This signal is emitted if the widget got a call to parse or begin. This indicates that the widget is working. In a Web Browser you can use this to start an animated logo like netscape does. The signal documentDone will tell you that the widget finished its job.

void  documentDone ()

[signal]

This signal is emitted when document is finished parsing and all required images arrived.

void  popupMenu ( const char *_url, const QPoint & )

[signal]

If the user pressed the right mouse button over a URL than _url points to this URL, otherwise _url will be null. The position is in global coordinates.

void  mousePressed ( const char *_url, const char *_target, QMouseEvent *_ev )

[signal]

This signal is emitted if the user presses the mouse. If he clicks on a link you get the URL in '_url'.

Parameters:
_urlis the clicked URL or null is there was none.
_targetis the target frame if one is mentioned otherwise 0L.
_evthe QMouseEvent.

void  fileRequest ( const char *_url )

[signal]

KHTMLWidget can only load files from your local disk. If it finds a object which requires a remote file, it will emit this signal. If the file is loaded at some time, call slotFileLoaded.

If the file is not needed any more, the signal cancelFileRequest is emitted.

Parameters:
_urlis the URL of the image that needs to be loaded.

void  cancelFileRequest ( const char *_url )

[signal]

void  formSubmitted ( const char *_method, const char *_url, const char *_data )

[signal]

void  resized ( const QSize &size )

[signal]

void  redirect ( int delay, const char * url )

[signal]

used for url redirection

void  slotScrollVert ( int _y )

[slot]

Scrolls the document to _y.

This is usually connected to a scrollbar.

void  slotScrollHorz ( int _x )

[slot]

Scrolls the document to _x.

This is usually connected to a scrollbar.

void  slotFileLoaded ( const char *_url, const char *_filename )

[slot]

Call when a file requested by fileRequest has been loaded.

Parameters:
_urlis the URL of the file that was requested.
_filenameis the name of the file that has been stored on the local filesystem.

void  scrollBlobTimeout ()

[protected slot]

void  slotUpdate ()

[protected slot]

void  slotAutoScrollY ()

[protected slot]

void  slotUpdateSelectText ( int newy )

[protected slot]

void  slotFormSubmitted ( const char *_method, const char *_url, const char *_data )

[protected slot]

void  slotFrameSelected ( KHTMLView *_view )

[protected slot]

enum ListNumType {Numeric = 0, LowAlpha, UpAlpha, LowRoman, UpRoman }

enum ListType {Unordered, UnorderedPlain, Ordered, Menu, Dir }

void  mousePressEvent ( QMouseEvent * )

[protected virtual]

void  mouseMoveEvent ( QMouseEvent * )

[protected virtual]

Reimplemented from KDNDWidget.

void  setBlob (QPoint pos)

[protected]

void  clearBlob ()

[protected]

void  mouseDoubleClickEvent ( QMouseEvent * )

[protected virtual]

This function emits the 'doubleClick' signal when the user double clicks a &lt;a href=...&gt; tag.

void  dndMouseMoveEvent ( QMouseEvent * _mouse )

[protected virtual]

Overload this method if you dont want any drag actions.

Reimplemented from KDNDWidget.

void  dndMouseReleaseEvent ( QMouseEvent * )

[protected virtual]

This function emits the 'URLSelected' signal when the user pressed a &lt;a href=...&gt; tag.

Reimplemented from KDNDWidget.

void  dragEndEvent ()

[protected virtual]

Reimplemented from KDNDWidget.

bool  URLVisited ( const char *_url )

[protected virtual]

Called when a URL is encountered. Overload this method to indicate which links have been visited previously.

Returns: true if the URL has been visited previously. If true is returned the URL will be rendered in the vlink color. If false is returned the URL will be rendered in the link color.

void  paintEvent ( QPaintEvent * )

[protected virtual]

void  resizeEvent ( QResizeEvent * )

[protected virtual]

void  keyPressEvent ( QKeyEvent * )

[protected virtual]

void  timerEvent ( QTimerEvent * )

[protected virtual]

void  setPalette ( const QPalette & )

[protected virtual]

void  focusInEvent ( QFocusEvent * )

[protected virtual]

void  focusOutEvent ( QFocusEvent * )

[protected virtual]

void  flushKeys ()

[protected]

void  closeAnchor ()

[protected]

void  newFlow (HTMLClue *_clue)

[protected]

void  insertText (char *str, const HTMLFont * fp)

[protected]

const char*  parseBody ( HTMLClueV *_clue, const char *[], bool toplevel = FALSE )

[protected]

const char*  parseOneToken ( HTMLClueV *_clue, const char *str )

[protected]

void  parseA ( HTMLClueV *_clue, const char *str )

[protected]

void  parseB ( HTMLClueV *_clue, const char *str )

[protected]

void  parseC ( HTMLClueV *_clue, const char *str )

[protected]

void  parseD ( HTMLClueV *_clue, const char *str )

[protected]

void  parseE ( HTMLClueV *_clue, const char *str )

[protected]

void  parseF ( HTMLClueV *_clue, const char *str )

[protected]

void  parseG ( HTMLClueV *_clue, const char *str )

[protected]

void  parseH ( HTMLClueV *_clue, const char *str )

[protected]

void  parseI ( HTMLClueV *_clue, const char *str )

[protected]

void  parseJ ( HTMLClueV *_clue, const char *str )

[protected]

void  parseK ( HTMLClueV *_clue, const char *str )

[protected]

void  parseL ( HTMLClueV *_clue, const char *str )

[protected]

void  parseM ( HTMLClueV *_clue, const char *str )

[protected]

void  parseN ( HTMLClueV *_clue, const char *str )

[protected]

void  parseO ( HTMLClueV *_clue, const char *str )

[protected]

void  parseP ( HTMLClueV *_clue, const char *str )

[protected]

void  parseQ ( HTMLClueV *_clue, const char *str )

[protected]

void  parseR ( HTMLClueV *_clue, const char *str )

[protected]

void  parseS ( HTMLClueV *_clue, const char *str )

[protected]

void  parseT ( HTMLClueV *_clue, const char *str )

[protected]

void  parseU ( HTMLClueV *_clue, const char *str )

[protected]

void  parseV ( HTMLClueV *_clue, const char *str )

[protected]

void  parseW ( HTMLClueV *_clue, const char *str )

[protected]

void  parseX ( HTMLClueV *_clue, const char *str )

[protected]

void  parseY ( HTMLClueV *_clue, const char *str )

[protected]

void  parseZ ( HTMLClueV *_clue, const char *str )

[protected]

const char*  parseCell ( HTMLClue *_clue, const char *attr )

[protected]

const char*  parseTable ( HTMLClue *_clue, int _max_width, const char * )

[protected]

const char*  parseInput ( const char * )

[protected]

bool  insertVSpace ( HTMLClueV *_clue, bool _space_inserted )

[protected]

void  drawBackground ( int _xval, int _yval, int _x, int _y, int _w, int _h, QPainter *p = 0 )

void  positionFormElements ()

[protected]

QString currentKeySeq

[protected]

QString title

[protected]

char * url

[protected]

char * target

[protected]

QString overURL

[protected]

QString reference

[protected]

QString overrideCharset

[protected]

QPainter * painter

[protected]

HTMLClueV * clue

[protected]

int x_offset

[protected]

int y_offset

[protected]

int autoScrollDY

[protected]

int autoScrollYDelay

[protected]

QTimer autoScrollYTimer

[protected]

QTimer updateTimer

[protected]

HTMLTokenizer * ht

[protected]

QArray<char *> memPool

[protected]

int memPoolMax

[protected]

StringTokenizer * stringTok

[protected]

void  selectFont ( int _relative_font_size )

[protected]

void  selectFont ()

[protected]

void  selectFont ( const char *_fontfamily, int _size, int _weight, bool _italic )

[protected]

void  popFont ()

[protected]

const HTMLFont * currentFont ()

[protected]

void  popColor ()

[protected]

QStack<HTMLFont> font_stack

[protected]

int weight

[protected]

bool italic

[protected]

bool underline

[protected]

bool strikeOut

[protected]

bool pressed

[protected]

int press_x

[protected]

int press_y

[protected]

QString pressedURL

[protected]

QString pressedTarget

[protected]

If the user pressed the mouse button over an URL then this is the name of the target window for this hyper link. Used to implement frames.

QPixmap dndDefaultPixmap

[protected]

QPoint selectPt1

[protected]

QPoint selectPt2

[protected]

bool bIsTextSelected

[protected]

KURL actualURL

[protected]

KURL baseURL

[protected]

void  setBaseURL ( const char *_url)

[protected]

QString baseTarget

[protected]

QStack<QColor> colorStack

[protected]

int colorContext

[protected]

HTMLStackElem (class)

[protected]

typedef  void (KHTMLWidget::*blockFunc)(HTMLClueV *_clue, HTMLStackElem *stackElem)

[protected]

HTMLStackElem * blockStack

[protected]

void  pushBlock ( int _id, int _level, blockFunc _exitFunc = 0, int _miscData1 = 0, int _miscData2 = 0)

[protected]

void  popBlock ( int _id, HTMLClueV *_clue)

[protected]

void  freeBlock ( void)

[protected]

void  blockEndFont (HTMLClueV *_clue, HTMLStackElem *stackElem)

[protected]

void  blockEndPre (HTMLClueV *_clue, HTMLStackElem *stackElem)

[protected]

void  blockEndColorFont (HTMLClueV *_clue, HTMLStackElem *stackElem)

[protected]

void  blockEndIndent (HTMLClueV *_clue, HTMLStackElem *stackElem)

[protected]

void  blockEndList (HTMLClueV *_clue, HTMLStackElem *stackElem)

[protected]

void  blockEndDiv ( HTMLClueV *_clue, HTMLStackElem *Elem)

[protected]

int timerId

[protected]

bool writing

[protected]

bool parsing

[protected]

bool bodyParsed

[protected]

int indent

[protected]

HTMLList (class)

[protected]

QStack<HTMLList> listStack

[protected]

enum GlossaryEntry {GlossaryDL, GlossaryDD }

[protected]

QStack<GlossaryEntry> glossaryStack

[protected]

HTMLClue::HAlign divAlign

[protected]

int parseCount

[protected]

int granularity

[protected]

bool vspace_inserted

[protected]

HTMLClue * flow

[protected]

static parseFunc [26] parseFuncArray

[protected]

QStrList tempStrings

[protected]

QStrList parsedURLs

[protected]

QStrList parsedTargets

[protected]

QPixmap bgPixmap

[protected]

QCursor linkCursor

[protected]

HTMLSettings * settings

[protected]

HTMLSettings * defaultSettings

[protected]

bool bDrawBackground

[protected]

QString bgPixmapURL

[protected]

bool inTitle

[protected]

QList<HTMLForm> formList

[protected]

HTMLForm * form

[protected]

HTMLSelect * formSelect

[protected]

bool inOption

[protected]

HTMLTextArea * formTextArea

[protected]

bool inTextArea

[protected]

bool inPre

[protected]

QString formText

[protected]

QList<HTMLMap> mapList

[protected]

HTMLFrameSet * frameSet

[protected]

QList<HTMLFrameSet> framesetStack

[protected]

QList<HTMLFrameSet> framesetList

[protected]

QList<KHTMLWidget> frameList

[protected]

bool bIsFrameSet

[protected]

bool bIsFrame

[protected]

bool bFramesComplete

[protected]

bool bInNoframes

[protected]

KHTMLView * htmlView

[protected]

KHTMLView * selectedFrame

[protected]

bool bIsSelected

[protected]

int leftBorder

[protected]

int rightBorder

[protected]

int topBorder

[protected]

int bottomBorder

[protected]

JSEnvironment * jsEnvironment

[protected]

KCharsetConverter * charsetConverter

[protected]

HTMLIterator * textFindIter

[protected]

QDict<HTMLPendingFile> mapPendingFiles

[protected]

Keeps a list of all pending file.

QPixmap scrollBlobPixmap

[protected]

QWidget * scrollBlob

[protected]

QTimer * scrollBlobTimer

[protected]

enum ScrollType scrollBlobType

[protected]


Generated by: prospector@porky.devel.redhat.com on Mon Sep 11 01:51:07 2000, using kdoc 2.0a36.