Blame tests/UTM/UTMPrim1.c

Packit b099d7
/* $TOG: UTMPrim1.c /main/7 1999/11/17 12:48:51 jff $ */
Packit b099d7
/*
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
 */
Packit b099d7
/*
Packit b099d7
 * HISTORY
Packit b099d7
 */
Packit b099d7
#include <testlib.h>
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Defines
Packit b099d7
 */
Packit b099d7
#define NUM_FLAVORS 31 
Packit b099d7
#define NUM_SELECT_TYPES 4
Packit b099d7
#define FORM_WIDTH  500 
Packit b099d7
#define FORM_HEIGHT 375
Packit b099d7
#define LIST_WIDTH  150 
Packit b099d7
#define LABEL_WIDTH 100 
Packit b099d7
#define TEXT_WIDTH  150 
Packit b099d7
#define TEXT_HEIGHT 50 
Packit b099d7
#define OFFSET      15
Packit b099d7
#define BUTTON_CNT  4
Packit b099d7
Packit b099d7
#define TEXTF_COPYLINK   2
Packit b099d7
#define TEXTF_PASTELINK  3
Packit b099d7
#define TEXT_COPYLINK    4
Packit b099d7
#define TEXT_PASTELINK   5
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Declare local character arrays.
Packit b099d7
 */
Packit b099d7
static char *flavors[] = {
Packit b099d7
     "Chocolate Fudge", "French Vanilla", "Wild Strawberry",
Packit b099d7
     "Maple Walnut", "Rocky Road", "Pistachio",
Packit b099d7
     "Peanut Butter Cup", "Heath Bar Crunch", "Jamoca",
Packit b099d7
     "Vanilla Fudge", "Mint Chocolate Chip", "Chocolate Chip",
Packit b099d7
     "Peach", "Butter Pecan", "Lemon Jubiliee", 
Packit b099d7
     "Daquari Ice", "Rasberry", "Cookie Crunch",
Packit b099d7
     "Pralenes 'n Creame", "Lemon 'n Lime", "Caramel Crunch",
Packit b099d7
     "Cherry Garcia", "White Chocolate", "Coconut",
Packit b099d7
     "Peppermint", "Marshmellow", "Tootie Fruitie",
Packit b099d7
     "Watermelon", "Bubble Gum", "English Breakfast",
Packit b099d7
     "Sky Blue Ice"  };
Packit b099d7
Packit b099d7
static char *select_types[] = {
Packit b099d7
     "Single", "Multiple",
Packit b099d7
     "Extended", "Browse" };
Packit b099d7
Packit b099d7
static char string1[] = 
Packit b099d7
     "I scream! You scream! ";
Packit b099d7
Packit b099d7
static char string2[] =
Packit b099d7
     "We all scream for ice cream !! ";
Packit b099d7
Packit b099d7
static char string3[] =
Packit b099d7
     "31 Amazing Flavors";
Packit b099d7
Packit b099d7
static char translations[] =
Packit b099d7
  "Ctrl<Key>l:  link-primary()";
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Declare external functions.
Packit b099d7
 */
Packit b099d7
Widget XmCreatePopupMenu();
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Declare local functions.
Packit b099d7
 */
Packit b099d7
static void CreateListPrim(), CreateTextPrim(), 
Packit b099d7
            CreateTextFieldPrim(),
Packit b099d7
            CreatePBPrim(), CreateToggleBPrim(), CreateLabelPrim(),
Packit b099d7
            CreateScalePrim();
Packit b099d7
static char *GetSafeAtom(Display *display, Atom a);
Packit b099d7
static char *GetStringFrom(XtEnum operation);
Packit b099d7
static int SIF_ErrorHandler(Display *display, XErrorEvent *event);
Packit b099d7
static void Convert_info(Widget w, XtPointer call_data);
Packit b099d7
static void Destination_info(Widget w, XtPointer call_data);
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Declare global structures.
Packit b099d7
 */
Packit b099d7
typedef struct  _FlagWidgetPair
Packit b099d7
        {
Packit b099d7
        int     flag;
Packit b099d7
        Widget  w;
Packit b099d7
        }       FlagWidgetPair;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Declare global variables.
Packit b099d7
 */
Packit b099d7
int             n, ndx;
Packit b099d7
Arg             args[25];
Packit b099d7
XmFontList      fontlist;
Packit b099d7
XmString        ItemList[NUM_FLAVORS], Label;
Packit b099d7
Widget          Form1, ListLabel1, List1, 
Packit b099d7
                PullDown1, OptionPB[NUM_SELECT_TYPES], OptionMenu1, 
Packit b099d7
                Text1, TextLabel1, 
Packit b099d7
                TextField1, TextFieldLabel1,
Packit b099d7
                HorizSeparator1, VertSeparator1, 
Packit b099d7
                PBLabel1, PB1, ToggleBLabel1, ToggleB1,
Packit b099d7
                Label1, ScaleLabel1, Scale1,
Packit b099d7
                Popup1Btn[BUTTON_CNT], Popup1, Popup2Btn[BUTTON_CNT], Popup2,
Packit b099d7
                Popup3Btn[BUTTON_CNT], Popup3;
Packit b099d7
FlagWidgetPair  FWP1[BUTTON_CNT], FWP2[BUTTON_CNT], FWP3[BUTTON_CNT];
Packit b099d7
Packit b099d7
char            buf[10];
Packit b099d7
Packit b099d7
Packit b099d7
/* 
Packit b099d7
 *  Callback functions 
Packit b099d7
 */
Packit b099d7
static void QuitCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
   exit(0);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void PopupCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
        FlagWidgetPair  *client_fwp;
Packit b099d7
        XButtonEvent *bev;
Packit b099d7
Packit b099d7
        client_fwp = (FlagWidgetPair *)client_data;
Packit b099d7
        bev = (XButtonEvent *)((XmPushButtonCallbackStruct *)call_data)->event;
Packit b099d7
Packit b099d7
        switch (client_fwp->flag)
