home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / include / Xm / DropSMgrP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-30  |  9.7 KB  |  318 lines

  1. /* 
  2.  * (c) Copyright 1989, 1990, 1991, 1992, 1993 OPEN SOFTWARE FOUNDATION, INC. 
  3.  * ALL RIGHTS RESERVED 
  4. */ 
  5. /* 
  6.  * Motif Release 1.2.3
  7. */ 
  8. /*   $RCSfile: DropSMgrP.h,v $ $Revision: 10.1 $ $Date: 1994/02/03 15:38:23 $ */
  9. /*
  10. *  (c) Copyright 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  11.  
  12. #ifndef _XmDropSMgrP_h
  13. #define _XmDropSMgrP_h
  14.  
  15. #include <Xm/XmP.h>
  16. #include <Xm/DropSMgr.h>
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22. #ifdef _NO_PROTO
  23. typedef void (*XmDSMCreateInfoProc)();
  24. typedef void (*XmDSMDestroyInfoProc)();
  25. typedef void (*XmDSMStartUpdateProc)();
  26. typedef void (*XmDSMRetrieveInfoProc)();
  27. typedef void (*XmDSMUpdateInfoProc)();
  28. typedef void (*XmDSMEndUpdateProc)();
  29. typedef void (*XmDSMUpdateProc)();
  30. typedef void (*XmDSMProcessMotionProc)();
  31. typedef void (*XmDSMProcessDropProc)();
  32. typedef void (*XmDSMOperationChangedProc)();
  33. typedef void (*XmDSMChangeRootProc)();
  34. typedef void (*XmDSMInsertInfoProc)();
  35. typedef void (*XmDSMRemoveInfoProc)();
  36. typedef void (*XmDSMSyncTreeProc)();
  37. typedef int  (*XmDSMGetTreeFromDSMProc)();
  38. typedef void (*XmDSMCreateDSInfoTable)();
  39. typedef void (*XmDSMDestroyDSInfoTable)();
  40. typedef void (*XmDSMRegisterInfoProc)();
  41. typedef XtPointer (*XmDSMWidgetToInfoProc)();
  42. typedef void (*XmDSMUnregisterInfoProc)();
  43. #else
  44. typedef void (*XmDSMCreateInfoProc)
  45.     (XmDropSiteManagerObject, Widget, ArgList, Cardinal);
  46. typedef void (*XmDSMDestroyInfoProc)
  47.     (XmDropSiteManagerObject, Widget);
  48. typedef void (*XmDSMStartUpdateProc)
  49.     (XmDropSiteManagerObject, Widget);
  50. typedef void (*XmDSMRetrieveInfoProc)
  51.     (XmDropSiteManagerObject, Widget, ArgList, Cardinal);
  52. typedef void (*XmDSMUpdateInfoProc)
  53.     (XmDropSiteManagerObject, Widget, ArgList, Cardinal);
  54. typedef void (*XmDSMEndUpdateProc)
  55.     (XmDropSiteManagerObject, Widget);
  56. typedef void (*XmDSMUpdateProc)
  57.     (XmDropSiteManagerObject, XtPointer, XtPointer);
  58. typedef void (*XmDSMProcessMotionProc)
  59.     (XmDropSiteManagerObject, XtPointer, XtPointer);
  60. typedef void (*XmDSMProcessDropProc)
  61.     (XmDropSiteManagerObject, XtPointer, XtPointer);
  62. typedef void (*XmDSMOperationChangedProc)
  63.     (XmDropSiteManagerObject, XtPointer, XtPointer);
  64. typedef void (*XmDSMChangeRootProc)
  65.     (XmDropSiteManagerObject, XtPointer, XtPointer);
  66. typedef void (*XmDSMInsertInfoProc)
  67.     (XmDropSiteManagerObject, XtPointer, XtPointer);
  68. typedef void (*XmDSMRemoveInfoProc)
  69.     (XmDropSiteManagerObject, XtPointer);
  70. typedef void (*XmDSMSyncTreeProc)
  71.     (XmDropSiteManagerObject, Widget);
  72. typedef int  (*XmDSMGetTreeFromDSMProc)
  73.     (XmDropSiteManagerObject, Widget, XtPointer);
  74. typedef void (*XmDSMCreateDSInfoTable)
  75.     (XmDropSiteManagerObject);
  76. typedef void (*XmDSMDestroyDSInfoTable)
  77.     (XmDropSiteManagerObject);
  78. typedef void (*XmDSMRegisterInfoProc)
  79.     (XmDropSiteManagerObject, Widget, XtPointer);
  80. typedef XtPointer (*XmDSMWidgetToInfoProc)
  81.     (XmDropSiteManagerObject, Widget);
  82. typedef void (*XmDSMUnregisterInfoProc)
  83.     (XmDropSiteManagerObject, XtPointer);
  84. #endif
  85.  
  86. typedef struct {
  87.     XmDSMCreateInfoProc        createInfo;
  88.     XmDSMDestroyInfoProc    destroyInfo;
  89.     XmDSMStartUpdateProc    startUpdate;
  90.     XmDSMRetrieveInfoProc    retrieveInfo;
  91.     XmDSMUpdateInfoProc        updateInfo;
  92.     XmDSMEndUpdateProc        endUpdate;
  93.     
  94.     /* Used by DragController Object */
  95.     
  96.     XmDSMUpdateProc        updateDSM;
  97.     
  98.     /* Used by update proc */
  99.     
  100.     XmDSMProcessMotionProc    processMotion;
  101.     XmDSMProcessDropProc    processDrop;
  102.     XmDSMOperationChangedProc    operationChanged;
  103.     XmDSMChangeRootProc        changeRoot;
  104.     
  105.     /* Used to manage DropSites */
  106.     
  107.     XmDSMInsertInfoProc        insertInfo;
  108.     /* Need a get and a put function for update? */
  109.     XmDSMRemoveInfoProc        removeInfo;
  110.  
  111.     /* Used to manage the pre-register information */
  112.  
  113.     XmDSMSyncTreeProc        syncTree;
  114.     XmDSMGetTreeFromDSMProc    getTreeFromDSM;
  115.     
  116.     /* Used to hash between widgets and info */
  117.     
  118.     XmDSMCreateDSInfoTable    createTable;
  119.     XmDSMDestroyDSInfoTable     destroyTable;
  120.     XmDSMRegisterInfoProc    registerInfo;
  121.     XmDSMWidgetToInfoProc    widgetToInfo;
  122.     XmDSMUnregisterInfoProc     unregisterInfo;
  123.     
  124.     XtPointer            extension;
  125. } XmDropSiteManagerClassPart;
  126.  
  127. /*  Full class record declaration for dropSite class  */
  128.  
  129. typedef struct _XmDropSiteManagerClassRec{
  130.     ObjectClassPart        object_class;
  131.     XmDropSiteManagerClassPart        dropManager_class;
  132. } XmDropSiteManagerClassRec;
  133.  
  134. externalref XmDropSiteManagerClassRec     xmDropSiteManagerClassRec;
  135.  
  136. /* Macros for calling methods */
  137.  
  138. #define DSMCreateInfo(dsm, widget, args, numArgs) \
  139.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  140.         dropManager_class.createInfo) \
  141.         ((dsm), (widget), (args), (numArgs))
  142.  
  143. #define DSMDestroyInfo(dsm, widget) \
  144.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  145.         dropManager_class.destroyInfo) \
  146.         ((dsm), (widget))
  147.  
  148. #define DSMStartUpdate(dsm, widget) \
  149.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  150.         dropManager_class.startUpdate) \
  151.         ((dsm), (widget))
  152.  
  153. #define DSMRetrieveInfo(dsm, widget, args, numArgs) \
  154.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  155.         dropManager_class.retrieveInfo) \
  156.         ((dsm), (widget), (args), (numArgs))
  157.  
  158. #define DSMUpdateInfo(dsm, widget, args, numArgs) \
  159.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  160.         dropManager_class.updateInfo) \
  161.         ((dsm), (widget), (args), (numArgs))
  162.  
  163. #define DSMEndUpdate(dsm, widget) \
  164.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  165.         dropManager_class.endUpdate) \
  166.         ((dsm), (widget))
  167.  
  168. #define DSMUpdate(dsm, clientData, callData) \
  169.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  170.         dropManager_class.updateDSM) \
  171.         ((dsm), (clientData), (callData))
  172.  
  173. #define DSMProcessMotion(dsm, clientData, callData) \
  174.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  175.         dropManager_class.processMotion) \
  176.         ((dsm), (clientData), (callData))
  177.  
  178. #define DSMProcessDrop(dsm, clientData, callData) \
  179.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  180.         dropManager_class.processDrop) \
  181.         ((dsm),(clientData), (callData))
  182.  
  183. #define DSMOperationChanged(dsm, clientData, callData) \
  184.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  185.         dropManager_class.operationChanged) \
  186.         ((dsm),(clientData), (callData))
  187.  
  188. #define DSMChangeRoot(dsm, clientData, callData) \
  189.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  190.         dropManager_class.changeRoot) \
  191.         ((dsm), (clientData), (callData))
  192.  
  193. #define DSMInsertInfo(dsm, info, call_data) \
  194.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  195.         dropManager_class.insertInfo) \
  196.         ((dsm), (info), (call_data))
  197.  
  198. #define DSMRemoveInfo(dsm, info) \
  199.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  200.         dropManager_class.removeInfo) \
  201.         ((dsm), (info))
  202.  
  203. #define DSMSyncTree(dsm, shell) \
  204.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  205.         dropManager_class.syncTree) \
  206.         ((dsm), (shell))
  207.  
  208. #define DSMGetTreeFromDSM(dsm, shell, dataPtr) \
  209.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  210.         dropManager_class.getTreeFromDSM) \
  211.         ((dsm), (shell), (dataPtr))
  212.  
  213. #define DSMCreateTable(dsm) \
  214.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  215.         dropManager_class.createTable) \
  216.         ((dsm))
  217.  
  218. #define DSMDestroyTable(dsm) \
  219.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  220.         dropManager_class.destroyTable) \
  221.         ((dsm))
  222.  
  223. #define DSMRegisterInfo(dsm, widget, info) \
  224.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  225.         dropManager_class.registerInfo) \
  226.         ((dsm), (widget), (info))
  227.  
  228. #define DSMWidgetToInfo(dsm, widget) \
  229.     (XtPointer) ((((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  230.         dropManager_class.widgetToInfo) \
  231.         ((dsm), (widget)))
  232.  
  233. #define DSMUnregisterInfo(dsm, info) \
  234.     (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
  235.         dropManager_class.unregisterInfo) \
  236.           ((dsm), (info))
  237.  
  238. /* DropSiteManager instance record */
  239.  
  240. typedef struct _XmDropSiteManagerPart{
  241.     XtCallbackProc    notifyProc;
  242.     XtCallbackProc    treeUpdateProc;
  243.     XtPointer        client_data;
  244.     XtPointer        dragUnderData;
  245.     XtPointer        curInfo;
  246.     Time        curTime;
  247.     Position        curX, curY, oldX, oldY;
  248.     unsigned char    curDropSiteStatus;
  249.     Widget        curDragContext;
  250.     Boolean        curAnimate;
  251.     unsigned char    curOperations;
  252.     unsigned char    curOperation;
  253.     XmRegion        curAncestorClipRegion;
  254.     XmRegion        newAncestorClipRegion;
  255.     XtPointer        dsTable;
  256.     XtPointer        dsRoot;
  257.     Position        rootX, rootY;
  258.     Dimension        rootW, rootH;
  259.     XtPointer        clipperList;
  260.     XtPointer        updateInfo;
  261. } XmDropSiteManagerPart, *XmDropSiteManagerPartPtr;
  262.  
  263. /* Full instance record declaration */
  264.  
  265. typedef struct _XmDropSiteManagerRec{
  266.     ObjectPart            object;
  267.     XmDropSiteManagerPart    dropManager;
  268. } XmDropSiteManagerRec;
  269.  
  270. /* Internal update struct */
  271.  
  272. typedef struct __XmDropSiteUpdateInfoRec {
  273.   XmDropSiteManagerObject    dsm;
  274.   Widget            refWidget;
  275.   XtPointer            *next;
  276. } _XmDropSiteUpdateInfoRec, *_XmDropSiteUpdateInfo;
  277.  
  278. /********    Private Function Declarations    ********/
  279. #ifdef _NO_PROTO
  280.  
  281. extern void _XmDSMUpdate() ;
  282. extern int _XmDSMGetTreeFromDSM() ;
  283. extern Boolean _XmDropSiteShell() ;
  284. extern Boolean _XmDropSiteWrapperCandidate() ;
  285. extern Widget _XmGetActiveDropSite() ;
  286. extern void _XmSyncDropSiteTree() ;
  287. extern void _XmIEndUpdate() ;
  288.  
  289. #else
  290.  
  291. extern void _XmDSMUpdate( 
  292.                         XmDropSiteManagerObject dsm,
  293.                         XtPointer clientData,
  294.                         XtPointer callData) ;
  295. extern int _XmDSMGetTreeFromDSM( 
  296.                         XmDropSiteManagerObject dsm,
  297.                         Widget shell,
  298.                         XtPointer dataPtr) ;
  299. extern Boolean _XmDropSiteShell( 
  300.                         Widget widget) ;
  301. extern Boolean _XmDropSiteWrapperCandidate( 
  302.                         Widget widget) ;
  303. extern Widget _XmGetActiveDropSite( 
  304.                         Widget widget) ;
  305. extern void _XmSyncDropSiteTree(
  306.                 Widget shell) ;
  307. extern void _XmIEndUpdate(XtPointer client_data, XtIntervalId *interval_id);
  308.  
  309. #endif /* _NO_PROTO */
  310. /********    End Private Function Declarations    ********/
  311.  
  312.  
  313. #ifdef __cplusplus
  314. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  315. #endif
  316.  
  317. #endif /* _XmDropSMgrP_h */
  318.