diff --git a/Tools/XcodeCapp/AppController.h b/Tools/XcodeCapp/AppController.h index 5f0eb52cc..08b48ebe3 100644 --- a/Tools/XcodeCapp/AppController.h +++ b/Tools/XcodeCapp/AppController.h @@ -20,6 +20,7 @@ #import #import "PRHEmptyGrowlDelegate.h" #import "TNXCodeCapp.h" +#import "TNErrorDataView.h" @interface AppController : NSObject { @@ -38,12 +39,14 @@ IBOutlet TNXCodeCapp *xcc; IBOutlet NSWindow *windowDebug; IBOutlet NSMenuItem *menuDebug; + IBOutlet TNErrorDataView *dataViewError; NSImage *_iconActive; NSImage *_iconInactive; NSImage *_iconWorking; NSStatusItem *_statusItem; PRHEmptyGrowlDelegate *growlDelegateRef; + NSData *_archivedDataView; } @property BOOL supportsFileModeListening; @@ -53,7 +56,6 @@ - (BOOL)validateMenuItem:(NSMenuItem*)menuItem; - (void)registerDefaults; -- (void)updateErrorTable; - (void)growlWithTitle:(NSString *)aTitle message:(NSString *)aMessage; - (void)openCenteredWindow:(NSWindow *)aWindow; diff --git a/Tools/XcodeCapp/AppController.m b/Tools/XcodeCapp/AppController.m index 453bba7d2..176e90624 100644 --- a/Tools/XcodeCapp/AppController.m +++ b/Tools/XcodeCapp/AppController.m @@ -25,6 +25,20 @@ AppController *SharedAppControllerInstance = nil; +float heightForStringDrawing(NSString *myString, NSFont *myFont, float myWidth) +{ + NSTextStorage *textStorage = [[[NSTextStorage alloc] initWithString:myString] autorelease]; + NSTextContainer *textContainer = [[[NSTextContainer alloc] initWithContainerSize:NSMakeSize(myWidth, FLT_MAX)] autorelease]; + NSLayoutManager *layoutManager = [[[NSLayoutManager alloc] init] autorelease]; + + [layoutManager addTextContainer:textContainer]; + [textStorage addLayoutManager:layoutManager]; + [textStorage addAttribute:NSFontAttributeName value:myFont range:NSMakeRange(0, [textStorage length])]; + [textContainer setLineFragmentPadding:0.0]; + + (void) [layoutManager glyphRangeForTextContainer:textContainer]; + return [layoutManager usedRectForTextContainer:textContainer].size.height; +} @implementation AppController @@ -46,6 +60,8 @@ AppController *SharedAppControllerInstance = nil; { SharedAppControllerInstance = self; + _archivedDataView = [NSKeyedArchiver archivedDataWithRootObject:dataViewError]; + if (!growlDelegateRef) growlDelegateRef = [[[PRHEmptyGrowlDelegate alloc] init] autorelease]; @@ -152,6 +168,9 @@ AppController *SharedAppControllerInstance = nil; - (void)XCodeCappConversionDidStop:(NSNotification *)aNotification { [_statusItem setImage:_iconActive]; + + if ([errorsPanel isVisible]) + [errorsTable reloadData]; } /*! @@ -262,17 +281,6 @@ AppController *SharedAppControllerInstance = nil; system([[NSString stringWithFormat:@"open \"%@\"", [[xcc XCodeSupportProject] path]] UTF8String]); } -/*! - reload error table data and show it - @param aSender the sender of the action - */ -- (void)updateErrorTable -{ - [errorsTable reloadData]; - [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; - [errorsPanel orderFront:self]; -} - /*! Open the errors window @param aSender the sender of the action @@ -357,24 +365,21 @@ AppController *SharedAppControllerInstance = nil; - (void)tableViewColumnDidResize:(NSNotification *)tableView { [errorsTable noteHeightOfRowsWithIndexesChanged: - [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [[xcc errorList] count])]]; + [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [[xcc errorList] count])]]; +} + +- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row +{ + return [NSKeyedUnarchiver unarchiveObjectWithData:_archivedDataView]; } - (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)aRow { - // Get column you want - first in this case: - NSTableColumn *tabCol = [[tableView tableColumns] objectAtIndex:0]; - float width = [tabCol width]; - NSRect r = NSMakeRect(0,0,width,1000.0); - NSCell *cell = [tabCol dataCellForRow:aRow]; - NSString *content = [[xcc errorList] objectAtIndex:aRow]; - [cell setObjectValue:content]; - float height = [cell cellSizeForBounds:r].height; - - if (height <= 0) - height = 16.0; // Ensure miniumum height is 16.0 - - return height; + NSString *content = [[[xcc errorList] objectAtIndex:aRow] objectForKey:@"message"]; + NSFont *currentFont = [[dataViewError fieldMessage] font]; + float height = heightForStringDrawing(content, currentFont, [tableView frame].size.width); + + return height + 25; } @end diff --git a/Tools/XcodeCapp/English.lproj/MainMenu.nib/designable.nib b/Tools/XcodeCapp/English.lproj/MainMenu.nib/designable.nib index b8987770e..db4db42b2 100644 --- a/Tools/XcodeCapp/English.lproj/MainMenu.nib/designable.nib +++ b/Tools/XcodeCapp/English.lproj/MainMenu.nib/designable.nib @@ -2,32 +2,33 @@ 1050 - 11C74 - 1938 - 1138.23 - 567.00 + 12D54 + 2844 + 1187.37 + 626.00 com.apple.InterfaceBuilder.CocoaPlugin - 1938 + 2844 - NSPopUpButtonCell - NSUserDefaultsController - NSScroller - NSPopUpButton - NSMenuItem - NSMenu - NSScrollView - NSTextFieldCell NSButton NSButtonCell - NSTableView NSCustomObject + NSCustomView + NSMenu + NSMenuItem + NSPopUpButton + NSPopUpButtonCell + NSScrollView + NSScroller + NSTableColumn + NSTableView + NSTextField + NSTextFieldCell NSTextView + NSUserDefaultsController NSView NSWindowTemplate - NSTextField - NSTableColumn com.apple.InterfaceBuilder.CocoaPlugin @@ -59,7 +60,7 @@ - + 256 @@ -70,7 +71,7 @@ YES - 68288064 + 68157504 138544128 WGNvZGVDYXBwIGRldmVsb3BlZCBieSBBbnRvaW5lIE1lcmNhZGFsCnByaW1hbG1vdGlvbkBhcmNoaXBl bHByb2plY3Qub3JnCgp3aXRoIGNvbnRyaWJ1dGlvbnMgZnJvbSBBcGFyYWppdGEgRmlzaG1hbgphcGFy @@ -95,15 +96,17 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ MQA + NO 269 {{108, 20}, {158, 14}} + YES - 68288064 + 68157504 138544128 LABEL VERSION @@ -111,12 +114,14 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ + NO {375, 153} + - {{0, 0}, {2560, 1418}} + {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} YES @@ -202,14 +207,14 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ 95 2 - {{987, 547}, {512, 285}} + {{462, 324}, {512, 285}} 1685585920 Errors and Warnings NSPanel - + 256 @@ -227,6 +232,8 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ YES + NO + YES -2147483392 @@ -240,7 +247,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ 40 1000 - 75628096 + 75497536 2048 Error @@ -259,7 +266,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ - 337772032 + 337641472 0 Text Cell @@ -318,6 +325,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ {{413, 17}, {15, 166}} + NO _doScroller: 0.99494949494949492 @@ -328,6 +336,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ {{1, 183}, {427, 15}} + NO 1 _doScroller: @@ -342,6 +351,9 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ QSAAAEEgAABBmAAAQZgAAA + 0.25 + 4 + 1 @@ -351,7 +363,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ YES - -2080244224 + -2080374784 134217728 Clear @@ -360,39 +372,43 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ 16 - -2038152961 + -2038153216 164 400 75 + NO 289 {{407, 8}, {85, 19}} + YES - -2080244224 + -2080374784 134217728 Close - -2038152961 + -2038153216 164 400 75 + NO {512, 285} + - {{0, 0}, {2560, 1418}} + {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} YES @@ -420,9 +436,9 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ 2322 - {716, 14} + {716, 571} - + @@ -434,7 +450,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ - 134 + 166 @@ -442,7 +458,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ 1 - 67120389 + 11525 0 @@ -478,7 +494,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ 6 {716, 10000000} - {238, 0} @@ -516,9 +531,9 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 256 - {{702, 1}, {15, 571}} + {{701, 1}, {16, 571}} - + NO _doScroller: 1 @@ -530,6 +545,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {{-100, -100}, {87, 18}} + NO 1 _doScroller: @@ -539,18 +555,21 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {{-1, -1}, {718, 573}} - + 133138 + 0.25 + 4 + 1 {716, 571} - {{0, 0}, {2560, 1418}} + {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} YES @@ -564,7 +583,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA - + 256 @@ -575,12 +594,12 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - -2080244224 + -2080374784 0 Inode meta information changes - 1211912703 + 1211912448 2 NSImage @@ -594,6 +613,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 200 25 + NO @@ -603,11 +623,11 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - -2076049856 + -2076180416 2048 - 109199615 + 109199360 129 @@ -660,6 +680,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES 2 + NO @@ -669,7 +690,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - 68288064 + 68157504 272630784 React To: @@ -677,6 +698,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + NO @@ -686,7 +708,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - 68288064 + 68157504 272630784 API Mode: @@ -694,6 +716,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + NO @@ -703,7 +726,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - 68288064 + 68157504 272630784 Current API Mode @@ -711,16 +734,16 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + NO 268 {{103, 16}, {284, 17}} - YES - 68288064 + 68157504 272630784 In "File level" API mode, react to touch, chown, etc. @@ -735,6 +758,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA MC4zNDU1Mjg0ODM0IDAuMzQ1NTI4NDgzNCAwLjM0NTUyODQ4MzQAA + NO @@ -744,12 +768,12 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - -2080244224 + -2080374784 0 Listen to the most recent project - 1211912703 + 1211912448 2 @@ -758,6 +782,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 200 25 + NO @@ -767,7 +792,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - 68288064 + 68157504 272630784 On Launch: @@ -775,6 +800,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + NO @@ -784,7 +810,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - 68288064 + 68157504 272630784 RmlsZSBtb2RlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggT1MgWCAxMC42LgpVbmxlc3MgeW91IGtub3cg d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4 @@ -796,13 +822,13 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4 MC4zNDU1Mjg0ODM0IDAuMzQ1NTI4NDgzNCAwLjM0NTUyODQ4MzQAA + NO {435, 199} - - {{0, 0}, {2560, 1418}} + {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} xcc-prefs YES @@ -820,6 +846,85 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4 + + + 268 + + + + 297 + {{281, 18}, {18, 19}} + + + YES + + -2080374784 + 134217728 + + + + -2033958912 + 164 + + NSImage + NSFollowLinkFreestandingTemplate + + + + 400 + 75 + + NO + + + + 274 + {{7, 12}, {265, 18}} + + + YES + + 67108864 + 272629760 + Label + + + + + + NO + + + + 266 + {{7, 30}, {265, 17}} + + + YES + + 67108928 + 272632320 + Label + + LucidaGrande-Bold + 13 + 2072 + + + + + 1 + MC43NzU1OTkzNjA1IDAuMjQ2OTMyOTIzOCAwLjIxOTQ4OTQ4NQA + + + NO + + + {308, 56} + + + TNErrorDataView + @@ -1031,6 +1136,14 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4 660 + + + dataViewError + + + + 682 + performClose: @@ -1201,6 +1314,38 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4 657 + + + fieldFileName + + + + 678 + + + + fieldMessage + + + + 681 + + + + openFile: + + + + 689 + + + + buttonOpenFile + + + + 690 + @@ -1641,6 +1786,55 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4 + + 675 + + + + + + + + + + 676 + + + + + + + + 677 + + + + + 679 + + + + + + + + 680 + + + + + 687 + + + + + + + + 688 + + + @@ -1716,12 +1910,19 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - 674 + 690 0 @@ -1730,15 +1931,12 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4 com.apple.InterfaceBuilder.CocoaPlugin.macosx - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - YES 3 - {9, 8} - {7, 2} + {10, 10} + {11, 11} + {10, 3} {15, 15} diff --git a/Tools/XcodeCapp/English.lproj/MainMenu.nib/keyedobjects.nib b/Tools/XcodeCapp/English.lproj/MainMenu.nib/keyedobjects.nib index 7509b08c1..d5521dd50 100644 Binary files a/Tools/XcodeCapp/English.lproj/MainMenu.nib/keyedobjects.nib and b/Tools/XcodeCapp/English.lproj/MainMenu.nib/keyedobjects.nib differ diff --git a/Tools/XcodeCapp/TNErrorDataView.h b/Tools/XcodeCapp/TNErrorDataView.h new file mode 100644 index 000000000..b988f3578 --- /dev/null +++ b/Tools/XcodeCapp/TNErrorDataView.h @@ -0,0 +1,34 @@ +/* + * This file is a part of program XcodeCapp + * Copyright (C) 2013 Antoine Mercadal () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#import + +@interface TNErrorDataView : NSView +{ + IBOutlet NSTextField *fieldFileName; + IBOutlet NSTextField *fieldMessage; + IBOutlet NSButton *buttonOpenFile; + + NSString *_fullPath; +} + +@property (assign) NSTextField *fieldMessage; + +- (IBAction)openFile:(id)aSender; + +@end diff --git a/Tools/XcodeCapp/TNErrorDataView.m b/Tools/XcodeCapp/TNErrorDataView.m new file mode 100644 index 000000000..a8a49d31f --- /dev/null +++ b/Tools/XcodeCapp/TNErrorDataView.m @@ -0,0 +1,75 @@ +/* + * This file is a part of program XcodeCapp + * Copyright (C) 2013 Antoine Mercadal () + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#import "TNErrorDataView.h" + +@implementation TNErrorDataView + +@synthesize fieldMessage; + +/*! + Set the data view's object value + @param aValue the dictionary representing the error + */ +- (void)setObjectValue:(NSDictionary *)aValue +{ + [fieldMessage setStringValue:[aValue valueForKey:@"message"]]; + [fieldFileName setStringValue:[aValue valueForKey:@"file"]]; + _fullPath = [aValue valueForKey:@"path"]; +} + + +#pragma - +#pragma Actions + +/*! + Open the errored file in default editor + @param aSender the sender of the action + */ +- (IBAction)openFile:(id)aSender +{ + NSWorkspace *workspace = [NSWorkspace sharedWorkspace]; + [workspace openFile:_fullPath]; +} + + +#pragma - +#pragma CPCoding + +- (id)initWithCoder:(NSCoder*)aCoder +{ + if (self = [super initWithCoder:aCoder]) + { + fieldFileName = [aCoder decodeObjectForKey:@"fieldFileName"]; + fieldMessage = [aCoder decodeObjectForKey:@"fieldMessage"]; + buttonOpenFile = [aCoder decodeObjectForKey:@"buttonOpenFile"]; + } + + return self; +} + +- (void)encodeWithCoder:(NSCoder*)aCoder +{ + [super encodeWithCoder:aCoder]; + + [aCoder encodeObject:fieldFileName forKey:@"fieldFileName"]; + [aCoder encodeObject:fieldMessage forKey:@"fieldMessage"]; + [aCoder encodeObject:buttonOpenFile forKey:@"buttonOpenFile"]; +} + +@end diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index 06c3a1ac2..a440498d7 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -545,7 +545,13 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification else if (![status intValue] == 0) { if (response) - [errorList addObject:response]; + { + NSDictionary *errorDictionary = [NSDictionary dictionaryWithObjectsAndKeys:response, @"message", + splitPath, @"file", + fullPath, @"path", nil]; + + [errorList addObject:errorDictionary]; + } [delegate performSelector:@selector(growlWithTitle:message:) withObject:@"Error processing file" withObject:splitPath]; } diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj index 7e0c5e38e..b99ab8bb7 100644 --- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj +++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj @@ -26,6 +26,7 @@ 02998CEB1369BF7D006C73DB /* Growl Registration Ticket.growlRegDict in Resources */ = {isa = PBXBuildFile; fileRef = 02998CEA1369BF7D006C73DB /* Growl Registration Ticket.growlRegDict */; }; 02998CF71369C339006C73DB /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02998CF61369C339006C73DB /* Growl.framework */; }; 02998CF91369C38A006C73DB /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 02998CF61369C339006C73DB /* Growl.framework */; }; + 02B1C8D816B25C74003C6E82 /* TNErrorDataView.m in Sources */ = {isa = PBXBuildFile; fileRef = 02B1C8D716B25C74003C6E82 /* TNErrorDataView.m */; }; 4E2D0D01154840B400475C01 /* help.rtfd in Resources */ = {isa = PBXBuildFile; fileRef = 4E2D0D00154840B400475C01 /* help.rtfd */; }; 4E2D0D03154840BC00475C01 /* help.rtfd in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4E2D0D00154840B400475C01 /* help.rtfd */; }; 651DAE1F13B0CAB900ECA3F0 /* PRHEmptyGrowlDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 651DAE1D13B0CAB900ECA3F0 /* PRHEmptyGrowlDelegate.m */; }; @@ -62,6 +63,8 @@ 0294F09215D345A500840547 /* mod_pbxproj.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = mod_pbxproj.py; sourceTree = ""; }; 02998CEA1369BF7D006C73DB /* Growl Registration Ticket.growlRegDict */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "Growl Registration Ticket.growlRegDict"; sourceTree = ""; }; 02998CF61369C339006C73DB /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Growl.framework; sourceTree = ""; }; + 02B1C8D616B25C74003C6E82 /* TNErrorDataView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TNErrorDataView.h; sourceTree = ""; }; + 02B1C8D716B25C74003C6E82 /* TNErrorDataView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TNErrorDataView.m; sourceTree = ""; }; 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; @@ -98,6 +101,8 @@ children = ( 651DAE1C13B0CAB900ECA3F0 /* PRHEmptyGrowlDelegate.h */, 651DAE1D13B0CAB900ECA3F0 /* PRHEmptyGrowlDelegate.m */, + 02B1C8D616B25C74003C6E82 /* TNErrorDataView.h */, + 02B1C8D716B25C74003C6E82 /* TNErrorDataView.m */, 8E01A91D0DE9EED20008BB35 /* AppController.h */, 8E01A91E0DE9EED20008BB35 /* AppController.m */, 027FE49B1462D74C00B1AB92 /* TNXCodeCapp.h */, @@ -285,6 +290,7 @@ 651DAE1F13B0CAB900ECA3F0 /* PRHEmptyGrowlDelegate.m in Sources */, 027FE49D1462D74C00B1AB92 /* TNXCodeCapp.m in Sources */, 027FE4BD1462F7EB00B1AB92 /* FSEventCallback.m in Sources */, + 02B1C8D816B25C74003C6E82 /* TNErrorDataView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };