00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
#ifndef __khtml_part_h__
00027
#define __khtml_part_h__
00028
00029
#include "dom/html_document.h"
00030
#include "dom/dom2_range.h"
00031
00032
#include <kparts/part.h>
00033
#include <kparts/browserextension.h>
00034
#include <kdemacros.h>
00035
00036
#include <qregexp.h>
00037
00038
class KHTMLPartPrivate;
00039
class KHTMLPartBrowserExtension;
00040
class KJSProxy;
00041
class KHTMLView;
00042
class KHTMLSettings;
00043
class KJavaAppletContext;
00044
class KJSErrorDlg;
00045
00046
namespace DOM
00047 {
00048
class HTMLDocument;
00049
class HTMLDocumentImpl;
00050
class DocumentImpl;
00051
class HTMLTitleElementImpl;
00052
class HTMLElementImpl;
00053
class HTMLFrameElementImpl;
00054
class HTMLIFrameElementImpl;
00055
class HTMLObjectElementImpl;
00056
class HTMLFormElementImpl;
00057
class HTMLAnchorElementImpl;
00058
class HTMLMetaElementImpl;
00059
class NodeImpl;
00060
class Node;
00061
class HTMLEventListener;
00062
class EventListener;
00063 }
00064
00065
namespace KJS
00066 {
00067
class Interpreter;
00068 }
00069
00070
namespace khtml
00071 {
00072
class DocLoader;
00073
class RenderPart;
00074
class RenderPartObject;
00075
struct ChildFrame;
00076
class MouseEvent;
00077
class MousePressEvent;
00078
class MouseDoubleClickEvent;
00079
class MouseMoveEvent;
00080
class MouseReleaseEvent;
00081
class DrawContentsEvent;
00082
class CachedObject;
00083
class RenderWidget;
00084
class CSSStyleSelector;
00085
class HTMLTokenizer;
00086
class Decoder;
00087
class XMLTokenizer;
00088 }
00089
00090
namespace KJS {
00091
class Window;
00092
class WindowFunc;
00093
class ExternalFunc;
00094
class JSEventListener;
00095
class JSNodeFilter;
00096
class DOMDocument;
00097
class SourceFile;
00098
class ScheduledAction;
00099 }
00100
00101
namespace KParts
00102 {
00103
class PartManager;
00104
class LiveConnectExtension;
00105 }
00106
00107
namespace KWallet
00108 {
00109
class Wallet;
00110 }
00111
00183 class KHTMLPart :
public KParts::
ReadOnlyPart
00184 {
00185 Q_OBJECT
00186
friend class KHTMLView;
00187
friend class DOM::HTMLTitleElementImpl;
00188
friend class DOM::HTMLFrameElementImpl;
00189
friend class DOM::HTMLIFrameElementImpl;
00190
friend class DOM::HTMLObjectElementImpl;
00191
friend class DOM::HTMLAnchorElementImpl;
00192
friend class DOM::HTMLMetaElementImpl;
00193
friend class DOM::NodeImpl;
00194
friend class KHTMLRun;
00195
friend class DOM::HTMLFormElementImpl;
00196
friend class khtml::RenderPartObject;
00197
friend class KJS::Window;
00198
friend class KJS::ScheduledAction;
00199
friend class KJS::JSNodeFilter;
00200
friend class KJS::WindowFunc;
00201
friend class KJS::ExternalFunc;
00202
friend class KJS::JSEventListener;
00203
friend class KJS::DOMDocument;
00204
friend class KJS::SourceFile;
00205
friend class KJSProxy;
00206
friend class KHTMLPartBrowserExtension;
00207
friend class DOM::DocumentImpl;
00208
friend class DOM::HTMLDocumentImpl;
00209
friend class KHTMLPartBrowserHostExtension;
00210
friend class khtml::HTMLTokenizer;
00211
friend class khtml::XMLTokenizer;
00212
friend class khtml::RenderWidget;
00213
friend class khtml::CSSStyleSelector;
00214
friend class KHTMLPartIface;
00215
friend class KHTMLPartFunction;
00216
00217 Q_PROPERTY(
bool javaScriptEnabled READ
jScriptEnabled WRITE
setJScriptEnabled )
00218 Q_PROPERTY(
bool javaEnabled READ javaEnabled WRITE
setJavaEnabled )
00219 Q_PROPERTY(
bool autoloadImages READ autoloadImages WRITE
setAutoloadImages )
00220 Q_PROPERTY(
bool dndEnabled READ dndEnabled WRITE
setDNDEnabled )
00221 Q_PROPERTY(
bool pluginsEnabled READ pluginsEnabled WRITE
setPluginsEnabled )
00222 Q_PROPERTY(
bool onlyLocalReferences READ onlyLocalReferences WRITE
setOnlyLocalReferences )
00223 Q_PROPERTY(
QCString dcopObjectId READ dcopObjectId )
00224
00225
public:
00226
enum GUIProfile { DefaultGUI, BrowserViewGUI };
00227
00240
KHTMLPart(
QWidget *parentWidget = 0,
const char *widgetname = 0,
00241
QObject *parent = 0,
const char *name = 0, GUIProfile prof = DefaultGUI );
00242
00243
KHTMLPart(
KHTMLView *
view,
QObject *parent = 0,
const char *name = 0, GUIProfile prof = DefaultGUI );
00244
00248
virtual ~KHTMLPart();
00249
00255
virtual bool openURL(
const KURL &url );
00256
00260
virtual bool closeURL();
00261
00268
virtual void showError(
KIO::Job* job );
00269
00273
DOM::HTMLDocument htmlDocument()
const;
00274
00278
DOM::Document document()
const;
00279
00283
DOM::Node activeNode()
const;
00284
00288
KParts::BrowserExtension *
browserExtension()
const;
00289
KParts::LiveConnectExtension *liveConnectExtension(
const khtml::RenderPart *)
const;
00290
00294
KHTMLView *
view()
const;
00295
00302
void setJScriptEnabled(
bool enable );
00303
00308
bool jScriptEnabled()
const;
00309
00327 KJS::Interpreter *
jScriptInterpreter();
00328
00332
void setStatusMessagesEnabled(
bool enable );
00333
00337
bool statusMessagesEnabled()
const;
00338
00342
void setMetaRefreshEnabled(
bool enable );
00343
00347
bool metaRefreshEnabled()
const;
00348
00353
QVariant executeScript(
const DOM::Node &n,
const QString &script );
00354
00359
void setDNDEnabled(
bool b );
00360
00364
bool dndEnabled()
const;
00365
00372
void setJavaEnabled(
bool enable );
00373
00377
bool javaEnabled()
const;
00378
00382 KJavaAppletContext *
javaContext();
00383
00388 KJavaAppletContext *
createJavaContext();
00389
00393
void setPluginsEnabled(
bool enable );
00394
00398
bool pluginsEnabled()
const;
00399
00406
void setAutoloadImages(
bool enable );
00413
bool autoloadImages()
const;
00414
00431
void setOnlyLocalReferences(
bool enable );
00432
00437
bool onlyLocalReferences()
const;
00438
00442
bool isCaretMode()
const;
00443
00448
bool isEditable()
const;
00449
00463
void setCaretPosition(
DOM::Node node,
long offset,
bool extendSelection =
false);
00464
00472 enum CaretDisplayPolicy {
00473 CaretVisible, CaretInvisible, CaretBlink
00474 };
00475
00480 CaretDisplayPolicy
caretDisplayPolicyNonFocused() const;
00481
00492
void setCaretDisplayPolicyNonFocused(CaretDisplayPolicy policy);
00493
00494 #ifndef KDE_NO_COMPAT
00495
void enableJScript(
bool e ) { setJScriptEnabled(e); }
00496
void enableJava(
bool e ) { setJavaEnabled(e); }
00497
void enablePlugins(
bool e ) { setPluginsEnabled(e); }
00498
void autoloadImages(
bool e ) { setAutoloadImages(e); }
00499
void enableMetaRefresh(
bool e ) { setMetaRefreshEnabled(e); }
00500
bool setCharset(
const QString &,
bool ) {
return true; }
00501
00502
KURL baseURL() const;
00503
QString baseTarget() const;
00504 #endif
00505
00509
KURL backgroundURL() const;
00510
00514
void scheduleRedirection(
int delay, const
QString &url,
bool lockHistory = true );
00515
00538 virtual
void begin( const
KURL &url =
KURL(),
int xOffset = 0,
int yOffset = 0 );
00539
00560 virtual
void write( const
char *str,
int len = -1 );
00561
00569 virtual
void write( const
QString &str );
00570
00574 virtual
void end();
00575
00576
00577
00578
00579
00580
00581
00582
00586
void paint(
QPainter *, const
QRect &,
int = 0,
bool * = 0 );
00587
00594
bool setEncoding( const
QString &name,
bool override = false );
00595
00601
QString encoding() const;
00602
00610
void setUserStyleSheet( const KURL &url );
00611
00619
void setUserStyleSheet( const
QString &styleSheet );
00620
00621 public:
00622
00628
void setStandardFont( const
QString &name );
00629
00636
void setFixedFont( const
QString &name );
00637
00645
bool gotoAnchor( const
QString &name );
00646
00653
bool nextAnchor();
00654
00659
bool prevAnchor();
00660
00664
void setURLCursor( const
QCursor &c );
00665
00669
QCursor urlCursor() const;
00670
00674
void findTextBegin();
00675
00680
bool findTextNext( const
QString &str,
bool forward,
bool caseSensitive,
bool isRegExp );
00681
00692
void setZoomFactor(
int percent);
00693
00697
int zoomFactor() const;
00698
00702 virtual
QString selectedText() const;
00703
00707 DOM::Range selection() const;
00708
00720
void selection(DOM::
Node &startNode,
long &startOffset,
00721 DOM::
Node &endNode,
long &endOffset) const;
00722
00726
void setSelection( const DOM::Range & );
00727
00736
bool hasSelection() const;
00737
00741
void selectAll();
00742
00748
void show();
00749
00755
void hide();
00756
00761 KParts::PartManager *partManager();
00762
00770 virtual
void saveState(
QDataStream &stream );
00780 virtual
void restoreState(
QDataStream &stream );
00781
00785 DOM::
Node nodeUnderMouse() const;
00786
00790 const
KHTMLSettings *settings() const;
00791
00798
KHTMLPart *parentPart();
00799
00805
QStringList frameNames() const;
00806
00807
QPtrList<KParts::ReadOnlyPart> frames() const;
00808
00812
KHTMLPart *findFrame( const
QString &f );
00813
00819 KParts::ReadOnlyPart *currentFrame() const;
00820
00827
bool frameExists( const
QString &frameName );
00828
00829
00835
void setJSStatusBarText( const
QString &text );
00836
00842
void setJSDefaultStatusBarText( const
QString &text );
00843
00849
QString jsStatusBarText() const;
00850
00856
QString jsDefaultStatusBarText() const;
00857
00861
QString referrer() const;
00862
00866
QString pageReferrer() const;
00867
00871
QString lastModified() const;
00872
00876
void preloadStyleSheet( const
QString &url, const
QString &stylesheet );
00877
00881
void preloadScript( const
QString &url, const
QString &script );
00882
00886
bool restored() const;
00887
00888
00889 enum FormNotification { NoNotification = 0, Before, Only, Unused=255 };
00896
void setFormNotification(FormNotification fn);
00897
00904 FormNotification
formNotification() const;
00905
00913
KURL toplevelURL();
00914
00915
00916 signals:
00920
void onURL( const
QString &url );
00921
00925
void popupMenu( const
QString &url, const
QPoint &point );
00926
00930
void selectionChanged();
00931
00939
void nodeActivated( const DOM::
Node & );
00940
00943
void docCreated();
00944
00956
void caretPositionChanged(const DOM::Node &node,
long offset);
00957
00958
00965
void formSubmitNotification(const
char *action, const
QString& url,
00966 const
QByteArray& formData, const
QString& target,
00967 const
QString& contentType, const
QString& boundary);
00968
00969
00970 protected:
00971
00976
KURL completeURL( const
QString &url );
00977
00984
void htmlError(
int errorCode, const
QString& text, const
KURL& reqUrl );
00985
00986 virtual
void customEvent(
QCustomEvent *event );
00987
00991 virtual
void khtmlMousePressEvent( khtml::MousePressEvent *event );
00995 virtual
void khtmlMouseDoubleClickEvent( khtml::MouseDoubleClickEvent * );
00999 virtual
void khtmlMouseMoveEvent( khtml::MouseMoveEvent *event );
01003 virtual
void khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event );
01007 virtual
void khtmlDrawContentsEvent( khtml::DrawContentsEvent * );
01008
01012 virtual
void guiActivateEvent( KParts::GUIActivateEvent *event );
01013
01017 virtual
bool openFile();
01018
01019 virtual
void urlSelected( const
QString &url,
int button,
int state,
01020 const
QString &_target, KParts::URLArgs args = KParts::URLArgs());
01021
01030 virtual KParts::ReadOnlyPart *createPart(
QWidget *parentWidget, const
char *widgetName,
01031
QObject *parent, const
char *name,
01032 const
QString &mimetype,
QString &serviceName,
01033
QStringList &serviceTypes, const
QStringList ¶ms);
01034
01035
01036
01037
bool pluginPageQuestionAsked( const
QString& mimetype ) const;
01038
void setPluginPageQuestionAsked( const
QString& mimetype );
01039
01040 enum PageSecurity { NotCrypted, Encrypted, Mixed };
01041
void setPageSecurity( PageSecurity sec );
01042
01046
virtual bool doOpenStream(
const QString& mimeType );
01047
01051
virtual bool doWriteStream(
const QByteArray& data );
01052
01056
virtual bool doCloseStream();
01057
01058
public slots:
01059
01069
void setActiveNode(
const DOM::Node &node );
01070
01074
void stopAnimations();
01075
01076
QCString dcopObjectId() const;
01077
01085
QVariant executeScript( const
QString &script );
01086
01097
void setCaretMode(
bool enable);
01098
01103
void setEditable(
bool enable);
01104
01121
void setCaretVisible(
bool show);
01122
01123
01124
01125
01126
01127
void submitFormProxy( const
char *action, const
QString &url,
01128 const
QByteArray &formData,
01129 const
QString &target,
01130 const
QString& contentType =
QString::null,
01131 const
QString& boundary =
QString::null );
01132
01133 private slots:
01134
01138
void reparseConfiguration();
01139
01143
void slotData( KIO::Job*, const
QByteArray &data );
01147
void slotInfoMessage( KIO::Job*, const
QString& msg );
01151
void slotRestoreData( const
QByteArray &data );
01155
void slotFinished( KIO::Job* );
01159
void slotFinishedParsing();
01163
void slotRedirect();
01167
void slotRedirection( KIO::Job*, const
KURL& );
01171
void slotDebugScript();
01175
void slotDebugDOMTree();
01179
void slotDebugRenderTree();
01183
void slotStopAnimations();
01187 virtual
void slotViewDocumentSource();
01191 virtual
void slotViewFrameSource();
01195
void slotViewPageInfo();
01199 virtual
void slotSaveBackground();
01203 virtual
void slotSaveDocument();
01207 virtual
void slotSaveFrame();
01211 virtual
void slotSecurity();
01215 virtual
void slotSetEncoding();
01216
01220 virtual
void slotUseStylesheet();
01221
01222 virtual
void slotFind();
01223 virtual
void slotFindDone();
01224 virtual
void slotFindDialogDestroyed();
01225
void slotFindNext();
01226
01227
void slotIncZoom();
01228
void slotDecZoom();
01229
01230
void slotLoadImages();
01231
void slotWalletClosed();
01232
void launchWalletManager();
01233
void walletMenu();
01234
01238
void submitFormAgain();
01239
01243
void updateActions();
01247
void slotPartRemoved( KParts::Part *part );
01251
void slotActiveFrameChanged( KParts::Part *part );
01255
void slotChildStarted( KIO::Job *job );
01259
void slotChildCompleted();
01263
void slotChildCompleted(
bool );
01267
void slotParentCompleted();
01271
void slotChildURLRequest( const KURL &url, const KParts::URLArgs &args );
01275
void slotChildDocCreated();
01276
01277
void slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* obj);
01278
void slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *obj );
01279
void checkCompleted();
01280
01284
void slotAutoScroll();
01285
01286
void slotPrintFrame();
01287
01288
void slotSelectAll();
01289
01293
void slotProgressUpdate();
01294
01295
01296
01297
01298
void slotJobPercent( KIO::Job*,
unsigned long );
01299
01300
01301
01302
01303
void slotJobDone( KIO::Job* );
01304
01305
01306
01307
01308
void slotUserSheetStatDone( KIO::Job* );
01309
01310
01311
01312
01313
void slotJobSpeed( KIO::Job*,
unsigned long );
01314
01318
void slotClearSelection();
01319
01323
void slotZoomView(
int );
01324
01328
void slotHighlight( const
QString &,
int index,
int length );
01329
01333
void slotAutomaticDetectionLanguage(
int _id );
01334
01338
void slotToggleCaretMode();
01339
01343
void launchJSErrorDialog();
01344
01348
void removeJSErrorExtension();
01349
01353
void disableJSErrorExtension();
01354
01358
void jsErrorDialogContextMenu();
01359
01360
01361
01362 private:
01363
01364 KJSErrorDlg *jsErrorExtension();
01365
01366 enum StatusBarPriority { BarDefaultText, BarHoverText, BarOverrideText };
01367
void setStatusBarText(
const QString& text, StatusBarPriority p);
01368
01369
bool restoreURL(
const KURL &url );
01370
void emitSelectionChanged();
01371
bool openURLInFrame(
const KURL &url,
const KParts::URLArgs &urlArgs );
01372
void startAutoScroll();
01373
void stopAutoScroll();
01374
void overURL(
const QString &url,
const QString &target,
bool shiftPressed =
false );
01375
01376
bool processObjectRequest( khtml::ChildFrame *child,
const KURL &url,
const QString &mimetype );
01377
01378 KWallet::Wallet* wallet();
01379
01383
01384
01385
01386
01387
01388
01389
01390
void submitForm(
const char *action,
const QString &url,
const QByteArray &formData,
01391
const QString &target,
const QString& contentType = QString::null,
01392
const QString& boundary = QString::null );
01393
01394
void popupMenu(
const QString &url );
01395
01396
void init(
KHTMLView *view, GUIProfile prof );
01397
01398
01399
void clear();
01400
01401
bool scheduleScript(
const DOM::Node &n,
const QString& script);
01402
01403
QVariant crossFrameExecuteScript(
const QString& target,
const QString& script);
01404
QVariant executeScheduledScript();
01405
01406
bool requestFrame( khtml::RenderPart *frame,
const QString &url,
const QString &frameName,
01407
const QStringList &args =
QStringList(),
bool isIFrame =
false );
01408
01416
QString requestFrameName();
01417
01418
bool requestObject( khtml::RenderPart *frame,
const QString &url,
const QString &serviceType,
01419
const QStringList &args =
QStringList() );
01420
01421
bool requestObject( khtml::ChildFrame *child,
const KURL &url,
const KParts::URLArgs &args =
KParts::URLArgs() );
01422
01423
DOM::EventListener *createHTMLEventListener(
QString code,
QString name );
01424
01425 DOM::HTMLDocumentImpl *docImpl() const;
01426 DOM::DocumentImpl *xmlDocImpl() const;
01427 khtml::ChildFrame *frame( const
QObject *obj );
01428
01429 khtml::ChildFrame *recursiveFrameRequest( const
KURL &url, const KParts::URLArgs &args,
bool callParent = true );
01430
01431
bool checkLinkSecurity( const
KURL &linkURL,const
QString &message =
QString::null, const
QString &button =
QString::null );
01432
QVariant executeScript( const
QString& filename,
int baseLine, const DOM::
Node &n, const
QString& script );
01433
01434 KJSProxy *jScript();
01435
01436
KHTMLPart *opener();
01437
long cacheId() const;
01438
void setOpener(
KHTMLPart *_opener );
01439
bool openedByJS();
01440
void setOpenedByJS(
bool _openedByJS );
01441
01442
void checkEmitLoadEvent();
01443
void emitLoadEvent();
01444
01445
bool initFindNode(
bool selection,
bool reverse,
bool fromCursor );
01446
void findText();
01447
void findTextNext();
01448
void extendSelection( DOM::NodeImpl* node,
long offset, DOM::
Node& selectionNode,
long& selectionOffset,
bool right,
bool paragraph );
01458
void extendSelectionTo(
int x,
int y,
int absX,
int absY, const DOM::
Node &innerNode);
01462
bool isExtendingSelection() const;
01463 khtml::Decoder *createDecoder();
01464
01468
void zoomIn(const
int stepping[],
int count);
01472
void zoomOut(const
int stepping[],
int count);
01473
01474
void emitCaretPositionChanged(const DOM::
Node &node,
long offset);
01475
01476
void setDebugScript(
bool enable );
01477
01478 KHTMLPartPrivate *d;
01479 friend class KHTMLPartPrivate;
01480 };
01481
01482
01483 #endif