Appendix A. Examples

Code Examples

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).

Example A-1. Simple Notebook


/* 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.

Figure A-1. Simple Notebook Demo

Figure A-1 Simple Notebook Demo

Example A-2. Vertical Writing


#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.

Figure A-2. Vertical Writing Demo

Figure A-2 Vertical Writing Demo