summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/TikzDocument.m
diff options
context:
space:
mode:
authorrandomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64>2012-01-27 19:24:50 +0000
committerrandomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64>2012-01-27 19:24:50 +0000
commit31ff43125b0629b688a36c2a97c233ec878b3fbc (patch)
treeee46bd3347e0ff80a5f7564854897ddbc9faf381 /tikzit/src/gtk/TikzDocument.m
parent99e1dbf751882592ee21400c60bdbc8241894f27 (diff)
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
Diffstat (limited to 'tikzit/src/gtk/TikzDocument.m')
-rw-r--r--tikzit/src/gtk/TikzDocument.m93
1 files changed, 93 insertions, 0 deletions
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];