/* Motif Tutorial - Menu */ #include #include #include /** File menu open callback * * Called when the user selects * an item from the File menu. * */ void file_menu_select(Widget widget, int item) { switch (item) { case 0: printf("'New' selected\n"); break; case 1: printf("'Open' selected\n"); break; case 2: printf("'Save' selected\n"); break; case 3: printf("'Quit' selected\n"); exit(0); break; default: printf("Assertion failed: unknown menu item selected\n"); } } /** Help menu open callback * * Called when the user selects * an item from the Help menu. * */ void help_menu_select(Widget widget, int item) { switch (item) { case 0: printf("'About' selected\n"); break; default: printf("Assertion failed: unknown menu item selected\n"); } } /** Main * * Creates the application window * with a single button and starts * Motif event loop. * */ int main(int argc, char * argv[]) { Widget window; /* Widgets */ Widget main_window; Widget menubar; Widget file_menu; Widget help_menu; Widget area; XmString file_str; /* Strings */ XmString help_str; XmString new_str; XmString open_str; XmString save_str; XmString quit_str; XmString about_str; XmString area_str; XtAppContext app; /* Application */ /* Create application window */ window = XtVaAppInitialize(&app, "Application", NULL, 0, &argc, argv, NULL, NULL); /* Create main window */ main_window = XtVaCreateManagedWidget("Main", xmMainWindowWidgetClass, window, XmNwidth, 300, XmNheight, 300, NULL); /* Create menubar */ file_str = XmStringCreateSimple("File"); help_str = XmStringCreateSimple("Help"); menubar = XmVaCreateSimpleMenuBar(main_window, "Menu", XmVaCASCADEBUTTON, file_str, 'F', XmVaCASCADEBUTTON, help_str, 'H', NULL); XmStringFree(help_str); XmStringFree(file_str); /* File menu */ new_str = XmStringCreateSimple("New"); open_str = XmStringCreateSimple("Open"); save_str = XmStringCreateSimple("Save"); quit_str = XmStringCreateSimple("Quit"); file_menu = XmVaCreateSimplePulldownMenu(menubar, "FileMenu", 0, (XtCallbackProc) file_menu_select, XmVaPUSHBUTTON, new_str, 'N', NULL, NULL, XmVaPUSHBUTTON, open_str, 'N', NULL, NULL, XmVaPUSHBUTTON, save_str, 'N', NULL, NULL, XmVaPUSHBUTTON, quit_str, 'Q', NULL, NULL, NULL); XmStringFree(quit_str); XmStringFree(save_str); XmStringFree(open_str); XmStringFree(new_str); /* Help menu */ about_str = XmStringCreateSimple("About"); help_menu = XmVaCreateSimplePulldownMenu(menubar, "HelpMenu", 1, (XtCallbackProc) help_menu_select, XmVaPUSHBUTTON, about_str, 'A', NULL, NULL, NULL); XmStringFree(about_str); /* Set Help menu properties */ XtVaSetValues(menubar, XmNmenuHelpWidget, help_menu, NULL); /* Manage menubar */ XtManageChild(menubar); /* Create "work" area of the window */ area_str = XmStringCreateSimple("Work area"); area = XtVaCreateManagedWidget("Area", xmLabelWidgetClass, main_window, XmNlabelString, area_str, NULL); XmStringFree(area_str); /* Assign the menubar and "work" area to the main window */ XtVaSetValues(main_window, XmNmenuBar, menubar, XmNworkWindow, area, NULL); /* Display the main window */ XtRealizeWidget(window); /* Motif event loop */ XtAppMainLoop(app); }