- (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];
+}
+
+
+- (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";