Packit b099d7
        {
Packit b099d7
          case TEXTF_COPYLINK:
Packit b099d7
               if (!XmTextFieldCopyLink(client_fwp->w, bev->time))
Packit b099d7
                   printf("XmTextFieldCopyLink failed!\n");
Packit b099d7
               break;
Packit b099d7
Packit b099d7
          case TEXTF_PASTELINK:
Packit b099d7
               if (!XmTextFieldPasteLink(client_fwp->w))
Packit b099d7
                   printf("XmTextFieldPasteLink failed!\n");
Packit b099d7
               break;
Packit b099d7
Packit b099d7
          case TEXT_COPYLINK:
Packit b099d7
               if (!XmTextCopyLink(client_fwp->w, bev->time))
Packit b099d7
                   printf("XmTextCopyLink failed!\n");
Packit b099d7
               break;
Packit b099d7
Packit b099d7
          case TEXT_PASTELINK:
Packit b099d7
               if (!XmTextPasteLink(client_fwp->w))
Packit b099d7
                   printf("XmTextPasteLink failed!\n");
Packit b099d7
               break;
Packit b099d7
         }
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
static void SetSelectType(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
   Arg   args[5];
Packit b099d7
   int   n;
Packit b099d7
Packit b099d7
Packit b099d7
   if ( OptionPB[0] == (Widget)client_data )
Packit b099d7
   {
Packit b099d7
      n = 0;
Packit b099d7
      XtSetArg(args[n], XmNselectionPolicy, XmSINGLE_SELECT); n++;
Packit b099d7
      XtSetValues( List1, args, n );
Packit b099d7
Packit b099d7
      n = 0;
Packit b099d7
      XtSetArg(args[n], XmNmenuHistory, OptionPB[0]); n++;
Packit b099d7
      XtSetArg(args[n], XmNwhichButton, 1); n++;
Packit b099d7
      XtSetValues( OptionMenu1, args, n );
Packit b099d7
Packit b099d7
   }
Packit b099d7
Packit b099d7
   else if ( OptionPB[1] == (Widget)client_data )
Packit b099d7
   {
Packit b099d7
      n = 0;
Packit b099d7
      XtSetArg(args[n], XmNselectionPolicy, XmMULTIPLE_SELECT); n++;
Packit b099d7
      XtSetValues( List1, args, n );
Packit b099d7
Packit b099d7
      n = 0;
Packit b099d7
      XtSetArg(args[n], XmNmenuHistory, OptionPB[1]); n++;
Packit b099d7
      XtSetArg(args[n], XmNwhichButton, 2); n++;
Packit b099d7
      XtSetValues( OptionMenu1, args, n );
Packit b099d7
   }
Packit b099d7
Packit b099d7
   else if ( OptionPB[2] == (Widget)client_data )
Packit b099d7
   {
Packit b099d7
      n = 0;
Packit b099d7
      XtSetArg(args[n], XmNselectionPolicy, XmEXTENDED_SELECT); n++;
Packit b099d7
      XtSetValues( List1, args, n );
Packit b099d7
Packit b099d7
      n = 0;
Packit b099d7
      XtSetArg(args[n], XmNmenuHistory, OptionPB[2]); n++;
Packit b099d7
      XtSetArg(args[n], XmNwhichButton, 3); n++;
Packit b099d7
      XtSetValues( OptionMenu1, args, n );
Packit b099d7
   }
Packit b099d7
Packit b099d7
   else if ( OptionPB[3] == (Widget)client_data )
Packit b099d7
   {
Packit b099d7
      n = 0;
Packit b099d7
      XtSetArg(args[n], XmNselectionPolicy, XmBROWSE_SELECT); n++;
Packit b099d7
      XtSetValues( List1, args, n );
Packit b099d7
Packit b099d7
      n = 0;
Packit b099d7
      XtSetArg(args[n], XmNmenuHistory, OptionPB[3]); n++;
Packit b099d7
      XtSetArg(args[n], XmNwhichButton, 4); n++;
Packit b099d7
      XtSetValues( OptionMenu1, args, n );
Packit b099d7
   }
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
static void ListConvertCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
       printf("XmNconvertCallback called for List widget.\n");
Packit b099d7
       Convert_info(w, call_data);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void ListDestinCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
       printf("XmNdestinationCallback called for List widget.\n");
Packit b099d7
       Destination_info(w, call_data);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void TextConvertCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
  XmConvertCallbackStruct *cs;
Packit b099d7
  char *selection_atom_name, *target_atom_name;
Packit b099d7
  char *tf_string = "<Text Link>";
Packit b099d7
Packit b099d7
  cs = (XmConvertCallbackStruct *) call_data;
Packit b099d7
Packit b099d7
  selection_atom_name = GetSafeAtom(XtDisplay(w), cs->selection);
Packit b099d7
  if (selection_atom_name == NULL)
Packit b099d7
       selection_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  target_atom_name = GetSafeAtom(XtDisplay(w), cs->target);
Packit b099d7
  if (target_atom_name == NULL)
Packit b099d7
       target_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  printf("XmNconvertCallback called for Text widget.\n");
Packit b099d7
  printf("        selection         = %s\n", selection_atom_name);
Packit b099d7
  printf("        conversion target = %s\n", target_atom_name);
Packit b099d7
Packit b099d7
  /* support for Clipboard Link transfer */
Packit b099d7
Packit b099d7
  if ((cs->selection == XInternAtom(XtDisplay(w), XmSCLIPBOARD, False)) &&
Packit b099d7
      (cs->target == XInternAtom(XtDisplay(w), XmS_MOTIF_CLIPBOARD_TARGETS, 
Packit b099d7
				 False) ||
Packit b099d7
       cs->target == XInternAtom(XtDisplay(w), 
Packit b099d7
				 XmS_MOTIF_DEFERRED_CLIPBOARD_TARGETS, 
Packit b099d7
				 False))) {
Packit b099d7
Packit b099d7
      if (cs->parm != (XtPointer) 0)
Packit b099d7
	  printf("        parm              = %s\n", 
Packit b099d7
		 GetStringFrom((XtEnum) cs->parm));
Packit b099d7
Packit b099d7
      if ((cs->target == XInternAtom(XtDisplay(w), 
Packit b099d7
				     XmS_MOTIF_CLIPBOARD_TARGETS,
Packit b099d7
				     False)) &&
Packit b099d7
	  (cs->parm == (XtPointer) XmLINK)) {
Packit b099d7
      
Packit b099d7
	  Atom *targargs;
Packit b099d7
Packit b099d7
	  targargs = (Atom *) XtMalloc(sizeof(Atom));
Packit b099d7
	  *targargs = XInternAtom(XtDisplay(w), "MY_LINK_TARGET", False);
Packit b099d7
Packit b099d7
	  cs->type = XA_ATOM;
Packit b099d7
	  cs->format = 32;
Packit b099d7
	  cs->length = 1;
Packit b099d7
	  cs->value = (XtPointer) targargs;
Packit b099d7
	  cs->status = XmCONVERT_DONE;
Packit b099d7
      }
Packit b099d7
  } 
Packit b099d7
  else { 
Packit b099d7
Packit b099d7
      if (cs->target == XInternAtom(XtDisplay(w), "MY_LINK_TARGET", False)) {
Packit b099d7
Packit b099d7
	  cs->type = (Atom) XA_STRING;
Packit b099d7
	  cs->format = 8;
Packit b099d7
	  cs->length = (unsigned long) (strlen(tf_string) + 1);
Packit b099d7
	  cs->value = (XtPointer) XtNewString(tf_string);
Packit b099d7
	  cs->status = XmCONVERT_DONE;
Packit b099d7
      }
Packit b099d7
  }
Packit b099d7
  printf("\n"); 
Packit b099d7
Packit b099d7
  return;
Packit b099d7
}
Packit b099d7
Packit b099d7
static void 
Packit b099d7
TextReceiveData(Widget w, XtPointer ignore, 
Packit b099d7
		XmSelectionCallbackStruct *data)
