|
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 |
}
|