=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/xdeb.c,v retrieving revision 1.4 retrieving revision 1.18 diff -u -p -r1.4 -r1.18 --- OpenXM_contrib2/asir2000/parse/xdeb.c 2000/08/22 05:04:28 1.4 +++ OpenXM_contrib2/asir2000/parse/xdeb.c 2020/10/04 03:14:09 1.18 @@ -45,9 +45,9 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/xdeb.c,v 1.3 2000/08/21 08:31:48 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/xdeb.c,v 1.17 2018/03/29 01:32:54 noro Exp $ */ -#if defined(VISUAL) +#if defined(VISUAL) || defined(__MINGW32__) #if defined(VISUAL_LIB) #include #include @@ -68,21 +68,21 @@ void get_rootdir(char *,int); void show_debug_window(int on) { - static int debug_gui_invoked = 0; + static int debug_gui_invoked = 0; - /* debug_gui_invoked < 0 : failed to invoke debug GUI */ - if ( debug_gui_invoked < 0 ) - return; - if ( !debug_gui_invoked ) { - if ( !on ) - return; - else if ( create_debug_gui() < 0 ) { - debug_gui_invoked = -1; - return; - } - debug_gui_invoked = 1; - } - set_debug_handles(on); + /* debug_gui_invoked < 0 : failed to invoke debug GUI */ + if ( debug_gui_invoked < 0 ) + return; + if ( !debug_gui_invoked ) { + if ( !on ) + return; + else if ( create_debug_gui() < 0 ) { + debug_gui_invoked = -1; + return; + } + debug_gui_invoked = 1; + } + set_debug_handles(on); } #else /* VISUAL_LIB */ @@ -90,150 +90,182 @@ void show_debug_window(int on) {} #endif #else /* VISUAL */ -#if DO_PLOT +#if defined(DO_PLOT) /* - * xdeb.c --- Asir Debug interface. + * xdeb.c --- Asir Debug interface. * - * akashi@sy.ssl.fujitsu.co.jp + * akashi@sy.ssl.fujitsu.co.jp */ #include #include #include #include -#include +#include +#include +#include static XrmOptionDescRec options[] = { - {"-reverse","*reverse",XrmoptionNoArg,"on"}, - {"-fg","*foreground",XrmoptionSepArg,NULL}, - {"-bg","*background",XrmoptionSepArg,NULL}, + {"-reverse","*reverse",XrmoptionNoArg,"on"}, + {"-fg","*foreground",XrmoptionSepArg,NULL}, + {"-bg","*background",XrmoptionSepArg,NULL}, }; static String fallback[] = { - "*Dialog*baseTranslations:#override Return: done()", - NULL + "*Dialog*baseTranslations:#override Return: done()", + NULL }; static void Done(); +static void Quit(); static void SetSelected(); +static void SetDismiss(); static XtActionsRec actions_table[] = { - {"done",Done}, + {"done",Done}, + {"quit",Quit}, }; char debug_cmd[BUFSIZ]; -static Widget toplevel, mainwin, cmdwin; -static XtAppContext app_con; +static Widget toplevel, mainwin, cmdwin; +static XtAppContext app_con; static int done; static Display *display; void get_cmd(); -static void Done(w,e,p,n) -Widget w; -XEvent *e; -String *p; -Cardinal *n; +static void Done(Widget w,XEvent *e,String *p,Cardinal *n) { - SetSelected(w,0,0); + SetSelected(w,0,0); } -static void SetSelected(w,cld,cad) -Widget w; -XtPointer cld,cad; +static void SetSelected(Widget w,XtPointer cld,XtPointer cad) { - Arg arg[5]; - char *cmd; + Arg arg[5]; + char *cmd; - done = 1; - cmd = XawDialogGetValueString(cmdwin); - strcpy(debug_cmd,cmd); - XtSetArg(arg[0], XtNvalue, ""); - XtSetValues(cmdwin, arg, 1); + done = 1; + cmd = XawDialogGetValueString(cmdwin); + strcpy(debug_cmd,cmd); + XtSetArg(arg[0], XtNvalue, ""); + XtSetValues(cmdwin, arg, 1); } -init_cmdwin() +static void SetDismiss(Widget w,XtPointer cld,XtPointer cad) { - Arg arg[5]; - int argc=0; - char *argv[1]; - int n; - char *d; - extern char displayname[]; - extern int do_server_in_X11; + Arg arg[5]; + char *cmd; - if ( !displayname[0] ) { - d = (char *)getenv("DISPLAY"); - if ( d ) - strcpy(displayname,d); - else - do_server_in_X11 = 0; - } - if ( displayname[0] ) { - argv[0] = 0; - XtToolkitInitialize(); - app_con = XtCreateApplicationContext(); - XtAppAddActions(app_con,actions_table, XtNumber(actions_table)); - XtAppSetFallbackResources(app_con,fallback); - display = XtOpenDisplay(app_con,displayname,"ox_asir_debug_window","ox_asir_debug_window", - options,XtNumber(options),&argc,argv); - toplevel = XtAppCreateShell(0,"ox_asir_debug_window",applicationShellWidgetClass, - display,0,0); - XtSetArg(arg[0],XtNiconName,"ox_asir_debug_window"); - mainwin = XtCreatePopupShell("shell",topLevelShellWidgetClass, - toplevel,arg,1); - /* - * Command line - */ - cmdwin = XtCreateManagedWidget("cmdwin", dialogWidgetClass, - mainwin, NULL, 0); - XawDialogAddButton(cmdwin,"OK",SetSelected,"OK"); - n = 0; - XtSetArg(arg[n], XtNlabel, "Command : "); n++; - XtSetArg(arg[n], XtNvalue, ""); n++; - XtSetValues(cmdwin, arg, n); - XtRealizeWidget(mainwin); - } + done = 1; + cmd = XawDialogGetValueString(cmdwin); + strcpy(debug_cmd,"quit"); + XtSetArg(arg[0], XtNvalue, ""); + XtSetValues(cmdwin, arg, 1); } -show_debug_window(on) -int on; +static Atom wm_delete_window; +static void Quit(Widget w, XEvent *ev, String *params,Cardinal *nparams) { - XEvent ev; + XBell(XtDisplay(w),0); +} - if ( mainwin ) { - if ( on ) - XtPopup(mainwin,XtGrabNone); - else - XtPopdown(mainwin); - XFlush(display); - while ( XtAppPending(app_con) ) { - XtAppNextEvent(app_con,&ev); - XtDispatchEvent(&ev); - } - } +void init_cmdwin() +{ + Arg arg[5]; + int argc=0; + char *argv[1]; + int n; + char *d; + char hostname[BUFSIZ],title[BUFSIZ]; + extern char displayname[]; + extern int do_server_in_X11; + static int is_init = 0; + + if ( is_init ) + return; + if ( !displayname[0] ) { + d = (char *)getenv("DISPLAY"); + if ( d ) + strcpy(displayname,d); + else + do_server_in_X11 = 0; + } + gethostname(hostname, BUFSIZ); + sprintf(title,"Asir debugger:%s",hostname); + if ( displayname[0] ) { + argv[0] = 0; + XtToolkitInitialize(); + app_con = XtCreateApplicationContext(); + XtAppAddActions(app_con,actions_table, XtNumber(actions_table)); + XtAppSetFallbackResources(app_con,fallback); + display = XtOpenDisplay(app_con,displayname,title,title, + options,XtNumber(options),&argc,argv); + toplevel = XtAppCreateShell(0,title,applicationShellWidgetClass, + display,0,0); + n = 0; + wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW", + False); + + XtSetArg(arg[n],XtNiconName,title); n++; + XtSetArg(arg[n], XtNwidth, 360); n++; + mainwin = XtCreatePopupShell("shell",topLevelShellWidgetClass, + toplevel,arg,n); + XtOverrideTranslations(mainwin, + XtParseTranslationTable("WM_PROTOCOLS: quit()")); + /* + * Command line + */ + cmdwin = XtCreateManagedWidget("cmdwin", dialogWidgetClass, + mainwin, NULL, 0); + XawDialogAddButton(cmdwin,"Execute",SetSelected,"Execute"); + XawDialogAddButton(cmdwin,"Dismiss",SetDismiss,"Dismiss"); + n = 0; + XtSetArg(arg[n], XtNlabel, "Command : "); n++; + XtSetArg(arg[n], XtNvalue, ""); n++; + XtSetValues(cmdwin, arg, n); + XtRealizeWidget(mainwin); + XSetWMProtocols(XtDisplay(mainwin),XtWindow(mainwin), + &wm_delete_window,1); + } + is_init = 1; } -get_line(buf) -char *buf; +void show_debug_window(int on) { - XEvent ev; + XEvent ev; - done = 0; - while ( !done ) { - XtAppNextEvent(app_con,&ev); - XtDispatchEvent(&ev); - } - strcpy(buf,debug_cmd); + init_cmdwin(); + if ( mainwin ) { + if ( on ) + XtPopup(mainwin,XtGrabNone); + else + XtPopdown(mainwin); + XFlush(display); + while ( XtAppPending(app_con) ) { + XtAppNextEvent(app_con,&ev); + XtDispatchEvent(&ev); + } + } } + +void get_line(char *buf) +{ + XEvent ev; + + done = 0; + while ( !done ) { + XtAppNextEvent(app_con,&ev); + XtDispatchEvent(&ev); + } + strcpy(buf,debug_cmd); +} #else /* DO_PLOT */ -init_cmdwin() {} +void init_cmdwin() {} -show_debug_window(on) -int on; +void show_debug_window(int on) {} -get_line(buf) +void get_line(buf) char *buf; {} #endif /* DO_PLOT */