|
Packit |
b099d7 |
/* $TOG: UTMtransfer.c /main/6 1999/11/17 12:49:22 jff $ */
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* @OSF_COPRIGHT@
|
|
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 |
|
|
Packit |
b099d7 |
#include <testlib.h>
|
|
Packit |
b099d7 |
#include <stdio.h>
|
|
Packit |
b099d7 |
#include <Xm/XmP.h> /* Motif Toolkit */
|
|
Packit |
b099d7 |
#include "UTMtransfer.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Internal functions */
|
|
Packit |
b099d7 |
static void SetModeCB(Widget widget, XtPointer client_data,
|
|
Packit |
b099d7 |
XtPointer call_data);
|
|
Packit |
b099d7 |
static void CutCB(Widget widget, XtPointer client_data, XtPointer call_data);
|
|
Packit |
b099d7 |
static void CopyCB(Widget widget, XtPointer client_data, XtPointer call_data);
|
|
Packit |
b099d7 |
static void PasteCB(Widget widget, XtPointer client_data,XtPointer call_data);
|
|
Packit |
b099d7 |
static void PasteMoveCB(Widget widget, XtPointer client_data,
|
|
Packit |
b099d7 |
XtPointer call_data);
|
|
Packit |
b099d7 |
static void InputCB(Widget w, XtPointer client_data, XtPointer call_data);
|
|
Packit |
b099d7 |
static int ErrorHandler(Display *display, XErrorEvent *event);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* String to use for Clipboard tagging */
|
|
Packit |
b099d7 |
XmString generic_label;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* This tracks which transfer selection we're using. Drag and drop isn't
|
|
Packit |
b099d7 |
listed since it is dynamic, we don't take ownership of DnD */
|
|
Packit |
b099d7 |
TransferMode Tmode = Mprimary;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char *TargetType[12] = { "ATOM", "DRAWABLE", "WINDOW", "COLORMAP", "INTEGER",
|
|
Packit |
b099d7 |
"PIXEL", "COMPOUND_TEXT", "STRING", "SPAN", "",
|
|
Packit |
b099d7 |
"_MOTIF_COMPOUND_STRING", "NONE" };
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************************************************
|
|
Packit |
b099d7 |
* A list of widgets we need to be able to find outside the main
|
|
Packit |
b099d7 |
* program.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* MainW is the child of the toplevel Shell1, an XmMainWindow
|
|
Packit |
b099d7 |
* target is the drawing area used for drag and drop
|
|
Packit |
b099d7 |
* list is the list of targets displayed
|
|
Packit |
b099d7 |
* labelV contains the value of the selected target
|
|
Packit |
b099d7 |
* labelN contains the name of the selected or new target
|
|
Packit |
b099d7 |
* typeOM is the option menu which displays type information for the
|
|
Packit |
b099d7 |
* selected or new target
|
|
Packit |
b099d7 |
* OwnPrimLG is the label displayed when the drawing area owns the
|
|
Packit |
b099d7 |
* primary selection
|
|
Packit |
b099d7 |
* OwnSecLG is the label displayed when the drawing area owns the
|
|
Packit |
b099d7 |
* secondary selection
|
|
Packit |
b099d7 |
*************************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget MainW, list, target, labelV, labelN, typeOM, OwnPrimLG, OwnSecLG;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Main program
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
main(int argc, char **argv)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Arg args[15];
|
|
Packit |
b099d7 |
int n;
|
|
Packit |
b099d7 |
Widget menubar, pulldown, menu_btn;
|
|
Packit |
b099d7 |
Widget CutPB, CopyPB, SeparatorG, PastePB, PasteMovePB;
|
|
Packit |
b099d7 |
Widget form, optionMenu, SelectionMenu;
|
|
Packit |
b099d7 |
Widget PrimaryPB, SecondaryPB, ClipboardPB;
|
|
Packit |
b099d7 |
Widget frame, SelOwnLG;
|
|
Packit |
b099d7 |
Widget frame1, frameLabel, workArea, field1, label1, field2, label2;
|
|
Packit |
b099d7 |
Widget buttons, TypeMenu;
|
|
Packit |
b099d7 |
Widget ATOMbutton, DRAWABLEbutton, WINDOWbutton, COLORMAPbutton;
|
|
Packit |
b099d7 |
Widget INTEGERbutton, PIXELbutton, COMPOUND_TEXTbutton, STRINGbutton;
|
|
Packit |
b099d7 |
Widget SPANbutton, LOCALE_TEXTbutton, _MOTIF_COMPOUND_STRINGbutton;
|
|
Packit |
b099d7 |
Widget unknownbutton;
|
|
Packit |
b099d7 |
XmString Label;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CommonTestInit(argc, argv);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNborderWidth, 2); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNwidth, 400); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNheight, 550); n++;
|
|
Packit |
b099d7 |
MainW = XmCreateMainWindow(Shell1, "MainW", args, n);
|
|
Packit |
b099d7 |
XtManageChild(MainW);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Create a menu bar
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
menubar = XmCreateMenuBar(MainW, "menubar", args, n);
|
|
Packit |
b099d7 |
XtManageChild(menubar);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
pulldown = XmCreatePulldownMenu(menubar, "pulldown", args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Label = XmStringCreate("Edit", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsubMenuId, pulldown); n++;
|
|
Packit |
b099d7 |
menu_btn = XmCreateCascadeButton(menubar, "menu_btn", args, n);
|
|
Packit |
b099d7 |
XtManageChild(menu_btn);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Cut", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
|
|
Packit |
b099d7 |
CutPB = XmCreatePushButtonGadget(pulldown, "CutPB", args, n);
|
|
Packit |
b099d7 |
XtManageChild(CutPB);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
XtAddCallback(CutPB, XmNactivateCallback, CutCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Copy", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
|
|
Packit |
b099d7 |
CopyPB = XmCreatePushButtonGadget(pulldown, "CopyPB", args, n);
|
|
Packit |
b099d7 |
XtManageChild(CopyPB);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
XtAddCallback(CopyPB, XmNactivateCallback, CopyCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
SeparatorG = XmCreateSeparatorGadget(pulldown, "SeparatorG", args, n);
|
|
Packit |
b099d7 |
XtManageChild(SeparatorG);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Paste (copy)", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
|
|
Packit |
b099d7 |
PastePB = XmCreatePushButtonGadget(pulldown, "PastePB", args, n);
|
|
Packit |
b099d7 |
XtManageChild(PastePB);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
XtAddCallback(PastePB, XmNactivateCallback, PasteCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Paste (move)", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
|
|
Packit |
b099d7 |
PasteMovePB = XmCreatePushButtonGadget(pulldown, "PasteMovePB", args, n);
|
|
Packit |
b099d7 |
XtManageChild(PasteMovePB);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
XtAddCallback(PasteMovePB, XmNactivateCallback, PasteMoveCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Create a form which contains:
|
|
Packit |
b099d7 |
* - an option menu for choosing the type of selection,
|
|
Packit |
b099d7 |
* - a drawing area for dragging the target,
|
|
Packit |
b099d7 |
* - a label displaying the selection ownership value,
|
|
Packit |
b099d7 |
* - the value of the selected target,
|
|
Packit |
b099d7 |
* - the name of the selected target,
|
|
Packit |
b099d7 |
* - an option menu with the possible target types,
|
|
Packit |
b099d7 |
* - a list of targets.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
form = XmCreateForm(MainW, "form", args, n);
|
|
Packit |
b099d7 |
XtManageChild(form);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
SelectionMenu = XmCreatePulldownMenu(form, "SelectionMenu", args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Primary", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
PrimaryPB = XmCreatePushButtonGadget(SelectionMenu, "PrimaryPB", args, n);
|
|
Packit |
b099d7 |
XtManageChild(PrimaryPB);
|
|
Packit |
b099d7 |
XtAddCallback(PrimaryPB, XmNactivateCallback, SetModeCB,
|
|
Packit |
b099d7 |
(XtPointer) Mprimary);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Secondary", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
SecondaryPB = XmCreatePushButtonGadget(SelectionMenu, "SecondaryPB",
|
|
Packit |
b099d7 |
args, n);
|
|
Packit |
b099d7 |
XtManageChild(SecondaryPB);
|
|
Packit |
b099d7 |
XtAddCallback(SecondaryPB, XmNactivateCallback, SetModeCB,
|
|
Packit |
b099d7 |
(XtPointer) Msecondary);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Clipboard", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
ClipboardPB = XmCreatePushButtonGadget(SelectionMenu, "ClipboardPB",
|
|
Packit |
b099d7 |
args, n);
|
|
Packit |
b099d7 |
XtManageChild(ClipboardPB);
|
|
Packit |
b099d7 |
XtAddCallback(ClipboardPB, XmNactivateCallback, SetModeCB,
|
|
Packit |
b099d7 |
(XtPointer) Mclipboard);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Selection", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightAttachment, XmATTACH_NONE); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_NONE); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizable, True); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsubMenuId, SelectionMenu); n++;
|
|
Packit |
b099d7 |
optionMenu = XmCreateOptionMenu(form, "optionMenu", args, n);
|
|
Packit |
b099d7 |
XtManageChild(optionMenu);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightAttachment, XmATTACH_NONE); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_NONE); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizable, True); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftWidget, optionMenu); n++;
|
|
Packit |
b099d7 |
frame = XmCreateFrame(form, "frame", args, n);
|
|
Packit |
b099d7 |
XtManageChild(frame);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n =0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNwidth, 70); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNheight, 70); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbackground, CommonGetColor ("red")); n++;
|
|
Packit |
b099d7 |
target = XmCreateDrawingArea(frame, "target", args, n);
|
|
Packit |
b099d7 |
XtManageChild(target);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Add the UTM callbacks on the drawing area */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtAddCallback(target, XmNdestinationCallback, TargetDestinationCB, NULL);
|
|
Packit |
b099d7 |
XtAddCallback(target, XmNconvertCallback, TargetConvertCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Add other callbacks on the drawing area */
|
|
Packit |
b099d7 |
XtAddCallback(target, XmNinputCallback, InputCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Selection Ownership: ", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftWidget, frame); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 10); n++;
|
|
Packit |
b099d7 |
SelOwnLG = XmCreateLabelGadget(form, "SelOwnLG", args, n);
|
|
Packit |
b099d7 |
XtManageChild(SelOwnLG);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Primary", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopWidget, SelOwnLG);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 30); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftWidget, frame); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 10); n++;
|
|
Packit |
b099d7 |
OwnPrimLG = XmCreateLabelGadget(form, "OwnPrimLG", args, n);
|
|
Packit |
b099d7 |
XtManageChild(OwnPrimLG);
|
|
Packit |
b099d7 |
XtUnmanageChild(OwnPrimLG);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Secondary", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopWidget, SelOwnLG);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 50); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftWidget, frame); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 10); n++;
|
|
Packit |
b099d7 |
OwnSecLG = XmCreateLabelGadget(form, "OwnSecLG", args, n);
|
|
Packit |
b099d7 |
XtManageChild(OwnSecLG);
|
|
Packit |
b099d7 |
XtUnmanageChild(OwnSecLG);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopWidget, frame); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 6); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_NONE); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizable, True); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 10); n++;
|
|
Packit |
b099d7 |
frame1 = XmCreateFrame(form, "frame1", args, n);
|
|
Packit |
b099d7 |
XtManageChild(frame1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Target Values", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNframeChildType, XmFRAME_TITLE_CHILD); n++;
|
|
Packit |
b099d7 |
frameLabel = XmCreateLabelGadget(frame1, "frameLabel", args, n);
|
|
Packit |
b099d7 |
XtManageChild(frameLabel);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
workArea = XmCreateWorkArea(frame1, "workArea", args, n);
|
|
Packit |
b099d7 |
XtManageChild(workArea);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrubberPositioning, True); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizePolicy, XmRESIZE_ANY); n++;
|
|
Packit |
b099d7 |
field2 = XmCreateForm(workArea, "field2", args, n);
|
|
Packit |
b099d7 |
XtManageChild(field2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Target", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNwidth, 72); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightAttachment, XmATTACH_NONE); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizable, False); n++;
|
|
Packit |
b099d7 |
label2 = XmCreateLabelGadget(field2, "label2", args, n);
|
|
Packit |
b099d7 |
XtManageChild(label2);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizable, True); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightOffset, 5); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftWidget, label2); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 5); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 5); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomOffset, 5); n++;
|
|
Packit |
b099d7 |
labelN = XmCreateLabel(field2, "labelN", args, n);
|
|
Packit |
b099d7 |
XtManageChild(labelN);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrubberPositioning, True); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizePolicy, XmRESIZE_ANY); n++;
|
|
Packit |
b099d7 |
field1 = XmCreateForm(workArea, "field1", args, n);
|
|
Packit |
b099d7 |
XtManageChild(field1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Target Value", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightAttachment, XmATTACH_NONE); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomOffset, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizable, False); n++;
|
|
Packit |
b099d7 |
label1 = XmCreateLabelGadget(field1, "label1", args, n);
|
|
Packit |
b099d7 |
XtManageChild(label1);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizable, True); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightOffset, 5); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftWidget, label1); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 5); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 5); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomOffset, 5); n++;
|
|
Packit |
b099d7 |
labelV = XmCreateLabel(field1, "labelV", args, n);
|
|
Packit |
b099d7 |
XtManageChild(labelV);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
TypeMenu = XmCreatePulldownMenu(workArea, "TypeMenu", args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("ATOM", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
ATOMbutton = XmCreatePushButtonGadget(TypeMenu, "ATOMbutton", args, n);
|
|
Packit |
b099d7 |
XtManageChild(ATOMbutton);
|
|
Packit |
b099d7 |
XtAddCallback(ATOMbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[0]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("DRAWABLE", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
DRAWABLEbutton = XmCreatePushButtonGadget(TypeMenu, "DRAWABLEbutton",
|
|
Packit |
b099d7 |
args, n);
|
|
Packit |
b099d7 |
XtManageChild(DRAWABLEbutton);
|
|
Packit |
b099d7 |
XtAddCallback(DRAWABLEbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[1]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("WINDOW", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
WINDOWbutton = XmCreatePushButtonGadget(TypeMenu, "WINDOWbutton", args, n);
|
|
Packit |
b099d7 |
XtManageChild(WINDOWbutton);
|
|
Packit |
b099d7 |
XtAddCallback(WINDOWbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[2]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("COLORMAP", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
COLORMAPbutton = XmCreatePushButtonGadget(TypeMenu, "COLORMAPbutton",
|
|
Packit |
b099d7 |
args, n);
|
|
Packit |
b099d7 |
XtManageChild(COLORMAPbutton);
|
|
Packit |
b099d7 |
XtAddCallback(COLORMAPbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[3]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("INTEGER", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
INTEGERbutton = XmCreatePushButtonGadget(TypeMenu, "INTEGERbutton",
|
|
Packit |
b099d7 |
args, n);
|
|
Packit |
b099d7 |
XtManageChild(INTEGERbutton);
|
|
Packit |
b099d7 |
XtAddCallback(INTEGERbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[4]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("PIXEL", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
PIXELbutton = XmCreatePushButtonGadget(TypeMenu, "PIXELbutton", args, n);
|
|
Packit |
b099d7 |
XtManageChild(PIXELbutton);
|
|
Packit |
b099d7 |
XtAddCallback(PIXELbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[5]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("COMPOUND_TEXT", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
COMPOUND_TEXTbutton = XmCreatePushButtonGadget(TypeMenu,
|
|
Packit |
b099d7 |
"COMPOUND_TEXTbutton",
|
|
Packit |
b099d7 |
args, n);
|
|
Packit |
b099d7 |
XtManageChild(COMPOUND_TEXTbutton);
|
|
Packit |
b099d7 |
XtAddCallback(COMPOUND_TEXTbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[6]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("STRING", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
STRINGbutton = XmCreatePushButtonGadget(TypeMenu, "STRINGbutton", args, n);
|
|
Packit |
b099d7 |
XtManageChild(STRINGbutton);
|
|
Packit |
b099d7 |
XtAddCallback(STRINGbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[7]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("SPAN", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
SPANbutton = XmCreatePushButtonGadget(TypeMenu, "SPANbutton", args, n);
|
|
Packit |
b099d7 |
XtManageChild(SPANbutton);
|
|
Packit |
b099d7 |
XtAddCallback(SPANbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[8]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("LOCALE_TEXT", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
LOCALE_TEXTbutton = XmCreatePushButtonGadget(TypeMenu,
|
|
Packit |
b099d7 |
"LOCALE_TEXTbutton",
|
|
Packit |
b099d7 |
args, n);
|
|
Packit |
b099d7 |
XtManageChild(LOCALE_TEXTbutton);
|
|
Packit |
b099d7 |
XtAddCallback(LOCALE_TEXTbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[9]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("MOTIF COMPOUND STRING", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
_MOTIF_COMPOUND_STRINGbutton = XmCreatePushButtonGadget(TypeMenu,
|
|
Packit |
b099d7 |
"_MOTIF_COMPOUND_STRINGbutton", args, n);
|
|
Packit |
b099d7 |
XtManageChild(_MOTIF_COMPOUND_STRINGbutton);
|
|
Packit |
b099d7 |
XtAddCallback(_MOTIF_COMPOUND_STRINGbutton, XmNactivateCallback,
|
|
Packit |
b099d7 |
SetTypeCB, &TargetType[10]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("unknown", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
unknownbutton = XmCreatePushButtonGadget(TypeMenu, "unknownbutton", args,
|
|
Packit |
b099d7 |
n);
|
|
Packit |
b099d7 |
XtManageChild(unknownbutton);
|
|
Packit |
b099d7 |
XtAddCallback(unknownbutton, XmNactivateCallback, SetTypeCB,
|
|
Packit |
b099d7 |
&TargetType[11]);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Label = XmStringCreate("Type", XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, Label); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsubMenuId, TypeMenu); n++;
|
|
Packit |
b099d7 |
typeOM = XmCreateOptionMenu(workArea, "typeOM", args, n);
|
|
Packit |
b099d7 |
XtManageChild(typeOM);
|
|
Packit |
b099d7 |
XmStringFree(Label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNwidth, 250); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNheight, 240); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopWidget, frame1); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNtopOffset, 5); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNbottomOffset, 5); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizable, False); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftWidget, frame1); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNleftOffset, 0); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightWidget, frame1); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrightOffset, 0); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNselectionPolicy, XmSINGLE_SELECT); n++;
|
|
Packit |
b099d7 |
list = XmCreateScrolledList(form, "list", args, n);
|
|
Packit |
b099d7 |
XtManageChild(list);
|
|
Packit |
b099d7 |
XtAddCallback(list, XmNsingleSelectionCallback, ListSelectItemCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmMainWindowSetAreas(MainW, menubar, NULL, NULL, NULL, form);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Create a default label string for the clipboard */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
generic_label = XmStringCreateLocalized("Generic Label");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Register the drawing area as a drop site */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmeDropSink(target, NULL, 0);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Install our special error handler */
|
|
Packit |
b099d7 |
XSetErrorHandler((XErrorHandler) ErrorHandler);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtRealizeWidget(Shell1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (n = 0; n < 17; n++)
|
|
Packit |
b099d7 |
CommonPause();
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtAppMainLoop(app_context);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/***************************************************
|
|
Packit |
b099d7 |
* function setMode
|
|
Packit |
b099d7 |
* Set the mode to PRIMARY, SECONDARY or CLIPBOARD
|
|
Packit |
b099d7 |
***************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
SetModeCB(Widget widget, XtPointer client_data, XtPointer call_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Tmode = (int) client_data;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******************************************************************
|
|
Packit |
b099d7 |
* cut, copy and paste perform the apropriate actions
|
|
Packit |
b099d7 |
* depending on which mode we're in. They use the widget writer's
|
|
Packit |
b099d7 |
* API for this. Normally application developers won't need to
|
|
Packit |
b099d7 |
* call these, but this is a pseudo widget writing case as we're
|
|
Packit |
b099d7 |
* adding interchange behavior to drawing area. This is an example
|
|
Packit |
b099d7 |
* of where the widget writing API should be used by app. developers
|
|
Packit |
b099d7 |
******************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
CutCB(Widget widget, XtPointer client_data, XtPointer call_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (Tmode == Mprimary) {
|
|
Packit |
b099d7 |
XmePrimarySource(target, 0);
|
|
Packit |
b099d7 |
XtManageChild(OwnPrimLG);
|
|
Packit |
b099d7 |
} else if (Tmode == Msecondary) {
|
|
Packit |
b099d7 |
XmeSecondarySource(target, 0);
|
|
Packit |
b099d7 |
XmeSecondaryTransfer(target,
|
|
Packit |
b099d7 |
XInternAtom(XtDisplay(widget),
|
|
Packit |
b099d7 |
XmSCOMPOUND_TEXT, False),
|
|
Packit |
b099d7 |
XmMOVE, 0);
|
|
Packit |
b099d7 |
} else if (Tmode == Mclipboard)
|
|
Packit |
b099d7 |
XmeClipboardSource(target, XmMOVE, 0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
CopyCB(Widget widget, XtPointer client_data, XtPointer call_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (Tmode == Mprimary) {
|
|
Packit |
b099d7 |
XmePrimarySource(target, 0);
|
|
Packit |
b099d7 |
XtManageChild(OwnPrimLG);
|
|
Packit |
b099d7 |
} else if (Tmode == Msecondary) {
|
|
Packit |
b099d7 |
XmeSecondarySource(target, 0);
|
|
Packit |
b099d7 |
XmeSecondaryTransfer(target,
|
|
Packit |
b099d7 |
XInternAtom(XtDisplay(widget),
|
|
Packit |
b099d7 |
XmSCOMPOUND_TEXT, False),
|
|
Packit |
b099d7 |
XmCOPY, 0);
|
|
Packit |
b099d7 |
} else if (Tmode == Mclipboard)
|
|
Packit |
b099d7 |
XmeClipboardSource(target, XmCOPY, 0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
PasteCB(Widget widget, XtPointer client_data, XtPointer call_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (Tmode == Mprimary)
|
|
Packit |
b099d7 |
XmePrimarySink(target, XmCOPY, 0, 0);
|
|
Packit |
b099d7 |
else if (Tmode == Msecondary) {
|
|
Packit |
b099d7 |
XmeSecondarySink(target, 0);
|
|
Packit |
b099d7 |
XtManageChild(OwnSecLG);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if (Tmode == Mclipboard)
|
|
Packit |
b099d7 |
XmeClipboardSink(target, XmCOPY, 0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
PasteMoveCB(Widget widget, XtPointer client_data, XtPointer call_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (Tmode == Mprimary)
|
|
Packit |
b099d7 |
XmePrimarySink(target, XmMOVE, 0, 0);
|
|
Packit |
b099d7 |
else if (Tmode == Msecondary) {
|
|
Packit |
b099d7 |
XmeSecondarySink(target, 0);
|
|
Packit |
b099d7 |
XtManageChild(OwnSecLG);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if (Tmode == Mclipboard)
|
|
Packit |
b099d7 |
XmeClipboardSink(target, XmMOVE, 0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Error handler for X protocol errors. Display error text in labelN,V */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static int
|
|
Packit |
b099d7 |
ErrorHandler(Display *display, XErrorEvent *event)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
char buffer[80];
|
|
Packit |
b099d7 |
char errortext[100];
|
|
Packit |
b099d7 |
XmString tmp;
|
|
Packit |
b099d7 |
int n;
|
|
Packit |
b099d7 |
Arg args[2];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XGetErrorText(display, event -> error_code, (char *) errortext, 100);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tmp = XmStringCreateLocalized(errortext);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, tmp); n++;
|
|
Packit |
b099d7 |
XtSetValues(labelN, args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmStringFree(tmp);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf(buffer, "XID %d serial %d major %d minor %d",
|
|
Packit |
b099d7 |
event -> resourceid,
|
|
Packit |
b099d7 |
event -> serial,
|
|
Packit |
b099d7 |
event -> request_code,
|
|
Packit |
b099d7 |
event -> minor_code);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tmp = XmStringCreateLocalized(buffer);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNlabelString, tmp); n++;
|
|
Packit |
b099d7 |
XtSetValues(labelV, args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmStringFree(tmp);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
InputCB(Widget w, XtPointer client_data, XtPointer call_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmDrawingAreaCallbackStruct *cbstruct;
|
|
Packit |
b099d7 |
XEvent *event;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
cbstruct = (XmDrawingAreaCallbackStruct *) call_data;
|
|
Packit |
b099d7 |
event = cbstruct -> event;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (event -> type == ButtonPress &&
|
|
Packit |
b099d7 |
event -> xbutton.button == 2) {
|
|
Packit |
b099d7 |
XmeDragSource(w, NULL, event, NULL, 0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|