|
|
1.1 root 1: #import "drawundo.h"
2:
3: @interface GridChange(PrivateMethods)
4:
5: @end
6:
7: @implementation GridChange
8:
9: - initGraphicView:aGraphicView
10: {
11: [super init];
12: graphicView = aGraphicView;
13:
14: return self;
15: }
16:
17: - (const char *)changeName
18: {
19: return NXLocalStringFromTable("Operations", "Grid Change", NULL, "The operation of changing the spacing or color of the grid.");
20: }
21:
22: - saveBeforeChange
23: {
24: oldSpacing = [graphicView gridSpacing];
25: oldGray = [graphicView gridGray];
26: oldVisible = [graphicView gridIsVisible];
27: oldEnabled = [graphicView gridIsEnabled];
28: return self;
29: }
30:
31: - undoChange
32: {
33: newSpacing = [graphicView gridSpacing];
34: newGray = [graphicView gridGray];
35: newVisible = [graphicView gridIsVisible];
36: newEnabled = [graphicView gridIsEnabled];
37:
38: [[self changeManager] disableChanges:self];
39: [graphicView setGridSpacing:oldSpacing andGray:oldGray];
40: [graphicView setGridVisible:oldVisible];
41: [graphicView setGridEnabled:oldEnabled];
42: [[self changeManager] enableChanges:self];
43: return [super undoChange];
44: }
45:
46: - redoChange
47: {
48: [[self changeManager] disableChanges:self];
49: [graphicView setGridSpacing:newSpacing andGray:newGray];
50: [graphicView setGridVisible:newVisible];
51: [graphicView setGridEnabled:newEnabled];
52: [[self changeManager] enableChanges:self];
53: return [super redoChange];
54: }
55:
56: - (BOOL)subsumeChange:change
57: /*
58: * ChangeManager will call subsumeChange: when we are the last
59: * completed change and a new change has just begun. We override
60: * the subsumeChange: because we want to consolidate multiple
61: * grid changes into a single change. For example, if the user
62: * selects the menu item "Show Grid" and then selects the menu
63: * item "Turn Grid On", we'll only leave a single GridChange in
64: * the ChangeManager's list of changes.Both changes can then be
65: * be undone and redone in one action.
66: */
67: {
68: if ([change isKindOf:[GridChange class]]) {
69: [self saveBeforeChange];
70: return YES;
71: } else {
72: return NO;
73: }
74: }
75:
76: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.