home *** CD-ROM | disk | FTP | other *** search
- /*
- NXDataLinkManager
- Application Kit, Release 3.0
- Copyright (c) 1991, NeXT, Inc. All rights reserved.
- */
-
- #import <sys/stat.h>
- #import <objc/Object.h>
- #import <objc/List.h>
- #import <objc/hashtable.h>
- #import "Pasteboard.h"
- #import <machkit/senderIsInvalid.h>
- #import "NXDataLink.h"
- #import "NXSelection.h"
- #import "graphics.h"
-
- @interface NXDataLinkManager : Object <NXSenderIsInvalid> {
- /* these instance variables are NOT part of the API, are subject to change in future releases */
- @private
- id delegate;
- id ref;
- List *srcLinks;
- List *destLinks;
- struct _lmFlags {
- unsigned int isEdited:1;
- unsigned int doUI:1;
- unsigned int showOutlines:1;
- unsigned int registered:1;
- unsigned int linksDirty:1;
- unsigned int delegateVerifiesLinks:1;
- unsigned int RESERVED:10;
- } lmFlags;
- int destLinksCounter;
- time_t lastEditTime;
- List *linkInfo;
- Pasteboard *linkInfoPboard;
- int linkInfoChangeCount;
- unsigned int _reservedLinkManager1;
- }
-
- - init;
- - initWithDelegate:obj;
- - initWithDelegate:obj fromFile:(const char *)path;
- - free;
-
- - delegate;
- - (const char *)filename;
- - (BOOL)isEdited;
- - setInteractsWithUser:(BOOL)flag;
- - (BOOL)interactsWithUser;
- - setLinksVerifiedByDelegate:(BOOL)flag;
- - (BOOL)areLinksVerifiedByDelegate;
-
- /* used to notify DataLinkManager whats happening with the doc */
- - documentSaved;
- - documentReverted;
- - documentSavedAs:(const char *)path;
- - documentSavedTo:(const char *)path;
- - documentClosed;
- - documentEdited;
-
- /* adds a link to a document */
- - addLink:(NXDataLink *)link at:(NXSelection *)selection;
- - addLinkAsMarker:(NXDataLink *)link at:(NXSelection *)selection;
-
- /* copies info about all existing links into a pasteboard */
- - writeLinksToPasteboard:(Pasteboard *)pasteboard;
-
- /* adds a data link to a document using info from writeLinksToPasteboard: */
- - (NXDataLink *)addLinkPreviouslyAt:(NXSelection *)oldSelection fromPasteboard:(Pasteboard *)pasteboard at:(NXSelection *)selection;
-
- /* sets wUE er to show outlines around linked data */
- - setLinkOutlinesVisible:(BOOL)flag;
- - (BOOL)areLinkOutlinesVisible;
-
- /* breaks all links in a document */
- - breakAllLinks;
-
- - (NXDataLink *)findDestinationLinkWithSelection:(NXSelection *)destSel;
-
- /* apps should not rely on this struct's contents */
- typedef struct { void *a; void *b; } NXLinkEnumerationState;
-
- - prepareEnumerationState:(NXLinkEnumerationState *)state forLinksOfType:(NXDataLinkDisposition)srcOrDest;
- - (NXDataLink *)nextLinkUsing:(NXLinkEnumerationState *)state;
-
- @end
-
-
- /* generic selection messages, sent to the LinkManager's delegate. Return nil if the selecion arg can not be resolved. */
- @interface Object(NXSelectionHandling)
-
- - (NXSelection *)createSelection;
- - setSelection:(NXSelection *)selection;
- - showSelection:(NXSelection *)selection;
- - copyToPasteboard:(Pasteboard *)pasteboard at:(NXSelection *)selection cheapCopyAllowed:(BOOL)flag;
- - pasteFromPasteboard:(Pasteboard *)pasteboard at:(NXSelection *)selection;
- - importFile:(const char *)filename at:(NXSelection *)selection;
- - windowForSelection:(NXSelection *)selection;
-
- @end
-
-
- /* delegate methods specific to links */
- @interface Object(NXDataLinkManagerDelegate)
-
- /* used to close documents opened without UI */
- - dataLinkManagerCloseDocument:(NXDataLinkManager *)sender;
-
- - dataLinkManager:(NXDataLinkManager *)sender didBreakLink:(NXDataLink *)link;
- - dataLinkManagerRedrawLinkOutlines:(NXDataLinkManager *)sender;
- - dataLinkManagerDidEditLinks:(NXDataLinkManager *)sender;
-
- /* if not implemented, doc assumes that whenever the app saves all linking clients need to be updated */
- - (BOOL)dataLinkManagerTracksLinksIndividually:(NXDataLinkManager *)sender;
-
- - dataLinkManager:(NXDataLinkManager *)sender startTrackingLink:(NXDataLink *)link;
- - dataLinkManager:(NXDataLinkManager *)sender stopTrackingLink:(NXDataLink *)link;
-
- /* only needed if you do setLinksVerifiedByDelegate:YES */
- - (BOOL)dataLinkManager:(NXDataLinkManager *)sender isUpdateNeededForLink:(NXDataLink *)link;
-
- @end
-
- extern void NXFrameLinkRect(const NXRect *aRect, BOOL isDestination);
- extern float NXLinkFrameThickness(void);
-