Rev 714 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
/** R.app : a Cocoa front end to: "R A Computer Language for Statistical Data Analysis"** R.app Copyright notes:* Copyright (C) 2004 The R Foundation* written by Stefano M. Iacus and Simon Urbanek*** R Copyright notes:* Copyright (C) 1995-1996 Robert Gentleman and Ross Ihaka* Copyright (C) 1998-2001 The R Development Core Team* Copyright (C) 2002-2004 The R Foundation** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** A copy of the GNU General Public License is available via WWW at* http://www.gnu.org/copyleft/gpl.html. You can also obtain it by* writing to the Free Software Foundation, Inc., 59 Temple Place,* Suite 330, Boston, MA 02111-1307 USA.*/#import "RController.h"#import "RDocumentController.h"@implementation RDocumentController- (id)init {self = [super init];return self;}- (IBAction)newDocument:(id)sender {NSString *editor;NSString *cmd;NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];NSData *theData=[defaults dataForKey:internalOrExternalKey];if(theData != nil){if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {editor = nil;} else {theData=[defaults dataForKey:externalEditorNameKey];if(theData != nil) {editor = (NSString *)[NSUnarchiver unarchiveObjectWithData:theData];} else {editor = nil;}}} elseeditor = nil;if (editor == nil)[super newDocument:(id)sender];else {theData=[defaults dataForKey:appOrCommandKey];if(theData != nil){if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {cmd = [@"open -a " stringByAppendingString:[editor stringByAppendingString:@".app "]];} else {cmd = editor;}} elsecmd = [@"open -a " stringByAppendingString:[editor stringByAppendingString:@".app "]];system([cmd cString]);}}- (IBAction)openDocument:(id)sender {NSString *editor;NSString *cmd;NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];NSData *theData=[defaults dataForKey:internalOrExternalKey];if(theData != nil){if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {editor = nil;} else {theData=[defaults dataForKey:externalEditorNameKey];if(theData != nil) {editor = (NSString *)[NSUnarchiver unarchiveObjectWithData:theData];} else {editor = nil;}}} elseeditor = nil;if (editor == nil)[super openDocument:(id)sender];else {NSArray *files = [super fileNamesFromRunningOpenPanel];int i = [files count];int j;for (j=0;j<i;j++) {theData=[defaults dataForKey:appOrCommandKey];if(theData != nil){if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {cmd = [[@"open -a " stringByAppendingString:[editor stringByAppendingString:@".app "]] stringByAppendingString: [NSString stringWithString: [files objectAtIndex:j]]];} else {cmd = [[editor stringByAppendingString:@" -c "]stringByAppendingString: [NSString stringWithString: [files objectAtIndex:j]]];}} elsecmd = [[@"open -a " stringByAppendingString:[editor stringByAppendingString:@".app "]] stringByAppendingString: [NSString stringWithString: [files objectAtIndex:j]]];system([cmd cString]);}}}- (id)openDocumentWithContentsOfFile:(NSString *)aFile display:(BOOL)flag {// NSLog(@"openDocumentWith: %@:", aFile);int res = [[RController getRController] isImageData: (char *)[aFile cString]];if (res == -1)NSLog(@"Can't open file %@", aFile);else if (res == 0 ) {[[RController getRController] sendInput: [NSString stringWithFormat:@"load(\"%@\")", aFile]];} else {NSString *editor;NSString *cmd;NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];NSData *theData=[defaults dataForKey:editOrSourceKey];if(theData != nil && ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"NO"])){// NSLog(@"Source the file!");[[RController getRController] sendInput:[NSString stringWithFormat:@"source(\"%@\")",aFile]];} else {if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {theData=[defaults dataForKey:internalOrExternalKey];if(theData != nil){if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {editor = nil;} else {theData=[defaults dataForKey:externalEditorNameKey];if(theData != nil) {editor = (NSString *)[NSUnarchiver unarchiveObjectWithData:theData];} else {editor = nil;}}} elseeditor = nil;if (editor == nil)return [super openDocumentWithContentsOfFile:(NSString *)aFile display:(BOOL)flag];else {theData=[defaults dataForKey:appOrCommandKey];if(theData != nil){if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {cmd = [[@"open -a " stringByAppendingString:[editor stringByAppendingString:@".app "]] stringByAppendingString: aFile];} else {cmd = [[editor stringByAppendingString:@" -c "]stringByAppendingString: [NSString stringWithString: aFile]];}} elsecmd = [[@"open -a " stringByAppendingString:[editor stringByAppendingString:@".app "]] stringByAppendingString: aFile];system([cmd cString]);}}}}return 0;}- (id)openRDocumentWithContentsOfFile:(NSString *)aFile display:(BOOL)flag {// NSLog(@"openRDocumentWith: %@", aFile);NSString *editor;NSString *cmd;NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];NSData *theData=[defaults dataForKey:internalOrExternalKey];if(theData != nil){if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {editor = nil;} else {theData=[defaults dataForKey:externalEditorNameKey];if(theData != nil) {editor = (NSString *)[NSUnarchiver unarchiveObjectWithData:theData];} else {editor = nil;}}} elseeditor = nil;if (editor == nil)return [super openDocumentWithContentsOfFile:(NSString *)aFile display:(BOOL)flag];else {theData=[defaults dataForKey:appOrCommandKey];if(theData != nil){if ([(NSString *)[NSUnarchiver unarchiveObjectWithData:theData] isEqualToString: @"YES"]) {cmd = [[@"open -a " stringByAppendingString:[editor stringByAppendingString:@".app "]] stringByAppendingString: aFile];} else {cmd = [[editor stringByAppendingString:@" -c "]stringByAppendingString: [NSString stringWithString: aFile]];}} elsecmd = [[@"open -a " stringByAppendingString:[editor stringByAppendingString:@".app "]] stringByAppendingString: aFile];system([cmd cString]);return 0;}}@end