/* * simple_menu.c - * Demonstrate the use of an XView menu in a canvas subwindow. * A Menu is brought up with the MENU mouse button. The choices * in the menu toggle the display of the scrollbar next to the canvas. */ #include <xview/xview.h> #include <xview/canvas.h> #include <xview/scrollbar.h> #define SCROLLBAR_KEY 100 #define MENU_KEY 200 main(argc,argv) int argc; char *argv[]; { Frame frame; Canvas canvas; Scrollbar scrollbar; Menu menu; void menu_notify_proc(), pw_event_proc(); xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL); /* * Create a frame, canvas and menu. * A canvas receives input in its canvas_paint_window(). */ frame = (Frame)xv_create(NULL, FRAME, FRAME_LABEL, argv[0], NULL); canvas = (Canvas)xv_create(frame, CANVAS, XV_WIDTH, 300, XV_HEIGHT, 200, NULL); scrollbar = (Scrollbar)xv_create(canvas, SCROLLBAR, SCROLLBAR_DIRECTION, SCROLLBAR_VERTICAL, NULL); menu = (Menu)xv_create(NULL, MENU, MENU_TITLE_ITEM, "Scrollbar", MENU_STRINGS, "On", "Off", NULL, MENU_NOTIFY_PROC, menu_notify_proc, XV_KEY_DATA, SCROLLBAR_KEY, scrollbar, NULL); xv_set(canvas_paint_window(canvas), WIN_EVENT_PROC, pw_event_proc, XV_KEY_DATA, MENU_KEY, menu, NULL); window_fit(frame); window_main_loop(frame); } /* * menu_notify_proc - toggle the display of the scrollbar * based on which menu item was chosen. */ void menu_notify_proc(menu, menu_item) Menu menu; Menu_item menu_item; { char *menu_choice = (char *)xv_get(menu_item, MENU_STRING); int show_it = !strcmp(menu_choice, "On"); xv_set(xv_get(menu, XV_KEY_DATA, SCROLLBAR_KEY), XV_SHOW, show_it, NULL); } /* * Call menu_show() to display menu. */ void pw_event_proc(canvas_pw, event) Xv_Window canvas_pw; Event *event; { if (event_action(event) == ACTION_MENU && event_is_down(event)) { Menu menu = (Menu)xv_get(canvas_pw, XV_KEY_DATA, MENU_KEY); menu_show(menu, canvas_pw, event, NULL); } }