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 <Foundation/NSObject.h>
- #import <objc/List.h>
- #import <objc/hashtable.h>
- #import "NSPasteboard.h"
- #import <machkit/senderIsInvalid.h>
- #import "NSDataLink.h"
- #import "NSSelection.h"
- #import "NSGraphics.h"
-
- @interface NSDataLinkManager : NSObject <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;
- NSPasteboard *linkInfoPboard;
- int linkInfoChangeCount;
- unsigned int _reservedLinkManager1;
- }
-
- - init;
- - initWithDelegate:obj;
- - initWithDelegate:obj fromFile:(NSString *)path;
- - (void)dealloc;
-
- - delegate;
- - (NSString *)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:(NSString *)path;
- - documentSavedTo:(NSString *)path;
- - documentClosed;
- - documentEdited;
-
- /* adds a link to a document */
- - addLink:(NSDataLink *)link at:(NSSelection *)selection;
- - addLinkAsMarker:(NSDataLink *)link at:(NSSelection *)selection;
-
- /* copies info about all existing links into a pasteboard */
- - writeLinksToPasteboard:(NSPasteboard *)pasteboard;
-
- /* adds a data link to a document using info from writeLinksToPasteboard: */
- - (NSDataLink *)addLinkPreviouslyAt:(NSSelection *)oldSelection fromPasteboard:(NSPasteboard *)pasteboard at:(NSSelection *)selection;
-
- /* sets whether to show outlines around linked data */
- - setLinkOutlinesVisible:(BOOL)flag;
- - (BOOL)areLinkOutlinesVisible;
-
- /* breaks all links in a document */
- - breakAllLinks;
-
- - (NSDataLink *)findDestinationLinkWithSelection:(NSSelection *)destSel;
-
- /* apps should not rely on this struct's contents */
- typedef struct { void *a; void *b; } NSLinkEnumerationState;
-
- - prepareEnumerationState:(NSLinkEnumerationState *)state forLinksOfType:(NSDataLinkDisposition)srcOrDest;
- - (NSDataLink *)nextLinkUsing:(NSLinkEnumerationState *)state;
-
- @end
-
-
- /* generic selection messages, sent to the LinkManager's delegate. Return nil if the selecion arg can not be resolved. */
- @interface NSObject(NXSelectionHandling)
-
- - (NSSelection *)createSelection;
- - setSelection:(NSSelection *)selection;
- - showSelection:(NSSelection *)selection;
- - copyToPasteboard:(NSPasteboard *)pasteboard at:(NSSelection *)selection cheapCopyAllowed:(BOOL)flag;
- - pasteFromPasteboard:(NSPasteboard *)pasteboard at:(NSSelection *)selection;
- - importFile:(NSString *)filename at:(NSSelection *)selection;
- - windowForSelection:(NSSelection *)selection;
-
- @end
-
-
- /* delegate methods specific to links */
- @interface NSObject(NXDataLinkManagerDelegate)
-
- /* used to close documents opened without UI */
- - dataLinkManagerCloseDocument:(NSDataLinkManager *)sender;
-
- - dataLinkManager:(NSDataLinkManager *)sender didBreakLink:(NSDataLink *)link;
- - dataLinkManagerRedrawLinkOutlines:(NSDataLinkManager *)sender;
- - dataLinkManagerDidEditLinks:(NSDataLinkManager *)sender;
-
- /* if not implemented, doc assumes that whenever the app saves all linking clients need to be updated */
- - (BOOL)dataLinkManagerTracksLinksIndividually:(NSDataLinkManager *)sender;
-
- - dataLinkManager:(NSDataLinkManager *)sender startTrackingLink:(NSDataLink *)link;
- - dataLinkManager:(NSDataLinkManager *)sender stopTrackingLink:(NSDataLink *)link;
-
- /* only needed if you do setLinksVerifiedByDelegate:YES */
- - (BOOL)dataLinkManager:(NSDataLinkManager *)sender isUpdateNeededForLink:(NSDataLink *)link;
-
- @end
-
- extern void NSFrameLinkRect(NSRect aRect , BOOL isDestination);
- extern float NSLinkFrameThickness(void);
-