⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mgjs_htmlobjectelement.cpp

📁 monqueror一个很具有参考价值的源玛
💻 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 + -