This is GridChange.m in view mode; [Download] [Up]
#import "drawundo.h"
@interface GridChange(PrivateMethods)
@end
@implementation GridChange
- initGraphicView:aGraphicView
{
[super init];
graphicView = aGraphicView;
return self;
}
- (const char *)changeName
{
return NXLocalStringFromTable("Operations", "Grid Change", NULL, "The operation of changing the spacing or color of the grid.");
}
- saveBeforeChange
{
oldSpacing = [graphicView gridSpacing];
oldGray = [graphicView gridGray];
oldVisible = [graphicView gridIsVisible];
oldEnabled = [graphicView gridIsEnabled];
return self;
}
- undoChange
{
newSpacing = [graphicView gridSpacing];
newGray = [graphicView gridGray];
newVisible = [graphicView gridIsVisible];
newEnabled = [graphicView gridIsEnabled];
[[self changeManager] disableChanges:self];
[graphicView setGridSpacing:oldSpacing andGray:oldGray];
[graphicView setGridVisible:oldVisible];
[graphicView setGridEnabled:oldEnabled];
[[self changeManager] enableChanges:self];
return [super undoChange];
}
- redoChange
{
[[self changeManager] disableChanges:self];
[graphicView setGridSpacing:newSpacing andGray:newGray];
[graphicView setGridVisible:newVisible];
[graphicView setGridEnabled:newEnabled];
[[self changeManager] enableChanges:self];
return [super redoChange];
}
- (BOOL)subsumeChange:change
/*
* ChangeManager will call subsumeChange: when we are the last
* completed change and a new change has just begun. We override
* the subsumeChange: because we want to consolidate multiple
* grid changes into a single change. For example, if the user
* selects the menu item "Show Grid" and then selects the menu
* item "Turn Grid On", we'll only leave a single GridChange in
* the ChangeManager's list of changes.Both changes can then be
* be undone and redone in one action.
*/
{
if ([change isKindOf:[GridChange class]]) {
[self saveBeforeChange];
return YES;
} else {
return NO;
}
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.