/* * side.c */ #include #include #include #include #include #include #include #include #include #include #include Widget toplevel; Widget form; XmPushButtonWidget quitB; XmFrameWidget label; HtSideWidget side1; HtSideWidget side2; extern void _XEditResCheckMessages(); extern int printf(/* const char *fmt, ... */); static void push(Widget w, caddr_t client, htsideCallbackStruct *cb); static void quit(Widget w, caddr_t client_data, XmAnyCallbackStruct *cb); void main(int argc, char **argv) { Display *display; XtAppContext xtappcontext; Pixel white; int screen; static char * str = "Use arrows, C-up, C-down - or C-n, C-p, C-a and C-e to navigate"; XtToolkitInitialize(); XtSetLanguageProc(0,0,0); xtappcontext = XtCreateApplicationContext(); if (!(display = XtOpenDisplay(xtappcontext, 0, argv[0], "SideT.ad", 0, 0, &argc, argv))) exit(0); if (!(toplevel = XtVaAppCreateShell(argv[0], "SideT.ad", applicationShellWidgetClass, display, XmNallowShellResize, (XtArgVal)True, 0))) exit(0); XtAddEventHandler(toplevel, (EventMask)0, True, _XEditResCheckMessages, NULL); form = XtCreateManagedWidget("form", xmRowColumnWidgetClass, toplevel, NULL, 0); label = XtVaCreateManagedWidget("label", xmFrameWidgetClass, form, XmNlabelString, XmStringCreate(str, XmSTRING_DEFAULT_CHARSET), XmNshadowThickness, 1, XmNshadowType, XmSHADOW_IN, NULL); screen = XDefaultScreen(display); white = WhitePixel(display, screen); side1 = (HtSideWidget)XtVaCreateManagedWidget("side1", htSideWidgetClass, form, HtNmarkers, 40, XmNbackground, white, NULL); XtAddCallback((Widget)side1, HtNselectCallback, (XtCallbackProc)push, (XtPointer)42); side2 = (HtSideWidget)XtVaCreateManagedWidget("side2", htSideWidgetClass, form, HtNmarkers, 22, NULL); quitB = XtVaCreateManagedWidget("quit", xmPushButtonWidgetClass, form, NULL); XtAddCallback((Widget)quitB, XmNactivateCallback, (XtCallbackProc)quit, (XtPointer)42); XtRealizeWidget(toplevel); XtAppMainLoop(xtappcontext); } static void push(Widget w, caddr_t client, htsideCallbackStruct *cb) { if (cb->reason == HtNEXT) printf("Next\n"); else if (cb->reason == HtPREV) printf("Prev\n"); else if (cb->reason == HtFIRST) printf("First\n"); else if (cb->reason == HtLAST) printf("Last\n"); else printf("pos: %d\n", cb->position); } static void quit(Widget w, caddr_t client_data, XmAnyCallbackStruct *cb) { XtCloseDisplay(XtDisplay(w)); exit(0); }