/* w4a.c  menu another way, different calls */

/* 2/10/08 JSS fix for RedHat change to Motif/Lestif                      */
#define XMSTRINGDEFINES 1
#include <Xm/XmStrDefs.h>  /* to fix XtAddCallback failure */

#include <stdio.h>
#include <stdlib.h>
#include <Xm/Xm.h>
#include <Xm/MainW.h>
#include <Xm/RowColumn.h>
#include <Xm/ScrolledW.h>
#include <Xm/CascadeB.h>

  /* widgets   indented according to heirarchy */
               /*  underscore b, "_b" are visible buttons that can be pushed */
  Widget  toplevel;
  Widget  main_window;
    Widget  menu_bar;
      Widget  file_pulldown, file_b;
        Widget  new_b, open_b, print_b, quit_b;
      Widget  enter_pulldown, enter_b;
        Widget  easy_b, complete_b;

  Arg  args[10];  /* ArgList for widgets, cnt is number of args*/
  Cardinal  cnt;

main(int argc, char *argv[])
{
  /* callback functions */
  void  DoNew();
  void  DoOpen();
  void  DoPrint();
  void  DoQuit();

  void  DoEasy();
  void  DoComplete();

  cnt = 0;
  toplevel = XtInitialize(argv[0], "Menu_Draw", NULL, 0, &argc, argv);

  cnt = 0;
  XtSetArg(args[cnt], XmNresizePolicy, XmRESIZE_GROW); cnt++;
  XtSetArg(args[cnt], XmNwidth, 200); cnt++;
  XtSetArg(args[cnt], XmNheight, 100); cnt++;
  main_window = XmCreateMainWindow(toplevel, "Main", args, cnt);
  XtManageChild(main_window);

  cnt = 0;
  menu_bar = XmCreateMenuBar(main_window, "Menu", args, cnt);
  XtManageChild(menu_bar);

    cnt = 0;
    file_pulldown = XmCreatePulldownMenu(menu_bar, "File_P", args, cnt);
    XtSetArg(args[cnt],XmNsubMenuId,file_pulldown); cnt++;
    file_b = XmCreateCascadeButton(menu_bar, "File", args, cnt);
    XtManageChild(file_b);

      new_b = XtCreateManagedWidget("New", xmCascadeButtonWidgetClass,
               file_pulldown, NULL, 0);
      XtAddCallback(new_b, XmNactivateCallback, DoNew, 0);

      open_b = XtCreateManagedWidget("Open", xmCascadeButtonWidgetClass,
               file_pulldown, NULL, 0);
      XtAddCallback(open_b, XmNactivateCallback, DoOpen, 0);

      print_b = XtCreateManagedWidget("Print", xmCascadeButtonWidgetClass,
                file_pulldown, NULL, 0);
      XtAddCallback(print_b, XmNactivateCallback, DoPrint, 0);

      quit_b = XtCreateManagedWidget("Quit", xmCascadeButtonWidgetClass,
               file_pulldown, NULL, 0);
      XtAddCallback(quit_b, XmNactivateCallback, DoQuit, 0);


    cnt = 0;
    enter_pulldown = XmCreatePulldownMenu(menu_bar, "Enter_P", args, cnt);
    XtSetArg(args[cnt],XmNsubMenuId,enter_pulldown); cnt++;
    enter_b = XmCreateCascadeButton(menu_bar, "Enter", args, cnt);
    XtManageChild(enter_b);

      easy_b = XtCreateManagedWidget("Easy", xmCascadeButtonWidgetClass,
              enter_pulldown, NULL, 0);
      XtAddCallback(easy_b, XmNactivateCallback, DoEasy, 0);

      complete_b = XtCreateManagedWidget("Complete", xmCascadeButtonWidgetClass,
                enter_pulldown, NULL, 0);
      XtAddCallback(complete_b, XmNactivateCallback, DoComplete, 0);

  XtRealizeWidget(toplevel);

  XtMainLoop();
}

void    DoNew(Widget w, int flag, XmAnyCallbackStruct *call_data)
{
  printf("DoNew \n");
}

void    DoOpen(Widget w, int flag, XmAnyCallbackStruct *call_data)
{
  printf("DoOpen \n");
}

void    DoPrint(Widget w, int flag, XmAnyCallbackStruct *call_data)
{
  printf("DoPrint \n");
}

void    DoQuit(Widget w, int flag, XmAnyCallbackStruct *call_data)
{
  exit(0); /* no saving updates, should warn with a dialog box */
           /* ignore stupid compiler error message             */
}


void    DoEasy(Widget w, int flag, XmAnyCallbackStruct *call_data)
{
  printf("DoEasy \n");
}


void    DoComplete(Widget w, int flag, XmAnyCallbackStruct *call_data)
{
  printf("DoComplete \n");
}

