/* Written by Dan Heller and Paula Ferguson.  
 * Copyright 1994, O'Reilly & Associates, Inc.
 * Permission to use, copy, and modify this program without
 * restriction is hereby granted, as long as this copyright
 * notice appears in each copy of the program source code.
 * This program is freely distributable without licensing fees and
 * is provided without guarantee or warrantee expressed or implied.
 * This program is -not- in the public domain.
 */

/* arrow.c -- demonstrate the ArrowButton widget.
 * Have a Form widget display 4 ArrowButtons in a
 * familiar arrangement.
 */

#define XLIB_ILLEGAL_ACCESS /* for dpy->db */
#include <Xm/ArrowBG.h>
#include <Xm/Form.h>

main(argc, argv)
int argc;
char *argv[];
{
    XtAppContext app;
    Widget toplevel, form;
    Display *dpy;

    XtSetLanguageProc (NULL, NULL, NULL);

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

    dpy = XtDisplay (toplevel);
    /* Rather than listing all these resources in an app-defaults file,
     * add them directly to the database for this application only. This
     * would be virtually equivalent to hard-coding values, since these
     * resources will override any other specified external to this file.
     */
    XrmPutStringResource 
        (&dpy->db, "*form*topAttachment", "attach_position");
    XrmPutStringResource 
        (&dpy->db, "*form*leftAttachment", "attach_position");
    XrmPutStringResource 
        (&dpy->db, "*form*rightAttachment", "attach_position");
    XrmPutStringResource 
        (&dpy->db, "*form*bottomAttachment", "attach_position");

    form = XtVaCreateWidget ("form", xmFormWidgetClass, toplevel,
        XmNfractionBase,     3,
        NULL);

    XtVaCreateManagedWidget ("arrow1",
        xmArrowButtonGadgetClass, form,
        XmNtopPosition,      0,
        XmNbottomPosition,   1,
        XmNleftPosition,     1,
        XmNrightPosition,    2,
        XmNarrowDirection,   XmARROW_UP,
        NULL);

    XtVaCreateManagedWidget ("arrow2",
        xmArrowButtonGadgetClass, form,
        XmNtopPosition,      1,
        XmNbottomPosition,   2,
        XmNleftPosition,     0,
        XmNrightPosition,    1,
        XmNarrowDirection,   XmARROW_LEFT,
        NULL);

    XtVaCreateManagedWidget ("arrow3",
        xmArrowButtonGadgetClass, form,
        XmNtopPosition,      1,
        XmNbottomPosition,   2,
        XmNleftPosition,     2,
        XmNrightPosition,    3,
        XmNarrowDirection,   XmARROW_RIGHT,
        NULL);

    XtVaCreateManagedWidget ("arrow4",
        xmArrowButtonGadgetClass, form,
        XmNtopPosition,      2,
        XmNbottomPosition,   3,
        XmNleftPosition,     1,
        XmNrightPosition,    2,
        XmNarrowDirection,   XmARROW_DOWN,
        NULL);

    XtManageChild (form);
    XtRealizeWidget (toplevel);
    XtAppMainLoop (app);
}