Changeset 5208
- Timestamp:
- 01/31/08 09:57:51 (5 months ago)
- Files:
-
- Tuna/trunk/English.lproj/MainMenu.nib/classes.nib (modified) (2 diffs)
- Tuna/trunk/English.lproj/MainMenu.nib/info.nib (modified) (1 diff)
- Tuna/trunk/English.lproj/MainMenu.nib/keyedobjects.nib (modified) (previous)
- Tuna/trunk/English.lproj/ReleaseNotes.rtf (modified) (1 diff)
- Tuna/trunk/English.lproj/Session.nib/keyedobjects.nib (modified) (previous)
- Tuna/trunk/TNMainController.h (modified) (1 diff)
- Tuna/trunk/TNMainController.m (modified) (2 diffs)
- Tuna/trunk/TNNode.h (modified) (3 diffs)
- Tuna/trunk/TNNode.m (modified) (9 diffs)
- Tuna/trunk/TNSessionController.h (modified) (1 diff)
- Tuna/trunk/TNSessionController.m (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
Tuna/trunk/English.lproj/MainMenu.nib/classes.nib
r5206 r5208 31 31 <key>ACTIONS</key> 32 32 <dict> 33 <key>find</key> 34 <string>id</string> 35 <key>findNext</key> 36 <string>id</string> 33 37 <key>manual</key> 34 38 <string>id</string> … … 40 44 <key>LANGUAGE</key> 41 45 <string>ObjC</string> 46 <key>OUTLETS</key> 47 <dict> 48 <key>_findPanel</key> 49 <string>NSPanel</string> 50 <key>_findTextField</key> 51 <string>NSTextField</string> 52 </dict> 42 53 <key>SUPERCLASS</key> 43 54 <string>WIObject</string> Tuna/trunk/English.lproj/MainMenu.nib/info.nib
r5206 r5208 10 10 <integer>5</integer> 11 11 <key>IBOpenObjects</key> 12 <array> 13 <integer>215</integer> 14 </array> 12 <array/> 15 13 <key>IBSystem Version</key> 16 14 <string>9B18</string> Tuna/trunk/English.lproj/ReleaseNotes.rtf
r5206 r5208 29 29 \cf2 1.0.2 30 30 \b0 \cf0 \ 31 - Add a find panel\ 31 32 - Stability fixes\ 32 33 Tuna/trunk/TNMainController.h
r4995 r5208 27 27 */ 28 28 29 @interface TNMainController : WIObject 29 @interface TNMainController : WIObject { 30 IBOutlet NSPanel *_findPanel; 31 IBOutlet NSTextField *_findTextField; 32 } 30 33 31 34 - (IBAction)newDocument:(id)sender; 35 36 - (IBAction)find:(id)sender; 37 - (IBAction)findNext:(id)sender; 32 38 33 39 - (IBAction)manual:(id)sender; Tuna/trunk/TNMainController.m
r4995 r5208 29 29 #import "TNMainController.h" 30 30 #import "TNProfilerController.h" 31 #import "TNSessionController.h" 31 32 32 33 @implementation TNMainController 34 35 - (BOOL)validateMenuItem:(NSMenuItem *)item { 36 SEL selector; 37 38 selector = [item action]; 39 40 if(selector == @selector(find:) || selector == @selector(findNext:)) 41 return [[[NSApp mainWindow] delegate] isKindOfClass:[TNSessionController class]]; 42 43 return YES; 44 } 45 46 47 48 #pragma mark - 33 49 34 50 - (IBAction)newDocument:(id)sender { … … 39 55 } 40 56 57 58 59 60 - (IBAction)find:(id)sender { 61 TNSessionController *controller; 62 63 controller = [[NSApp mainWindow] delegate]; 64 65 if([controller isKindOfClass:[TNSessionController class]]) 66 [_findPanel makeKeyAndOrderFront:self]; 67 } 68 69 70 71 - (IBAction)findNext:(id)sender { 72 TNSessionController *controller; 73 74 controller = [[NSApp mainWindow] delegate]; 75 76 if([controller isKindOfClass:[TNSessionController class]]) { 77 if([controller findString:[_findTextField stringValue]]) 78 [_findPanel close]; 79 } 80 } 41 81 42 82 Tuna/trunk/TNNode.h
r5206 r5208 37 37 38 38 BOOL _leaf; 39 WISortOrder _sortOrder; 39 40 40 41 NSUInteger _calls; … … 56 57 - (NSUInteger)children; 57 58 - (TNNode *)childAtIndex:(NSUInteger)index; 58 - (TNNode *) lastChild;59 - (TNNode *)firstChild; 59 60 - (id)childWithFunction:(TNFunction *)function; 60 61 - (id)childWithFunctionIdenticalTo:(TNFunction *)function; … … 64 65 - (void)unlink; 65 66 - (void)collapse; 66 - (void)sortUsingSelector:(SEL)selector ;67 - (void)sortUsingSelector:(SEL)selector order:(WISortOrder)order; 67 68 68 69 - (NSArray *)nodesMatchingLibrary:(NSString *)library; 70 - (TNNode *)nodeMatchingSymbolSubstring:(NSString *)string beforeNode:(TNNode *)beforeNode; 71 - (TNNode *)nodeMatchingSymbolSubstring:(NSString *)string afterNode:(TNNode *)afterNode; 69 72 - (void)discardNodesWithCumulativePercentLessThan:(double)percent; 70 73 Tuna/trunk/TNNode.m
r5206 r5208 35 35 36 36 - (void)addNodesMatchingLibrary:(NSString *)library toArray:(NSMutableArray *)array; 37 - (TNNode *)nodeMatchingSymbolSubstring:(NSString *)string beforeNode:(TNNode *)beforeNode haveReached:(BOOL *)reached afterNode:(TNNode *)afterNode havePassed:(BOOL *)passed; 37 38 38 39 @end … … 119 120 - (NSComparisonResult)comparePercent:(TNNode *)node { 120 121 if(_percent < node->_percent) 121 return NSOrderedAscending;122 return (_sortOrder == WISortAscending) ? NSOrderedAscending : NSOrderedDescending; 122 123 else if(_percent > node->_percent) 123 return NSOrderedDescending;124 return (_sortOrder == WISortAscending) ? NSOrderedDescending : NSOrderedAscending; 124 125 125 126 return NSOrderedSame; … … 130 131 - (NSComparisonResult)compareCumulativePercent:(TNNode *)node { 131 132 if(_cumulativePercent < node->_cumulativePercent) 132 return NSOrderedAscending;133 return (_sortOrder == WISortAscending) ? NSOrderedAscending : NSOrderedDescending; 133 134 else if(_cumulativePercent > node->_cumulativePercent) 134 return NSOrderedDescending;135 return (_sortOrder == WISortAscending) ? NSOrderedDescending : NSOrderedAscending; 135 136 136 137 return NSOrderedSame; … … 179 180 180 181 181 - (TNNode *) lastChild {182 return [_children lastObject];182 - (TNNode *)firstChild { 183 return ([_children count] == 0) ? NULL : [_children objectAtIndex:0]; 183 184 } 184 185 … … 298 299 299 300 300 - (void)sortUsingSelector:(SEL)selector { 301 NSUInteger i, count; 301 - (void)sortUsingSelector:(SEL)selector order:(WISortOrder)order { 302 TNNode *node; 303 NSUInteger i, count; 304 305 count = [_children count]; 306 307 for(i = 0; i < count; i++) { 308 node = [_children objectAtIndex:i]; 309 node->_sortOrder = order; 310 [node sortUsingSelector:selector order:order]; 311 } 302 312 303 313 [_children sortUsingSelector:selector]; 304 305 count = [_children count];306 307 for(i = 0; i < count; i++)308 [[_children objectAtIndex:i] sortUsingSelector:selector];309 314 } 310 315 … … 338 343 [node addNodesMatchingLibrary:library toArray:array]; 339 344 } 345 } 346 347 348 349 - (TNNode *)nodeMatchingSymbolSubstring:(NSString *)string beforeNode:(TNNode *)beforeNode { 350 BOOL reached, passed; 351 352 reached = passed = NO; 353 354 return [self nodeMatchingSymbolSubstring:string beforeNode:beforeNode haveReached:&reached afterNode:NULL havePassed:&passed]; 355 } 356 357 358 359 - (TNNode *)nodeMatchingSymbolSubstring:(NSString *)string afterNode:(TNNode *)afterNode { 360 BOOL reached, passed; 361 362 reached = passed = NO; 363 364 return [self nodeMatchingSymbolSubstring:string beforeNode:NULL haveReached:&reached afterNode:afterNode havePassed:&passed]; 365 } 366 367 368 369 - (TNNode *)nodeMatchingSymbolSubstring:(NSString *)string beforeNode:(TNNode *)beforeNode haveReached:(BOOL *)reached afterNode:(TNNode *)afterNode havePassed:(BOOL *)passed { 370 TNNode *node; 371 NSUInteger i, count; 372 373 if(beforeNode == self) { 374 *reached = YES; 375 376 return NULL; 377 } 378 379 if(!afterNode || *passed) { 380 if([[_function symbol] containsSubstring:string options:NSCaseInsensitiveSearch]) 381 return self; 382 } 383 384 if(afterNode == self) 385 *passed = YES; 386 387 count = [_children count]; 388 389 for(i = 0; i < count; i++) { 390 node = [[_children objectAtIndex:i] nodeMatchingSymbolSubstring:string 391 beforeNode:beforeNode 392 haveReached:reached 393 afterNode:afterNode 394 havePassed:passed]; 395 396 if(node) 397 return node; 398 399 if(*reached) 400 break; 401 } 402 403 return NULL; 340 404 } 341 405 … … 430 494 - (NSComparisonResult)compareValue:(TNPerlNode *)node { 431 495 if(_time < node->_time) 432 return NSOrderedAscending;496 return (_sortOrder == WISortAscending) ? NSOrderedAscending : NSOrderedDescending; 433 497 else if(_time > node->_time) 434 return NSOrderedDescending;498 return (_sortOrder == WISortAscending) ? NSOrderedDescending : NSOrderedAscending; 435 499 436 500 return NSOrderedSame; … … 441 505 - (NSComparisonResult)compareCumulativeValue:(TNPerlNode *)node { 442 506 if(_cumulativeTime < node->_cumulativeTime) 443 return NSOrderedAscending;507 return (_sortOrder == WISortAscending) ? NSOrderedAscending : NSOrderedDescending; 444 508 else if(_cumulativeTime > node->_cumulativeTime) 445 return NSOrderedDescending;509 return (_sortOrder == WISortAscending) ? NSOrderedDescending : NSOrderedAscending; 446 510 447 511 return NSOrderedSame; … … 534 598 - (NSComparisonResult)compareValue:(TNNode *)node { 535 599 if(_calls < node->_calls) 536 return NSOrderedAscending;600 return (_sortOrder == WISortAscending) ? NSOrderedAscending : NSOrderedDescending; 537 601 else if(_calls > node->_calls) 538 return NSOrderedDescending;602 return (_sortOrder == WISortAscending) ? NSOrderedDescending : NSOrderedAscending; 539 603 540 604 return NSOrderedSame; Tuna/trunk/TNSessionController.h
r5206 r5208 60 60 - (id)initWithTree:(id)tree; 61 61 62 - (BOOL)findString:(NSString *)string; 63 62 64 - (IBAction)statsDisplayMode:(id)sender; 63 65 - (IBAction)colorByLibrary:(id)sender; Tuna/trunk/TNSessionController.m
r5206 r5208 178 178 TNNode *node; 179 179 double before, after, delta; 180 introw;181 180 NSInteger row; 181 182 182 node = [_tree rootNode]; 183 183 184 184 while([node children] > 0) { 185 185 before = [node cumulativePercent]; 186 node = [node lastChild];186 node = [node firstChild]; 187 187 after = [node cumulativePercent]; 188 188 delta = (before - after) / before; … … 228 228 selector = @selector(compareSymbol:); 229 229 230 [[_tree rootNode] sortUsingSelector:selector ];230 [[_tree rootNode] sortUsingSelector:selector order:[_treeOutlineView sortOrder]]; 231 231 } 232 232 … … 281 281 282 282 return [NSSWF:@"%.1f %@", time, unit]; 283 } 284 285 286 287 #pragma mark - 288 289 - (BOOL)findString:(NSString *)string { 290 TNNode *selectedNode, *node, *parentNode; 291 NSMutableArray *nodes; 292 NSUInteger i, count; 293 NSInteger row; 294 295 selectedNode = [self selectedNode]; 296 node = [[_tree rootNode] nodeMatchingSymbolSubstring:string afterNode:selectedNode]; 297 298 if(!node) 299 node = [[_tree rootNode] nodeMatchingSymbolSubstring:string beforeNode:selectedNode]; 300 301 if(node) { 302 nodes = [[NSMutableArray alloc] init]; 303 parentNode = node; 304 305 while(parentNode) { 306 [nodes addObject:parentNode]; 307 parentNode = [parentNode parent]; 308 } 309 310 count = [nodes count]; 311 312 for(i = count; i > 0; i--) 313 [_treeOutlineView expandItem:[nodes objectAtIndex:i - 1]]; 314 315 row = [_treeOutlineView rowForItem:node]; 316 317 if(row >= 0) { 318 [_treeOutlineView selectRow:row byExtendingSelection:NO]; 319 [_treeOutlineView scrollRowToVisible:row]; 320 } 321 322 [nodes release]; 323 324 return YES; 325 } 326 327 return NO; 283 328 } 284 329 … … 495 540 ? [(TNNode *) item children] - (NSUInteger) index - 1 496 541 : (NSUInteger) index; 542 i = index; 497 543 498 544 return [(TNNode *) item childAtIndex:i];