Packit b099d7
{
Packit b099d7
    if (data->target == XInternAtom(XtDisplay(w), "MY_LINK_TARGET", False)) {
Packit b099d7
	
Packit b099d7
	if (data->length == 0) {
Packit b099d7
	    XmTransferDone(data -> transfer_id, XmTRANSFER_DONE_FAIL);
Packit b099d7
	    return;
Packit b099d7
        }
Packit b099d7
Packit b099d7
	XmTextInsert(w, XmTextGetInsertionPosition(w), data->value);
Packit b099d7
Packit b099d7
    }
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static void TextDestinCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
  XmDestinationCallbackStruct *cs;
Packit b099d7
  char *selection_atom_name;
Packit b099d7
Packit b099d7
  cs = (XmDestinationCallbackStruct *) call_data;
Packit b099d7
Packit b099d7
  printf("XmNdestinationCallback called for Text widget.\n");
Packit b099d7
Packit b099d7
  selection_atom_name = GetSafeAtom(XtDisplay(w), cs->selection);
Packit b099d7
  if (selection_atom_name == NULL)
Packit b099d7
       selection_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  printf("        selection = %s\n", selection_atom_name);
Packit b099d7
  printf("        operation = %s\n\n", GetStringFrom(cs->operation));
Packit b099d7
Packit b099d7
  if (cs->operation == XmLINK) 
Packit b099d7
      XmTransferValue(cs -> transfer_id, 
Packit b099d7
                  XInternAtom(XtDisplay(w), "MY_LINK_TARGET", False),
Packit b099d7
                  (XtCallbackProc) TextReceiveData, NULL, 0);
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
static void TextFieldConvertCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
  XmConvertCallbackStruct *cs;
Packit b099d7
  char *selection_atom_name, *target_atom_name;
Packit b099d7
  char *tf_string = "<TextField Link>";
Packit b099d7
Packit b099d7
  cs = (XmConvertCallbackStruct *) call_data;
Packit b099d7
Packit b099d7
  selection_atom_name = GetSafeAtom(XtDisplay(w), cs->selection);
Packit b099d7
  if (selection_atom_name == NULL)
Packit b099d7
       selection_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  target_atom_name = GetSafeAtom(XtDisplay(w), cs->target);
Packit b099d7
  if (target_atom_name == NULL)
Packit b099d7
       target_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  printf("XmNconvertCallback called for TextField widget.\n");
Packit b099d7
  printf("        selection         = %s\n", selection_atom_name);
Packit b099d7
  printf("        conversion target = %s\n", target_atom_name);
Packit b099d7
Packit b099d7
  /* support for Clipboard Link transfer */
Packit b099d7
Packit b099d7
  if ((cs->selection == XInternAtom(XtDisplay(w), XmSCLIPBOARD, False)) &&
Packit b099d7
      (cs->target == XInternAtom(XtDisplay(w), XmS_MOTIF_CLIPBOARD_TARGETS, 
Packit b099d7
				 False) ||
Packit b099d7
       cs->target == XInternAtom(XtDisplay(w), 
Packit b099d7
				 XmS_MOTIF_DEFERRED_CLIPBOARD_TARGETS, 
Packit b099d7
				 False))) {
Packit b099d7
Packit b099d7
      if (cs->parm != (XtPointer) 0)
Packit b099d7
	  printf("        parm              = %s\n", 
Packit b099d7
		 GetStringFrom((XtEnum) cs->parm));
Packit b099d7
Packit b099d7
      if ((cs->target == XInternAtom(XtDisplay(w), 
Packit b099d7
				     XmS_MOTIF_CLIPBOARD_TARGETS,
Packit b099d7
				     False)) &&
Packit b099d7
	  (cs->parm == (XtPointer) XmLINK)) {
Packit b099d7
      
Packit b099d7
	  Atom *targargs;
Packit b099d7
Packit b099d7
	  targargs = (Atom *) XtMalloc(sizeof(Atom));
Packit b099d7
	  *targargs = XInternAtom(XtDisplay(w), "MY_LINK_TARGET", False);
Packit b099d7
Packit b099d7
	  cs->type = XA_ATOM;
Packit b099d7
	  cs->format = 32;
Packit b099d7
	  cs->length = 1;
Packit b099d7
	  cs->value = (XtPointer) targargs;
Packit b099d7
	  cs->status = XmCONVERT_DONE;
Packit b099d7
      }
Packit b099d7
  } 
Packit b099d7
  else { 
Packit b099d7
Packit b099d7
      if (cs->target == XInternAtom(XtDisplay(w), "MY_LINK_TARGET", False)) {
Packit b099d7
Packit b099d7
	  cs->type = (Atom) XA_STRING;
Packit b099d7
	  cs->format = 8;
Packit b099d7
	  cs->length = (unsigned long) (strlen(tf_string) + 1);
Packit b099d7
	  cs->value = (XtPointer) XtNewString(tf_string);
Packit b099d7
	  cs->status = XmCONVERT_DONE;
Packit b099d7
      }
Packit b099d7
  }
Packit b099d7
  printf("\n"); 
Packit b099d7
Packit b099d7
  return;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static void 
Packit b099d7
TextFieldReceiveData(Widget w, XtPointer ignore, 
Packit b099d7
		     XmSelectionCallbackStruct *data)
Packit b099d7
{
Packit b099d7
    if (data->target == XInternAtom(XtDisplay(w), "MY_LINK_TARGET", False)) {
Packit b099d7
	
Packit b099d7
	if (data->length == 0) {
Packit b099d7
	    XmTransferDone(data -> transfer_id, XmTRANSFER_DONE_FAIL);
Packit b099d7
	    return;
Packit b099d7
        }
Packit b099d7
Packit b099d7
	XmTextFieldInsert(w, XmTextFieldGetInsertionPosition(w),
Packit b099d7
			  data->value);
Packit b099d7
Packit b099d7
    }
Packit b099d7
}
Packit b099d7
Packit b099d7
static void
Packit b099d7
TextFieldDestinCB(Widget w, XtPointer client_data, XtPointer call_data)
Packit b099d7
{
Packit b099d7
Packit b099d7
  XmDestinationCallbackStruct *cs;
Packit b099d7
  char *selection_atom_name;
Packit b099d7
Packit b099d7
  cs = (XmDestinationCallbackStruct *) call_data;
Packit b099d7
Packit b099d7
  printf("XmNdestinationCallback called for TextField widget.\n");
Packit b099d7
Packit b099d7
  selection_atom_name = GetSafeAtom(XtDisplay(w), cs->selection);
Packit b099d7
  if (selection_atom_name == NULL)
Packit b099d7
       selection_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  printf("        selection = %s\n", selection_atom_name);
Packit b099d7
  printf("        operation = %s\n\n", GetStringFrom(cs->operation));
Packit b099d7
Packit b099d7
  if (cs->operation == XmLINK) 
Packit b099d7
      XmTransferValue(cs -> transfer_id, 
Packit b099d7
                  XInternAtom(XtDisplay(w), "MY_LINK_TARGET", False),
Packit b099d7
                  (XtCallbackProc) TextFieldReceiveData, NULL, 0);
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
static void LabelConvertCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
       printf("XmNconvertCallback called for Label widget. \n");
Packit b099d7
       Convert_info(w, call_data);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void ScaleConvertCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
       printf("XmNconvertCallback called for Scale widget. \n");
Packit b099d7
       Convert_info(w, call_data);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void PBConvertCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
       printf("XmNconvertCallback called for PushButton widget. \n");
Packit b099d7
       Convert_info(w, call_data);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void ToggleConvertCB(Widget w, XtPointer client_data,
Packit b099d7
                                XtPointer call_data)
Packit b099d7
{
Packit b099d7
       printf("XmNconvertCallback called for ToggleButton widget. \n");
Packit b099d7
       Convert_info(w, call_data);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void PostIt(Widget w, XtPointer client_data,
Packit b099d7
                                XEvent *call_data, Boolean *c)
Packit b099d7
{
Packit b099d7
        if (((XButtonEvent *)call_data)->button != Button3)
Packit b099d7
                return;
Packit b099d7
        XmMenuPosition((Widget)client_data, (XButtonPressedEvent *)call_data);
Packit b099d7
        XtManageChild((Widget)client_data);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Main
Packit b099d7
 */
Packit b099d7
void  main (argc, argv)
Packit b099d7
    int     argc;
Packit b099d7
    char  **argv;
Packit b099d7
{
Packit b099d7
    XtTranslations   trans_tab;
Packit b099d7
    int              test_num;
Packit b099d7
    Widget           QuitButton;
Packit b099d7
Packit b099d7
    test_num = 0;
Packit b099d7
Packit b099d7
    CommonTestInit(argc, argv);
Packit b099d7
Packit b099d7
    if (UserData != NULL) {
Packit b099d7
Packit b099d7
       if (strcmp(UserData, "-n") == 0)
Packit b099d7
	 test_num = 1;
Packit b099d7
    }
Packit b099d7
Packit b099d7
    free(UserData);
Packit b099d7
Packit b099d7
    trans_tab = XtParseTranslationTable (translations);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNmarginHeight, 15); n++;
Packit b099d7
    XtSetArg(args[n], XmNmarginWidth, 15); n++;
Packit b099d7
    XtSetArg(args[n], XmNwidth, FORM_WIDTH); n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, FORM_HEIGHT); n++;
Packit b099d7
    XtSetArg(args[n], XmNresizePolicy, XmRESIZE_NONE ); n++;
Packit b099d7
    Form1 = XmCreateForm(Shell1, "Form1", args, n);
Packit b099d7
    XtManageChild (Form1);
Packit b099d7
Packit b099d7
    fontlist = CommonGetFontList("8x13bold");
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Creates TextFieldLabel1 and TextField1.
Packit b099d7
     */
Packit b099d7
    CreateTextFieldPrim( Form1, &TextFieldLabel1, &TextField1 );
Packit b099d7
Packit b099d7
    /*  Set Attachments. */
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM );      n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM );     n++;
Packit b099d7
    XtSetValues(TextFieldLabel1, args, n);
Packit b099d7
    XtManageChild(TextFieldLabel1);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
Packit b099d7
    XtSetArg(args[n], XmNleftWidget, TextFieldLabel1 ); n++;
Packit b099d7
    XtSetValues(TextField1, args, n);
Packit b099d7
    XtManageChild(TextField1);
Packit b099d7
Packit b099d7
    /*  Create popup menu of functions for TextField widget. */
Packit b099d7
    Popup1 = XmCreatePopupMenu( TextField1, "Popup1", NULL, 0 );  
Packit b099d7
    XtAddEventHandler(TextField1, ButtonPressMask, False, PostIt, Popup1);
Packit b099d7
Packit b099d7
    ndx = 0;
Packit b099d7
    n = 0;
Packit b099d7
    Label = XmStringCreate("TextField Functions",
Packit b099d7
                                 XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label); n++;
Packit b099d7
    Popup1Btn[ndx++] = XmCreateLabelGadget(Popup1, "Title1",
Packit b099d7
                                                args, n);
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    Popup1Btn[ndx++] = XmCreateSeparatorGadget(Popup1, "separator1",
Packit b099d7
                                                args, n);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    Label = XmStringCreateLtoR("XmTextFieldCopyLink", XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label); n++;
Packit b099d7
    Popup1Btn[ndx++] = XmCreatePushButtonGadget(Popup1, "CopyLink1",
Packit b099d7
                                            args, n);
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    Label = XmStringCreate("XmTextFieldPasteLink", XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label); n++;
Packit b099d7
    Popup1Btn[ndx++] = XmCreatePushButtonGadget(Popup1, "PasteLink1",
Packit b099d7
                                            args, n);
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    ndx = 2;
Packit b099d7
    FWP1[ndx-2].flag = TEXTF_COPYLINK; FWP1[ndx-2].w = TextField1;
Packit b099d7
    XtAddCallback(Popup1Btn[ndx], XmNactivateCallback,
Packit b099d7
                                    PopupCB, &FWP1[ndx-2]); ndx++;
Packit b099d7
    FWP1[ndx-2].flag = TEXTF_PASTELINK; FWP1[ndx-2].w = TextField1;
Packit b099d7
    XtAddCallback(Popup1Btn[ndx], XmNactivateCallback,
Packit b099d7
                                    PopupCB, &FWP1[ndx-2]); ndx++;
Packit b099d7
Packit b099d7
    XtManageChildren(Popup1Btn, ndx);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Creates TextLabel1 and Text1.
Packit b099d7
     */
Packit b099d7
    CreateTextPrim( Form1, &TextLabel1, &Text1 );
Packit b099d7
Packit b099d7
    /*  Set Attachments. */
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, TextFieldLabel1 );             n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM );     n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING );    n++;
Packit b099d7
    XtSetValues(TextLabel1, args, n);
