The following are the full listings for two examples. Example A-1 builds a simple notebook widget (shown in Figure A-2). Example A-2 builds an example of vertical writing (shown in Figure A-2).
/* include init */
#include <Xm/XmAll.h>
#define NUM_PAGES 8
#define APPNAME “Notebook”
void pageChangeCB(Widget w, XtPointer client, XtPointer call);
/* end init */
int
main(int argc, char ** argv)
{
XtAppContext AppContext;
Widget TopLevel = XtVaOpenApplication(&AppContext,
APPNAME,
NULL, 0,
&argc, argv,
NULL,
sessionShellWidgetClass,
NULL);
/* include notebook */
Widget notebook = XtVaCreateWidget(“notebook”,
xmNotebookWidgetClass,
TopLevel,
NULL);
int i;
XmString xmstr;
char labelString[32];
for ( i=0; i< NUM_PAGES; i++ ) {
sprintf(labelString,”Page %d\n”,i);
xmstr = XmStringCreateLocalized(labelString);
(void) XtVaCreateManagedWidget(“label”, xmLabelWidgetClass,
notebook,
XmNpageNumber, i+1,
XmNlabelString, xmstr,
NULL);
XmStringFree(xmstr);
}
for ( i=0; i< NUM_PAGES; i+=4 ) {
int j;
sprintf(labelString,”Major\nTab %d\n”,i);
xmstr = XmStringCreateLocalized(labelString);
(void) XtVaCreateManagedWidget(“button”,
xmPushButtonWidgetClass,
notebook,
XmNpageNumber, i+1,
XmNlabelString, xmstr,
XmNnotebookChildType,
XmMAJOR_TAB,
NULL);
XmStringFree(xmstr);
for ( j=i; j<i+4; j++ ) {
sprintf(labelString,”Minor\nTab %d\n”,j);
xmstr = XmStringCreateLocalized(labelString);
(void) XtVaCreateManagedWidget(“button”,
xmPushButtonWidgetClass,
notebook,
XmNpageNumber, j+1,
XmNlabelString, xmstr,
XmNnotebookChildType,
XmMINOR_TAB,
NULL);
XmStringFree(xmstr);
}
}
XtAddCallback(notebook, XmNpageChangedCallback,
(XtCallbackProc) pageChangeCB, NULL);
XtManageChild(notebook);
/* end notebook */
XtRealizeWidget(TopLevel);
XtAppMainLoop(AppContext);
}
/* pageChangeCB - comment */
static void
pageChangeCB(Widget w, XtPointer client, XtPointer call)
{
}
|
Figure A-1 shows the widget that results from the code in Example A-1.
#include <Xm/XmAll.h>
#define APPNAME “Vertical”
XtAppContext AppContext;
Widget TopLevel;
main(int argc, char ** argv)
{
Widget form, vert, horiz;
XtSetLanguageProc(NULL, NULL, NULL);
TopLevel = XtVaOpenApplication(&AppContext,
APPNAME, NULL, 0,
&argc, argv,
NULL,
sessionShellWidgetClass,
NULL);
form = XtVaCreateWidget(“form”, xmFormWidgetClass, TopLevel, NULL);
/* vertical text widget */
vert = XtVaCreateManagedWidget(“vertical”,
xmTextWidgetClass, form,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
XmNlayoutDirection,
XmTOP_TO_BOTTOM,
XmNrows, 10, NULL);
/* horizontal text widget */
horiz = XtVaCreateManagedWidget(“horizontal”,
xmTextWidgetClass, form,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment,
XmATTACH_WIDGET,
XmNleftWidget, vert,
XmNrightAttachment, XmATTACH_FORM,
NULL);
/* manage form */
XtManageChild(form);
XtRealizeWidget(TopLevel);
XtAppMainLoop(AppContext);
}
|
Figure A-2 shows the results of the code in Example A-2.