📄 mgjs_htmltablerowelement.cpp
字号:
#include "mgjs_main.h"#include <../misc/htmlattrs.h> #include <html_tableimpl.h>static JSBool GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);static JSBool HTMLTableRowElementInsertCell(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);static JSBool HTMLTableRowElementDeleteCell(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); enum HTMLTableRowElement_slots { HTMLTABLEROWELEMENT_ROWINDEX , HTMLTABLEROWELEMENT_SECTIONROWINDEX , HTMLTABLEROWELEMENT_CELLS , HTMLTABLEROWELEMENT_ALIGN , HTMLTABLEROWELEMENT_BGCOLOR , HTMLTABLEROWELEMENT_CH , HTMLTABLEROWELEMENT_CHOFF , HTMLTABLEROWELEMENT_VALIGN ,};static JSBool GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){ myJSTableRowPrivate *mTableRowPrivate=(myJSTableRowPrivate *)JS_GetPrivate(cx,obj); HTMLElementImpl *e; JSObject *eobj; DOMString dsReturn=(const char*)""; long lReturn; // bool bReturn; e=(HTMLElementImpl *)mTableRowPrivate->CurNode; if(!e)return JS_FALSE;#if DEBUG_BY_XHTANG QString qs=(e->nodeName()).string(); char s[1024]; strcpy(s,"TableRowElement.cpp nodeName:");strcat(s,(const char*)qs); fprintf(stderr,"\n%s\n",s);#endif if (JSVAL_IS_INT(id)) { switch (JSVAL_TO_INT(id)) { case HTMLTABLEROWELEMENT_ROWINDEX: lReturn=((HTMLTableRowElementImpl *)e)->rowIndex(); *vp=INT_TO_JSVAL(lReturn);#if DEBUG_BY_XHTANG *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,QString::number(lReturn)));#endif break; case HTMLTABLEROWELEMENT_SECTIONROWINDEX : lReturn=((HTMLTableRowElementImpl *)e)->sectionRowIndex(); *vp=INT_TO_JSVAL(lReturn);#if DEBUG_BY_XHTANG *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,QString::number(lReturn)));#endif break; case HTMLTABLEROWELEMENT_CELLS : eobj=NewScriptHTMLCollectionElement(cx,JS_GetPrototype(cx,obj),0,e,TR_CELLS); *vp=OBJECT_TO_JSVAL(eobj); break; case HTMLTABLEROWELEMENT_ALIGN : dsReturn=((ElementImpl *)e)->getAttribute(ATTR_ALIGN); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLTABLEROWELEMENT_BGCOLOR : dsReturn=((ElementImpl *)e)->getAttribute(ATTR_BGCOLOR); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLTABLEROWELEMENT_CH : dsReturn=((ElementImpl *)e)->getAttribute(ATTR_CHAR); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLTABLEROWELEMENT_CHOFF : dsReturn=((ElementImpl *)e)->getAttribute(ATTR_CHAROFF); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; case HTMLTABLEROWELEMENT_VALIGN : dsReturn=((ElementImpl *)e)->getAttribute(ATTR_VALIGN); *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,dsReturn.string())); break; } } return JS_TRUE;}static JSBool SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){ myJSTableRowPrivate *mTableRowPrivate=(myJSTableRowPrivate *)JS_GetPrivate(cx,obj); HTMLElementImpl *e; DOMString dsValue; e=(HTMLElementImpl *)mTableRowPrivate->CurNode; JSString *jss; if (!(jss = JS_ValueToString (cx,*vp)))return JS_FALSE; dsValue = (const char*)JS_GetStringBytes (jss); if(!e)return JS_FALSE; if (JSVAL_IS_INT(id)) { switch (JSVAL_TO_INT(id)) {#if 0 //following three attributes are readonly case HTMLTABLEROWELEMENT_ROWINDEX: break; case HTMLTABLEROWELEMENT_SECTIONROWINDEX : break; case HTMLTABLEROWELEMENT_CELLS : break;#endif case HTMLTABLEROWELEMENT_ALIGN : ((ElementImpl *)e)->setAttribute(ATTR_ALIGN,dsValue); break; case HTMLTABLEROWELEMENT_BGCOLOR : ((ElementImpl *)e)->setAttribute(ATTR_BGCOLOR,dsValue); break; case HTMLTABLEROWELEMENT_CH : ((ElementImpl *)e)->setAttribute(ATTR_CHAR,dsValue); break; case HTMLTABLEROWELEMENT_CHOFF : ((ElementImpl *)e)->setAttribute(ATTR_CHAROFF,dsValue); break; case HTMLTABLEROWELEMENT_VALIGN : ((ElementImpl *)e)->setAttribute(ATTR_VALIGN,dsValue); break; } } return JS_TRUE;}static JSBool HTMLTableRowElementInsertCell(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){ myJSPrivateData *mypd=(myJSPrivateData *)JS_GetContextPrivate(cx); myJSTableRowPrivate *mTableRowPriv=(myJSTableRowPrivate *)JS_GetPrivate(cx,obj); if(!mypd||!mTableRowPriv)return JS_FALSE; // DOM::HTMLDocumentImpl *pDoc; HTMLElementImpl *e,*eReturn; // JSObject *eobj; long index; e=(HTMLElementImpl *)mTableRowPriv->CurNode; if(!e)return JS_FALSE; if(argc<1)return JS_FALSE; if (!JSVAL_IS_INT(argv[0]))return JS_FALSE; index=JSVAL_TO_INT(argv[0]); if(index<0)return JS_FALSE;#if DEBUG_BY_XHTANG QString qs=(e->nodeName()).string(); char s[1024]; strcpy(s,"TableRowElement.cpp InsertCell nodeName:");strcat(s,(const char*)qs); fprintf(stderr,"\n%s index:%ld\n",s,index);#endif eReturn=(HTMLElementImpl *)(((HTMLTableRowElementImpl*)e)->insertCell(index));#if DEBUG_BY_XHTANG fprintf(stderr,"TableRowElement.cpp InsertCell eReturn:%p\n",eReturn);#endif if(!eReturn)return JS_FALSE; //TODO:#if DEBUG_BY_XHTANG fprintf(stderr,"TableRowElement.cpp InsertCell eReturn:%p NodeName:%s\n",eReturn,(const char*)((eReturn->nodeName()).string()));#endif return JS_TRUE;} static JSBool HTMLTableRowElementDeleteCell(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){ myJSPrivateData *mypd=(myJSPrivateData *)JS_GetContextPrivate(cx); myJSTableRowPrivate *mTableRowPriv=(myJSTableRowPrivate *)JS_GetPrivate(cx,obj); if(!mypd||!mTableRowPriv)return JS_FALSE; // DOM::HTMLDocumentImpl *pDoc; HTMLElementImpl *e; // JSObject *eobj; long index; e=(HTMLElementImpl *)mTableRowPriv->CurNode; if(!e)return JS_FALSE; if(argc<1)return JS_FALSE; if (!JSVAL_IS_INT(argv[0]))return JS_FALSE; index=JSVAL_TO_INT(argv[0]); if(index<0)return JS_FALSE;#if DEBUG_BY_XHTANG QString qs=(e->nodeName()).string(); char s[1024]; strcpy(s,"TableRowElement.cpp nodeName:");strcat(s,(const char*)qs); fprintf(stderr,"\n%s\n",s);#endif (((HTMLTableRowElementImpl*)e)->deleteCell(index));#if DEBUG_BY_XHTANG fprintf(stderr,"TableRowElement.cpp DeleteCell index:%ld",index);#endif return JS_TRUE;} JSClass HTMLTableRowElementClass = { "HTMLTableRowElement", JSCLASS_HAS_PRIVATE, JS_PropertyStub, JS_PropertyStub, GetHTMLTableRowElementProperty, SetHTMLTableRowElementProperty, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub };static JSPropertySpec HTMLTableRowElementProperties[] ={ {"rowIndex", HTMLTABLEROWELEMENT_ROWINDEX, JSPROP_ENUMERATE}, {"sectionRowIndex", HTMLTABLEROWELEMENT_SECTIONROWINDEX, JSPROP_ENUMERATE}, {"cells", HTMLTABLEROWELEMENT_CELLS, JSPROP_ENUMERATE}, {"align", HTMLTABLEROWELEMENT_ALIGN, JSPROP_ENUMERATE}, {"bgColor", HTMLTABLEROWELEMENT_BGCOLOR, JSPROP_ENUMERATE}, {"ch", HTMLTABLEROWELEMENT_CH, JSPROP_ENUMERATE}, {"chOff", HTMLTABLEROWELEMENT_CHOFF, JSPROP_ENUMERATE}, {"vAlign", HTMLTABLEROWELEMENT_VALIGN, JSPROP_ENUMERATE}, {0}};static JSFunctionSpec HTMLTableRowElementMethods[] = { {"insertCell", HTMLTableRowElementInsertCell, 1}, {"deleteCell", HTMLTableRowElementDeleteCell, 1}, {0}};JSObject* InitHTMLTableRowElementClass(JSContext *cx,JSObject *globalObj,JSObject *proto){ JSObject *obj; obj = JS_DefineObject (cx,globalObj, "HTMLTableRowElement", &HTMLTableRowElementClass,proto,JSPROP_ENUMERATE); JS_DefineProperties (cx,obj,HTMLTableRowElementProperties); JS_DefineFunctions (cx,obj,HTMLTableRowElementMethods); return obj;}JSObject* NewScriptHTMLTableRowElement(JSContext *cx,JSObject *proto,JSObject *parent,ElementImpl *eImpl){ JSObject *obj; JSObject *global = JS_GetGlobalObject(cx); jsval vp; if ((JS_TRUE == JS_LookupProperty(cx, global, "HTMLTableRowElement", &vp) && JSVAL_IS_OBJECT(vp))) obj=JS_NewObject(cx,&HTMLTableRowElementClass,JSVAL_TO_OBJECT(vp),NULL); else obj=InitHTMLTableRowElementClass(cx,JS_GetParent(cx,proto),proto); myJSTableRowPrivate *mTableRowPrivate=new myJSTableRowPrivate; mTableRowPrivate->CurNode=(ElementImpl*)eImpl; JS_SetPrivate(cx,obj,(void*)mTableRowPrivate); return obj;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -