failed attempts to intercept copy command when the cursor is in the empty text field...
[LeanCalc.git] / Sources / MyDocument.m
index 519ffe0..514b3ed 100644 (file)
 
 
 - (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";