add a bit more safety to the message log code

This commit is contained in:
Mitchell Livingston 2009-11-29 02:17:11 +00:00
parent 4e615c55a0
commit bb2a86300e
1 changed files with 20 additions and 12 deletions

View File

@ -121,6 +121,9 @@
case TR_MSG_DBG:
[fLevelButton selectItemAtIndex: LEVEL_DEBUG];
break;
default: //safety
[[NSUserDefaults standardUserDefaults] setInteger: TR_MSG_ERR forKey: @"MessageLevel"];
[fLevelButton selectItemAtIndex: LEVEL_ERROR];
}
fMessages = [[NSMutableArray alloc] init];
@ -191,7 +194,7 @@
[fMessageTable reloadData];
if (shouldScroll)
[fMessageTable scrollRowToVisible: [fDisplayedMessages count]-1];
[fMessageTable scrollRowToVisible: [fMessageTable numberOfRows]-1];
}
[fLock unlock];
@ -241,8 +244,8 @@
if (!fAttributes)
fAttributes = [[[[column dataCell] attributedStringValue] attributesAtIndex: 0 effectiveRange: NULL] retain];
const CGFloat count = floorf([[[fDisplayedMessages objectAtIndex: row] objectForKey: @"Message"] sizeWithAttributes: fAttributes].width
/ [column width]);
NSString * message = [[fDisplayedMessages objectAtIndex: row] objectForKey: @"Message"];
const CGFloat count = floorf([message sizeWithAttributes: fAttributes].width / [column width]);
return [tableView rowHeight] * (count + 1.0);
}
@ -306,6 +309,8 @@
case LEVEL_DEBUG:
level = TR_MSG_DBG;
break;
default:
NSAssert1(NO, @"Unknown message log level: %d", [fLevelButton indexOfSelectedItem]);
}
if ([[NSUserDefaults standardUserDefaults] integerForKey: @"MessageLevel"] == level)
@ -328,10 +333,12 @@
[fDisplayedMessages sortUsingDescriptors: [fMessageTable sortDescriptors]];
[fMessageTable reloadData];
[fMessageTable deselectAll: self];
if ([fDisplayedMessages count] > 0)
[fMessageTable scrollRowToVisible: [fDisplayedMessages count]-1];
{
[fMessageTable deselectAll: self];
[fMessageTable scrollRowToVisible: [fMessageTable numberOfRows]-1];
}
[fLock unlock];
}
@ -401,24 +408,25 @@
- (NSString *) stringForMessage: (NSDictionary *) message
{
NSString * level;
switch ([[message objectForKey: @"Level"] integerValue])
NSString * levelString;
const NSInteger level = [[message objectForKey: @"Level"] integerValue];
switch (level)
{
case TR_MSG_ERR:
level = NSLocalizedString(@"Error", "Message window -> level");
levelString = NSLocalizedString(@"Error", "Message window -> level");
break;
case TR_MSG_INF:
level = NSLocalizedString(@"Info", "Message window -> level");
levelString = NSLocalizedString(@"Info", "Message window -> level");
break;
case TR_MSG_DBG:
level = NSLocalizedString(@"Debug", "Message window -> level");
levelString = NSLocalizedString(@"Debug", "Message window -> level");
break;
default:
level = @"";
NSAssert1(NO, @"Unknown message log level: %d", level);
}
return [NSString stringWithFormat: @"%@ %@ [%@] %@: %@", [message objectForKey: @"Date"],
[message objectForKey: @"File"], level,
[message objectForKey: @"File"], levelString,
[message objectForKey: @"Name"], [message objectForKey: @"Message"], nil];
}