|
|
1.1 ! root 1: #import "drawundo.h" ! 2: ! 3: @interface CreateGraphicsChange(PrivateMethods) ! 4: ! 5: @end ! 6: ! 7: @implementation CreateGraphicsChange ! 8: ! 9: - initGraphicView:aGraphicView graphic:aGraphic ! 10: { ! 11: [super init]; ! 12: graphicView = aGraphicView; ! 13: graphic = aGraphic; ! 14: startEditingChange = nil; ! 15: ! 16: return self; ! 17: } ! 18: ! 19: - free ! 20: { ! 21: if (![self hasBeenDone]) ! 22: [graphic free]; ! 23: if (startEditingChange) ! 24: [startEditingChange free]; ! 25: return [super free]; ! 26: } ! 27: ! 28: #define NEW_STRING NXLocalStringFromTable("Operations", "New %s", NULL, "The operation of creating a new graphical entity by dragging the mouse. The %s is one of Rectangle, Circle, etc.") ! 29: ! 30: - (const char *)changeName ! 31: { ! 32: char buffer[256]; ! 33: sprintf(buffer, NEW_STRING, [graphic title]); ! 34: return NXUniqueString(buffer); ! 35: } ! 36: ! 37: - undoChange ! 38: { ! 39: if (startEditingChange) ! 40: [startEditingChange undoChange]; ! 41: [graphicView removeGraphic:graphic]; ! 42: [[[NXApp inspectorPanel] delegate] loadGraphic:[graphicView selectedGraphic]]; ! 43: return [super undoChange]; ! 44: } ! 45: ! 46: - redoChange ! 47: { ! 48: [graphicView insertGraphic:graphic]; ! 49: [[[NXApp inspectorPanel] delegate] loadGraphic:[graphicView selectedGraphic]]; ! 50: if (startEditingChange) ! 51: [startEditingChange redoChange]; ! 52: return [super redoChange]; ! 53: } ! 54: ! 55: - (BOOL)incorporateChange:change ! 56: /* ! 57: * ChangeManager will call incorporateChange: if another change ! 58: * is started while we are still in progress (after we've ! 59: * been sent startChange but before we've been sent endChange). ! 60: * We override incorporateChange: because we want to ! 61: * incorporate a StartEditingGraphicsChange if it happens. ! 62: * Rather than know how to undo and redo the start-editing stuff, ! 63: * we'll simply keep a pointer to the StartEditingGraphicsChange ! 64: * and ask it to undo and redo whenever we undo or redo. ! 65: */ ! 66: { ! 67: if ([change isKindOf:[StartEditingGraphicsChange class]]) { ! 68: startEditingChange = change; ! 69: return YES; ! 70: } else { ! 71: return NO; ! 72: } ! 73: } ! 74: ! 75: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.