Packit b099d7
    XtManageChild(TextLabel1);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, TextField1 );                  n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET );     n++;
Packit b099d7
    XtSetArg(args[n], XmNleftWidget, TextLabel1 );              n++;
Packit b099d7
    XtSetValues(Text1, args, n);
Packit b099d7
    XtManageChild(Text1);
Packit b099d7
Packit b099d7
    /*  Create popup menu of functions for Text widget. */
Packit b099d7
    Popup2 = XmCreatePopupMenu( Text1, "Popup2", NULL, 0 );  
Packit b099d7
    XtAddEventHandler(Text1, ButtonPressMask, False, PostIt, Popup2);
Packit b099d7
Packit b099d7
    ndx = 0;
Packit b099d7
    n = 0;
Packit b099d7
    Label = XmStringCreate("Text Functions",
Packit b099d7
                            XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label); n++;
Packit b099d7
    Popup2Btn[ndx++] = XmCreateLabelGadget(Popup2, "Title2",
Packit b099d7
                                                args, n);
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    Popup2Btn[ndx++] = XmCreateSeparatorGadget(Popup2, "separator1",
Packit b099d7
                                                args, n);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    Label = XmStringCreateLtoR("XmTextCopyLink", XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label); n++;
Packit b099d7
    Popup2Btn[ndx++] = XmCreatePushButtonGadget(Popup2, "CopyLink2",
Packit b099d7
                                            args, n);
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    Label = XmStringCreate("XmTextPasteLink", XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label); n++;
Packit b099d7
    Popup2Btn[ndx++] = XmCreatePushButtonGadget(Popup2, "PasteLink2",
Packit b099d7
                                            args, n);
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    ndx = 2;
Packit b099d7
    FWP2[ndx-2].flag = TEXT_COPYLINK; FWP2[ndx-2].w = Text1;
Packit b099d7
    XtAddCallback(Popup2Btn[ndx], XmNactivateCallback,
Packit b099d7
                                    PopupCB, &FWP2[ndx-2]); ndx++;
Packit b099d7
    FWP2[ndx-2].flag = TEXT_PASTELINK; FWP2[ndx-2].w = Text1;
Packit b099d7
    XtAddCallback(Popup2Btn[ndx], XmNactivateCallback,
Packit b099d7
                                    PopupCB, &FWP2[ndx-2]); ndx++;
Packit b099d7
Packit b099d7
    XtManageChildren(Popup2Btn, ndx);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Create vertical separator. 
Packit b099d7
     */
Packit b099d7
    n = 0;
Packit b099d7
/*
Packit b099d7
    XtSetArg(args[n], XmNx, FORM_WIDTH * 2 / 3 );		       n++;
Packit b099d7
*/
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM );       n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET );    n++;
Packit b099d7
    XtSetArg(args[n], XmNleftWidget, Text1 );                  n++;
Packit b099d7
    XtSetArg(args[n], XmNleftOffset, OFFSET );                 n++;
Packit b099d7
    XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM );    n++;
Packit b099d7
    XtSetArg(args[n], XmNorientation, XmVERTICAL );            n++;
Packit b099d7
    XtSetArg(args[n], XmNseparatorType, XmSHADOW_ETCHED_OUT ); n++;
Packit b099d7
    XtSetArg(args[n], XmNshadowThickness, 5 );                 n++;
Packit b099d7
    VertSeparator1 = XmCreateSeparator( Form1, "VertSeparator1", args, n );
Packit b099d7
Packit b099d7
    XtManageChild(VertSeparator1);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Creates ListLabel1, List1, and OptionMenu1 for setting the
Packit b099d7
     *  selection policy resource of the List1 widget.
Packit b099d7
     */
Packit b099d7
    CreateListPrim( Form1, &ListLabel1, &List1, &PullDown1, &OptionMenu1 );
Packit b099d7
Packit b099d7
    /*  Set Attachments. */
Packit b099d7
/*
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, ListLabel1 );               n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM );       n++;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LIST_WIDTH );			n++;
Packit b099d7
    XtSetValues(List1, args, n);
Packit b099d7
    XtManageChild(List1);
Packit b099d7
*/
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );       n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, List1 );                     n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNleftWidget, VertSeparator1 );           n++;
Packit b099d7
    XtSetValues(OptionMenu1, args, n);
Packit b099d7
    XtManageChild(OptionMenu1);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Create horizontal separator. 
Packit b099d7
     */
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );     n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, OptionMenu1 );             n++;
Packit b099d7
    XtSetArg(args[n], XmNtopOffset, OFFSET );                  n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM );      n++;
Packit b099d7
    XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM );     n++;
Packit b099d7
    XtSetArg(args[n], XmNorientation, XmHORIZONTAL );          n++;
Packit b099d7
    XtSetArg(args[n], XmNseparatorType, XmSHADOW_ETCHED_OUT ); n++;
Packit b099d7
    XtSetArg(args[n], XmNshadowThickness, 5 );                 n++;
Packit b099d7
    HorizSeparator1 = XmCreateSeparator( Form1, "HorizSeparator1", args, n );
Packit b099d7
Packit b099d7
    XtManageChild(HorizSeparator1);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Create PBLabel1 and PB1.
Packit b099d7
     */
Packit b099d7
    CreatePBPrim( Form1, &PBLabel1, &PB1 );
Packit b099d7
Packit b099d7
Packit b099d7
    /*  Set Attachments. */
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, HorizSeparator1 );          n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM );       n++;
Packit b099d7
    XtSetValues(PBLabel1, args, n);
Packit b099d7
    XtManageChild(PBLabel1);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, PBLabel1 );                 n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM );       n++;
Packit b099d7
    XtSetValues(PB1, args, n);
Packit b099d7
    XtManageChild(PB1);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Create ToggleBLabel1 and ToggleB1.
Packit b099d7
     */
Packit b099d7
    CreateToggleBPrim( Form1, &ToggleBLabel1, &ToggleB1 );
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, PB1 );                      n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM );       n++;
Packit b099d7
    XtSetValues(ToggleBLabel1, args, n);
Packit b099d7
    XtManageChild(ToggleBLabel1);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, ToggleBLabel1 );            n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM );       n++;
Packit b099d7
    XtSetValues(ToggleB1, args, n);
Packit b099d7
    XtManageChild(ToggleB1);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Create Label1.
Packit b099d7
     */
Packit b099d7
    CreateLabelPrim( Form1, &Label1 );
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, HorizSeparator1 );          n++;
Packit b099d7
    XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM );      n++;
Packit b099d7
    XtSetValues(Label1, args, n);
Packit b099d7
    XtManageChild(Label1);
Packit b099d7
Packit b099d7
    /* 
Packit b099d7
     *  Create ScaleLabel1 and Scale1.
Packit b099d7
     */
Packit b099d7
    CreateScalePrim( Form1, &ScaleLabel1, &Scale1 );
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, Label1 );                   n++;
Packit b099d7
    XtSetArg(args[n], XmNtopOffset, OFFSET );                   n++;
Packit b099d7
    XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM );      n++;
Packit b099d7
    XtSetValues(ScaleLabel1, args, n);
Packit b099d7
    XtManageChild(ScaleLabel1);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, ScaleLabel1 );              n++;
Packit b099d7
    XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM );      n++;
Packit b099d7
    XtSetValues(Scale1, args, n);
Packit b099d7
    XtManageChild(Scale1);
Packit b099d7
Packit b099d7
    if (test_num == 1) {
Packit b099d7
       n = 0;
Packit b099d7
       XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
       XtSetArg(args[n], XmNtopWidget, Scale1 );                   n++;
Packit b099d7
       XtSetArg(args[n], XmNtopOffset, 20);                        n++;
Packit b099d7
       XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET );     n++;
Packit b099d7
       XtSetArg(args[n], XmNleftWidget, VertSeparator1 );          n++;
Packit b099d7
       XtSetArg(args[n], XmNleftOffset, 50);                       n++;
Packit b099d7
       QuitButton = XmCreatePushButtonGadget(Form1, "QuitButton", args, n);
Packit b099d7
       XtManageChild(QuitButton);
Packit b099d7
       XtAddCallback(QuitButton, XmNactivateCallback, QuitCB, NULL);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    XtOverrideTranslations(TextField1, trans_tab);
Packit b099d7
    XtOverrideTranslations(Text1, trans_tab);
Packit b099d7
Packit b099d7
    XtRealizeWidget(Shell1);
Packit b099d7
Packit b099d7
    if (test_num == 0) {
Packit b099d7
Packit b099d7
       /*  Test convert and destination callbacks of TextField widget. */
Packit b099d7
       CommonPause();
Packit b099d7
Packit b099d7
       /*  Test convert and destination callbacks of Text widget. */
Packit b099d7
       CommonPause();
Packit b099d7
Packit b099d7
       /*  
Packit b099d7
	*  Test the CopyLink and PasteLink functions within each of the 
Packit b099d7
	*  Text widgets.
Packit b099d7
	*/
Packit b099d7
Packit b099d7
       CommonPause();
Packit b099d7
Packit b099d7
       /*  
Packit b099d7
	*  Test the CopyLink and PasteLink functions between each of the 
Packit b099d7
	*  Text widgets.
Packit b099d7
	*/
Packit b099d7
       CommonPause();
Packit b099d7
Packit b099d7
       /*  Test the primary-link() action in each of the text widgets. */
Packit b099d7
       CommonPause();
Packit b099d7
Packit b099d7
       /*  Test the secondary selection transfer in each of the text widgets.*/
Packit b099d7
       CommonPause();
Packit b099d7
Packit b099d7
       CommonPause();
Packit b099d7
       CommonPause();
Packit b099d7
       CommonPause();
Packit b099d7
       CommonPause();
Packit b099d7
    }
Packit b099d7
Packit b099d7
    XtAppMainLoop(app_context);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static void CreateListPrim( Parent, ListLabel, List, PullDown, OptionMenu )
Packit b099d7
Widget Parent, *ListLabel, *List, *PullDown, *OptionMenu;
Packit b099d7
{
Packit b099d7
Packit b099d7
    Label = XmStringCreateSimple("List"); 
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM );        n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET );       n++;
Packit b099d7
    XtSetArg(args[n], XmNleftWidget, VertSeparator1 );       n++;
Packit b099d7
    XtSetArg(args[n], XmNleftOffset, OFFSET );       n++;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LIST_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNshadowThickness, 5 );			n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label );			n++;
Packit b099d7
    XtSetArg(args[n], XmNhighlightOnEnter, True );		n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING );    n++;
Packit b099d7
    XtSetArg(args[n], XmNfontList, fontlist );                  n++;
Packit b099d7
    *ListLabel = XmCreateLabel( Parent, "ListLabel", args, n );
Packit b099d7
    XtManageChild(*ListLabel);
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
Packit b099d7
    /* convert array of character strings to XmStrings. */
Packit b099d7
    for (n = 0; n < NUM_FLAVORS; n++)
Packit b099d7
        ItemList[n] = XmStringLtoRCreate(flavors[n],
Packit b099d7
                          XmSTRING_DEFAULT_CHARSET);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET );      n++;
Packit b099d7
    XtSetArg(args[n], XmNtopWidget, *ListLabel );               n++;
Packit b099d7
    XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET );     n++;
Packit b099d7
    XtSetArg(args[n], XmNleftWidget, VertSeparator1 );          n++;
Packit b099d7
    XtSetArg(args[n], XmNleftOffset, OFFSET );       n++;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LIST_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNlistSpacing, 5);                       n++;
Packit b099d7
    XtSetArg(args[n], XmNlistMarginWidth, 2);                   n++;
Packit b099d7
    XtSetArg(args[n], XmNlistMarginHeight, 2);                  n++;
Packit b099d7
    XtSetArg(args[n], XmNlistSizePolicy, XmCONSTANT);           n++;
Packit b099d7
    XtSetArg(args[n], XmNitems, ItemList);                      n++;
Packit b099d7
    XtSetArg(args[n], XmNitemCount, NUM_FLAVORS);               n++;
Packit b099d7
    XtSetArg(args[n], XmNvisibleItemCount, 6);                  n++;
Packit b099d7
    XtSetArg(args[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED);  n++;
Packit b099d7
    XtSetArg(args[n], XmNbackground,
Packit b099d7
                WhitePixel(display,DefaultScreen(display)));    n++;
Packit b099d7
    XtSetArg(args[n], XmNforeground,
Packit b099d7
                BlackPixel(display,DefaultScreen(display)));    n++;
Packit b099d7
    XtSetArg(args[n], XmNselectionPolicy, XmSINGLE_SELECT );    n++;
Packit b099d7
    *List = XmCreateScrolledList(Parent, "List", args, n);
Packit b099d7
    XtManageChild(*List);
Packit b099d7
Packit b099d7
    XtAddCallback( *List, XmNconvertCallback, ListConvertCB, NULL );
Packit b099d7
    XtAddCallback( *List, XmNdestinationCallback, ListDestinCB, NULL );
Packit b099d7
Packit b099d7
    *PullDown = XmCreatePulldownMenu(Parent, "PullDown", NULL, 0);
Packit b099d7
Packit b099d7
    /* 
Packit b099d7
     *  Convert pushbutton labels from char * to XmString types. 
Packit b099d7
     *  Create pushbuttons within the pulldown menu. 
Packit b099d7
     */   
Packit b099d7
    for ( n = 0; n < NUM_SELECT_TYPES; n++ )
Packit b099d7
    {
Packit b099d7
       Label = XmStringCreateSimple(select_types[n]); 
Packit b099d7
       XtSetArg(args[0], XmNlabelString, Label ); 
Packit b099d7
       sprintf(buf, "PB%d", n );
Packit b099d7
       OptionPB[n] = XmCreatePushButton( PullDown1, buf, args, 1 );
Packit b099d7
Packit b099d7
       /*  Set callback functions for each pushbutton. */
Packit b099d7
       XtAddCallback( OptionPB[n], XmNactivateCallback, 
Packit b099d7
                      SetSelectType, OptionPB[n]); 
Packit b099d7
       XmStringFree( Label );
Packit b099d7
    }
Packit b099d7
Packit b099d7
    XtManageChildren(OptionPB, NUM_SELECT_TYPES);
Packit b099d7
Packit b099d7
Packit b099d7
    Label = XmStringCreateSimple("Selection Policy"); 
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LIST_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label);         n++;
Packit b099d7
    XtSetArg(args[n], XmNsubMenuId,   PullDown1);   n++;
Packit b099d7
/*
Packit b099d7
    XtSetArg(args[n], XmNmenuHistory, OptionPB[NUM_SELECT_TYPES - 1]); n++;
Packit b099d7
*/
Packit b099d7
    XtSetArg(args[n], XmNmenuHistory, OptionPB[0]); n++;
Packit b099d7
    XtSetArg(args[n], XmNwhichButton, NUM_SELECT_TYPES);    n++;
Packit b099d7
    XtSetArg(args[n], XmNshadowThickness, 5 );			n++;
Packit b099d7
    *OptionMenu = XmCreateOptionMenu(Parent, "OptionMenu", args, n);
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
static void CreateTextPrim( Parent, TextLabel, Text )
Packit b099d7
Widget Parent, *TextLabel, *Text;
Packit b099d7
{
Packit b099d7
Packit b099d7
    Label = XmStringCreateSimple("Text");
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
Packit b099d7
    XtSetArg(args[n], XmNwidth, LABEL_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, TEXT_HEIGHT );			n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING );    n++;
Packit b099d7
    XtSetArg(args[n], XmNfontList, fontlist );                  n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label );			n++;
Packit b099d7
    *TextLabel = XmCreateLabel(Parent, "TextLabel", args, n );
Packit b099d7
   
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
Packit b099d7
    XtSetArg(args[n], XmNwidth, TEXT_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, TEXT_HEIGHT );			n++;
Packit b099d7
    XtSetArg(args[n], XmNrows, 2);			        n++;
Packit b099d7
    XtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT); 		n++;
Packit b099d7
    XtSetArg(args[n], XmNvalue, string2); 			n++;
Packit b099d7
    XtSetArg(args[n], XmNwordWrap, True); 			n++;
Packit b099d7
    *Text = XmCreateText(Parent, "Text", args, n);
Packit b099d7
Packit b099d7
    XtAddCallback( *Text, XmNconvertCallback, TextConvertCB, NULL );
Packit b099d7
    XtAddCallback( *Text, XmNdestinationCallback, TextDestinCB, NULL );
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static void CreateTextFieldPrim( Parent, TextFieldLabel, TextField )
Packit b099d7
Widget Parent, *TextFieldLabel, *TextField;
Packit b099d7
{
Packit b099d7
    Label = XmStringCreateSimple("TextField");
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LABEL_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, TEXT_HEIGHT );			n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING );    n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label); 			n++;
Packit b099d7
    XtSetArg(args[n], XmNfontList, fontlist );                  n++;
Packit b099d7
    *TextFieldLabel = XmCreateLabel(Parent, "TextField", args, n);
Packit b099d7
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, TEXT_WIDTH ); n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, TEXT_HEIGHT );			n++;
Packit b099d7
    XtSetArg(args[n], XmNvalue, string3 ); n++;
Packit b099d7
    *TextField = XmCreateTextField( Parent, "TextField", args, n );
Packit b099d7
Packit b099d7
Packit b099d7
    XtAddCallback( *TextField, XmNconvertCallback, TextFieldConvertCB, NULL );
Packit b099d7
    XtAddCallback( *TextField, XmNdestinationCallback, 
Packit b099d7
                               TextFieldDestinCB, NULL );
Packit b099d7
}
Packit b099d7
Packit b099d7
static void CreatePBPrim( Parent, PBLabel, PB )
Packit b099d7
Widget Parent, *PBLabel, *PB;
Packit b099d7
{
Packit b099d7
    Label = XmStringCreateSimple("PushButton");
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LIST_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNshadowThickness, 5 );			n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label );			n++;
Packit b099d7
    XtSetArg(args[n], XmNhighlightOnEnter, True );		n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING );    n++;
Packit b099d7
    XtSetArg(args[n], XmNfontList, fontlist );                  n++;
Packit b099d7
    *PBLabel = XmCreateLabel( Parent, "PBLabel", args, n );
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    Label = XmStringCreateSimple("Click Here !");
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LIST_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNshadowThickness, 5 );			n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label );			n++;
Packit b099d7
    XtSetArg(args[n], XmNhighlightOnEnter, True );		n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_CENTER );       n++;
Packit b099d7
    *PB = XmCreatePushButton( Parent, "PB", args, n );
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
 
Packit b099d7
    XtAddCallback(*PB, XmNconvertCallback, PBConvertCB, NULL );
Packit b099d7
}
Packit b099d7
Packit b099d7
static void CreateToggleBPrim( Parent, ToggleBLabel, ToggleB )
Packit b099d7
Widget Parent, *ToggleBLabel, *ToggleB;
Packit b099d7
{
Packit b099d7
    Label = XmStringCreateSimple("Toggle Button");
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LIST_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNshadowThickness, 5 );			n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label );			n++;
Packit b099d7
    XtSetArg(args[n], XmNhighlightOnEnter, True );		n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING );    n++;
Packit b099d7
    XtSetArg(args[n], XmNfontList, fontlist );                  n++;
Packit b099d7
    *ToggleBLabel = XmCreateLabel( Parent, "ToggleBLabel", args, n );
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    Label = XmStringCreateSimple("<-- Select This !");
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, LIST_WIDTH );			n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, 30 );   			n++;
Packit b099d7
    XtSetArg(args[n], XmNshadowThickness, 5 );			n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label );			n++;
