home *** CD-ROM | disk | FTP | other *** search
- #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
-