This is UndoManager.h in view mode; [Download] [Up]
{\rtf0\ansi{\fonttbl\f0\fmodern Courier;}
\paperw11640
\paperh8400
\margl120
\margr120
\pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\f0\b0\i0\ulnone\fs24\fc0\cf0 #import <appkit/appkit.h>\
\b \
// Written by: Jeff Martin (jmartin@bozell.com)\
// You may freely copy, distribute and reuse the code in this example. \
// Don't even talk to me about warranties.\
\b0 \
\b // Modified subtly & extensively by RK, 10/15-10/18 94.\
// See TextUndo testbed project for details.
\b0 \
\
\i @protocol UndoDelegate\
\i0 //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b <UndoDelegate> Protocol\
\b0 //\
-
\b undoManagerWillUndo
\b0 :sender;\
-
\b undoManagerDidUndo
\b0 :sender;\
\i \
@end\
\i0 \
\i @interface UndoManager : Object \{\
\i0 //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Instance Variables\
\b0 //\
id
\b undoList
\b0 ; // The list that holds undo records\
id
\b redoList
\b0 ; // The list that holds redo records\
int
\b disabled
\b0 ; // Whether the UndoManager is accepting events\
BOOL
\b undoing
\b0 ; // Whether the UndoManager is currently undoing\
BOOL
\b redoing
\b0 ; // Whether the UndoManager is currently redoing\
BOOL
\b recordGrouping
\b0 ; // Whether UndoRecords are being grouped\
int
\b levelsOfUndo
\b0 ; // How many levels of undo/redo to record\
\
id
\b target
\b0 ; // Current target of registered undo messages\
id
\b delegateList
\b0 ; // List of objects to be notified of UM changes\
unsigned int
\b freeArgsMask
\b0 ; // Stores which args to free\
unsigned int
\b copyArgsMask
\b0 ;
// Make undo manager copy pointer args\
NXAtom
\b actionName
\b0 ,
\b currentActionName
\b0 ;\
\}\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Format of an undo/redo record\
\b0 //\
\
typedef struct
UndoRecord \{\
\b marg_list
\b0
\b args
\b0 ;\
int
\b freeArgsMask
\b0 ;\
int
\b argSize
\b0 ;\
\}
\b UndoRecord
\b0 ;\
\
typedef struct RecordGroup \{\
Storage *
\b recordList
\b0 ;\
NXAtom
\b actionName
\b0 ;\
\}
\b RecordGroup
\b0 ;\
\
\
- init;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Grouping multiple UndoRecords into an undo event
\b0 \
//\
-
\b beginUndoRecordGrouping
\b0 ;\
-
\b endUndoRecordGrouping
\b0 ;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Disable/Reenable UndoManager to prevent events from being added to undo list
\b0 \
//\
-
\b disableUndoRegistration
\b0 ;\
-
\b reenableUndoRegistration
\b0 ;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Setting the current target for events that are received
\b0 \
//\
-
\b setUndoTarget
\b0 :object;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Setting the current name of RecordGroup
\b0 \
//\
-
\b setActionName
\b0 :(const char *)aName;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Querying the Undo/Redo status for menu validation
\b0 \
//\
- (const char *)
\b lastUndoName
\b0 ;\
- (const char *)
\b lastRedoName
\b0 ;\
- (NXAtom)
\b currentActionName
\b0 ;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Setting the target or args of the next registered method to be freed when
\b0 \
//
\b they fall off the end of the undo/redo list or are executed
\b0 \
//\
-
\b freeUndoTarget
\b0 ;\
-
\b freeUndoArgs
\b0 ;\
-
\b freeUndoArgAt
\b0 :(
\b int
\b0 )pos;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Setting the target or args of the next registered method to be freed when
\b0 \
//
\b they fall off the end of the undo/redo list
\b0 \
//\
-
\b freeUndoTargetOnRecordDiscard
\b0 ;\
-
\b freeUndoArgsOnRecordDiscard
\b0 ;\
-
\b freeUndoArgOnRecordDiscardAt
\b0 :(
\b int
\b0 )pos;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Setting the target or args of the next registered method to be freed when
\b0 \
//
\b they are executed
\b0 \
//\
-
\b freeUndoTargetOnRecordExecute
\b0 ;\
-
\b freeUndoArgsOnRecordExecute
\b0 ;\
-
\b freeUndoArgOnRecordExecuteAt
\b0 :(
\b int
\b0 )pos;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Make UndoManager copy arguments(like objects or strings) for convenience
\b0 \
//\
-
\b copyUndoArgs
\b0 ;\
-
\b copyUndoArgAt
\b0 :(
\b int
\b0 )pos;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Make UndoManager copy arguments and free them when record is discarded
\b0 \
//\
-
\b copyUndoArgsFreeOnDiscard
\b0 ;\
-
\b copyUndoArgFreeOnDiscardAt
\b0 :(
\b int
\b0 )pos;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Make UndoManager copy arguments and free them when record is executed
\b0 \
//\
-
\b copyUndoArgsFreeOnExecute
\b0 ;\
-
\b copyUndoArgFreeOnExecuteAt
\b0 :(
\b int
\b0 )pos;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Copies the pointer args in undoRecord as requested by copyArgsMask
\b0 \
//\
-
\b copyUndoArgsForRecord
\b0 :(
\b UndoRecord
\b0 *)undoRecord;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Overridden to capture undo/redo messages to be added to current record
\b0 \
//\
-
\b forward
\b0 :(
\b SEL
\b0 )aSelector :(
\b marg_list
\b0 )argFrame;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Removes a record from the undo/redo list and dispatches the messages in it
\b0 .\
//\
-
\b undo
\b0 :sender;\
-
\b redo
\b0 :sender;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Query and set the maximum length of the undo/redo list
\b0 \
//\
- (
\b int
\b0 )
\b levelsOfUndo
\b0 ;\
-
\b setLevelsOfUndo
\b0 :(
\b int
\b0 )value;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b These methods add and remove objects that are to receive undo notification
\b0 .\
//\
-
\b addUndoDelegate
\b0 :object;\
-
\b removeUndoDelegate
\b0 :object;\
-
\b sendNotification
\b0 :(
\b SEL
\b0 )action;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Used internally to free the space used for an undo/redo groups and records
\b0 \
//\
-
\b discardRecordGroup
\b0 :(
\b RecordGroup
\b0 *)group;\
-
\b executeRecordGroup
\b0 :(
\b RecordGroup
\b0 *)group;\
-
\b freeUndoRecord
\b0 :(
\b UndoRecord
\b0 *)undoRecord
\b withFreeMask
\b0 :(
\b int
\b0 )mask;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Remove and Free all records currently stored in the UndoManager
\b0 \
//\
-
\b emptyUndoManager
\b0 ;\
\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Free space used by UndoManager
\b0 \
//\
-
\b free
\b0 ;\
\
\i @end
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.