Blame demos/doc/programGuide/ch06/combo_box/interface.c

Packit b099d7
/* $XConsortium: interface.c /main/4 1995/07/15 20:39:38 drk $ */
Packit b099d7
/*
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
 * 
Packit b099d7
 */
Packit b099d7
/*
Packit b099d7
 * HISTORY
Packit b099d7
 */
Packit b099d7
#include <stdio.h>
Packit b099d7
#include <stdlib.h>
Packit b099d7
#include <Xm/XmAll.h>
Packit b099d7
Packit b099d7
void CreateMenus(Widget);
Packit b099d7
void HelpCB(Widget, XtPointer, XtPointer); 
Packit b099d7
void QuitCB(Widget, XtPointer, XtPointer); 
Packit b099d7
extern Widget top_level;
Packit b099d7
Packit b099d7
/**************************************************************************
Packit b099d7
CreateMenus: This function generates the menu bar and the submenus. 
Packit b099d7
**************************************************************************/
Packit b099d7
void 
Packit b099d7
CreateMenus(Widget parent_of_menu_bar)
Packit b099d7
{
Packit b099d7
 XmString   file, help;
Packit b099d7
 Widget     menubar, FilePullDown, HelpPullDown;
Packit b099d7
 Widget     overview, quit, Help1; 
Packit b099d7
Packit b099d7
 /* Create the menubar itself. */
Packit b099d7
   file = XmStringCreateSimple("File");
Packit b099d7
   help = XmStringCreateSimple("Help");
Packit b099d7
   
Packit b099d7
   menubar      = (Widget)XmCreateMenuBar(parent_of_menu_bar, "menubar", 
Packit b099d7
                                          NULL, 0);
Packit b099d7
   FilePullDown = (Widget)XmCreatePulldownMenu(menubar, "FilePullDown", 
Packit b099d7
                                               NULL, 0); 
Packit b099d7
   HelpPullDown = (Widget)XmCreatePulldownMenu(menubar, "HelpPullDown", 
Packit b099d7
                                                 NULL, 0); 
Packit b099d7
Packit b099d7
 /******************************FILE*********************************/
Packit b099d7
    XtVaCreateManagedWidget("File", xmCascadeButtonWidgetClass, menubar,
Packit b099d7
                             XmNlabelString, file,
Packit b099d7
                             XmNmnemonic, 'F', 
Packit b099d7
                             XmNsubMenuId, FilePullDown,
Packit b099d7
                             NULL);
Packit b099d7
    quit = XtVaCreateManagedWidget("Quit", xmPushButtonGadgetClass, 
Packit b099d7
                                    FilePullDown, NULL);
Packit b099d7
    XtAddCallback(quit, XmNactivateCallback, QuitCB, NULL);
Packit b099d7
Packit b099d7
Packit b099d7
 /******************************HELP*********************************/
Packit b099d7
    Help1 = XtVaCreateManagedWidget("Help", xmCascadeButtonWidgetClass, 
Packit b099d7
                             menubar,
Packit b099d7
                             XmNlabelString, help,
Packit b099d7
                             XmNmnemonic, 'H', 
Packit b099d7
                             XmNsubMenuId, HelpPullDown,
Packit b099d7
                             NULL);
Packit b099d7
    XtVaSetValues(menubar, XmNmenuHelpWidget, Help1, NULL);
Packit b099d7
    overview = XtVaCreateManagedWidget("Overview", xmPushButtonGadgetClass, 
Packit b099d7
                                    HelpPullDown, NULL);
Packit b099d7
    XtAddCallback(overview, XmNactivateCallback, HelpCB, (XtPointer)1);
Packit b099d7
Packit b099d7
    XmStringFree(file);
Packit b099d7
    XmStringFree(help);
Packit b099d7
Packit b099d7
    XtManageChild(menubar); 
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*********************************************************************
Packit b099d7
HelpCB: This function is called when the user requests help.  This
Packit b099d7
        function displays a Message DialogBox. 
Packit b099d7
*********************************************************************/
Packit b099d7
void
Packit b099d7
HelpCB(Widget   w,
Packit b099d7
       XtPointer cd,
Packit b099d7
       XtPointer cb
Packit b099d7
      )
Packit b099d7
{
Packit b099d7
 int       what_kind_of_help = (int)cd;  
Packit b099d7
 char      help_string[400]; 
Packit b099d7
 XmString  hs_as_cs; 
Packit b099d7
 Widget    dialog_general_help; 
Packit b099d7
 Arg       arg[3];
Packit b099d7
Packit b099d7
 sprintf(help_string, 
Packit b099d7
"This program demonstrates how to use an XmComboBox in an application.\n\
Packit b099d7
You can make a selection by typing it directly into the TextField\n\
Packit b099d7
or by selecting the item from the DropDown list.  To make the list\n\
Packit b099d7
drop down, click on the arrow that appears next to the TextField.");
Packit b099d7
Packit b099d7
   hs_as_cs = XmStringCreateLtoR(help_string, 
Packit b099d7
                                 XmFONTLIST_DEFAULT_TAG);
Packit b099d7
   
Packit b099d7
   XtSetArg(arg[0], XmNmessageString, hs_as_cs);
Packit b099d7
   dialog_general_help = (Widget)XmCreateMessageDialog(top_level, 
Packit b099d7
                                             "message", arg, 1);
Packit b099d7
   XmStringFree(hs_as_cs);
Packit b099d7
 
Packit b099d7
   switch (what_kind_of_help)  {
Packit b099d7
     case 1: XtManageChild(dialog_general_help);
Packit b099d7
             break;
Packit b099d7
     default: /* no other help */
Packit b099d7
             break; 
Packit b099d7
   }
Packit b099d7
          
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*******************************************************************************
Packit b099d7
QuitCB: Exit 
Packit b099d7
*******************************************************************************/
Packit b099d7
void
Packit b099d7
QuitCB(Widget w, XtPointer cd, XtPointer cb)
Packit b099d7
{
Packit b099d7
  exit(0);
Packit b099d7
}