#include <Xm/MainW.h>
#include <Xm/Label.h>
#include <Xm/List.h>
#include <Xm/RowColumn.h>
#include <Xm/Command.h>
#include <stdio.h>

#define list_items "Ceci, Est, Une, ScrolledList, dans la, WorkArea, de la, Main Window"

main(int argc, char **argv)
{
    Widget toplevel, main_w, list_w, menubar, menu, message_area, command_w;
    XmString file, quit;
    XtAppContext app;
    Pixmap pixmap;
    XtSetLanguageProc(NULL, NULL, NULL);

    toplevel = XtVaAppInitialize(&app, "Demos",
        NULL, 0, &argc, argv, NULL, NULL);

    /* La main window */
    main_w = XtVaCreateManagedWidget("main_window",
        xmMainWindowWidgetClass,   toplevel,
        NULL);

    /* Une ScrolledList que l'on met dans la work area */
    list_w = XmCreateScrolledList(main_w, "main_list", NULL, 0);
    XtVaSetValues(list_w,
		  XtVaTypedArg, XmNitems, XmRString,
		  list_items, strlen(list_items),
		  XmNitemCount, 8,
		  XmNvisibleItemCount, 5,
		  NULL);
    XtManageChild(list_w);


    /* Barre de menu avec un seul menu deroulant */
    file = XmStringCreateLocalized("File");
    menubar = XmVaCreateSimpleMenuBar(main_w, "menubar",
				      XmVaCASCADEBUTTON, file, 'F',
				      NULL);
    XmStringFree(file);
    XtManageChild(menubar);

    /* Un seul bouton dans le menu deroulant */
    quit = XmStringCreateLocalized("Quit");
    menu = XmVaCreateSimplePulldownMenu(menubar, "file_menu", 0, exit,
					XmVaPUSHBUTTON, quit, 'Q', NULL, NULL,
					NULL);
    XmStringFree(quit);


    /* Un label dans la zone de messages */
    message_area = 
      XtVaCreateManagedWidget("Ceci est la zone de messages",
			      xmLabelWidgetClass, main_w,
			      XmNalignment,  XmALIGNMENT_BEGINNING,
			      NULL);

    /* Un Command widget dans la command area */
    file = XmStringCreateLocalized("Entrez une commande :");
    command_w = XtVaCreateManagedWidget("command_w", xmCommandWidgetClass, 
					main_w, XmNpromptString, file,
					NULL);
    XmStringFree(file);

    /* Positionnement des attributs de la Main Window pour lui indiquer quels 
       widgets sont dans les differentes zones, et quelles sont leurs 
       positions rezpectives */
    XtVaSetValues(main_w,
		  XmNmenuBar,    menubar,
		  XmNworkWindow, XtParent(list_w),
		  XmNmessageWindow, message_area,
		  XmNcommandWindow,  command_w,
		  XmNcommandWindowLocation, XmCOMMAND_BELOW_WORKSPACE,
		  NULL);
    
    XtRealizeWidget(toplevel);
    XtAppMainLoop(app);
}