Packit b099d7
    XtSetArg(args[n], XmNselectColor,
Packit b099d7
                WhitePixel(display,DefaultScreen(display)));    n++;
Packit b099d7
    *ToggleB = XmCreateToggleButton(Parent, "ToggleB", args, n );
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
    XtAddCallback( *ToggleB, XmNconvertCallback, ToggleConvertCB, NULL ); 
Packit b099d7
}
Packit b099d7
Packit b099d7
static void CreateLabelPrim( Parent, Label1 )
Packit b099d7
Widget Parent, *Label1;
Packit b099d7
{
Packit b099d7
    Label = XmStringCreateLtoR("Label", XmFONTLIST_DEFAULT_TAG);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, TEXT_WIDTH );                   n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, 20 );                          n++;
Packit b099d7
    XtSetArg(args[n], XmNfontList, fontlist );                  n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label );                  n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING );    n++;
Packit b099d7
    *Label1 = XmCreateLabel(Parent, "Label1", args, n );
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    XtAddCallback(*Label1, XmNconvertCallback, LabelConvertCB, NULL);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void CreateScalePrim( Parent, ScaleLabel, Scale )
Packit b099d7
Widget Parent, *ScaleLabel, *Scale;
Packit b099d7
{
Packit b099d7
    Label = XmStringCreateSimple("Scale");
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth, TEXT_WIDTH );                   n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, 20 );                          n++;
Packit b099d7
    XtSetArg(args[n], XmNfontList, fontlist );                  n++;
Packit b099d7
    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING );    n++;
Packit b099d7
    XtSetArg(args[n], XmNlabelString, Label );                  n++;
Packit b099d7
    *ScaleLabel = XmCreateLabel(Parent, "ScaleLabel", args, n );
Packit b099d7
Packit b099d7
    XmStringFree(Label);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNorientation, XmHORIZONTAL );           n++;
Packit b099d7
    XtSetArg(args[n], XmNscaleWidth, TEXT_WIDTH );              n++;
Packit b099d7
    XtSetArg(args[n], XmNscaleHeight, 20 );              n++;
Packit b099d7
    XtSetArg(args[n], XmNshowValue, True );              n++;
Packit b099d7
    *Scale = XmCreateScale(Parent, "Scale", args, n );
Packit b099d7
Packit b099d7
    XtAddCallback(*Scale, XmNconvertCallback, ScaleConvertCB, NULL);
Packit b099d7
}
Packit b099d7
Packit b099d7
/* Error handler for XGetAtomName */
Packit b099d7
Packit b099d7
static int SIF_ErrorFlag;
Packit b099d7
 
Packit b099d7
static int 
Packit b099d7
SIF_ErrorHandler(Display *display, XErrorEvent *event)
Packit b099d7
{
Packit b099d7
  SIF_ErrorFlag = event -> type;
Packit b099d7
Packit b099d7
  return 0;
Packit b099d7
}
Packit b099d7
Packit b099d7
static char * 
Packit b099d7
GetSafeAtom(Display *display, Atom a)
Packit b099d7
{
Packit b099d7
  XErrorHandler old_Handler;
Packit b099d7
  char *returnvalue;
Packit b099d7
Packit b099d7
  /* Setup error proc and reset error flag */
Packit b099d7
  old_Handler = XSetErrorHandler((XErrorHandler) SIF_ErrorHandler);
Packit b099d7
  SIF_ErrorFlag = 0;
Packit b099d7
Packit b099d7
  returnvalue = XGetAtomName(display, a);
Packit b099d7
Packit b099d7
  XSetErrorHandler(old_Handler);
Packit b099d7
Packit b099d7
  if (SIF_ErrorFlag == 0)
Packit b099d7
    return(returnvalue);
Packit b099d7
  else
Packit b099d7
    return(NULL);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static char *
Packit b099d7
GetStringFrom(XtEnum operation)
Packit b099d7
{
Packit b099d7
  char *returnvalue;
Packit b099d7
Packit b099d7
  switch(operation) {
Packit b099d7
        case XmMOVE:
Packit b099d7
           returnvalue = "XmMOVE";
Packit b099d7
           break;
Packit b099d7
        case XmCOPY: 
Packit b099d7
           returnvalue = "XmCOPY";
Packit b099d7
           break;
Packit b099d7
        case XmLINK:
Packit b099d7
           returnvalue = "XmLINK";
Packit b099d7
           break;
Packit b099d7
        case XmOTHER:
Packit b099d7
           returnvalue = "XmOTHER";
Packit b099d7
           break;
Packit b099d7
        default:
Packit b099d7
           returnvalue = "Bad operation";
Packit b099d7
        }
Packit b099d7
Packit b099d7
  return(returnvalue);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static void
Packit b099d7
Convert_info(Widget w, XtPointer call_data)
Packit b099d7
{
Packit b099d7
  XmConvertCallbackStruct *cs;
Packit b099d7
  char *selection_atom_name, *target_atom_name;
Packit b099d7
Packit b099d7
  cs = (XmConvertCallbackStruct *) call_data;
Packit b099d7
Packit b099d7
  selection_atom_name = GetSafeAtom(XtDisplay(w), cs->selection);
Packit b099d7
  if (selection_atom_name == NULL)
Packit b099d7
       selection_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  target_atom_name = GetSafeAtom(XtDisplay(w), cs->target);
Packit b099d7
  if (target_atom_name == NULL)
Packit b099d7
       target_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  printf("        selection         = %s\n", selection_atom_name);
Packit b099d7
  printf("        conversion target = %s\n", target_atom_name);
Packit b099d7
Packit b099d7
  if (cs->selection == XInternAtom(XtDisplay(w), XmSCLIPBOARD, False)) 
Packit b099d7
      if (cs->parm != (XtPointer) 0)
Packit b099d7
	  printf("        parm              = %s\n", 
Packit b099d7
		 GetStringFrom((XtEnum) cs->parm));
Packit b099d7
Packit b099d7
  printf("\n"); 
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
static void
Packit b099d7
Destination_info(Widget w, XtPointer call_data)
Packit b099d7
{
Packit b099d7
  XmDestinationCallbackStruct *cs;
Packit b099d7
  char *selection_atom_name;
Packit b099d7
Packit b099d7
  cs = (XmDestinationCallbackStruct *) call_data;
Packit b099d7
Packit b099d7
  selection_atom_name = GetSafeAtom(XtDisplay(w), cs->selection);
Packit b099d7
  if (selection_atom_name == NULL)
Packit b099d7
       selection_atom_name = "Illegal atom";
Packit b099d7
Packit b099d7
  printf("        selection = %s\n", selection_atom_name);
Packit b099d7
  printf("        operation = %s\n\n", GetStringFrom(cs->operation));
Packit b099d7
Packit b099d7
}