//--------------------------------------------------------------------------- // TVPCreateEventObject //--------------------------------------------------------------------------- iTJSDispatch2 * TVPCreateEventObject(const tjs_char *type, iTJSDispatch2 *targthis, iTJSDispatch2 *targ) { // create a dictionary object for event dispatching ( to "action" method ) iTJSDispatch2 * object = TJSCreateDictionaryObject(); static ttstr type_name(TJS_W("type")); static ttstr target_name(TJS_W("target")); { tTJSVariant val(type); if(TJS_FAILED(object->PropSet(TJS_MEMBERENSURE|TJS_IGNOREPROP, type_name.c_str(), type_name.GetHint(), &val, object))) TVPThrowInternalError; } { tTJSVariant val(targthis, targ); if(TJS_FAILED(object->PropSet(TJS_MEMBERENSURE|TJS_IGNOREPROP, target_name.c_str(), target_name.GetHint(), &val, object))) TVPThrowInternalError; } return object; }
static tTVInteger LayerPropGet(iTJSDispatch2 *lay, ttstr &prop, tTVInteger defval = 0) { if (!LayerClass) { tTJSVariant var; TVPExecuteExpression(TJS_W("Layer"), &var); LayerClass = var.AsObjectNoAddRef(); } tTJSVariant val; return (TJS_FAILED(LayerClass->PropGet(0, prop.c_str(), prop.GetHint(), &val, lay))) ? defval : val.AsInteger(); }
void Deliver() { if(!TJSIsObjectValid(Target->IsValid(0, NULL, NULL, Target))) return; // The target had been invalidated tTJSVariant **ArgsPtr = new tTJSVariant*[NumArgs]; for(tjs_uint i=0; i<NumArgs; i++) ArgsPtr[i] = Args + i; try { Target->FuncCall(0, EventName.c_str(), EventName.GetHint(), NULL, NumArgs, ArgsPtr, Target); } catch(...) { delete [] ArgsPtr; throw; } delete [] ArgsPtr; }