📄 mgjs_htmlobjectelement.cpp
字号:
#include "mgjs_main.h"#include <../misc/htmlattrs.h> #include <html_objectimpl.h>#include <html_formimpl.h>static JSBool GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); enum HTMLObjectElement_slots { HTMLOBJECTELEMENT_FORM , HTMLOBJECTELEMENT_CODE , HTMLOBJECTELEMENT_ALIGN , HTMLOBJECTELEMENT_ARCHIVE , HTMLOBJECTELEMENT_BORDER , HTMLOBJECTELEMENT_CODEBASE , HTMLOBJECTELEMENT_CODETYPE , HTMLOBJECTELEMENT_DATA , HTMLOBJECTELEMENT_DECLARE , HTMLOBJECTELEMENT_HEIGHT , HTMLOBJECTELEMENT_HSPACE , HTMLOBJECTELEMENT_NAME , HTMLOBJECTELEMENT_STANDBY , HTMLOBJECTELEMENT_TABINDEX , HTMLOBJECTELEMENT_TYPE , HTMLOBJECTELEMENT_USEMAP , HTMLOBJECTELEMENT_VSPACE , HTMLOBJECTELEMENT_WIDTH , HTMLOBJECTELEMENT_CONTENTDOCUMENT ,};static JSBool GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){ myJSObjectPrivate *mObjectPrivate; mObjectPrivate=(myJSObjectPrivate*)JS_GetPrivate(cx,obj); HTMLObjectElementImpl *impl; DOMString dsReturn=(const char*)""; long int lReturn; bool bReturn; impl=(HTMLObjectElementImpl *)mObjectPrivate->CurNode; if(!impl)return JS_FALSE; // JSObject *eobj; if (JSVAL_IS_INT(id)) { switch (JSVAL_TO_INT(id)) { case HTMLOBJECTELEMENT_FORM : // TODO:error // eobj=NewScriptHTMLFormElement(cx,JS_GetPrototype(cx,obj),0,((HTMLObjectElementImpl *)impl)->form()); // if(!eobj)return JS_FALSE; // *vp=OBJECT_TO_JSVAL(eobj); return JS_FALSE; break; case HTMLOBJECTELEMENT_CODE : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_CODE); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_ALIGN : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_ALIGN); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_ARCHIVE : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_ARCHIVE); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_BORDER : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_BORDER); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_CODEBASE : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_CODEBASE); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_CODETYPE : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_CODETYPE); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_DATA : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_DATA); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_DECLARE : bReturn=((ElementImpl *)impl)->getAttribute(ATTR_DECLARE).isNull(); *vp=INT_TO_JSVAL(bReturn);#if DEBUG_BY_XHTANG *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,QString::number(bReturn)));#endif break; case HTMLOBJECTELEMENT_HEIGHT : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_HEIGHT); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_HSPACE : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_HSPACE); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_NAME : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_NAME); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_STANDBY : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_STANDBY); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_TABINDEX : lReturn=((ElementImpl *)impl)->getAttribute(ATTR_TABINDEX).toInt(); *vp=INT_TO_JSVAL(lReturn);#if DEBUG_BY_XHTANG *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,QString::number(lReturn)));#endif break; case HTMLOBJECTELEMENT_TYPE : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_TYPE); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_USEMAP : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_USEMAP); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_VSPACE : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_VSPACE); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLOBJECTELEMENT_WIDTH : dsReturn=((ElementImpl *)impl)->getAttribute(ATTR_WIDTH); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; } } return JS_TRUE;}static JSBool SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){ myJSObjectPrivate *mObjectPrivate=(myJSObjectPrivate *)JS_GetPrivate(cx,obj); HTMLObjectElementImpl *impl; DOMString dsValue; bool bValue;long int lValue; impl=(HTMLObjectElementImpl *)mObjectPrivate->CurNode; if(!impl)return JS_FALSE; JSString *jss; if (!(jss = JS_ValueToString (cx,*vp)))return JS_FALSE; dsValue = (const char*)JS_GetStringBytes (jss); if (JSVAL_IS_INT(id)) { switch (JSVAL_TO_INT(id)) {#if 0 //note:this attribute is readonly case HTMLOBJECTELEMENT_FORM : break;#endif case HTMLOBJECTELEMENT_CODE : ((ElementImpl *)impl)->setAttribute(ATTR_CODE,dsValue); break; case HTMLOBJECTELEMENT_ALIGN : ((ElementImpl *)impl)->setAttribute(ATTR_ALIGN,dsValue); break; case HTMLOBJECTELEMENT_ARCHIVE : ((ElementImpl *)impl)->setAttribute(ATTR_ARCHIVE,dsValue); break; case HTMLOBJECTELEMENT_BORDER : ((ElementImpl *)impl)->setAttribute(ATTR_BORDER,dsValue); break; case HTMLOBJECTELEMENT_CODEBASE : ((ElementImpl *)impl)->setAttribute(ATTR_CODEBASE,dsValue); break; case HTMLOBJECTELEMENT_CODETYPE : ((ElementImpl *)impl)->setAttribute(ATTR_CODETYPE,dsValue); break; case HTMLOBJECTELEMENT_DATA : ((ElementImpl *)impl)->setAttribute(ATTR_DATA,dsValue); break; case HTMLOBJECTELEMENT_DECLARE : bValue=(bool)JSVAL_TO_INT(*vp); ((ElementImpl *)impl)->setAttribute(ATTR_DECLARE,bValue); break; case HTMLOBJECTELEMENT_HEIGHT : ((ElementImpl *)impl)->setAttribute(ATTR_HEIGHT,dsValue); break; case HTMLOBJECTELEMENT_HSPACE : ((ElementImpl *)impl)->setAttribute(ATTR_HSPACE,dsValue); break; case HTMLOBJECTELEMENT_NAME : ((ElementImpl *)impl)->setAttribute(ATTR_NAME,dsValue); break; case HTMLOBJECTELEMENT_STANDBY : ((ElementImpl *)impl)->setAttribute(ATTR_STANDBY,dsValue); break; case HTMLOBJECTELEMENT_TABINDEX : lValue=(bool)JSVAL_TO_INT(*vp); ((ElementImpl *)impl)->setAttribute(ATTR_TABINDEX,lValue); break; case HTMLOBJECTELEMENT_TYPE : ((ElementImpl *)impl)->setAttribute(ATTR_TYPE,dsValue); break; case HTMLOBJECTELEMENT_USEMAP : ((ElementImpl *)impl)->setAttribute(ATTR_USEMAP,dsValue); break; case HTMLOBJECTELEMENT_VSPACE : ((ElementImpl *)impl)->setAttribute(ATTR_VSPACE,dsValue); break; case HTMLOBJECTELEMENT_WIDTH : ((ElementImpl *)impl)->setAttribute(ATTR_WIDTH,dsValue); break; } } return JS_TRUE;}static JSPropertySpec HTMLObjectElementProperties[] ={ {"form", HTMLOBJECTELEMENT_FORM, JSPROP_ENUMERATE | JSPROP_READONLY}, {"code", HTMLOBJECTELEMENT_CODE, JSPROP_ENUMERATE}, {"align", HTMLOBJECTELEMENT_ALIGN, JSPROP_ENUMERATE}, {"archive", HTMLOBJECTELEMENT_ARCHIVE, JSPROP_ENUMERATE}, {"border", HTMLOBJECTELEMENT_BORDER, JSPROP_ENUMERATE}, {"codeBase", HTMLOBJECTELEMENT_CODEBASE, JSPROP_ENUMERATE}, {"codeType", HTMLOBJECTELEMENT_CODETYPE, JSPROP_ENUMERATE}, {"data", HTMLOBJECTELEMENT_DATA, JSPROP_ENUMERATE}, {"declare", HTMLOBJECTELEMENT_DECLARE, JSPROP_ENUMERATE}, {"height", HTMLOBJECTELEMENT_HEIGHT, JSPROP_ENUMERATE}, {"hspace", HTMLOBJECTELEMENT_HSPACE, JSPROP_ENUMERATE}, {"name", HTMLOBJECTELEMENT_NAME, JSPROP_ENUMERATE}, {"standby", HTMLOBJECTELEMENT_STANDBY, JSPROP_ENUMERATE}, {"tabIndex", HTMLOBJECTELEMENT_TABINDEX, JSPROP_ENUMERATE}, {"type", HTMLOBJECTELEMENT_TYPE, JSPROP_ENUMERATE}, {"useMap", HTMLOBJECTELEMENT_USEMAP, JSPROP_ENUMERATE}, {"vspace", HTMLOBJECTELEMENT_VSPACE, JSPROP_ENUMERATE}, {"width", HTMLOBJECTELEMENT_WIDTH, JSPROP_ENUMERATE}, {"contentDocument", HTMLOBJECTELEMENT_CONTENTDOCUMENT, JSPROP_ENUMERATE}, {0}};JSClass HTMLObjectElementClass = { "HTMLObjectElement", JSCLASS_HAS_PRIVATE , JS_PropertyStub, JS_PropertyStub, GetHTMLObjectElementProperty, SetHTMLObjectElementProperty, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub };static JSFunctionSpec HTMLObjectElementMethods[] = { {0}};JSObject* InitHTMLObjectElementClass(JSContext *cx,JSObject *globalObj,JSObject *proto){ JSObject *obj; obj = JS_DefineObject (cx,globalObj, "HtmlObjectElement", &HTMLObjectElementClass,proto,JSPROP_ENUMERATE); JS_DefineProperties (cx,obj,HTMLObjectElementProperties); JS_DefineFunctions (cx,obj,HTMLObjectElementMethods); return obj;}JSObject* NewScriptHTMLObjectElement(JSContext *cx,JSObject *proto,JSObject *parent,ElementImpl *eImpl){ JSObject *obj; JSObject *global = JS_GetGlobalObject(cx); jsval vp; if ((JS_TRUE == JS_LookupProperty(cx, global, "HtmlObjectElement", &vp) && JSVAL_IS_OBJECT(vp))) obj=JS_NewObject(cx,&HTMLObjectElementClass,JSVAL_TO_OBJECT(vp),NULL); else obj=InitHTMLObjectElementClass(cx,JS_GetParent(cx,proto),proto); myJSObjectPrivate *mObjectPrivate=new myJSObjectPrivate; mObjectPrivate->CurNode=(ElementImpl*)eImpl; JS_SetPrivate(cx,obj,(void*)mObjectPrivate); return obj;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -