/
PreferencesController.m
46 lines (41 loc) · 1.97 KB
/
PreferencesController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//
// PreferencesController.m
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 7/6/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import "PreferencesController.h"
@implementation PreferencesController
- (IBAction)selectPKGPath:(id)sender {
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseFiles:NO];
[openPanel setCanChooseDirectories:YES];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger result = [openPanel runModalForDirectory:[defaults objectForKey:@"NSNavLastCurrentDirectory"] file:nil types:nil];
if(result == NSOKButton) {
NSString *path = [[openPanel filenames] objectAtIndex:0];
// Validate Directory
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL existsAsDirectory;
NSString *macportsDir = [path stringByAppendingPathComponent:@"macports1.0"];
NSString *macportsFile = [macportsDir stringByAppendingPathComponent:@"macports.tcl"];
BOOL containsMacPortsTcl;
[fileManager fileExistsAtPath:macportsDir isDirectory:&existsAsDirectory];
containsMacPortsTcl = [fileManager fileExistsAtPath:macportsFile isDirectory:nil];
if(existsAsDirectory && containsMacPortsTcl) {
[defaults setObject:path forKey:@"PKGPath"];
[MPMacPorts setPKGPath:path];
[[MPActionLauncher sharedInstance]
performSelectorInBackground:@selector(loadPorts) withObject:nil];
} else {
NSAlert *alert = [NSAlert alertWithMessageText:@"You selected an invalid directory"
defaultButton:@"OK"
alternateButton:nil
otherButton:nil
informativeTextWithFormat:@"You have to use the directory where macports1.0 was installed by MacPorts.\n\nGenerally it should be /Library/Tcl"];
[alert runModal];
}
}
}
@end