#line 8 "errbox.c-nw" #include "config.h" #include #include #include "w3a.h" #include "str.h" #include "rcfile.e" #include "globals.e" #define MAXWARNINGS 6 /* Max # of boxes */ static int nrwarnings = 0; /* # of simultaneous boxes */ static void error_ok_cb(Widget w, XtPointer client_data, XtPointer call_data) { XtDestroyWidget(toplevel); XtDestroyApplicationContext(app_context); exit(1); } static void warn_ok_cb(Widget w, XtPointer client_data, XtPointer call_data) { XtDestroyWidget((Widget) client_data); nrwarnings--; } static void err_handler(String message) { Widget err_dialog; err_dialog = XmCreateErrorDialog (toplevel, "error", NULL, 0); XtDestroyWidget(XmMessageBoxGetChild(err_dialog, XmDIALOG_CANCEL_BUTTON)); XtDestroyWidget(XmMessageBoxGetChild(err_dialog, XmDIALOG_HELP_BUTTON)); XtAddCallback(err_dialog, XmNokCallback, error_ok_cb, NULL); XtVaSetValues(err_dialog, XtVaTypedArg, XmNmessageString, XmRString, message, strlen(message) + 1, NULL); XtManageChild(err_dialog); } static void warn_handler(String message) { Widget warn_dialog; if (nrwarnings == MAXWARNINGS) return; warn_dialog = XmCreateErrorDialog (toplevel, "warning", NULL, 0); XtDestroyWidget(XmMessageBoxGetChild(warn_dialog, XmDIALOG_CANCEL_BUTTON)); XtDestroyWidget(XmMessageBoxGetChild(warn_dialog, XmDIALOG_HELP_BUTTON)); XtAddCallback(warn_dialog, XmNokCallback, warn_ok_cb, warn_dialog); XtVaSetValues(warn_dialog, XtVaTypedArg, XmNmessageString, XmRString, message, strlen(message) + 1, NULL); XtManageChild(warn_dialog); nrwarnings++; } EXPORT void install_error_handlers(void) { (void) XtAppSetWarningHandler(app_context, warn_handler); #if 0 (void) XtAppSetErrorHandler(app_context, err_handler); #endif }