/* * interpose.c -- shows how to use an interpose destroy function */ #include <xview/xview.h> #include <xview/frame.h> #include <xview/panel.h> #include <xview/notice.h> Frame frame; Notify_value destroy_func(client, status) Notify_client client; Destroy_status status; { if (status == DESTROY_CHECKING) { int answer = notice_prompt(client, NULL, NOTICE_MESSAGE_STRINGS, "Really Quit?", NULL, NOTICE_BUTTON_YES, "No", NOTICE_BUTTON_NO, "Yes", NULL); if (answer == NOTICE_YES) notify_veto_destroy(client); } else if (status == DESTROY_CLEANUP) { puts("cleaning up"); /* allow frame to be destroyed */ return notify_next_destroy_func(client, status); } else if (status == DESTROY_SAVE_YOURSELF) puts("save yourself?"); else puts("process death"); return NOTIFY_DONE; } main (argc, argv) int argc; char *argv[]; { Panel panel; int quit(); xv_init (XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL); frame = (Frame)xv_create (NULL, FRAME, FRAME_LABEL, argv[0], XV_WIDTH, 200, XV_HEIGHT, 100, NULL); notify_interpose_destroy_func(frame, destroy_func); panel = (Panel)xv_create (frame, PANEL, NULL); (void) xv_create (panel, PANEL_BUTTON, PANEL_LABEL_STRING, "Quit", PANEL_NOTIFY_PROC, quit, NULL); xv_main_loop(frame); } int quit() { xv_destroy_safe(frame); return XV_OK; }