📄 xpig.c
字号:
switch(*tag) { case DEBUGTOGGLE: IPigDebugToggle(); iXPigDebugToggle(); break; default: stat = (*(FuncPtrs.MenuFnc)) (tag); } iXPig_unblock_callbacks(); return stat;}static Long iXPig_call_init(void){ Long stat = MOUSE_EVENT; if(FuncPtrs.InitFnc == NULL) return stat; if(iXPig_blocking_callbacks() == TRUE) return stat; /* show_message(" "); */ stat = (*(FuncPtrs.InitFnc)) (); iXPig_unblock_callbacks(); return stat;}static void iXPigRepaint(Long menu_id){ /* Long menu_id = REPAINT; */ Long stat; if(FuncPtrs.MenuFnc == NULL) return; /* disable menu here */ iXPig_disable_menus(); stat = iXPig_call_menu(&menu_id); XFlush(XtDisplay(MainXCanvas)); switch (stat) { case NULL_EVENT: PIGDBG2("NULL_EVENT return code %li\n",(long)stat); break; case MOUSE_EVENT: PIGDBG2("MOUSE_EVENT return code %li\n",(long)stat); break; case MENU_EVENT: PIGDBG2("MENU_EVENT return code %li\n",(long)stat); break; case QUIT_EVENT: PIGDBG2("QUIT_EVENT return code %li\n",(long)stat); WPigExit(); break; case KEYBOARD_EVENT: PIGDBG2("KEYBOARD_EVENT return code %li\n",(long)stat); break; case STRING_EVENT: PIGDBG2("STRING_EVENT return code %li\n",(long)stat); break; case PRINT_EVENT: PIGDBG2("PRINT_EVENT return code %li\n",(long)stat); break; default: PIGDBG4("Unrecognised return code %li\n",(long)stat); break; } /* if(last_mainw == PIG_MAIN_WIN) */ /* stat = iXPig_call_mouse */ /* (&last_mainw, &last_mainb, &last_mainx, &last_mainy); */ /* enable menu here */ iXPig_enable_menus();}/*----------------------------------------------------------------------------*//* static void iXPigCanvasCB(Widget widget, */ /* XtPointer client_data, */ /* XtPointer call_data) *//* *//* { */ /* int width, height; */ /* XmDrawingAreaCallbackStruct* ptr; *//* *//* PIGDBG("iXPigCanvasCB(widget, client_data, call_data) (%li, %li, %li)\n", */ /* (long) widget, (long) client_data, (long)call_data); *//* */ /* ptr = (XmDrawingAreaCallbackStruct*) call_data; *//* */ /* if (ptr != NULL) { */ /* switch(ptr->reason) { */ /* case XmCR_RESIZE: *//* PIGDBG2("THE Resize part of iXPigCanvasCB\n"); */ /* Get size of Window */ /* XtVaGetValues(widget, */ /* XmNwidth, width, */ /* XmNheight, height, */ /* NULL); */ /* LET PIG KNOW!!!!!!! *//* PIGDBG("New Window Dimensions: (%d x %d)\n", width, height); */ /* break; */ /* */ /* case XmCR_EXPOSE: *//* PIGDBG2("THE Expose part of iXPigCanvasCB\n"); */ /* * We draw when all expose events are in <---- ?????? */ /* if (ptr->event->xexpose.count == 0) { *//* need repaint here *//* PIGDBG2("Calling iXPigRepaint() int WinPigMain() \n"); */ /* iXPigRepaint(); */ /* } else { */ /* PIGDBG2("WAITING FOR THIS THING TO HIT ZERO\n\n\n\n\n\n\n\n\n\n\n"); */ /* } */ /* break; *//* */ /* case XmCR_INPUT: *//* PIGDBG2("THE Input part of iXPigCanvasCB\n"); */ /* break; *//* */ /* default: *//* PIGDBG2("THE Default part of iXPigCanvasCB\n"); */ /* break; *//* */ /* } */ /* } *//* PIGDBG2("Leaving iXPigCanvasCB\n"); */ /* return; *//* } */static void menu_CB( Widget w, XtPointer client_data, XtPointer call_data){ Long tag = get_client_data((Long *)client_data); Long stat; char *cname; XmPushButtonCallbackStruct *ptr = (XmPushButtonCallbackStruct *)call_data; { XmString name = NULL; XtVaGetValues( w, XmNlabelString, &name, NULL); XmStringGetLtoR(name, XmSTRING_DEFAULT_CHARSET, &cname); XmStringFree(name); } switch(ptr->reason) { case XmCR_ARM: PIGDBG2("menu_event_handler CR_ARM: Widget %s # %li, tag %li\n", cname, (long) w, tag); { char message[100]; sprintf(message, "Menu item %s highlighted",cname); /* show_message(message); */ } break; case XmCR_DISARM: PIGDBG2("menu_event_handler CR_DISARM: Widget %li, tag %li\n", (long) w, tag); /* show_message(" "); */ break; case XmCR_ACTIVATE: PIGDBG3("****************\n*\n* Menu_event_handler CR_ACTIVATE: Widget %s # %li, tag %li\n*\n*\n****************\n", cname, (long) w, tag); { char message[100]; sprintf(message, "Menu item %s selected",cname); /* show_message(message); */ if(debug()) add_to_command_history(message); /* disable menu here */ iXPig_disable_menus();// agd 28/May/1998 need to add trap to process Repeat menu item stat = iXPig_call_menu(&tag);// agd 28/May/1998 need to add memory for last event, in order to process Repeat menu item
switch(stat) { case QUIT_EVENT: WPigExit(); break; case KEYBOARD_EVENT: PIGDBG2("KEYBOARD_EVENT return code %li\n",(long)stat); break; case STRING_EVENT: PIGDBG2("STRING_EVENT return code %li\n",(long)stat); break; case REPAINT_EVENT: PIGDBG2("REPAINT_EVENT return code %li\n",(long)stat); iXPigRepaint(REPAINT_ALL); break; case PRINT_EVENT: PIGDBG2("PRINT_EVENT return code %li\n",(long)stat); } /* enable menu here */ iXPig_enable_menus(); } break; default: PIGDBG3("callback reason not understood %li", (long)ptr->reason); } XtFree(cname); } /*----------------------------------------------------------------------------*/static void iXPigExitCB(Widget widget, XtPointer client_data, XtPointer call_data){ /* exitCB */ exit(0);} /* exitCB *//* extern char *strdup(const char *); *//*----------------------------------------------------------------------------*/static void selection_okCB(Widget widget, XtPointer client_data, XtPointer call_data){ XPigXCallback_data* ptr = (XPigXCallback_data *) client_data; XmSelectionBoxCallbackStruct* ptr2 = (XmSelectionBoxCallbackStruct *) call_data; XmStringGetLtoR(ptr2->value, XmSTRING_DEFAULT_CHARSET, &ptr->answer); PIGDBG2("selection_okCB %s\n", ptr->answer); if(strlen(ptr->answer) > 0) ptr->reason = xpOK; PIGDBG2("selection_okCB %s\n", ptr->answer);}/* static void okCB(Widget widget, XtPointer client_data, XtPointer call_data) *//* { */ /* XPigXCallback_data* ptr = (XPigXCallback_data *) client_data; */ /* XmSelectionBoxCallbackStruct* ptr2 = (XmSelectionBoxCallbackStruct *) call_data; *//* */ /* XmStringGetLtoR(ptr2->value, XmSTRING_DEFAULT_CHARSET, &ptr->answer); *//* */ /* ptr->reason = xpOK; */ /* PIGDBG2("okCB %s\n", ptr->answer); *//* } */static void cancelCB(Widget widget, XtPointer client_data, XtPointer call_data){ XPigXCallback_data* ptr = (XPigXCallback_data *) client_data;; ptr->reason = xpCANCEL; PIGDBG2("cancelCB %s\n", ptr->name);}static void yesno_yesCB(Widget widget, XtPointer client_data, XtPointer call_data){ XPigXCallback_data* ptr = (XPigXCallback_data *) client_data;; ptr->reason = xpOK; PIGDBG2("yesno_yesCB %s\n", ptr->name);}static void fatal_okCB(Widget widget, XtPointer client_data, XtPointer call_data){ XPigXCallback_data* ptr = (XPigXCallback_data *) client_data;; ptr->reason = xpOK; PIGDBG2("fatal_okCB %s\n", ptr->name);}static void files_cancelCB(Widget widget, XtPointer client_data, XtPointer call_data){ XmFileSelectionBoxCallbackStruct* ptr = (XmFileSelectionBoxCallbackStruct*) call_data; XPigXCallback_data* ptr2 = (XPigXCallback_data *) client_data; char *string1; char *string2; char *string3; char *string4; XmStringGetLtoR(ptr->value, XmSTRING_DEFAULT_CHARSET, &ptr2->answer); XmStringGetLtoR(ptr->value, XmSTRING_DEFAULT_CHARSET, &string1); XmStringGetLtoR(ptr->mask, XmSTRING_DEFAULT_CHARSET, &string2); XmStringGetLtoR(ptr->dir, XmSTRING_DEFAULT_CHARSET, &string3); XmStringGetLtoR(ptr->pattern, XmSTRING_DEFAULT_CHARSET, &string4); PIGDBG2("selected file named [%s]\n\n", string1); PIGDBG2("mask named [%s]\n\n", string2); PIGDBG2("directory named [%s]\n\n", string3); PIGDBG2("pattern named [%s]\n\n", string4); XtFree(string1); XtFree(string2); XtFree(string3); XtFree(string4); callback_data.reason = xpCANCEL; /* PIGDBG2("files_okCB %s\n", ptr->name); */}static void files_okCB(Widget widget, XtPointer client_data, XtPointer call_data){ XmFileSelectionBoxCallbackStruct* ptr = (XmFileSelectionBoxCallbackStruct*) call_data; XPigXCallback_data* ptr2 = (XPigXCallback_data *) client_data;; /* char *string1; */ /* char *string2; */ /* char *string3; */ /* char *string4; */ XmStringGetLtoR(ptr->value, XmSTRING_DEFAULT_CHARSET, &ptr2->answer); /* XmStringGetLtoR(ptr->value, XmSTRING_DEFAULT_CHARSET, &string1); */ /* XmStringGetLtoR(ptr->mask, XmSTRING_DEFAULT_CHARSET, &string2); */ /* XmStringGetLtoR(ptr->dir, XmSTRING_DEFAULT_CHARSET, &string3); */ /* XmStringGetLtoR(ptr->pattern, XmSTRING_DEFAULT_CHARSET, &string4); */ /* PIGDBG2("selected file named [%s]\n\n", string1); */ /* PIGDBG2("mask named [%s]\n\n", string2); */ /* PIGDBG2("directory named [%s]\n\n", string3); */ /* PIGDBG2("pattern named [%s]\n\n", string4); */ /* XtFree(string1); */ /* XtFree(string2); */ /* XtFree(string3); */ /* XtFree(string4); */ callback_data.reason = xpOK; /* PIGDBG2("files_okCB %s\n", ptr->name); */}static void string_okCB(Widget widget, XtPointer client_data, XtPointer call_data){ XmString the_string; XPigXCallback_data* ptr = (XPigXCallback_data *) client_data; ptr->reason = xpOK; PIGDBG2("string_yesCB %s\n", ptr->name); XtVaGetValues(widget, XmNtextString, &the_string, NULL); /* XmStringGetLtoR(the_string, XmSTRING_DEFAULT_CHARSET, &ptr2->answer); */ XmStringGetLtoR(the_string, XmSTRING_DEFAULT_CHARSET, &ptr->answer); XmStringFree(the_string); PIGDBG2("string_okCB answer = ---%s---\n", ptr->answer);}static void helpCB(Widget widget, XtPointer client_data, XtPointer call_data){ iWPigFatal("helpCB called!");}void AddCallbacks( Widget widget, XtPointer client_data, XtCallbackProc okCB, XtCallbackProc cancelCB, XtCallbackProc helpCB ){ /* AddCallbacks */ XtAddCallback(widget, XmNokCallback, okCB, client_data); XtAddCallback(widget, XmNcancelCallback, cancelCB, client_data); XtAddCallback(widget, XmNhelpCallback, helpCB, client_data);} /* AddCallbacks *//*----------------------------------------------------------------------------*/static Widget iXPigCreatePushbutton( Widget parent, const char* name, XtCallbackProc callback, XtPointer client_data){ /* CreatePushbutton */ Widget push; Arg args[20]; Cardinal n; n = 0; /* XtSetArg(args[n], XmNshadowThickness, 0); n++; */ push = XmCreatePushButton(parent, name, args, n); /* Set up callbacks. */ XtAddCallback(push, XmNarmCallback, callback, client_data); XtAddCallback(push, XmNdisarmCallback, callback, client_data); XtAddCallback(push, /* widget */ XmNactivateCallback, /* which callback */ callback, /* callback function */ client_data); /* extra data to pass */ XtManageChild(push); PIGDBG2("Added item %s, tag %li\n", name, (long)client_data); return push;} /* CreatePushbutton *//*----------------------------------------------------------------------------*/void WPigMainInit(void){PIGDBG3("void WPigMainInit(void)\n"); { static void XPigMainDummy(void); XPigMainDummy(); }PIGDBG3("Setting widgets in the application's window\n"); XtVaSetValues(MainXCanvas, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, ControlXCanvas, NULL); XtVaSetValues(manager, XmNmessageWindow, MessageWindow, XmNcommandWindowLocation, XmCOMMAND_BELOW_WORKSPACE, NULL);PIGDBG3("The XmMainWindowSetAreas Call\n"); XmMainWindowSetAreas( manager, menu_bar,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -