Widget *myWidgets;
xawWidet *myCtrls;
+
int objIDc = 0;
-char* winName;
/* コールバック関数 */
void xawJsCallbackFunction( Widget w, XtPointer client, XtPointer called )
{
- int* myID;
- winName = (char*)malloc(sizeof(char)*16);
- winName = XtName(w);
-
- sscanf(winName,"%d",myID);
- printf("%d",*myID);
- JSObjectCallAsFunction(*(myCtrls[*myID].Context), *(myCtrls[*myID].CallbackFunction), NULL, 0,NULL,NULL);
+ jsCallbackInfo* mycallback = (jsCallbackInfo *) client;
+ JSObjectCallAsFunction(mycallback->Context, mycallback->Function, NULL, 0,NULL,NULL);
}
Widget createForm(Widget* form, xawWindow window)
return top;
}
-Widget createControl(xawWidet widget)
+Widget createControl(xawWidet widget, jsCallbackInfo* callinfo)
{
myWidgets = (Widget *)realloc( myWidgets, sizeof(Widget)*(objIDc+2) );
if( myWidgets == NULL )//ポインタが空っぽだったら実行停止。
/* ウィンドウの上端から */ XtNfromVert, NULL,
XtNvertDistance, widget.Top,
NULL );
- XtAddCallback( myWidgets[objIDc+2], XtNcallback, xawJsCallbackFunction, NULL );
+ XtAddCallback( myWidgets[objIDc+2], XtNcallback, xawJsCallbackFunction, callinfo );
objIDc++;
return myWidgets[objIDc+2];
}
JSValueRef* jobjExp)
{
JSValueRef r = JSValueMakeNumber(ctx, -1);
-
- //name
- //JSStringRef jstrName = JSValueToStringCopy(ctx, JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Name"), jobjExp), jobjExp);
- //size_t len = JSStringGetMaximumUTF8CStringSize(jstrName);
- //char* name = (char*)malloc(len);
- //JSStringGetUTF8CString(jstrName, name, len);
- //**********
-
-
+
//type
int typenum = (int)JSValueToNumber(ctx, JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Type"), jobjExp),NULL);
WidgetClass type;
myCtrls[objIDc+2].Left = L;//x
myCtrls[objIDc+2].Top = T;//y
myCtrls[objIDc+2].Border = B;
- myCtrls[objIDc+2].Context = ctx;
+
+ jsCallbackInfo mycallback;
+ mycallback.Context = ctx;
+ mycallback.Function = NULL;
if(!JSValueIsUndefined(ctx, JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Callback"), NULL)))
{
- myCtrls[objIDc+2].CallbackFunction = JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Callback"), NULL);
+ mycallback.Function = JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Callback"), NULL);
}
+
-
-
- createControl(myCtrls[objIDc+2]);
+ createControl(myCtrls[objIDc+2], &mycallback);
r = JSValueMakeNumber(ctx, objIDc);
JSObjectSetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("ID"), r, kJSPropertyAttributeNone, NULL);
return r;
myWindow.Direction = (JSValueToBoolean(ctx, JSObjectGetProperty(ctx, jobjThis, JSStringCreateWithUTF8CString("Name"), jobjExp)))?XtorientVertical:XtorientHorizontal;
myWidgets[objIDc] = createForm(&myWidgets[objIDc + 1], myWindow);
+
r = JSValueMakeNumber(ctx, objIDc);
JSObjectSetProperty(ctx, Widget, JSStringCreateWithUTF8CString("Top"), Control_Top, kJSPropertyAttributeNone, NULL);
JSObjectSetProperty(ctx, Widget, JSStringCreateWithUTF8CString("Border"), Control_Border, kJSPropertyAttributeNone, NULL);
JSObjectSetProperty(ctx, Widget, JSStringCreateWithUTF8CString("Callback"), Control_Callback, kJSPropertyAttributeNone, NULL);
-// dialogtest(g_argc,g_argv);
}