- (void)awakeFromNib {
-
if (![self fileName]) {
[arrayController add:self];
}
-
[arrayController setSelectionIndex:[calculations count] - 1];
-
}
- (BOOL)lastItemIsSelected {
-
id lastObject = [calculations lastObject];
id selectedObject = [[arrayController selectedObjects] objectAtIndex:0];
-
return selectedObject == lastObject;
}
- (void)addItem {
-
Calculation *newcalc = [[[Calculation alloc] init] autorelease];
[arrayController addObject:newcalc];
int count = [calculations count];
id secondtolast = [calculations objectAtIndex:count - 2];
[secondtolast setValue:newcalc forKey:@"next"];
-
}
- (void)insertPrevious:(NSNumber *)sender {
-
int index = [sender intValue];
if ([calculations count] <= index) return;
}
+// enable copy: menu command only when a previous result is selected
+- (BOOL)validateMenuItem:(NSMenuItem *)item {
+ if ([item action] != @selector(copy:)) return YES;
+ id selectedObject = [[arrayController selectedObjects] objectAtIndex:0];
+ return selectedObject && ![self lastItemIsSelected] && ![selectedObject expressionIsEmpty];
+}
+
+/*
+- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
+ NSLog(@"text view by selector %d", aSelector);
+ return NO;
+}
+*/
+
+
+- (IBAction)copy:(id)sender {
+ NSPasteboard *pboard = [NSPasteboard generalPasteboard];
+ [pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
+ id selectedObject = [[arrayController selectedObjects] objectAtIndex:0];
+ [pboard setString:[selectedObject result] forType:NSStringPboardType];
+}
+
- (NSString *)windowNibName {
return @"MyDocument";