From 8d2a78abc61800f6ca610620e5ad8e59c0e59bf4 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 19 Jan 2011 19:27:36 +1300 Subject: [PATCH] Expose a native filepicker dialog. --- OpenRA.Launcher.Mac/Controller.h | 3 +- OpenRA.Launcher.Mac/Controller.m | 152 ++++++++++-------- .../Release/OpenRA.app/Contents/MacOS/OpenRA | Bin 68552 -> 68504 bytes .../Resources/English.lproj/MainMenu.nib | Bin 6774 -> 6774 bytes 4 files changed, 84 insertions(+), 71 deletions(-) diff --git a/OpenRA.Launcher.Mac/Controller.h b/OpenRA.Launcher.Mac/Controller.h index 497140b514..0f3c280d92 100644 --- a/OpenRA.Launcher.Mac/Controller.h +++ b/OpenRA.Launcher.Mac/Controller.h @@ -10,13 +10,12 @@ @interface Controller : NSObject { - BOOL hasMono; NSString *monoPath; NSString *gamePath; IBOutlet NSWindow *window; } - +- (void)launchFilePicker:(NSArray *)args; - (void)launchMod:(NSString *)mod; - (BOOL)initMono; @end diff --git a/OpenRA.Launcher.Mac/Controller.m b/OpenRA.Launcher.Mac/Controller.m index 0f24311b16..579fdccbd4 100644 --- a/OpenRA.Launcher.Mac/Controller.m +++ b/OpenRA.Launcher.Mac/Controller.m @@ -17,18 +17,18 @@ forKey:@"gamepath"]]; } -- (void)awakeFromNib -{ - gamePath = [[NSUserDefaults standardUserDefaults] stringForKey:@"gamepath"]; - - hasMono = [self initMono]; - - NSLog(@"%d, %@",hasMono, monoPath); -} - - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { - if (!hasMono) + gamePath = [[NSUserDefaults standardUserDefaults] stringForKey:@"gamepath"]; + NSArray *args = [[NSProcessInfo processInfo] arguments]; + + // Ingame requests for native dialogs + if ([args containsObject:@"--filepicker"]) + [self launchFilePicker:args]; + + + // Try and launch the game + if (![self initMono]) { NSAlert *alert = [NSAlert alertWithMessageText:@"Mono Framework" defaultButton:@"Download Mono" @@ -42,72 +42,35 @@ [[NSApplication sharedApplication] terminate:self]; } - else - { - [self launchMod:@"cnc"]; - [NSApp terminate: nil]; - } + + [self launchMod:@"cnc"]; + [NSApp terminate: nil]; } -- (BOOL)initMono +- (void)launchFilePicker:(NSArray *)args { - // Find the users mono - NSPipe *outPipe = [NSPipe pipe]; - NSTask *task = [[NSTask alloc] init]; - [task setLaunchPath:@"/usr/bin/which"]; - [task setArguments:[NSMutableArray arrayWithObject:@"mono"]]; - [task setStandardOutput:outPipe]; - [task setStandardError:[task standardOutput]]; - [task launch]; + NSOpenPanel *op = [NSOpenPanel openPanel]; + [op setAllowsMultipleSelection:NO]; - NSData *data = [[outPipe fileHandleForReading] readDataToEndOfFile]; - [task waitUntilExit]; - [task release]; + NSUInteger a = [args indexOfObject:@"--title"]; + if (a != NSNotFound) + [op setTitle:[args objectAtIndex:a+1]]; - NSString *temp = [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease]; - // Remove whitespace and resolve symlinks - monoPath = [[[temp stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] - stringByResolvingSymlinksInPath] retain]; - - if (![monoPath length]) - return NO; + a = [args indexOfObject:@"--message"]; + if (a != NSNotFound) + [op setMessage:[args objectAtIndex:a+1]]; - // Find the mono version - outPipe = [NSPipe pipe]; - task = [[NSTask alloc] init]; - [task setLaunchPath:monoPath]; - [task setArguments:[NSMutableArray arrayWithObject:@"--version"]]; - [task setStandardOutput:outPipe]; - [task setStandardError:[task standardOutput]]; - [task launch]; + a = [args indexOfObject:@"--directory"]; + if (a != NSNotFound) + [op setDirectory:[[args objectAtIndex:a+1] stringByExpandingTildeInPath]]; - data = [[outPipe fileHandleForReading] readDataToEndOfFile]; - [task waitUntilExit]; - [task release]; + if ([op runModal] == NSFileHandlingPanelOKButton) + printf("%s\n", [[[op URL] path] UTF8String]); - NSString *ret = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; - - int major = 0; - int minor = 0; - int point = 0; - sscanf([ret UTF8String], "Mono JIT compiler version %d.%d.%d", &major, &minor, &point); - [ret release]; - NSLog(@"mono %d.%d.%d: %@",major,minor,point,monoPath); - - return (major > 2 || - (major == 2 && minor > 6) || - (major == 2 && minor == 6 && point >= 7)); + [NSApp terminate: nil]; } -- (void)dealloc -{ - [monoPath release]; monoPath = nil; - [gamePath release]; gamePath = nil; - [super dealloc]; -} - - --(void)launchMod:(NSString *)mod +-(void) launchMod:(NSString *)mod { // Use LaunchServices because neither NSTask or NSWorkspace support Info.plist _and_ arguments pre-10.6 @@ -140,10 +103,61 @@ SetFrontProcess(&psn); } -#pragma mark Application delegates -- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender + +- (BOOL)initMono { - return YES; + // Find the users mono + NSPipe *outPipe = [NSPipe pipe]; + NSTask *task = [[NSTask alloc] init]; + [task setLaunchPath:@"/usr/bin/which"]; + [task setArguments:[NSMutableArray arrayWithObject:@"mono"]]; + [task setStandardOutput:outPipe]; + [task setStandardError:[task standardOutput]]; + [task launch]; + + NSData *data = [[outPipe fileHandleForReading] readDataToEndOfFile]; + [task waitUntilExit]; + [task release]; + + NSString *temp = [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease]; + // Remove whitespace and resolve symlinks + monoPath = [[[temp stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] + stringByResolvingSymlinksInPath] retain]; + + if (![monoPath length]) + return NO; + + // Find the mono version + outPipe = [NSPipe pipe]; + task = [[NSTask alloc] init]; + [task setLaunchPath:monoPath]; + [task setArguments:[NSMutableArray arrayWithObject:@"--version"]]; + [task setStandardOutput:outPipe]; + [task setStandardError:[task standardOutput]]; + [task launch]; + + data = [[outPipe fileHandleForReading] readDataToEndOfFile]; + [task waitUntilExit]; + [task release]; + + NSString *ret = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; + + int major = 0; + int minor = 0; + int point = 0; + sscanf([ret UTF8String], "Mono JIT compiler version %d.%d.%d", &major, &minor, &point); + [ret release]; + + return (major > 2 || + (major == 2 && minor > 6) || + (major == 2 && minor == 6 && point >= 7)); +} + +- (void)dealloc +{ + [monoPath release]; monoPath = nil; + [gamePath release]; gamePath = nil; + [super dealloc]; } @end diff --git a/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/MacOS/OpenRA b/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/MacOS/OpenRA index 4c08b7990638d249f1cd6419d0806eea4c5928f2..b52e320fca551a9a14b2647a90bb781e4ab3afad 100755 GIT binary patch literal 68504 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 literal 68552 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

s=J)1bPTe`!Ioj!R zdaa~EEh+ou0eMIsmPh1Kc}$*=C*^6`D$mMKJyXN=QYtJ{n)qlqlh0gi0(v5D_S#fJUwL%r1+x%1(ACGkfNo@0{;D z-&~(|ecHw&Gv+}N6hk>wLKW143!1YigwNp% zH~}ZS6j*X+)M7bLE|CknT1NFiR5@N$%K2RxQQIw1)p$`OtBlj5%Yu*qiI7D4$!_v0 zIRsWnAr)j0Qb{jqgfw8J8>W-Z;Dk)#B?FKp3uK`zlBKdtI%KSzET_n9St}KpDeGm5 zw8{oKQzl54oG2H_Iw@p^tmuPm(gZogO_mZHSw8R_bz`wAq3~Lql?moK;=!Zhh3_asC8kKP!CHGWn&mn7*0t9PO&jalg2Ftv%TdQ<+<6J4}1_XG@6#shmGIN4gbcr z4~t!C%w*9<0ku|1nYWj`3Ry^!6XKAjZX{{|63HPPd~9ZN8r3C^LCQWA=Ngb?o1_G zZ#RmMQO02~CM}1I9v&TBjBSJqw3(fpgzW!_^)PNmq>C?+-Duf}x*yR%)d+n5KaxK9 zn(V%r>|4@OMBb215lxLqIe$dTnw+8rkIzIIY5pgfw*#g_3Z&uE)yf9rGc^&n3gVE+ z(1H7lXWZpX5`)cq&0oj_YY2oF|BJz$#|Yf70{n&#SLob;9a?aQMd-Hn#;4_k_5n5meS;xKg|DLo}r+LCO!&yr%f-!j#bYH=6?*2RWmn+(&8ZsB;a&YV|F zqN&uRx^j1*p|zpi-rQBkDe3gNTa6?w-B_)q z8UZmT*?vocB9G70?0L+cRAZ7JWBzjk=M4l#j}|w^Q7>+NC<4Z)u_XkNfPP3L^KjJp zXdWilRx*psMlH-Gg^)nU4lvZpAlgeWq@sR`NCDC~U=j#UB*lT=?!@t{ zXgH<Ee>u zq~j~V{0xeP;ze&VJRzRzvf0mBg6}JzDo2!K$_b@UIi-A~oL0V5&MN1W z^U76v2es3?=~x;~C(t;WKohBx=F&N|ga&8_?W8N{O1g?ZL7$>)=@z<;_R3Y*FtERChJ4E6xaV)?8%$V%BV=3$SpX69!ttc`WB zPPT%rWUJUKY!`ct?PL2{7dyb-WCz*1?0t5Yonr&+GW&&HW!Kqn>~}WEhB)IIkLDBj zJ$w>R=9RpfFXHvQfxEbyFXLYB;{m>!Kgrkdr};B{Bj3Vz@jbkY=O5q)`P=**{saG! zpXV3(C4Pnf%CGWk{15(@O4a+-RCSt~u1;5->H}(ynycok73wNAs6M5xRoAJ{s_WGa zM%LKF4wvwY?c#OOEj|&)M8Eh$vujCOrdF&~YfV~<_Ja1Z)}x)&25h5jR@+2dhAr2~ z9@mxop5CK>pns%)qJOIQ>YwX}^`rW6{VTmsKc)BU-|FA%XY{lBIsJluNx!21s$bLp WwiCO>KFS_tSM1EL+J%uGo&68+sIvF~