/* * list_6glyphs.c -- show a scrolling list with six items in it. * Each item is an icon (a pattern) and a string. The scrolling * list displays three items. */ #include <xview/xview.h> #include <xview/panel.h> #include <xview/svrimage.h> #define gray1_width 16 #define gray1_height 16 static u_char gray1_bits[] = { 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa }; #define gray2_width 16 #define gray2_height 16 static u_char gray2_bits[] = { 0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00 }; #define gray3_width 16 #define gray3_height 16 static u_char gray3_bits[] = { 0x22, 0x22, 0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee, 0x33, 0x33, 0xee, 0xee }; #define gray4_width 16 #define gray4_height 16 static u_char gray4_bits[] = { 0xc3, 0xc3, 0xaa, 0xaa, 0xc3, 0xc3, 0xaa, 0xaa, 0xc3, 0xc3, 0xaa, 0xaa, 0xc3, 0xc3, 0xaa, 0xaa, 0xc3, 0xc3, 0xaa, 0xaa, 0xc3, 0xc3, 0xaa, 0xaa, 0xc3, 0xc3, 0xaa, 0xaa, 0xc3, 0xc3, 0xaa, 0xaa }; #define gray5_width 16 #define gray5_height 16 static u_char gray5_bits[] = { 0xf5, 0xf5, 0x00, 0x00, 0x41, 0x41, 0x00, 0x00, 0xf5, 0xf5, 0x00, 0x00, 0x41, 0x41, 0x00, 0x00, 0xf5, 0xf5, 0x00, 0x00, 0x41, 0x41, 0x00, 0x00, 0xf5, 0xf5, 0x00, 0x00, 0x41, 0x41, 0x00, 0x00 }; #define gray6_width 16 #define gray6_height 16 static u_char gray6_bits[] = { 0x2d, 0x2d, 0xee, 0xee, 0xa5, 0xa5, 0xee, 0xee, 0x2d, 0x2d, 0xee, 0xee, 0xa5, 0xa5, 0xee, 0xee, 0x2d, 0x2d, 0xee, 0xee, 0xa5, 0xa5, 0xee, 0xee, 0x2d, 0x2d, 0xee, 0xee, 0xa5, 0xa5, 0xee, 0xee }; main(argc, argv) int argc; char *argv[]; { Frame frame; Panel panel; Server_image gray1, gray2, gray3, gray4, gray5, gray6; extern void exit(), which_glyph(); xv_init(XV_INIT_ARGS, argc, argv, NULL); gray1 = (Server_image)xv_create(NULL, SERVER_IMAGE, XV_WIDTH, gray1_width, XV_HEIGHT, gray1_height, SERVER_IMAGE_BITS, gray1_bits, NULL); gray2 = (Server_image)xv_create(NULL, SERVER_IMAGE, XV_WIDTH, gray2_width, XV_HEIGHT, gray2_height, SERVER_IMAGE_BITS, gray2_bits, NULL); gray3 = (Server_image)xv_create(NULL, SERVER_IMAGE, XV_WIDTH, gray3_width, XV_HEIGHT, gray3_height, SERVER_IMAGE_BITS, gray3_bits, NULL); gray4 = (Server_image)xv_create(NULL, SERVER_IMAGE, XV_WIDTH, gray4_width, XV_HEIGHT, gray4_height, SERVER_IMAGE_BITS, gray4_bits, NULL); gray5 = (Server_image)xv_create(NULL, SERVER_IMAGE, XV_WIDTH, gray5_width, XV_HEIGHT, gray5_height, SERVER_IMAGE_BITS, gray5_bits, NULL); gray6 = (Server_image)xv_create(NULL, SERVER_IMAGE, XV_WIDTH, gray6_width, XV_HEIGHT, gray6_height, SERVER_IMAGE_BITS, gray6_bits, NULL); frame = (Frame)xv_create(NULL, FRAME, FRAME_LABEL, argv[0], NULL); panel = (Panel)xv_create(frame, PANEL, NULL); (void) xv_create(panel, PANEL_BUTTON, PANEL_LABEL_STRING, "quit", PANEL_NOTIFY_PROC, exit, NULL); (void) xv_create(panel, PANEL_LIST, PANEL_LIST_ROW_HEIGHT, 16, PANEL_LIST_DISPLAY_ROWS, 3, PANEL_LIST_GLYPHS, gray1, gray2, gray3, gray4, gray5, gray6, NULL, PANEL_LIST_STRINGS, "Pattern1", "Pattern2", "Pattern3", "Pattern4", "Pattern5", "Pattern6", NULL, PANEL_LIST_CLIENT_DATAS, 1, 2, 3, NULL, PANEL_NOTIFY_PROC, which_glyph, NULL); window_fit(panel); window_fit(frame); xv_main_loop(frame); } void which_glyph(item, string, client_data, op, event) Panel_item item; /* panel list item */ char *string; caddr_t client_data; Panel_list_op op; Event *event; { printf("item = %s (#%d), op = %d\n", string, client_data, op); }