summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/TikzDocument.m
diff options
context:
space:
mode:
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];