|
|
1.1 ! root 1: #import "drawundo.h" ! 2: ! 3: @interface GroupGraphicsChange(PrivateMethods) ! 4: ! 5: - undoDetails; ! 6: - redoDetails; ! 7: ! 8: @end ! 9: ! 10: @implementation GroupGraphicsChange ! 11: ! 12: - free ! 13: { ! 14: if (![self hasBeenDone]) { ! 15: [[group subGraphics] empty]; ! 16: [group free]; ! 17: } ! 18: return [super free]; ! 19: } ! 20: ! 21: - (const char *)changeName ! 22: { ! 23: return NXLocalStringFromTable("Operations", "Group", NULL, "The operation of grouping a bunch of graphical entities together."); ! 24: } ! 25: ! 26: - saveBeforeChange ! 27: { ! 28: [super saveBeforeChange]; ! 29: [changeDetails makeObjectsPerform:@selector(recordGraphicPositionIn:) with:[graphicView graphics]]; ! 30: ! 31: return self; ! 32: } ! 33: ! 34: - changeDetailClass ! 35: { ! 36: return [OrderChangeDetail class]; ! 37: } ! 38: ! 39: - noteGroup:aGroup ! 40: { ! 41: group = aGroup; ! 42: return self; ! 43: } ! 44: ! 45: - undoDetails ! 46: { ! 47: int count, i; ! 48: id detail, graphic; ! 49: List *allGraphics; ! 50: ! 51: allGraphics = [graphicView graphics]; ! 52: [allGraphics removeObject:group]; ! 53: count = [changeDetails count]; ! 54: for (i = 0; i < count; i++) { ! 55: detail = [changeDetails objectAt:i]; ! 56: graphic = [detail graphic]; ! 57: [graphic setCacheable:YES]; ! 58: [allGraphics insertObject:graphic at:[detail graphicPosition]]; ! 59: } ! 60: [graphicView getSelection]; ! 61: [graphicView resetGroupInSlist]; ! 62: ! 63: return self; ! 64: } ! 65: ! 66: - redoDetails ! 67: { ! 68: int count, i; ! 69: id detail, graphic; ! 70: List *selectedGraphics; ! 71: List *allGraphics; ! 72: ! 73: selectedGraphics = [graphicView selectedGraphics]; ! 74: allGraphics = [graphicView graphics]; ! 75: count = [changeDetails count]; ! 76: for (i = 0; i < count; i++) { ! 77: detail = [changeDetails objectAt:i]; ! 78: graphic = [detail graphic]; ! 79: [graphic setCacheable:NO]; ! 80: [selectedGraphics removeObject:graphic]; ! 81: [allGraphics removeObject:graphic]; ! 82: } ! 83: [allGraphics insertObject:group at:0]; ! 84: [graphicView setGroupInSlist:YES]; ! 85: [graphicView getSelection]; ! 86: ! 87: ! 88: return self; ! 89: } ! 90: ! 91: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.