khtml Library API Documentation

khtmlview.h

00001 /* This file is part of the KDE project
00002 
00003    Copyright (C) 1997 Martin Jones (mjones@kde.org)
00004              (C) 1998 Waldo Bastian (bastian@kde.org)
00005              (C) 1998, 1999 Torben Weis (weis@kde.org)
00006              (C) 1999 Lars Knoll (knoll@kde.org)
00007              (C) 1999 Antti Koivisto (koivisto@kde.org)
00008 
00009    This library is free software; you can redistribute it and/or
00010    modify it under the terms of the GNU Library General Public
00011    License as published by the Free Software Foundation; either
00012    version 2 of the License, or (at your option) any later version.
00013 
00014    This library is distributed in the hope that it will be useful,
00015    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017    Library General Public License for more details.
00018 
00019    You should have received a copy of the GNU Library General Public License
00020    along with this library; see the file COPYING.LIB.  If not, write to
00021    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00022    Boston, MA 02111-1307, USA.
00023 */
00024 
00025 #ifndef KHTML_H
00026 #define KHTML_H
00027 
00028 // qt includes and classes
00029 #include <qscrollview.h>
00030 
00031 class QPainter;
00032 class QRect;
00033 
00034 namespace DOM {
00035     class HTMLDocumentImpl;
00036     class DocumentImpl;
00037     class ElementImpl;
00038     class HTMLElementImpl;
00039     class HTMLTitleElementImpl;
00040     class HTMLGenericFormElementImpl;
00041     class HTMLFormElementImpl;
00042     class HTMLAnchorElementImpl;
00043     class HTMLInputElementImpl;
00044     class Range;
00045     class NodeImpl;
00046     class CSSProperty;
00047 }
00048 
00049 namespace KJS {
00050     class WindowFunc;
00051     class ExternalFunc;
00052 }
00053 
00054 namespace khtml {
00055     class RenderObject;
00056     class RenderCanvas;
00057     class RenderStyle;
00058     class RenderLineEdit;
00059     class RenderPartObject;
00060     class RenderWidget;
00061     class CSSStyleSelector;
00062     class LineEditWidget;
00063     class CaretBox;
00064     void applyRule(DOM::CSSProperty *prop);
00065 }
00066 
00067 class KHTMLPart;
00068 class KHTMLViewPrivate;
00069 
00075 class KHTMLView : public QScrollView
00076 {
00077     Q_OBJECT
00078 
00079     friend class DOM::HTMLDocumentImpl;
00080     friend class DOM::HTMLTitleElementImpl;
00081     friend class DOM::HTMLGenericFormElementImpl;
00082     friend class DOM::HTMLFormElementImpl;
00083     friend class DOM::HTMLAnchorElementImpl;
00084     friend class DOM::HTMLInputElementImpl;
00085     friend class DOM::DocumentImpl;
00086     friend class KHTMLPart;
00087     friend class khtml::RenderCanvas;
00088     friend class khtml::RenderObject;
00089     friend class khtml::RenderLineEdit;
00090     friend class khtml::RenderPartObject;
00091     friend class khtml::RenderWidget;
00092     friend class khtml::CSSStyleSelector;
00093     friend class khtml::LineEditWidget;
00094     friend class KJS::WindowFunc;
00095     friend class KJS::ExternalFunc;
00096     friend void khtml::applyRule(DOM::CSSProperty *prop);
00097 
00098 
00099 public:
00103     KHTMLView( KHTMLPart *part, QWidget *parent, const char *name=0 );
00104     virtual ~KHTMLView();
00105 
00110     KHTMLPart *part() const { return m_part; }
00111 
00112     int frameWidth() const { return _width; }
00113 
00117     void setMarginWidth(int x);
00118 
00124     int marginWidth() const { return _marginWidth; }
00125 
00126     /*
00127      * Sets a margin in y direction.
00128      */
00129     void setMarginHeight(int y);
00130 
00136     int marginHeight() { return _marginHeight; }
00137 
00141     virtual void setVScrollBarMode ( ScrollBarMode mode );
00142 
00146     virtual void setHScrollBarMode ( ScrollBarMode mode );
00147 
00151     void print();
00152 
00157     void print( bool quick ); // KDE 4.0: merge with above
00158 
00162     void layout(); // KDE 4.0: make private
00166     void displayAccessKeys();
00167     
00168     
00169 
00170 signals:
00171     void finishedLayout();
00172     void cleared();
00173     void zoomView( int );
00174     void hideAccessKeys();
00175     void repaintAccessKeys();
00176 
00177 protected:
00178     void clear();
00179 
00180     virtual void resizeEvent ( QResizeEvent * event );
00181     virtual void showEvent ( QShowEvent * );
00182     virtual void hideEvent ( QHideEvent *);
00183     virtual bool focusNextPrevChild( bool next );
00184     virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph );
00185     virtual void drawContents( QPainter* );
00186     virtual void viewportMousePressEvent( QMouseEvent * );
00187     virtual void focusInEvent( QFocusEvent * );
00188     virtual void focusOutEvent( QFocusEvent * );
00189     virtual void viewportMouseDoubleClickEvent( QMouseEvent * );
00190     virtual void viewportMouseMoveEvent(QMouseEvent *);
00191     virtual void viewportMouseReleaseEvent(QMouseEvent *);
00192     virtual void viewportResizeEvent(QResizeEvent*);
00193 #ifndef QT_NO_WHEELEVENT
00194     virtual void viewportWheelEvent(QWheelEvent*);
00195 #endif
00196     virtual void dragEnterEvent( QDragEnterEvent* );
00197     virtual void dropEvent( QDropEvent* );
00198     virtual void closeEvent ( QCloseEvent * );
00199     virtual bool eventFilter(QObject *, QEvent *);
00200 
00201     void keyPressEvent( QKeyEvent *_ke );
00202     void keyReleaseEvent ( QKeyEvent *_ke );
00203     void contentsContextMenuEvent ( QContextMenuEvent *_ce );
00204     void doAutoScroll();
00205     void timerEvent ( QTimerEvent * );
00206 
00207 protected slots:
00208     void slotPaletteChanged();
00209     void slotScrollBarMoved();
00210 
00211 private slots:
00212     void tripleClickTimeout();
00213 #ifndef KHTML_NO_TYPE_AHEAD_FIND
00214     void findTimeout();
00215 #endif // KHTML_NO_TYPE_AHEAD_FIND
00216     void accessKeysTimeout();
00217     
00218 private:
00219 
00220     void scheduleRelayout(khtml::RenderObject* clippedObj=0);
00221     void unscheduleRelayout();
00222 
00223     void scheduleRepaint(int x, int y, int w, int h);
00224     void unscheduleRepaint();
00225 
00226     void closeChildDialogs();
00227     bool dialogsAllowed();
00228 
00237     void paint(QPainter *p, const QRect &rc, int yOff = 0, bool *more = 0);
00238 
00249     void setMediaType( const QString &medium );
00250     QString mediaType() const;
00251 
00252     bool scrollTo(const QRect &);
00253 
00254     bool focusNextPrevNode(bool next);
00255     bool handleAccessKey(const QKeyEvent* ev);
00256     bool focusNodeWithAccessKey(QChar c, KHTMLView* caller = NULL);
00257 
00258     void useSlowRepaints();
00259 
00260     void setIgnoreWheelEvents(bool e);
00261 
00262     void init();
00263 
00264     DOM::NodeImpl *nodeUnderMouse() const;
00265     DOM::NodeImpl *nonSharedNodeUnderMouse() const;
00266 
00267     void restoreScrollBar();
00268 
00269     QStringList formCompletionItems(const QString &name) const;
00270     void clearCompletionHistory(const QString& name);
00271     void addFormCompletionItem(const QString &name, const QString &value);
00272 
00273     void addNonPasswordStorableSite( const QString& host );
00274     bool nonPasswordStorableSite( const QString& host ) const;
00275 
00276     bool dispatchMouseEvent(int eventId, DOM::NodeImpl *targetNode,
00277                 DOM::NodeImpl *targetNodeNonShared, bool cancelable,
00278                 int detail,QMouseEvent *_mouse, bool setUnder,
00279                 int mouseEventType);
00280     bool dispatchKeyEvent( QKeyEvent *_ke );
00281     bool dispatchKeyEventHelper( QKeyEvent *_ke, bool generate_keypress );
00282 
00283     void complete();
00284 
00285 #ifndef KHTML_NO_TYPE_AHEAD_FIND
00286     void findAhead(bool increase);
00287 #endif // KHTML_NO_TYPE_AHEAD_FIND
00288 
00289 #ifndef KHTML_NO_CARET
00290     // -- caret-related member functions (for caretMode as well as designMode)
00291 
00302     void initCaret(bool keepSelection = false);
00305     bool caretOverrides() const;
00313     void ensureNodeHasFocus(DOM::NodeImpl *node);
00320     void recalcAndStoreCaretPos(khtml::CaretBox *hintBox = 0);
00327     void caretOn();
00333     void caretOff();
00342     void showCaret(bool forceRepaint = false);
00349     void hideCaret();
00354     void ensureCaretVisible();
00355 
00371     bool foldSelectionToCaret(DOM::NodeImpl *startNode, long startOffset,
00372                     DOM::NodeImpl *endNode, long endOffset);
00373 
00383     bool placeCaret(khtml::CaretBox *hintBox = 0);
00384 
00401     bool extendSelection(DOM::NodeImpl *startNode, long startOffset,
00402                 DOM::NodeImpl *endNode, long endOffset);
00403 
00413     void updateSelection(DOM::NodeImpl *startNode, long startOffset,
00414             DOM::NodeImpl *endNode, long endOffset);
00415 
00420     int caretDisplayPolicyNonFocused() const;
00421 
00428     void setCaretDisplayPolicyNonFocused(int policy);
00429 
00430     // -- caret event handler
00431 
00435     void caretKeyPressEvent(QKeyEvent *);
00436 
00437     // -- caret navigation member functions
00438 
00450     bool moveCaretTo(DOM::NodeImpl *node, long offset, bool clearSelection);
00451 
00457     enum CaretMovement { CaretByCharacter, CaretByWord };
00458 
00469     void moveCaretBy(bool next, CaretMovement cmv, int n);
00470 
00473     void moveCaretByLine(bool next, int n);
00474 
00479     void moveCaretToLineBoundary(bool end);
00480 
00485     void moveCaretToDocumentBoundary(bool end);
00486 
00495     void placeCaretOnChar(khtml::CaretBox *hintBox);
00496 
00513     void placeCaretOnLine(khtml::CaretBox *caretBox, int x, int absx, int absy);
00514 
00518     void moveCaretByPage(bool next);
00519 
00522     void moveCaretPrevWord();
00523 
00526     void moveCaretNextWord();
00527 
00532     void moveCaretPrevLine(int n = 1);
00533 
00538     void moveCaretNextLine(int n = 1);
00539 
00542     void moveCaretPrevPage();
00543 
00546     void moveCaretNextPage();
00547 
00550     void moveCaretToLineBegin();
00551 
00554     void moveCaretToLineEnd();
00555 
00556 #endif // KHTML_NO_CARET
00557 
00558     // ------------------------------------- member variables ------------------------------------
00559  private:
00560 
00561     void setWidgetVisible(::khtml::RenderWidget*, bool visible);
00562 
00563     int _width;
00564     int _height;
00565 
00566     int _marginWidth;
00567     int _marginHeight;
00568 
00569     KHTMLPart *m_part;
00570     KHTMLViewPrivate *d;
00571 
00572     QString m_medium;   // media type
00573 };
00574 
00575 #endif
00576 
KDE Logo
This file is part of the documentation for khtml Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Nov 27 13:51:29 2004 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003