From 31ff43125b0629b688a36c2a97c233ec878b3fbc Mon Sep 17 00:00:00 2001 From: randomguy3 Date: Fri, 27 Jan 2012 19:24:50 +0000 Subject: GTK: bring forward / send back support Waiting on the graph changes to be implemented for it to be done properly (currently no undo/redo and the graph doesn't redraw properly) git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@403 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64 --- tikzit/src/gtk/TikzDocument.m | 93 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) (limited to 'tikzit/src/gtk/TikzDocument.m') diff --git a/tikzit/src/gtk/TikzDocument.m b/tikzit/src/gtk/TikzDocument.m index 5ccdb98..8672266 100644 --- a/tikzit/src/gtk/TikzDocument.m +++ b/tikzit/src/gtk/TikzDocument.m @@ -690,6 +690,95 @@ } } +// FIXME: undo +- (void) bringSelectionForward { + BOOL hasNodeSelection = [[pickSupport selectedNodes] count] > 0; + BOOL hasEdgeSelection = [[pickSupport selectedEdges] count] > 0; + if (!hasNodeSelection && !hasEdgeSelection) + return; + + //[self startUndoGroup]; + if (hasNodeSelection) { + /*GraphChange *change =*/ + [graph bringNodesForward:[pickSupport selectedNodes]]; + //[self registerUndoForChange:change]; + } + if (hasEdgeSelection) { + /*GraphChange *change =*/ + [graph bringEdgesForward:[pickSupport selectedEdges]]; + //[self registerUndoForChange:change]; + } + //[self nameAndEndUndoGroup:@"Bring forward"]; + [self regenerateTikz]; + //[self postGraphChange:change]; +} + +- (void) bringSelectionToFront { + BOOL hasNodeSelection = [[pickSupport selectedNodes] count] > 0; + BOOL hasEdgeSelection = [[pickSupport selectedEdges] count] > 0; + if (!hasNodeSelection && !hasEdgeSelection) + return; + + //[self startUndoGroup]; + if (hasNodeSelection) { + /*GraphChange *change =*/ + [graph bringNodesToFront:[pickSupport selectedNodes]]; + //[self registerUndoForChange:change]; + } + if (hasEdgeSelection) { + /*GraphChange *change =*/ + [graph bringEdgesToFront:[pickSupport selectedEdges]]; + //[self registerUndoForChange:change]; + } + //[self nameAndEndUndoGroup:@"Bring to front"]; + [self regenerateTikz]; + //[self postGraphChange:change]; +} + +- (void) sendSelectionBackward { + BOOL hasNodeSelection = [[pickSupport selectedNodes] count] > 0; + BOOL hasEdgeSelection = [[pickSupport selectedEdges] count] > 0; + if (!hasNodeSelection && !hasEdgeSelection) + return; + + //[self startUndoGroup]; + if (hasNodeSelection) { + /*GraphChange *change =*/ + [graph sendNodesBackward:[pickSupport selectedNodes]]; + //[self registerUndoForChange:change]; + } + if (hasEdgeSelection) { + /*GraphChange *change =*/ + [graph sendNodesBackward:[pickSupport selectedEdges]]; + //[self registerUndoForChange:change]; + } + //[self nameAndEndUndoGroup:@"Send backward"]; + [self regenerateTikz]; + //[self postGraphChange:change]; +} + +- (void) sendSelectionToBack { + BOOL hasNodeSelection = [[pickSupport selectedNodes] count] > 0; + BOOL hasEdgeSelection = [[pickSupport selectedEdges] count] > 0; + if (!hasNodeSelection && !hasEdgeSelection) + return; + + //[self startUndoGroup]; + if (hasNodeSelection) { + /*GraphChange *change =*/ + [graph sendNodesToBack:[pickSupport selectedNodes]]; + //[self registerUndoForChange:change]; + } + if (hasEdgeSelection) { + /*GraphChange *change =*/ + [graph sendNodesToBack:[pickSupport selectedEdges]]; + //[self registerUndoForChange:change]; + } + //[self nameAndEndUndoGroup:@"Send to back"]; + [self regenerateTikz]; + //[self postGraphChange:change]; +} + - (BOOL) saveCopyToPath: (NSString*)p error: (NSError**)error { if (!p) { [NSException raise:@"No document path" format:@"No path given"]; @@ -785,6 +874,10 @@ } - (void) completedGraphChange:(GraphChange*)change withName:(NSString*)name { + if (change == nil) { + NSLog(@"No graph change given for change %@", name); + return; + } [self registerUndoGroupForChange:change withName:name]; [self regenerateTikz]; [self postGraphChange:change]; -- cgit v1.2.3