home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Headers / appkit / NXDataLinkManager.h < prev    next >
Text File  |  1992-07-10  |  4KB  |  127 lines

  1. /*
  2.     NXDataLinkManager
  3.     Application Kit, Release 3.0
  4.     Copyright (c) 1991, NeXT, Inc.  All rights reserved. 
  5. */
  6.  
  7. #import <sys/stat.h>
  8. #import <objc/Object.h>
  9. #import <objc/List.h>
  10. #import <objc/hashtable.h>
  11. #import "Pasteboard.h"
  12. #import <machkit/senderIsInvalid.h>
  13. #import "NXDataLink.h"
  14. #import "NXSelection.h"
  15. #import "graphics.h"
  16.  
  17. @interface NXDataLinkManager : Object <NXSenderIsInvalid> {
  18.   /* these instance variables are NOT part of the API, are subject to change in future releases */
  19.   @private
  20.     id delegate;
  21.     id ref;
  22.     List *srcLinks;
  23.     List *destLinks;
  24.     struct _lmFlags {
  25.     unsigned int isEdited:1;
  26.     unsigned int doUI:1;
  27.     unsigned int showOutlines:1;
  28.     unsigned int registered:1;
  29.     unsigned int linksDirty:1;
  30.     unsigned int delegateVerifiesLinks:1;
  31.     unsigned int RESERVED:10;
  32.     } lmFlags;
  33.     int destLinksCounter;
  34.     time_t lastEditTime;
  35.     List *linkInfo;
  36.     Pasteboard *linkInfoPboard;
  37.     int linkInfoChangeCount;
  38.     unsigned int _reservedLinkManager1;
  39. }
  40.  
  41. - init;
  42. - initWithDelegate:obj;
  43. - initWithDelegate:obj fromFile:(const char *)path;
  44. - free;
  45.  
  46. - delegate;
  47. - (const char *)filename;
  48. - (BOOL)isEdited;
  49. - setInteractsWithUser:(BOOL)flag;
  50. - (BOOL)interactsWithUser;
  51. - setLinksVerifiedByDelegate:(BOOL)flag;
  52. - (BOOL)areLinksVerifiedByDelegate;
  53.  
  54. /* used to notify DataLinkManager whats happening with the doc */
  55. - documentSaved;
  56. - documentReverted;
  57. - documentSavedAs:(const char *)path;
  58. - documentSavedTo:(const char *)path;
  59. - documentClosed;
  60. - documentEdited;
  61.  
  62. /* adds a link to a document */
  63. - addLink:(NXDataLink *)link at:(NXSelection *)selection;
  64. - addLinkAsMarker:(NXDataLink *)link at:(NXSelection *)selection;
  65.  
  66. /* copies info about all existing links into a pasteboard */
  67. - writeLinksToPasteboard:(Pasteboard *)pasteboard;
  68.  
  69. /* adds a data link to a document using info from writeLinksToPasteboard: */
  70. - (NXDataLink *)addLinkPreviouslyAt:(NXSelection *)oldSelection fromPasteboard:(Pasteboard *)pasteboard at:(NXSelection *)selection;
  71.  
  72. /* sets wUE er to show outlines around linked data */
  73. - setLinkOutlinesVisible:(BOOL)flag;
  74. - (BOOL)areLinkOutlinesVisible;
  75.  
  76. /* breaks all links in a document */
  77. - breakAllLinks;
  78.  
  79. - (NXDataLink *)findDestinationLinkWithSelection:(NXSelection *)destSel;
  80.  
  81. /* apps should not rely on this struct's contents */
  82. typedef struct { void *a; void *b; } NXLinkEnumerationState;
  83.  
  84. - prepareEnumerationState:(NXLinkEnumerationState *)state forLinksOfType:(NXDataLinkDisposition)srcOrDest;
  85. - (NXDataLink *)nextLinkUsing:(NXLinkEnumerationState *)state;
  86.  
  87. @end
  88.  
  89.  
  90. /* generic selection messages, sent to the LinkManager's delegate.  Return nil if the selecion arg can not be resolved. */
  91. @interface Object(NXSelectionHandling)
  92.  
  93. - (NXSelection *)createSelection;
  94. - setSelection:(NXSelection *)selection;
  95. - showSelection:(NXSelection *)selection;
  96. - copyToPasteboard:(Pasteboard *)pasteboard at:(NXSelection *)selection cheapCopyAllowed:(BOOL)flag;
  97. - pasteFromPasteboard:(Pasteboard *)pasteboard at:(NXSelection *)selection;
  98. - importFile:(const char *)filename at:(NXSelection *)selection;
  99. - windowForSelection:(NXSelection *)selection;
  100.  
  101. @end
  102.  
  103.  
  104. /* delegate methods specific to links */
  105. @interface Object(NXDataLinkManagerDelegate)
  106.  
  107. /* used to close documents opened without UI */
  108. - dataLinkManagerCloseDocument:(NXDataLinkManager *)sender;
  109.  
  110. - dataLinkManager:(NXDataLinkManager *)sender didBreakLink:(NXDataLink *)link;
  111. - dataLinkManagerRedrawLinkOutlines:(NXDataLinkManager *)sender;
  112. - dataLinkManagerDidEditLinks:(NXDataLinkManager *)sender;
  113.  
  114. /* if not implemented, doc assumes that whenever the app saves all linking clients need to be updated */
  115. - (BOOL)dataLinkManagerTracksLinksIndividually:(NXDataLinkManager *)sender;
  116.  
  117. - dataLinkManager:(NXDataLinkManager *)sender startTrackingLink:(NXDataLink *)link;
  118. - dataLinkManager:(NXDataLinkManager *)sender stopTrackingLink:(NXDataLink *)link;
  119.  
  120. /* only needed if you do setLinksVerifiedByDelegate:YES */
  121. - (BOOL)dataLinkManager:(NXDataLinkManager *)sender isUpdateNeededForLink:(NXDataLink *)link;
  122.  
  123. @end
  124.  
  125. extern void NXFrameLinkRect(const NXRect *aRect, BOOL isDestination);
  126. extern float NXLinkFrameThickness(void);
  127.