#include "al.h"
#include "ArgPack.h"
#include <X11/Intrinsic.h>
#include <X11/Shell.h>
#include <Xm/Xm.h>
#include <Xm/Form.h>
#include <Xm/RowColumn.h>
#include <Xm/Label.h>
#include "mainArgs.h"
#include "alfonts.h"
#include "alxms.h"
#include "menupack.h"
#include "debug.h"
#include "d2args.h"

void got_me(w,ud,cadda)
Widget w;
caddr_t ud, cadda;
{
  Widget s3;
  Pixel fgv;
  printf("got to s3 callback \n");

}

main(argc,argv)
int argc;
char** argv;
{
  Widget initW, outerW, finishedW, fontW, toplabelW, shellW;
  Widget toplabel2W, namelabelW, lineW, appW, menuBar,cascadeW;
  Widget afflabelW, affCW, nameCW, descriptionW, toprcW, workrcW;
  ArgPack AP;
  Display* display_;
  Screen*  screen_;
  int display_w_, screenN_;
  int display_h_;
  MenuPack mpp, mpp2, mpp3, mp, mp2, mp3;
  Registry reg;

  /* open the toolkit */
  shellW=XtInitialize("li","PYgmalion",NULL,0,&argc,argv);  
  if (shellW==NULL)
    Al_fatal_error("could not init toolkit");

  AP=ArgPack_create();

  /* get basic screen attributes */
  display_=XtDisplay(shellW);
  screen_=XtScreen(shellW);
  screenN_=XDefaultScreen(display_);
  display_w_=XDisplayWidth(display_,screenN_);
  display_h_=XDisplayHeight(display_,screenN_); 

  /* load in all four of the fonts to be used */
  AlFonts_init();

  AP=ArgPack_duplicate_args(lia_OuterForm);
  ArgPack_add_arg(AP,XmNwidth,(XtArgVal) 100);
  ArgPack_add_arg(AP,XmNheight,(XtArgVal) 100); 
  outerW=XmCreateRowColumn(shellW,"top_rc",
			   ArgPack_the_args(AP),
			   ArgPack_num_args(AP));
  XtManageChild(outerW);
  ArgPack_delete(AP);
  
  _debug(1,"got to outerW\n");

#define HORIZ_D 5

/*
  AP=ArgPack_duplicate_args(lia_toplabel  );
  ArgPack_add_arg(AP,XmNlabelString, 
		  (XtArgVal) Alxms_create("PYGMALION"));
  ArgPack_add_arg(AP,XmNfontList,(XtArgVal)AlFonts_get(ALFONTS_MAJOR_HEADING));
  ArgPack_add_arg(AP,XmNmarginWidth, (XtArgVal) 10);
  ArgPack_add_arg(AP,XmNmarginHeight, (XtArgVal) 10);
  ArgPack_add_arg(AP,XmNtopAttachment,(XtArgVal) XmATTACH_FORM);
  toplabelW=XtCreateManagedWidget("lia_toplabel",
				  xmLabelWidgetClass,
				  outerW,
				  ArgPack_the_args(AP),
				  ArgPack_num_args(AP));
  ArgPack_delete(AP);
  mpp=MenuPack_create(toplabelW,"hello world",MP_POPUP);
  MenuPack_add_option("hippy1",mpp,NULL,NULL);
  MenuPack_add_option("hippy2",mpp,NULL,NULL);
  MenuPack_add_option("hippy3",mpp,NULL,NULL);
  MenuPack_add_option("hippy4",mpp,NULL,NULL);
  mpp2=MenuPack_create(toplabelW,"hello world2",MP_SUBMENU);
  MenuPack_add_option("hippy11",mpp2,NULL,NULL);
  MenuPack_add_option("hippy21",mpp2,NULL,NULL);
  MenuPack_add_option("hippy31",mpp2,NULL,NULL);
  MenuPack_add_option("hippy41",mpp2,NULL,NULL);
  mpp3=MenuPack_create(toplabelW,"hello world3",MP_SUBMENU);
  MenuPack_add_option("hippy12",mpp3,NULL,NULL);
  MenuPack_add_option("hippy22",mpp3,NULL,NULL);
  MenuPack_add_option("hippy32",mpp3,NULL,NULL);
  MenuPack_add_option("hippy42",mpp3,NULL,NULL);
  _debug(1,"pre make menu\n");
  MenuPack_add_sub_menu("cascader1",mpp,mpp2);
  MenuPack_add_sub_menu("cascader2",mpp2,mpp3);
  MenuPack_make_menu(mpp);
  _debug(1,"post make menu\n");

*/

/*
  AP=ArgPack_duplicate_args(lia_menubar);
  ArgPack_add_arg(AP,XmNtopWidget, (XtArgVal) toplabelW);
  menuBar=XmCreateMenuBar(outerW,NULL,
			  ArgPack_the_args(AP),
			  ArgPack_num_args(AP));
  ArgPack_delete(AP);
  XtManageChild(menuBar);

  AP=ArgPack_duplicate_args(lia_menubar);
  ArgPack_add_arg(AP,XmNlabelString, (XtArgVal) 
		  Alxms_create("A Pulldown Menu"));
  cascadeW=XtCreateManagedWidget("pd cascader",
				 xmCascadeButtonWidgetClass,
				 menuBar,
				 ArgPack_the_args(AP), 
				 ArgPack_num_args(AP));
  ArgPack_delete(AP);
  mp=MenuPack_create_pulldown(menuBar,cascadeW,"hello pulldoen");
  MenuPack_add_option("hippasdfy1",mp,NULL,NULL);
  MenuPack_add_option("2",mp,NULL,NULL);
  MenuPack_add_option("y3",mp,got_me,(caddr_t)mp);
  MenuPack_add_option("py4",mp,NULL,NULL);
  MenuPack_set_feature(mp,"y3",XmNshowAsDefault,(XtArgVal) 3); 
  mp2=MenuPack_create(cascadeW,"hello pd",MP_SUBMENU);
  MenuPack_add_option("hippy11",mp2,NULL,NULL);
  MenuPack_add_option("hippy21",mp2,NULL,NULL);
  MenuPack_add_option("hippy31",mp2,NULL,NULL);
  MenuPack_add_option("hippy41",mp2,NULL,NULL);
  mp3=MenuPack_create(cascadeW,"hellasdf asdf o world3",MP_SUBMENU);
  MenuPack_add_option("hippyasdf 12",mp3,NULL,NULL);
  MenuPack_add_option("hdippy22",mp3,NULL,NULL);
  MenuPack_add_option("hidppy32",mp3,NULL,NULL);
  MenuPack_add_option("hipdpy42",mp3,NULL,NULL);
  _debug(1,"pre make menu\n");
  MenuPack_add_sub_menu("pd cascader1",mp,mp2);
  MenuPack_add_sub_menu("pd cascader2",mp2,mp3);
  MenuPack_set_as_default(mp,"y3");
  MenuPack_set_as_default(mp,"py4");
  MenuPack_make_menu(mp);
  MenuPack_set_as_default(mp,"2");
  _debug(1,"post make menu\n");
*/


  mp=MenuPack_create_option(outerW,"hello option");
  MenuPack_add_option("hippasdfy1",mp,NULL,NULL);
  MenuPack_add_option("2",mp,NULL,NULL);
  MenuPack_add_option("y3",mp,got_me,(caddr_t)mp);
  MenuPack_add_option("py4",mp,NULL,NULL);
  MenuPack_make_menu(mp);
  _debug(1,"post make menu\n");
  MenuPack_set_as_default(mp,"py4");

  reg=Alxms_create_registry();
  
  AP=ArgPack_duplicate_args(d2_top_l1);
  ArgPack_add_arg(AP,XmNfontList, (XtArgVal) 
		  AlFonts_get(outerW));
  ArgPack_add_arg(AP,XmNlabelString, (XtArgVal) Alxms_create(reg,
							     "Ruleeditor",
						ALFONTS_MAJOR_HEADING));
  XtCreateManagedWidget("top-label",
			xmLabelWidgetClass,
			outerW,
			ArgPack_the_args(AP),
			ArgPack_num_args(AP));
  ArgPack_delete(AP);


  XtRealizeWidget(shellW);
  XtMainLoop();
}
