#import #import "RExplorer.h" mach_port_t gMasterPort; @implementation NSDictionary (Compare) - (NSComparisonResult)compareNames:(NSDictionary *)dict2 { return [(NSString *)[self objectForKey:@"name"] caseInsensitiveCompare:(NSString *)[dict2 objectForKey:@"name"]]; } @end @implementation RExplorer static void addChildrenOfPlistToMapsRecursively(id plist, NSMapTable *_parentMap, NSMapTable *_keyMap) { // Adds all the children of the given plist to the map-tables. Does not add the plist itself. if ([plist isKindOfClass:[NSDictionary class]]) { NSEnumerator *keyEnum = [plist keyEnumerator]; NSString *curKey; id curChild; while ((curKey = [keyEnum nextObject]) != nil) { curChild = [plist objectForKey:curKey]; NSMapInsert(_parentMap, curChild, plist); NSMapInsert(_keyMap, curChild, curKey); addChildrenOfPlistToMapsRecursively(curChild, _parentMap, _keyMap); } } else if ([plist isKindOfClass:[NSArray class]]) { unsigned i, c = [plist count]; id curChild; for (i=0; i 0) { [array addObject:[NSString stringWithFormat:@"%@:%@", path, [dict objectForKey:@"name"]]]; } } while (aKid = [kidEnum nextObject]) { [array addObjectsFromArray:[self searchKeysResultsInDictionary:aKid forText:text passedPath:[NSString stringWithFormat:@"%@:%@", path, [dict objectForKey:@"name"]]]]; } return [[array copy] autorelease]; } - (void)goToPath:(NSString *)path { NSString *newPath = [@":Root" stringByAppendingString:path]; int count = [[path componentsSeparatedByString:@":"] count]; if (count > 2) { count -= 2; } [browser setPath:newPath]; [self changeLevel:browser]; [browser scrollColumnToVisible:count]; return; } - (void)copy:(id)sender { NSString *currentPath = [[browser path] substringFromIndex:5]; [[NSPasteboard generalPasteboard] declareTypes: [NSArray arrayWithObject:NSStringPboardType] owner: [self class]]; [[NSPasteboard generalPasteboard] setString:currentPath forType:NSStringPboardType]; } - (void)updatePrefs:(id)sender { [[NSUserDefaults standardUserDefaults] setInteger:[updatePrefsMatrix selectedRow] forKey:@"UpdatePrefs"]; [[NSUserDefaults standardUserDefaults] synchronize]; } @end