Public feed
#599192
+ (NSOpenPanel *)panelToOpenUTIs:(NSString *)firstArg, ... {
va_list argList;
NSString *uti = firstArg;
NSOpenPanel *newOpenPanel = [NSOpenPanel openPanel];
NSArray *types = [NSArray array];
va_start(argList, firstArg);
do {
NSDictionary *utiDict = (id)UTTypeCopyDeclaration((CFStringRef)uti);
id exts = [[utiDict
objectForKey:(id)kUTTypeTagSpecificationKey]
objectForKey:(id)kUTTagClassFilenameExtension];
if (exts) {
if ([exts isKindOfClass: [NSArray class]]) {
types = [types arrayByAddingObjectsFromArray:exts];
} else {
types = [types arrayByAddingObject:exts];
}
}
id osTypes = [[utiDict
objectForKey:(id)kUTTypeTagSpecificationKey]
objectForKey:(id)kUTTagClassOSType];
if (osTypes) {
if ([osTypes isKindOfClass: [NSArray class]]) {
types = [types arrayByAddingObjectsFromArray:osTypes];
} else {
types = [types arrayByAddingObject:osTypes];
}
}
} while (uti = va_arg(argList, NSString*));
va_end(argList);
[newOpenPanel setAllowedFileTypes:types];
return newOpenPanel;
}
- (id)init {
self = [super init];
workspace = [NSWorkspace sharedWorkspace];
appOpenPanel = [DMGDJController panelToOpenUTIs:
@"com.apple.application-bundle",
@"com.apple.application-file",
nil];
[appOpenPanel setAllowsMultipleSelection:YES];
imgOpenPanel = [DMGDJController panelToOpenUTIs:
@"public.iso-image",
@"com.apple.disk-image",
@"com.apple.disk-image-udif",
@"com.apple.disk-image-ndif",
@"com.apple.disk-image-smi",
@"com.apple.disk-image-sparse",
@"com.apple.disk-image-cdr",
@"com.roxio.disk-image-toast",
nil];
[imgOpenPanel setAllowsMultipleSelection:YES];
return self;
}
- (IBAction)addApp:(id)sender {
[appOpenPanel
beginSheetForDirectory:nil
file:nil
modalForWindow:prefsWindow
modalDelegate:self
didEndSelector:@selector(addingApp: returnCode: contextInfo:)
contextInfo:NULL];
[self syncMounts];
}