cdesktopenv/cde/lib/DtSvc/DtUtil1/Dnd.h

211 lines
4.9 KiB
C

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these librararies and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/* $XConsortium: Dnd.h /main/3 1995/10/26 15:04:35 rswiston $ */
/*
* (c) Copyright 1993, 1994 Hewlett-Packard Company
* (c) Copyright 1993, 1994 International Business Machines Corp.
* (c) Copyright 1993, 1994 Sun Microsystems, Inc.
* (c) Copyright 1993, 1994 Novell, Inc.
*/
#ifndef _Dt_Dnd_h
#define _Dt_Dnd_h
#include <Xm/DragIcon.h>
#include <Xm/DragC.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* Constants
*/
/* Dnd Callback Reasons */
enum {
DtCR_DND_CONVERT_DATA,
DtCR_DND_CONVERT_DELETE,
DtCR_DND_DRAG_FINISH,
DtCR_DND_TRANSFER_DATA,
DtCR_DND_DROP_ANIMATE,
DtCR_DND_ROOT_TRANSFER
};
#define DtCR_DND_TRANSFER DtCR_DND_TRANSFER_DATA
/*
* Dnd Drag Start Resources
* dropOnRootCallback is private and should not be used
*/
#define DtNdropOnRootCallback "dropOnRootCallback"
#define DtCDropOnRootCallback "DropOnRootCallback"
#define DtNsourceIcon "sourceIcon"
#define DtCSourceIcon "SourceIcon"
#define DtNbufferIsText "bufferIsText"
#define DtCBufferIsText "BufferIsText"
/*
*Dnd Drop Register Resources
*/
#define DtNdropAnimateCallback "dropAnimateCallback"
#define DtCDropAnimateCallback "DropAnimateCallback"
#define DtNpreserveRegistration "preserveRegistration"
#define DtCPreserveRegistration "PreserveRegistration"
#define DtNregisterChildren "registerChildren"
#define DtCRegisterChildren "RegisterChildren"
#define DtNtextIsBuffer "textIsBuffer"
#define DtCTextIsBuffer "TextIsBuffer"
/*
* Types
*/
typedef enum {
DtDND_SUCCESS,
DtDND_FAILURE
} DtDndStatus;
typedef unsigned long DtDndProtocol;
enum {
DtDND_NOOP_TRANSFER = 0L,
DtDND_TEXT_TRANSFER = (1L << 0),
DtDND_FILENAME_TRANSFER = (1L << 1),
DtDND_BUFFER_TRANSFER = (1L << 2)
};
typedef struct _DtDndBuffer {
void * bp;
int size;
String name;
} DtDndBuffer;
typedef struct _DtDndContext {
DtDndProtocol protocol;
Cardinal numItems;
union {
XmString * strings;
String * files;
DtDndBuffer * buffers;
} data;
} DtDndContext;
/*
* Dnd Callback Structures
*/
typedef struct _DtDndConvertCallbackStruct {
int reason;
XEvent * event;
DtDndContext * dragData;
DtDndStatus status;
} DtDndConvertCallbackStruct, *DtDndConvertCallback;
typedef struct _DtDndDragFinishCallbackStruct {
int reason;
XEvent * event;
DtDndContext * dragData;
Widget sourceIcon;
} DtDndDragFinishCallbackStruct, *DtDndDragFinishCallback;
typedef struct _DtDndTransferCallbackStruct {
int reason;
XEvent * event;
Position x, y;
unsigned char operation;
DtDndContext * dropData;
Widget dragContext;
Boolean completeMove;
DtDndStatus status;
} DtDndTransferCallbackStruct, *DtDndTransferCallback;
typedef DtDndTransferCallbackStruct DtDndDropCallbackStruct, *DtDndDropCallback;
typedef struct _DtDndDropAnimateCallbackStruct {
int reason;
XEvent * event;
Position x, y;
unsigned char operation;
DtDndContext * dropData;
} DtDndDropAnimateCallbackStruct, *DtDndDropAnimateCallback;
/*
* Functions
*/
extern Widget DtDndCreateSourceIcon(
Widget widget,
Pixmap source,
Pixmap mask);
extern Widget DtDndDragStart(
Widget dragInitiator,
XEvent* event,
DtDndProtocol protocol,
Cardinal numItems,
unsigned char operations,
XtCallbackList convertCallback,
XtCallbackList dragFinishCallback,
ArgList argList,
Cardinal argCount);
extern Widget DtDndVaDragStart(
Widget dragInitiator,
XEvent* event,
DtDndProtocol protocol,
Cardinal numItems,
unsigned char operations,
XtCallbackList convertCallback,
XtCallbackList dragFinishCallback,
...);
extern void DtDndDropRegister(
Widget dropSite,
DtDndProtocol protocols,
unsigned char operations,
XtCallbackList transferCallback,
ArgList argList,
Cardinal argCount);
extern void DtDndVaDropRegister(
Widget dropSite,
DtDndProtocol protocols,
unsigned char operations,
XtCallbackList transferCallback,
...);
extern void DtDndDropUnregister(
Widget widget);
#ifdef __cplusplus
}
#endif
#endif /* _Dt_Dnd_h */