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.