khtml Library API Documentation

kjs_window.h

00001 // -*- c-basic-offset: 2 -*- 00002 /* 00003 * This file is part of the KDE libraries 00004 * Copyright (C) 2000 Harri Porten (porten@kde.org) 00005 * Copyright (C) 2003 Apple Computer, Inc. 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Library General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Library General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Library General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 */ 00021 00022 #ifndef _KJS_WINDOW_H_ 00023 #define _KJS_WINDOW_H_ 00024 00025 #include <qobject.h> 00026 #include <qguardedptr.h> 00027 #include <qmap.h> 00028 #include <qptrlist.h> 00029 #include <qdatetime.h> 00030 00031 #include "kjs_binding.h" 00032 00033 class QTimer; 00034 class KHTMLView; 00035 class KHTMLPart; 00036 00037 namespace KParts { 00038 class ReadOnlyPart; 00039 } 00040 00041 namespace khtml { 00042 class ChildFrame; 00043 } 00044 00045 namespace KJS { 00046 00047 class WindowFunc; 00048 class WindowQObject; 00049 class Location; 00050 class History; 00051 class External; 00052 class FrameArray; 00053 class JSEventListener; 00054 class JSLazyEventListener; 00055 00056 class Screen : public ObjectImp { 00057 public: 00058 Screen(ExecState *exec); 00059 enum { 00060 Height, Width, ColorDepth, PixelDepth, AvailLeft, AvailTop, AvailHeight, 00061 AvailWidth 00062 }; 00063 virtual Value get(ExecState *exec, const Identifier &propertyName) const; 00064 Value getValueProperty(ExecState *exec, int token) const; 00065 private: 00066 KHTMLView *view; 00067 virtual const ClassInfo* classInfo() const { return &info; } 00068 static const ClassInfo info; 00069 }; 00070 00071 class Window : public ObjectImp { 00072 friend QGuardedPtr<KHTMLPart> getInstance(); 00073 friend class Location; 00074 friend class WindowFunc; 00075 friend class WindowQObject; 00076 friend class ScheduledAction; 00077 public: 00078 Window(khtml::ChildFrame *p); 00079 public: 00080 ~Window(); 00086 static Value retrieve(KParts::ReadOnlyPart *p); 00090 static Window *retrieveWindow(KParts::ReadOnlyPart *p); 00095 static Window *retrieveActive(ExecState *exec); 00096 KParts::ReadOnlyPart *part() const; 00097 virtual void mark(); 00098 virtual bool hasProperty(ExecState *exec, const Identifier &p) const; 00099 virtual Value get(ExecState *exec, const Identifier &propertyName) const; 00100 virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None); 00101 virtual bool toBoolean(ExecState *exec) const; 00102 void scheduleClose(); 00103 void closeNow(); 00104 void delayedGoHistory(int steps); 00105 void goHistory(int steps); 00106 void goURL(ExecState* exec, const QString& url, bool lockHistory); 00107 Value openWindow(ExecState *exec, const List &args); 00108 void resizeTo(QWidget* tl, int width, int height); 00109 void afterScriptExecution(); 00110 bool isSafeScript(ExecState *exec) const { 00111 KParts::ReadOnlyPart *activePart = static_cast<KJS::ScriptInterpreter *>( exec->interpreter() )->part(); 00112 if ( activePart == part() ) return true; 00113 return checkIsSafeScript( activePart ); 00114 } 00115 Location *location() const; 00116 ObjectImp* frames( ExecState* exec ) const; 00117 JSEventListener *getJSEventListener(const Value &val, bool html = false); 00118 JSLazyEventListener *getJSLazyEventListener(const QString &code, const QString &name, bool html = false); 00119 void clear( ExecState *exec ); 00120 virtual UString toString(ExecState *exec) const; 00121 00122 // Set the current "event" object 00123 void setCurrentEvent( DOM::Event *evt ); 00124 00125 QPtrDict<JSEventListener> jsEventListeners; 00126 virtual const ClassInfo* classInfo() const { return &info; } 00127 static const ClassInfo info; 00128 enum { Closed, Crypto, DefaultStatus, Status, Document, Node, EventCtor, Range, 00129 NodeFilter, DOMException, CSSRule, Frames, _History, _External, Event, InnerHeight, 00130 InnerWidth, Length, _Location, Navigate, Name, _Navigator, _Konqueror, ClientInformation, 00131 OffscreenBuffering, Opener, OuterHeight, OuterWidth, PageXOffset, PageYOffset, 00132 Parent, Personalbar, ScreenX, ScreenY, Scrollbars, Scroll, ScrollBy, 00133 ScreenTop, ScreenLeft, 00134 ScrollTo, ScrollX, ScrollY, MoveBy, MoveTo, ResizeBy, ResizeTo, Self, _Window, Top, _Screen, 00135 Image, Option, Alert, Confirm, Prompt, Open, SetTimeout, ClearTimeout, XMLHttpRequest, XMLSerializer, 00136 Focus, Blur, Close, SetInterval, ClearInterval, CaptureEvents, ReleaseEvents, 00137 Print, AddEventListener, RemoveEventListener, SideBar, 00138 Onabort, Onblur, 00139 Onchange, Onclick, Ondblclick, Ondragdrop, Onerror, Onfocus, 00140 Onkeydown, Onkeypress, Onkeyup, Onload, Onmousedown, Onmousemove, 00141 Onmouseout, Onmouseover, Onmouseup, Onmove, Onreset, Onresize, 00142 Onselect, Onsubmit, Onunload }; 00143 WindowQObject *winq; 00144 protected: 00145 enum DelayedActionId { NullAction, DelayedClose, DelayedGoHistory }; 00146 00147 Value getListener(ExecState *exec, int eventId) const; 00148 void setListener(ExecState *exec, int eventId, Value func); 00149 private: 00150 struct DelayedAction; 00151 friend struct DelayedAction; 00152 00153 bool checkIsSafeScript( KParts::ReadOnlyPart* activePart ) const; 00154 00155 QGuardedPtr<khtml::ChildFrame> m_frame; 00156 Screen *screen; 00157 History *history; 00158 External *external; 00159 FrameArray *m_frames; 00160 Location *loc; 00161 DOM::Event *m_evt; 00162 00163 struct DelayedAction { 00164 DelayedAction() : actionId(NullAction) {} // for QValueList 00165 DelayedAction( DelayedActionId id, QVariant p = QVariant() ) : actionId(id), param(p) {} 00166 DelayedActionId actionId; 00167 QVariant param; // just in case 00168 }; 00169 QValueList<DelayedAction> m_delayed; 00170 }; 00171 00177 class ScheduledAction { 00178 public: 00179 ScheduledAction(Object _func, List _args, QTime _nextTime, int _interval, bool _singleShot, int _timerId); 00180 ScheduledAction(QString _code, QTime _nextTime, int _interval, bool _singleShot, int _timerId); 00181 ~ScheduledAction(); 00182 bool execute(Window *window); 00183 void mark(); 00184 00185 ObjectImp *func; 00186 List args; 00187 QString code; 00188 bool isFunction; 00189 bool singleShot; 00190 00191 QTime nextTime; 00192 int interval; 00193 bool executing; 00194 int timerId; 00195 }; 00196 00197 class WindowQObject : public QObject { 00198 Q_OBJECT 00199 public: 00200 WindowQObject(Window *w); 00201 ~WindowQObject(); 00202 int installTimeout(const Identifier &handler, int t, bool singleShot); 00203 int installTimeout(const Value &func, List args, int t, bool singleShot); 00204 void clearTimeout(int timerId); 00205 void mark(); 00206 bool hasTimers() const; 00207 public slots: 00208 void timeoutClose(); 00209 protected slots: 00210 void parentDestroyed(); 00211 protected: 00212 void timerEvent(QTimerEvent *e); 00213 void setNextTimer(); 00214 private: 00215 Window *parent; 00216 QPtrList<ScheduledAction> scheduledActions; 00217 int pausedTime; 00218 int lastTimerId; 00219 }; 00220 00221 class Location : public ObjectImp { 00222 public: 00223 ~Location(); 00224 virtual Value get(ExecState *exec, const Identifier &propertyName) const; 00225 virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None); 00226 virtual Value toPrimitive(ExecState *exec, Type preferred) const; 00227 virtual UString toString(ExecState *exec) const; 00228 enum { Hash, Href, Hostname, Host, Pathname, Port, Protocol, Search, EqualEqual, 00229 Assign, Replace, Reload, ToString }; 00230 KParts::ReadOnlyPart *part() const; 00231 virtual const ClassInfo* classInfo() const { return &info; } 00232 static const ClassInfo info; 00233 private: 00234 friend class Window; 00235 Location(khtml::ChildFrame *f); 00236 QGuardedPtr<khtml::ChildFrame> m_frame; 00237 }; 00238 00239 #ifdef Q_WS_QWS 00240 class Konqueror : public ObjectImp { 00241 friend class KonquerorFunc; 00242 public: 00243 Konqueror(KHTMLPart *p) : part(p) { } 00244 virtual Value get(ExecState *exec, const Identifier &propertyName) const; 00245 virtual bool hasProperty(ExecState *exec, const Identifier &p) const; 00246 virtual UString toString(ExecState *exec) const; 00247 virtual const ClassInfo* classInfo() const { return &info; } 00248 static const ClassInfo info; 00249 private: 00250 KHTMLPart *part; 00251 }; 00252 #endif 00253 00254 } // namespace 00255 00256 #endif
KDE Logo
This file is part of the documentation for khtml Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 23:31:35 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003