1// 2// PXMoveTool.m 3// Pixen-XCode 4// 5// Created by Andy Matuschak on Fri Feb 27 2004. 6// Copyright (c) 2004 Open Sword Group. All rights reserved. 7// 8 9#import "PXMoveTool.h" 10#import "PXCanvasController.h" 11#import "PXCanvas.h" 12#import "PXLayer.h" 13 14 15@implementation PXMoveTool 16 17- (NSString *)name 18{ 19 return NSLocalizedString(@"MOVE_NAME", @"Move Tool"); 20} 21 22- actionName 23{ 24 return NSLocalizedString(@"MOVE_ACTION", @"Moving"); 25} 26 27- (void)mouseDownAt:(NSPoint)aPoint fromCanvasController:controller 28{ 29 [[self undoManager] beginUndoGrouping]; 30 [[self undoManager] setActionName:[self actionName]]; 31 [self setLayers:[[[controller canvas] layers] deepMutableCopy] fromLayers:[[controller canvas] layers] ofCanvas:[controller canvas]]; 32} 33 34- (void)setLayers:layers fromLayers:oldLayers ofCanvas:canvas 35{ 36 [[[self undoManager] prepareWithInvocationTarget:self] setLayers:oldLayers fromLayers:layers ofCanvas:canvas]; 37 [canvas setLayers:layers]; 38} 39 40- (void)mouseDraggedFrom:(NSPoint)initialPoint to:(NSPoint)finalPoint fromCanvasController:controller 41{ 42 [[[controller canvas] activeLayer] translateXBy:(finalPoint.x - initialPoint.x) yBy:(finalPoint.y - initialPoint.y)]; 43 [[controller canvas] changedInRect:NSMakeRect(0,0,[[controller canvas] size].width,[[controller canvas] size].height)]; 44} 45 46- (void)mouseUpAt:(NSPoint)aPoint fromCanvasController:controller 47{ 48 [[[controller canvas] activeLayer] finalizeMotion]; 49 [[self undoManager] endUndoGrouping]; 50} 51 52/* 53+ (void)offsetLayer:layer inCanvas:canvas byAmount:(NSPoint)amount 54{ 55 id object = [[[self alloc] init] autorelease]; 56 [[object undoManager] beginUndoGrouping]; 57 [[object undoManager] setActionName:[self actionName]]; 58 [object setLayers:[[canvas layers] deepMutableCopy] fromLayers:[canvas layers] ofCanvas:canvas]; 59 [layer translateXBy:amount.x yBy:amount.y]; 60 [canvas changedInRect:NSMakeRect(0,0,[canvas size].width,[canvas size].height)]; 61 [layer finalizeMotion]; 62 [[object undoManager] endUndoGrouping]; 63} 64*/ 65 66@end 67