Changeset 51
- Timestamp:
- 11/18/02 08:57:41 (22 years ago)
- Location:
- trunk/Cocoa/Pester/Source
- Files:
-
- 4 added
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cocoa/Pester/Source/English.lproj/Alarms.nib/classes.nib
r26 r51 3 3 {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 4 4 {CLASS = NJRScrollView; LANGUAGE = ObjC; SUPERCLASS = NSScrollView; }, 5 { 6 CLASS = NJRTableDelegate; 7 LANGUAGE = ObjC; 8 OUTLETS = {tableView = NSTableView; }; 9 SUPERCLASS = NSObject; 10 }, 11 { 12 CLASS = NJRTableView; 13 LANGUAGE = ObjC; 14 OUTLETS = {typeSelectDisplay = id; }; 15 SUPERCLASS = NSTableView; 16 }, 17 {CLASS = NSObject; LANGUAGE = ObjC; }, 5 18 { 6 19 ACTIONS = {remove = id; }; -
trunk/Cocoa/Pester/Source/English.lproj/Alarms.nib/info.nib
r28 r51 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">3 <plist version=" 1.0">2 <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> 3 <plist version="0.9"> 4 4 <dict> 5 5 <key>IBDocumentLocation</key> 6 <string> 579 27 356 240 0 0 1600 1178</string>6 <string>322 50 356 240 0 0 1280 832 </string> 7 7 <key>IBFramework Version</key> 8 <string>2 86.0</string>8 <string>263.2</string> 9 9 <key>IBOpenObjects</key> 10 10 <array> … … 12 12 </array> 13 13 <key>IBSystem Version</key> 14 <string> 6D52</string>14 <string>5S66</string> 15 15 </dict> 16 16 </plist> -
trunk/Cocoa/Pester/Source/NJRTableDelegate.h
r34 r51 4 4 // 5 5 // Created by Nicholas Riley on Sun Oct 27 2002. 6 // Copyright (c) 2002 __MyCompanyName__. All rights reserved.6 // Copyright (c) 2002 Nicholas Riley. All rights reserved. 7 7 // 8 8 9 9 #import <AppKit/AppKit.h> 10 #import "NJRTableView.h" 10 11 11 12 12 13 @interface NJRTableDelegate : NSObject { 13 IBOutlet N STableView *tableView;14 IBOutlet NJRTableView *tableView; 14 15 NSTableColumn *sortingColumn; 15 16 NSString *sortingKey; 16 17 BOOL sortDescending; 17 18 18 id oData; // XXX ???19 NSMutableArray *reorderedData; 19 20 } 20 21 22 - (NSMutableArray *)reorderedDataForData:(NSArray *)data; 23 24 - (NSSet *)selectedItems; 25 - (void)selectItems:(NSSet *)inSelectedItems; 26 21 27 @end -
trunk/Cocoa/Pester/Source/NJRTableDelegate.m
r34 r51 4 4 // 5 5 // Created by Nicholas Riley on Sun Oct 27 2002. 6 // Copyright (c) 2002 __MyCompanyName__. All rights reserved.6 // Copyright (c) 2002 Nicholas Riley. All rights reserved. 7 7 // 8 8 … … 14 14 typedef struct { NSString *key; BOOL descending; } SortContext; 15 15 16 // Sort array of itemNums, by looking up the itemNum in the dictionary of dictionaries.16 // Sort array of itemNums, by looking up the itemNum in the dictionary of objects. 17 17 // based on code of Ondra Cada <ocs@ocs.cz> on cocoa-dev list 18 18 … … 25 25 26 26 if (context->descending) { 27 first = [right objectForKey: key];28 second = [left objectForKey: key];27 first = [right valueForKey: key]; 28 second = [left valueForKey: key]; 29 29 } else { 30 first = [left objectForKey: key];31 second = [right objectForKey: key];30 first = [left valueForKey: key]; 31 second = [right valueForKey: key]; 32 32 } 33 33 … … 41 41 } 42 42 43 @interface NJRTableDelegate (Private) 44 45 - (void)_positionTypeSelectDisplay; 46 - (void)_sortByColumn:(NSTableColumn *)inTableColumn; 47 48 @end 49 43 50 @implementation NJRTableDelegate 44 51 45 52 #pragma mark initialize-release 46 53 54 - (void)awakeFromNib; 55 { 56 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_positionTypeSelectDisplay) name: NSViewFrameDidChangeNotification object: tableView]; 57 } 58 47 59 - (void)dealloc 48 60 { 61 [[NSNotificationCenter defaultCenter] removeObserver: self]; 49 62 [sortingColumn release]; 50 63 [sortingKey release]; 64 [reorderedData release]; 51 65 [super dealloc]; 52 66 } … … 68 82 } 69 83 84 #pragma mark sorting 85 86 - (NSString *)_sortContextDefaultKey; 87 { 88 NSString *autosaveName = [tableView autosaveName]; 89 if (autosaveName != nil) 90 return [NSString stringWithFormat: @"NJRTableDelegate SortContext %@", autosaveName]; 91 else 92 return nil; 93 } 94 95 - (void)_sortData; 96 { 97 SortContext ctxt = { sortingKey, sortDescending }; 98 NSString *sortContextKey = [self _sortContextDefaultKey]; 99 100 if (sortContextKey != nil) { 101 [[NSUserDefaults standardUserDefaults] setObject: 102 [NSDictionary dictionaryWithObjectsAndKeys: sortingKey, @"sortingKey", [NSNumber numberWithBool: sortDescending], @"sortDescending", nil] 103 forKey: [self _sortContextDefaultKey]]; 104 } 105 106 // sort the NSMutableArray 107 [reorderedData sortUsingFunction: ORDER_BY_CONTEXT context: &ctxt]; 108 [tableView reloadData]; 109 } 110 111 - (void)_sortByColumn:(NSTableColumn *)inTableColumn; 112 { 113 NSSet *oldSelection = [self selectedItems]; 114 if (sortingColumn == inTableColumn) { 115 // User clicked same column, change sort order 116 sortDescending = !sortDescending; 117 // Possible optimization: Don't actually re-sort if you just change the sorting direction; instead, just display either the nth item or the (count-1-n)th item depending on ascending/descending.) 118 } else { 119 // User clicked new column, change old/new column headers, save new sorting column, and re-sort the array. 120 if (sortingColumn != nil) { 121 [tableView setIndicatorImage: nil inTableColumn: sortingColumn]; 122 sortDescending = NO; // on initial sort, preserve previous sort order 123 } 124 [self setSortingKey: [inTableColumn identifier]]; 125 [self setSortingColumn: inTableColumn]; 126 [tableView setHighlightedTableColumn: inTableColumn]; 127 } 128 [tableView setIndicatorImage: (sortDescending ? [NSTableView descendingSortIndicator] : [NSTableView ascendingSortIndicator]) inTableColumn: inTableColumn]; 129 [self _positionTypeSelectDisplay]; 130 // Actually sort the data 131 [self _sortData]; 132 [self selectItems: oldSelection]; 133 } 134 135 - (void)_initialSortData; 136 { 137 NSString *sortContextKey = [self _sortContextDefaultKey]; 138 NSDictionary *sortContext; 139 NSString *key; 140 NSTableColumn *column; 141 142 if (sortContextKey == nil) goto noContext; 143 if ( (sortContext = [[NSUserDefaults standardUserDefaults] dictionaryForKey: sortContextKey]) == nil) goto noContext; 144 if ( (key = [sortContext objectForKey: @"sortingKey"]) == nil) goto noContext; 145 if ( (column = [tableView tableColumnWithIdentifier: key]) == nil) goto noContext; 146 sortDescending = [[sortContext objectForKey: @"sortDescending"] boolValue]; 147 [self _sortByColumn: column]; 148 return; 149 150 noContext: 151 sortDescending = NO; 152 [self _sortByColumn: [[tableView tableColumns] objectAtIndex: 0]]; 153 } 154 155 - (NSMutableArray *)reorderedDataForData:(NSArray *)data; 156 { 157 if (reorderedData == nil) { 158 reorderedData = [data mutableCopy]; 159 [self _initialSortData]; 160 } else { 161 NSSet *oldSelection = [self selectedItems]; 162 [reorderedData release]; reorderedData = nil; 163 reorderedData = [data mutableCopy]; 164 [self _sortData]; 165 [self selectItems: oldSelection]; 166 } 167 return reorderedData; 168 } 169 170 #pragma mark type selection 171 172 - (void)_positionTypeSelectDisplay; 173 { 174 [tableView resetTypeSelect]; // avoid extraneous matching 175 if ([tableView typeSelectDisplay] != nil && sortingColumn != nil) { 176 NSControl *typeSelectControl = [tableView typeSelectDisplay]; 177 if ([typeSelectControl isKindOfClass: [NSControl class]]) { 178 NSView *superview = [typeSelectControl superview]; 179 NSRect columnRect = [superview convertRect: [tableView rectOfColumn: [tableView columnWithIdentifier: sortingKey]] fromView: tableView]; 180 // XXX support horizontal scroll bar/clipping (not for Pester, but eventually) 181 NSRect tableScrollFrame = [[tableView enclosingScrollView] frame]; 182 NSRect selectFrame = [typeSelectControl frame]; 183 [superview setNeedsDisplayInRect: selectFrame]; // fix artifacts caused by moving view 184 selectFrame.origin.x = columnRect.origin.x; 185 selectFrame.size.width = columnRect.size.width; 186 [typeSelectControl setAlignment: [[sortingColumn dataCell] alignment]]; 187 [typeSelectControl setFrame: selectFrame]; 188 } 189 } 190 } 191 70 192 #pragma mark saving/restoring selection 71 193 … … 77 199 78 200 while ( (rowNum = [e nextObject]) != nil) { 79 id item = [ oData objectAtIndex: [rowNum intValue]];201 id item = [reorderedData objectAtIndex: [rowNum intValue]]; 80 202 [result addObject: item]; 81 203 } … … 92 214 93 215 while ( (item = [e nextObject]) != nil ) { 94 int row = [ oData indexOfObjectIdenticalTo: item];216 int row = [reorderedData indexOfObjectIdenticalTo: item]; 95 217 if (row != NSNotFound) { 96 218 [tableView selectRow: row byExtendingSelection: YES]; … … 101 223 } 102 224 103 // ---------------------------------------------------------------------------------------- 104 // Sorting 105 // ---------------------------------------------------------------------------------------- 106 107 - (void)sortData 108 { 109 SortContext ctxt = { sortingKey, sortDescending }; 110 NSSet *oldSelection = [self selectedItems]; 111 112 // sort the NSMutableArray 113 [oData sortUsingFunction: ORDER_BY_CONTEXT context: &ctxt]; 114 115 [tableView reloadData]; 116 [self selectItems: oldSelection]; 117 } 118 119 - (void)sortByColumn:(NSTableColumn *)inTableColumn; 120 { 121 if (sortingColumn == inTableColumn) { 122 // User clicked same column, change sort order 123 sortDescending = !sortDescending; 124 // Possible optimization: Don't actually re-sort if you just change the sorting direction; 125 // instead, just display either the nth item or the (count-1-n)th item depending on ascending/descending.) 225 @end 226 227 @implementation NJRTableDelegate (NJRTableViewDelegate) 228 229 - (void)tableView:(NSTableView *)aTableView didClickTableColumn:(NSTableColumn *)inTableColumn 230 { 231 [[tableView window] makeFirstResponder: aTableView]; 232 [self _sortByColumn: inTableColumn]; 233 } 234 235 - (void)tableViewColumnDidResize:(NSNotification *)notification; 236 { 237 [self _positionTypeSelectDisplay]; 238 } 239 240 - (void)tableViewColumnDidMove:(NSNotification *)notification; 241 { 242 [self _positionTypeSelectDisplay]; 243 } 244 245 - (void)tableView:(NSTableView *)aTableView selectRowMatchingString:(NSString *)matchString; 246 { 247 // Look for a highlighted column, presuming we are sorted by that column, and search its values. 248 NSTableColumn *col = [aTableView highlightedTableColumn]; 249 id dataSource = [aTableView dataSource]; 250 int i, rowCount = [reorderedData count]; 251 if (nil == col) return; 252 if (sortDescending) { 253 for ( i = rowCount - 1 ; i >= 0 ; i-- ) { 254 NSComparisonResult order = [matchString caseInsensitiveCompare: 255 [dataSource tableView: aTableView objectValueForTableColumn: col row: i]]; 256 if (order != NSOrderedDescending) break; 257 } 258 if (i < 0) i = 0; 126 259 } else { 127 // User clicked new column, change old/new column headers, 128 // save new sorting column, and re-sort the array. 129 sortDescending = NO; 130 if (nil != sortingColumn) { 131 [tableView setIndicatorImage: nil inTableColumn: sortingColumn]; 132 } 133 [self setSortingKey: [inTableColumn identifier]]; 134 [self setSortingColumn: inTableColumn]; 135 [tableView setHighlightedTableColumn: inTableColumn]; 136 } 137 [tableView setIndicatorImage: (sortDescending ? [NSTableView descendingSortIndicator] : [NSTableView ascendingSortIndicator]) inTableColumn: inTableColumn]; 138 // Actually sort the data 139 [self sortData]; 140 } 141 142 // Sort by whatever column was clicked upon 143 - (void)tableView:(NSTableView*)aTableView didClickTableColumn:(NSTableColumn *)inTableColumn 144 { 145 [[tableView window] makeFirstResponder: aTableView]; // help make this tableView be first responder 146 [self sortByColumn:inTableColumn]; 147 } 148 149 // ---------------------------------------------------------------------------------------- 150 // Alphabetic Type Ahead 151 // ---------------------------------------------------------------------------------------- 152 153 - (void) typeAheadString:(NSString *)inString; 154 { 155 // This general sample looks for a highlighted column, presuming that is that column we are sorted by, and uses that as the lookup key. 156 NSTableColumn *col = [tableView highlightedTableColumn]; 157 if (nil != col) { 158 NSString *key = [col identifier]; 159 int i; 160 for ( i = 0 ; i < [oData count] ; i++ ) { 161 NSDictionary *rowDict = [oData objectAtIndex:i]; 162 NSString *compareTo = [rowDict objectForKey:key]; 163 NSComparisonResult order = [inString caseInsensitiveCompare:compareTo]; 260 for ( i = 0 ; i < rowCount ; i++ ) { 261 NSComparisonResult order = [matchString caseInsensitiveCompare: 262 [dataSource tableView: aTableView objectValueForTableColumn: col row: i]]; 164 263 if (order != NSOrderedDescending) break; 165 264 } 166 // Make sure we're not overflowing the row count. 167 if (i >= [oData count]) { 168 i = [oData count] - 1; 169 } 170 // Now select row i -- either the one we found, or the last row if not found. 171 [tableView selectRow:i byExtendingSelection:NO]; 172 [tableView scrollRowToVisible:i]; 173 } 265 if (i >= rowCount) i = rowCount - 1; 266 } 267 // Now select row i -- either the one we found, or the first/last row if not found. 268 [aTableView selectRow: i byExtendingSelection: NO]; 269 [aTableView scrollRowToVisible: i]; 174 270 } 175 271 -
trunk/Cocoa/Pester/Source/NSTableView-NJRExtensions.h
r34 r51 17 17 - (float)cellHeight; 18 18 19 - (NSArray *)selectedRowIndices;20 21 19 @end -
trunk/Cocoa/Pester/Source/NSTableView-NJRExtensions.m
r34 r51 28 28 + (NSImage *)descendingSortIndicator; 29 29 { 30 NSImage *result = [NSImage imageNamed: @"NSDescendingSortIndicator"];31 if (result == nil && [[NSTableView class] respondsToSelector: @selector(_defaultTableHeaderReverseSortImage)])30 NSImage *result = [NSImage imageNamed: @"NSDescendingSortIndicator"]; 31 if (result == nil && [[NSTableView class] respondsToSelector: @selector(_defaultTableHeaderReverseSortImage)]) 32 32 result = [NSTableView _defaultTableHeaderReverseSortImage]; 33 33 return result; 34 }35 36 - (NSArray *)selectedRowIndices;37 {38 NSEnumerator *theEnum = [self selectedRowEnumerator];39 NSNumber *rowNumber;40 NSMutableArray *rowNumberArray = [NSMutableArray arrayWithCapacity: [self numberOfSelectedRows]];41 42 while (nil != (rowNumber = [theEnum nextObject]) )43 [rowNumberArray addObject: rowNumber];44 45 return rowNumberArray;46 34 } 47 35 -
trunk/Cocoa/Pester/Source/PSAlarm.h
r43 r51 38 38 39 39 - (NSCalendarDate *)date; 40 - (NSCalendarDate *)time; 40 41 - (NSTimeInterval)interval; 41 42 - (NSString *)message; … … 50 51 - (NSString *)invalidMessage; 51 52 52 - (NSComparisonResult)compare:(PSAlarm *)otherAlarm; 53 - (NSComparisonResult)compareDate:(PSAlarm *)otherAlarm; 54 - (NSComparisonResult)compareMessage:(PSAlarm *)otherAlarm; 53 55 54 56 - (BOOL)setTimer; 55 - (void)cancel ;57 - (void)cancelTimer; 56 58 57 59 @end -
trunk/Cocoa/Pester/Source/PSAlarm.m
r43 r51 20 20 21 21 @implementation PSAlarm 22 23 #pragma mark initialize-release 22 24 23 25 + (void)initialize; // XXX change on locale modification, subscribe to NSNotifications … … 41 43 } 42 44 45 #pragma mark private 46 43 47 - (void)_setAlarmDate:(NSCalendarDate *)aDate; 44 48 { … … 50 54 } 51 55 52 - (void)_ invalidate:(NSString *)aMessage;56 - (void)_beInvalid:(NSString *)aMessage; 53 57 { 54 58 alarmType = PSAlarmInvalid; … … 62 66 } 63 67 64 - (void)_ validateForType:(PSAlarmType)type;68 - (void)_beValidWithType:(PSAlarmType)type; 65 69 { 66 70 if (alarmType == PSAlarmSet) return; // already valid … … 75 79 alarmDate = [NSCalendarDate dateWithTimeIntervalSinceNow: alarmInterval]; 76 80 [alarmDate retain]; 77 [self _validateForType: PSAlarmInterval]; 78 } 81 [self _beValidWithType: PSAlarmInterval]; 82 } 83 84 - (void)_setIntervalFromDate; 85 { 86 alarmInterval = [alarmDate timeIntervalSinceNow] + 1; 87 if (alarmInterval <= 0) { 88 [self _beInvalid: @"Please specify an alarm time in the future."]; 89 return; 90 } 91 [self _beValidWithType: PSAlarmDate]; 92 } 93 94 - (NSString *)_alarmTypeString; 95 { 96 switch (alarmType) { 97 case PSAlarmDate: return @"PSAlarmDate"; 98 case PSAlarmInterval: return @"PSAlarmInterval"; 99 case PSAlarmSet: return @"PSAlarmSet"; 100 case PSAlarmInvalid: return @"PSAlarmInvalid"; 101 default: return [NSString stringWithFormat: @"<unknown: %u>", alarmType]; 102 } 103 } 104 105 - (void)_timerExpired:(NSTimer *)aTimer; 106 { 107 [[NSNotificationCenter defaultCenter] postNotificationName: PSAlarmTimerExpiredNotification object: self]; 108 [timer release]; timer = nil; 109 } 110 111 #pragma mark alarm setting 79 112 80 113 - (void)setInterval:(NSTimeInterval)anInterval; … … 82 115 alarmInterval = anInterval; 83 116 if (alarmInterval <= 0) { 84 [self _ invalidate: @"Please specify an alarm interval."]; return;117 [self _beInvalid: @"Please specify an alarm interval."]; return; 85 118 } 86 119 [self _setDateFromInterval]; 87 }88 89 - (void)_setIntervalFromDate;90 {91 alarmInterval = [alarmDate timeIntervalSinceNow] + 1;92 if (alarmInterval <= 0) {93 [self _invalidate: @"Please specify an alarm time in the future."];94 return;95 }96 [self _validateForType: PSAlarmDate];97 120 } 98 121 … … 107 130 NSCalendarDate *calTime, *calDate; 108 131 if (time == nil && date == nil) { 109 [self _ invalidate: @"Please specify an alarm date and time."]; return;132 [self _beInvalid: @"Please specify an alarm date and time."]; return; 110 133 } 111 134 if (time == nil) { 112 [self _ invalidate: @"Please specify an alarm time."]; return;135 [self _beInvalid: @"Please specify an alarm time."]; return; 113 136 } 114 137 if (date == nil) { 115 [self _ invalidate: @"Please specify an alarm date."]; return;138 [self _beInvalid: @"Please specify an alarm date."]; return; 116 139 } 117 140 // XXX if calTime's date is different from the default date, complain … … 119 142 calDate = [NSCalendarDate dateWithTimeIntervalSinceReferenceDate: [date timeIntervalSinceReferenceDate]]; 120 143 if (calTime == nil || calDate == nil) { 121 [self _ invalidate: @"Please specify a reasonable date and time."];144 [self _beInvalid: @"Please specify a reasonable date and time."]; 122 145 } 123 146 [self setForDateAtTime: … … 131 154 } 132 155 133 - (BOOL)isValid; 134 { 135 if (alarmType == PSAlarmDate) [self _setIntervalFromDate]; 136 return (alarmType != PSAlarmInvalid); 156 #pragma mark accessing 157 158 - (NSString *)message; 159 { 160 if (alarmMessage == nil || [alarmMessage isEqualToString: @""]) 161 return @"Alarm!"; 162 return alarmMessage; 137 163 } 138 164 … … 146 172 } 147 173 148 - (NSString *)message; 149 { 150 if (alarmMessage == nil || [alarmMessage isEqualToString: @""]) 151 return @"Alarm!"; 152 return alarmMessage; 174 - (BOOL)isValid; 175 { 176 if (alarmType == PSAlarmDate) [self _setIntervalFromDate]; 177 return (alarmType != PSAlarmInvalid); 153 178 } 154 179 … … 163 188 if (alarmType == PSAlarmInterval) [self _setDateFromInterval]; 164 189 return alarmDate; 190 } 191 192 - (NSCalendarDate *)time; 193 { 194 if (alarmType == PSAlarmInterval) [self _setDateFromInterval]; 195 return [[NSCalendarDate alloc] initWithYear: 0 196 month: 1 197 day: 1 198 hour: [alarmDate hourOfDay] 199 minute: [alarmDate minuteOfHour] 200 second: [alarmDate secondOfMinute] 201 timeZone: nil]; 202 } 203 204 - (NSTimeInterval)interval; 205 { 206 if (alarmType == PSAlarmSet || alarmType == PSAlarmDate) [self _setIntervalFromDate]; 207 return alarmInterval; 208 } 209 210 - (void)addAlert:(PSAlert *)alert; 211 { 212 if (alerts == nil) alerts = [[NSMutableArray alloc] initWithCapacity: 4]; 213 [alerts addObject: alert]; 214 } 215 216 - (void)removeAlerts; 217 { 218 [alerts removeAllObjects]; 219 } 220 221 - (NSArray *)alerts; 222 { 223 return [[alerts copy] autorelease]; 165 224 } 166 225 … … 193 252 } 194 253 195 - (NSTimeInterval)interval; 196 { 197 if (alarmType == PSAlarmSet || alarmType == PSAlarmDate) [self _setIntervalFromDate]; 198 return alarmInterval; 199 } 254 #pragma mark actions 200 255 201 256 - (BOOL)setTimer; … … 204 259 case PSAlarmDate: if (![self isValid]) return NO; 205 260 case PSAlarmInterval: 206 timer = [NSTimer scheduledTimerWithTimeInterval: alarmInterval 207 target: self 208 selector: @selector(_timerExpired:) 209 userInfo: nil 210 repeats: NO]; 261 timer = [NSTimer scheduledTimerWithTimeInterval: alarmInterval target: self selector: @selector(_timerExpired:) userInfo: nil repeats: NO]; 211 262 if (timer != nil) { 212 263 [timer retain]; … … 220 271 } 221 272 222 - (void)cancel ;273 - (void)cancelTimer; 223 274 { 224 275 [timer invalidate]; [timer release]; timer = nil; 225 276 } 226 277 227 - (void)_timerExpired:(NSTimer *)aTimer; 228 { 229 [[NSNotificationCenter defaultCenter] postNotificationName: PSAlarmTimerExpiredNotification object: self]; 230 [timer release]; timer = nil; 231 } 232 233 - (NSString *)_alarmTypeString; 234 { 235 switch (alarmType) { 236 case PSAlarmDate: return @"PSAlarmDate"; 237 case PSAlarmInterval: return @"PSAlarmInterval"; 238 case PSAlarmSet: return @"PSAlarmSet"; 239 case PSAlarmInvalid: return @"PSAlarmInvalid"; 240 default: return [NSString stringWithFormat: @"<unknown: %u>", alarmType]; 241 } 242 } 243 244 - (NSComparisonResult)compare:(PSAlarm *)otherAlarm; 278 #pragma mark comparing 279 280 - (NSComparisonResult)compareDate:(PSAlarm *)otherAlarm; 245 281 { 246 282 return [[self date] compare: [otherAlarm date]]; 247 283 } 248 284 249 - (void)addAlert:(PSAlert *)alert; 250 { 251 if (alerts == nil) alerts = [[NSMutableArray alloc] initWithCapacity: 4]; 252 [alerts addObject: alert]; 253 } 254 255 - (void)removeAlerts; 256 { 257 [alerts removeAllObjects]; 258 } 259 260 - (NSArray *)alerts; 261 { 262 return [[alerts copy] autorelease]; 263 } 285 - (NSComparisonResult)compareMessage:(PSAlarm *)otherAlarm; 286 { 287 return [[self message] caseInsensitiveCompare: [otherAlarm message]]; 288 } 289 290 #pragma mark printing 264 291 265 292 - (NSString *)description; … … 272 299 [NSString stringWithFormat: @"\ntimer: %@", timer] : @""))]; 273 300 } 301 302 #pragma mark archiving 274 303 275 304 - (void)encodeWithCoder:(NSCoder *)coder; -
trunk/Cocoa/Pester/Source/PSAlarmSetController.m
r45 r51 92 92 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(playSoundChanged:) name: NJRQTMediaPopUpButtonMovieChangedNotification object: sound]; 93 93 [voice setDelegate: self]; 94 if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_1) { 94 // XXX still broken under 10.2, check 10.1 behavior and see if subclassing NSComboBox will help 95 // if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_1) { 95 96 // XXX workaround for 10.1.x bug which sets the first responder to the wrong field, but it works if I set the initial first responder to nil... go figure. 96 97 [[self window] setInitialFirstResponder: nil]; 97 }98 // } 98 99 [[self window] makeKeyAndOrderFront: nil]; 99 100 } -
trunk/Cocoa/Pester/Source/PSAlarms.h
r34 r51 22 22 + (PSAlarms *)allAlarms; 23 23 24 - (NSArray *)alarms; 24 25 - (PSAlarm *)nextAlarm; 25 26 - (int)alarmCount; … … 27 28 - (void)removeAlarmAtIndex:(int)index; 28 29 - (void)removeAlarmsAtIndices:(NSArray *)indices; 30 - (void)removeAlarms:(NSSet *)alarmsToRemove; 29 31 30 32 @end -
trunk/Cocoa/Pester/Source/PSAlarms.m
r28 r51 46 46 nextAlarm = nil; 47 47 // sort alarms so earliest is first 48 [alarms sortUsingSelector: @selector(compare :)];48 [alarms sortUsingSelector: @selector(compareDate:)]; 49 49 // find first un-expired alarm 50 50 e = [alarms objectEnumerator]; … … 126 126 } 127 127 128 - (NSArray *)alarms; 129 { 130 return alarms; 131 } 132 128 133 - (int)alarmCount; 129 134 { … … 138 143 - (void)removeAlarmAtIndex:(int)index; 139 144 { 140 [(PSAlarm *)[alarms objectAtIndex: index] cancel ];145 [(PSAlarm *)[alarms objectAtIndex: index] cancelTimer]; 141 146 [alarms removeObjectAtIndex: index]; 142 147 } … … 151 156 while ( (n = [e nextObject]) != nil) { 152 157 alarmIndex = [n intValue]; 153 [(PSAlarm *)[alarms objectAtIndex: alarmIndex] cancel ];158 [(PSAlarm *)[alarms objectAtIndex: alarmIndex] cancelTimer]; 154 159 indexArray[i] = alarmIndex; 155 160 i++; 156 161 } 157 162 [alarms removeObjectsFromIndices: indexArray numIndices: indexCount]; 163 free(indexArray); indexArray = NULL; 158 164 [self _changed]; 159 165 NS_HANDLER … … 164 170 } 165 171 172 - (void)removeAlarms:(NSSet *)alarmsToRemove; 173 { 174 NSEnumerator *e = [alarms objectEnumerator]; 175 PSAlarm *alarm; 176 NSMutableArray *indices = [NSMutableArray arrayWithCapacity: [alarmsToRemove count]]; 177 int alarmIndex = 0; 178 179 while ( (alarm = [e nextObject]) != nil) { 180 if ([alarmsToRemove containsObject: alarm]) 181 [indices addObject: [NSNumber numberWithInt: alarmIndex]]; 182 alarmIndex++; 183 } 184 [self removeAlarmsAtIndices: indices]; 185 } 186 166 187 @end -
trunk/Cocoa/Pester/Source/PSAlarmsController.h
r26 r51 14 14 IBOutlet NSButton *removeButton; 15 15 PSAlarms *alarms; 16 NSArray *reorderedAlarms; 16 17 } 17 18 -
trunk/Cocoa/Pester/Source/PSAlarmsController.m
r34 r51 10 10 #import "PSAlarm.h" 11 11 #import "NSTableView-NJRExtensions.h" 12 12 #import "NJRTableView.h" 13 #import "NJRTableDelegate.h" 13 14 14 15 @implementation PSAlarmsController 16 17 - (void)alarmsChanged; 18 { 19 reorderedAlarms = [[tableView delegate] reorderedDataForData: [alarms alarms]]; 20 } 15 21 16 22 - (id)init; … … 23 29 if (nil == [[NSUserDefaults standardUserDefaults] objectForKey: 24 30 [@"NSWindow Frame " stringByAppendingString: [[self window] frameAutosaveName]]]) 25 {31 { 26 32 [[self window] center]; 27 }33 } 28 34 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(alarmsChanged) name: PSAlarmsDidChangeNotification object: alarms]; 35 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(tableViewSelectionDidChange:) name: NSTableViewSelectionDidChangeNotification object: tableView]; 29 36 [tableView setAutosaveName: @"Alarm list"]; 30 37 [tableView setAutosaveTableColumns: YES]; 31 [ tableView noteNumberOfRowsChanged];38 [self alarmsChanged]; 32 39 [[self window] makeFirstResponder: tableView]; 40 [[self window] setResizeIncrements: NSMakeSize(1, [tableView cellHeight])]; 33 41 } 34 42 return self; 35 43 } 36 44 37 - (void)alarmsChanged; // XXX fix autoselection to be more reasonable, see whatever I did in that _Learning Cocoa_ project I think38 {39 [tableView reloadData];40 [tableView deselectAll: self];41 }42 45 43 46 - (IBAction)remove:(id)sender; 44 47 { 45 [alarms removeAlarms AtIndices: [[tableView selectedRowEnumerator] allObjects]];48 [alarms removeAlarms: [[tableView delegate] selectedItems]]; 46 49 } 47 50 … … 57 60 - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row; 58 61 { 59 PSAlarm *alarm = [ alarms alarmAtIndex: row];62 PSAlarm *alarm = [reorderedAlarms objectAtIndex: row]; 60 63 61 64 if ([[tableColumn identifier] isEqualToString: @"message"]) return [alarm message]; … … 70 73 return nil; 71 74 } 75 @end 76 77 @implementation PSAlarmsController (NJRTableViewDataSource) 78 79 - (void)removeSelectedRowsFromTableView:(NSTableView *)aTableView; 80 { 81 [self remove: aTableView]; 82 } 83 72 84 @end 73 85 -
trunk/Cocoa/Pester/Source/Pester.pbproj/nicholas.pbxuser
r49 r51 12 12 F500E5370359719B01AEEDB1, 13 13 F5B15F74037E42EB01AEEDB1, 14 F562F810037E79EE01AEEDB1,15 14 ); 16 15 executables = ( … … 18 17 ); 19 18 perUserDictionary = { 20 PBXPerProjectTemplateStateSaveDate = 5 8758807;21 "PBXTemplateGeometry-F5 CA7EC8015C06940DCA290F" = {22 ContentSize = "{ 705, 569}";19 PBXPerProjectTemplateStateSaveDate = 59271904; 20 "PBXTemplateGeometry-F5314676015831810DCA290F" = { 21 ContentSize = "{618, 257}"; 23 22 LeftSlideOut = { 24 23 Collapsed = NO; 25 Frame = "{{0, 0}, {705, 569}}"; 24 Frame = "{{0, 23}, {618, 234}}"; 25 Split0 = { 26 ActiveTab = 2; 27 Collapsed = YES; 28 Frame = "{{0, 0}, {618, 234}}"; 29 Split0 = { 30 Frame = "{{1e+06, 1e+06}, {618, 0}}"; 31 }; 32 SplitCount = 1; 33 Tab0 = { 34 Debugger = { 35 Collapsed = NO; 36 Frame = "{{0, 0}, {952, 321}}"; 37 Split0 = { 38 Frame = "{{0, 24}, {952, 297}}"; 39 Split0 = { 40 Frame = "{{0, 0}, {468, 297}}"; 41 }; 42 Split1 = { 43 DebugVariablesTableConfiguration = ( 44 Name, 45 126.803, 46 Value, 47 150.074, 48 Summary, 49 172.123, 50 ); 51 Frame = "{{477, 0}, {475, 297}}"; 52 }; 53 SplitCount = 2; 54 }; 55 SplitCount = 1; 56 Tab0 = { 57 Frame = "{{0, 0}, {100, 50}}"; 58 }; 59 Tab1 = { 60 Frame = "{{0, 0}, {100, 50}}"; 61 }; 62 TabCount = 2; 63 TabsVisible = YES; 64 }; 65 Frame = "{{0, 0}, {952, 321}}"; 66 LauncherConfigVersion = 7; 67 }; 68 Tab1 = { 69 Frame = "{{0, 0}, {781, 452}}"; 70 LauncherConfigVersion = 3; 71 Runner = { 72 Frame = "{{0, 0}, {781, 452}}"; 73 }; 74 }; 75 Tab2 = { 76 BuildMessageFrame = "{{0, 0}, {620, 123}}"; 77 BuildTranscriptFrame = "{{0, 132}, {620, 98}}"; 78 Frame = "{{0, 0}, {618, 228}}"; 79 }; 80 Tab3 = { 81 Frame = "{{0, 0}, {612, 295}}"; 82 }; 83 TabCount = 4; 84 TabsVisible = NO; 85 }; 86 SplitCount = 1; 87 Tab0 = { 88 Frame = "{{0, 0}, {300, 533}}"; 89 GroupTreeTableConfiguration = ( 90 TargetStatusColumn, 91 18, 92 MainColumn, 93 267, 94 ); 95 }; 96 Tab1 = { 97 ClassesFrame = "{{0, 0}, {280, 398}}"; 98 ClassesTreeTableConfiguration = ( 99 PBXBookColumnIdentifier, 100 20, 101 PBXClassColumnIdentifier, 102 237, 103 ); 104 Frame = "{{0, 0}, {278, 659}}"; 105 MembersFrame = "{{0, 407}, {280, 252}}"; 106 MembersTreeTableConfiguration = ( 107 PBXBookColumnIdentifier, 108 20, 109 PBXMethodColumnIdentifier, 110 236, 111 ); 112 }; 113 Tab2 = { 114 Frame = "{{0, 0}, {200, 100}}"; 115 }; 116 Tab3 = { 117 Frame = "{{0, 0}, {200, 100}}"; 118 Split0 = { 119 Frame = "{{0, 0}, {200, 45}}"; 120 TargetTreeTableConfiguration = ( 121 ActiveTarget, 122 16, 123 TargetName, 124 168, 125 ); 126 }; 127 Split1 = { 128 BuildStyleTreeTableConfiguration = ( 129 IsActive, 130 16, 131 Name, 132 169, 133 ); 134 Frame = "{{0, 54}, {200, 46}}"; 135 }; 136 SplitCount = 2; 137 }; 138 Tab4 = { 139 ExecutableTreeTableConfiguration = ( 140 ActiveExecutable, 141 16, 142 ExecutableName, 143 217, 144 ); 145 Frame = "{{0, 0}, {250, 100}}"; 146 }; 147 Tab5 = { 148 BreakpointsTreeTableConfiguration = ( 149 breakpointColumn, 150 197, 151 enabledColumn, 152 31, 153 ); 154 Frame = "{{0, 0}, {250, 100}}"; 155 }; 156 TabCount = 6; 157 TabsVisible = NO; 158 }; 159 StatusViewVisible = YES; 160 Template = F5314676015831810DCA290F; 161 ToolbarVisible = YES; 162 WindowLocation = "{460, 270}"; 163 }; 164 "PBXTemplateGeometry-F5CA7EC9015C08ED0DCA290F" = { 165 ContentSize = "{665, 594}"; 166 LeftSlideOut = { 167 Collapsed = NO; 168 Frame = "{{0, 0}, {665, 594}}"; 169 Split0 = { 170 ActiveTab = 3; 171 Collapsed = NO; 172 Frame = "{{0, 0}, {665, 594}}"; 173 Split0 = { 174 Frame = "{{0, 304}, {665, 290}}"; 175 }; 176 SplitCount = 1; 177 Tab0 = { 178 Debugger = { 179 Collapsed = NO; 180 Frame = "{{0, 0}, {484, 208}}"; 181 Split0 = { 182 Frame = "{{0, 24}, {484, 184}}"; 183 Split0 = { 184 Frame = "{{0, 0}, {236, 184}}"; 185 }; 186 Split1 = { 187 DebugVariablesTableConfiguration = ( 188 Name, 189 48.80299, 190 Value, 191 71.07401, 192 Summary, 193 93.123, 194 ); 195 Frame = "{{245, 0}, {239, 184}}"; 196 }; 197 SplitCount = 2; 198 }; 199 SplitCount = 1; 200 Tab0 = { 201 Frame = "{{0, 0}, {100, 50}}"; 202 }; 203 Tab1 = { 204 Frame = "{{0, 0}, {100, 50}}"; 205 }; 206 TabCount = 2; 207 TabsVisible = YES; 208 }; 209 Frame = "{{0, 0}, {484, 208}}"; 210 LauncherConfigVersion = 7; 211 }; 212 Tab1 = { 213 Frame = "{{0, 0}, {664, 208}}"; 214 LauncherConfigVersion = 3; 215 Runner = { 216 Frame = "{{0, 0}, {664, 208}}"; 217 }; 218 }; 219 Tab2 = { 220 BuildMessageFrame = "{{0, 0}, {666, 43}}"; 221 BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; 222 Frame = "{{0, 0}, {664, 50}}"; 223 }; 224 Tab3 = { 225 Frame = "{{0, 0}, {665, 298}}"; 226 }; 227 TabCount = 4; 228 TabsVisible = NO; 229 }; 230 SplitCount = 1; 231 Tab0 = { 232 Frame = "{{0, 0}, {313, 531}}"; 233 GroupTreeTableConfiguration = ( 234 TargetStatusColumn, 235 18, 236 MainColumn, 237 280, 238 ); 239 }; 240 Tab1 = { 241 ClassesFrame = "{{0, 0}, {280, 398}}"; 242 ClassesTreeTableConfiguration = ( 243 PBXBookColumnIdentifier, 244 20, 245 PBXClassColumnIdentifier, 246 237, 247 ); 248 Frame = "{{0, 0}, {278, 659}}"; 249 MembersFrame = "{{0, 407}, {280, 252}}"; 250 MembersTreeTableConfiguration = ( 251 PBXBookColumnIdentifier, 252 20, 253 PBXMethodColumnIdentifier, 254 236, 255 ); 256 }; 257 Tab2 = { 258 Frame = "{{0, 0}, {200, 100}}"; 259 }; 260 Tab3 = { 261 Frame = "{{0, 0}, {200, 557}}"; 262 Split0 = { 263 Frame = "{{0, 0}, {200, 270}}"; 264 TargetTreeTableConfiguration = ( 265 ActiveTarget, 266 16, 267 TargetName, 268 168, 269 ); 270 }; 271 Split1 = { 272 BuildStyleTreeTableConfiguration = ( 273 IsActive, 274 16, 275 Name, 276 169, 277 ); 278 Frame = "{{0, 279}, {200, 278}}"; 279 }; 280 SplitCount = 2; 281 }; 282 Tab4 = { 283 ExecutableTreeTableConfiguration = ( 284 ActiveExecutable, 285 16, 286 ExecutableName, 287 217, 288 ); 289 Frame = "{{0, 0}, {250, 100}}"; 290 }; 291 Tab5 = { 292 BreakpointsTreeTableConfiguration = ( 293 breakpointColumn, 294 197, 295 enabledColumn, 296 31, 297 ); 298 Frame = "{{0, 0}, {250, 100}}"; 299 }; 300 TabCount = 6; 301 TabsVisible = NO; 302 }; 303 StatusViewVisible = NO; 304 Template = F5CA7EC9015C08ED0DCA290F; 305 ToolbarVisible = NO; 306 WindowLocation = "{69, 216}"; 307 }; 308 "PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = { 309 ContentSize = "{668, 621}"; 310 LeftSlideOut = { 311 Collapsed = NO; 312 Frame = "{{0, 0}, {668, 621}}"; 26 313 Split0 = { 27 314 Collapsed = NO; 28 Frame = "{{0, 0}, { 705, 569}}";29 Split0 = { 30 Frame = "{{0, 0}, { 705, 569}}";315 Frame = "{{0, 0}, {668, 621}}"; 316 Split0 = { 317 Frame = "{{0, 0}, {668, 621}}"; 31 318 }; 32 319 SplitCount = 1; … … 67 354 }; 68 355 Tab1 = { 69 Frame = "{{0, 0}, { 522, 208}}";356 Frame = "{{0, 0}, {664, 208}}"; 70 357 LauncherConfigVersion = 3; 71 358 Runner = { 72 Frame = "{{0, 0}, { 522, 208}}";359 Frame = "{{0, 0}, {664, 208}}"; 73 360 }; 74 361 }; 75 362 Tab2 = { 76 BuildMessageFrame = "{{0, 0}, { 809, 410}}";77 BuildTranscriptFrame = "{{0, 419}, {809, 119}}";78 Frame = "{{0, 0}, { 807, 536}}";363 BuildMessageFrame = "{{0, 0}, {666, 43}}"; 364 BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; 365 Frame = "{{0, 0}, {664, 50}}"; 79 366 }; 80 367 Tab3 = { … … 86 373 SplitCount = 1; 87 374 Tab0 = { 88 Frame = "{{0, 0}, {3 00, 533}}";375 Frame = "{{0, 0}, {313, 531}}"; 89 376 GroupTreeTableConfiguration = ( 90 377 TargetStatusColumn, 91 378 18, 92 379 MainColumn, 93 2 67,380 280, 94 381 ); 95 382 }; … … 115 402 }; 116 403 Tab3 = { 117 Frame = "{{0, 0}, {222, 536}}"; 118 TargetTableConfiguration = ( 119 ActiveObject, 404 Frame = "{{0, 0}, {200, 557}}"; 405 Split0 = { 406 Frame = "{{0, 0}, {200, 270}}"; 407 TargetTreeTableConfiguration = ( 408 ActiveTarget, 409 16, 410 TargetName, 411 168, 412 ); 413 }; 414 Split1 = { 415 BuildStyleTreeTableConfiguration = ( 416 IsActive, 417 16, 418 Name, 419 169, 420 ); 421 Frame = "{{0, 279}, {200, 278}}"; 422 }; 423 SplitCount = 2; 424 }; 425 Tab4 = { 426 ExecutableTreeTableConfiguration = ( 427 ActiveExecutable, 120 428 16, 121 ObjectNames, 122 202.296, 123 ); 124 }; 125 Tab4 = { 429 ExecutableName, 430 217, 431 ); 432 Frame = "{{0, 0}, {250, 100}}"; 433 }; 434 Tab5 = { 126 435 BreakpointsTreeTableConfiguration = ( 127 436 breakpointColumn, … … 130 439 31, 131 440 ); 132 Frame = "{{0, 0}, {250, 528}}";133 }; 134 TabCount = 5;441 Frame = "{{0, 0}, {250, 100}}"; 442 }; 443 TabCount = 6; 135 444 TabsVisible = NO; 136 445 }; 137 446 StatusViewVisible = NO; 138 Template = F5CA7EC 8015C06940DCA290F;139 ToolbarVisible = YES;140 WindowLocation = "{ 11, 351}";447 Template = F5CA7ECB015C094F0DCA290F; 448 ToolbarVisible = NO; 449 WindowLocation = "{361, 189}"; 141 450 }; 142 "PBXTemplateGeometry-F5CA7EC B015C094F0DCA290F" = {143 ContentSize = "{ 668, 621}";451 "PBXTemplateGeometry-F5CA7ECC015C09990DCA290F" = { 452 ContentSize = "{773, 558}"; 144 453 LeftSlideOut = { 145 454 Collapsed = NO; 146 Frame = "{{0, 0}, {668, 621}}"; 455 Frame = "{{0, 23}, {773, 535}}"; 456 Split0 = { 457 ActiveTab = 0; 458 Collapsed = NO; 459 Frame = "{{24, 0}, {749, 535}}"; 460 Split0 = { 461 Frame = "{{0, 337}, {749, 198}}"; 462 }; 463 SplitCount = 1; 464 Tab0 = { 465 Debugger = { 466 ActiveTab = 1; 467 Collapsed = NO; 468 Frame = "{{0, 0}, {749, 331}}"; 469 Split0 = { 470 Frame = "{{0, 127}, {749, 204}}"; 471 Split0 = { 472 Frame = "{{0, 0}, {366, 204}}"; 473 }; 474 Split1 = { 475 DebugVariablesTableConfiguration = ( 476 Name, 477 120.803, 478 Value, 479 116.074, 480 Summary, 481 111.123, 482 ); 483 Frame = "{{375, 0}, {374, 204}}"; 484 }; 485 SplitCount = 2; 486 }; 487 SplitCount = 1; 488 Tab0 = { 489 Frame = "{{0, 0}, {100, 50}}"; 490 }; 491 Tab1 = { 492 Frame = "{{0, 0}, {749, 103}}"; 493 }; 494 TabCount = 2; 495 TabsVisible = YES; 496 }; 497 Frame = "{{0, 0}, {749, 331}}"; 498 LauncherConfigVersion = 7; 499 }; 500 Tab1 = { 501 Frame = "{{0, 0}, {664, 208}}"; 502 LauncherConfigVersion = 3; 503 Runner = { 504 Frame = "{{0, 0}, {664, 208}}"; 505 }; 506 }; 507 Tab2 = { 508 BuildMessageFrame = "{{0, 0}, {666, 43}}"; 509 BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; 510 Frame = "{{0, 0}, {664, 50}}"; 511 }; 512 Tab3 = { 513 Frame = "{{0, 0}, {612, 295}}"; 514 }; 515 TabCount = 4; 516 TabsVisible = NO; 517 }; 518 SplitCount = 1; 519 Tab0 = { 520 Frame = "{{0, 0}, {313, 531}}"; 521 GroupTreeTableConfiguration = ( 522 TargetStatusColumn, 523 18, 524 MainColumn, 525 280, 526 ); 527 }; 528 Tab1 = { 529 ClassesFrame = "{{0, 0}, {280, 398}}"; 530 ClassesTreeTableConfiguration = ( 531 PBXBookColumnIdentifier, 532 20, 533 PBXClassColumnIdentifier, 534 237, 535 ); 536 Frame = "{{0, 0}, {278, 659}}"; 537 MembersFrame = "{{0, 407}, {280, 252}}"; 538 MembersTreeTableConfiguration = ( 539 PBXBookColumnIdentifier, 540 20, 541 PBXMethodColumnIdentifier, 542 236, 543 ); 544 }; 545 Tab2 = { 546 Frame = "{{0, 0}, {200, 100}}"; 547 }; 548 Tab3 = { 549 Frame = "{{0, 0}, {200, 557}}"; 550 Split0 = { 551 Frame = "{{0, 0}, {200, 270}}"; 552 TargetTreeTableConfiguration = ( 553 ActiveTarget, 554 16, 555 TargetName, 556 168, 557 ); 558 }; 559 Split1 = { 560 BuildStyleTreeTableConfiguration = ( 561 IsActive, 562 16, 563 Name, 564 169, 565 ); 566 Frame = "{{0, 279}, {200, 278}}"; 567 }; 568 SplitCount = 2; 569 }; 570 Tab4 = { 571 ExecutableTreeTableConfiguration = ( 572 ActiveExecutable, 573 16, 574 ExecutableName, 575 217, 576 ); 577 Frame = "{{0, 0}, {250, 100}}"; 578 }; 579 Tab5 = { 580 BreakpointsTreeTableConfiguration = ( 581 breakpointColumn, 582 197, 583 enabledColumn, 584 31, 585 ); 586 Frame = "{{0, 0}, {250, 100}}"; 587 }; 588 TabCount = 6; 589 TabsVisible = YES; 590 }; 591 StatusViewVisible = YES; 592 Template = F5CA7ECC015C09990DCA290F; 593 ToolbarVisible = YES; 594 WindowLocation = "{13, 212}"; 595 }; 596 "PBXTemplateGeometry-F5E465990156DFB90DCA290F" = { 597 ContentSize = "{352, 553}"; 598 LeftSlideOut = { 599 ActiveTab = 0; 600 Collapsed = YES; 601 Frame = "{{0, 23}, {352, 530}}"; 147 602 Split0 = { 148 603 Collapsed = NO; 149 Frame = "{{ 0, 0}, {668, 621}}";150 Split0 = { 151 Frame = "{{0, 0}, { 668, 621}}";604 Frame = "{{1e+06, 1e+06}, {0, 530}}"; 605 Split0 = { 606 Frame = "{{0, 0}, {0, 530}}"; 152 607 }; 153 608 SplitCount = 1; … … 207 662 SplitCount = 1; 208 663 Tab0 = { 209 Frame = "{{0, 0}, {3 13, 531}}";664 Frame = "{{0, 0}, {328, 530}}"; 210 665 GroupTreeTableConfiguration = ( 211 666 TargetStatusColumn, 212 667 18, 213 668 MainColumn, 214 2 80,669 295, 215 670 ); 216 671 }; 217 672 Tab1 = { 218 ClassesFrame = "{{0, 0}, { 280, 398}}";673 ClassesFrame = "{{0, 0}, {343, 348}}"; 219 674 ClassesTreeTableConfiguration = ( 220 675 PBXBookColumnIdentifier, 221 676 20, 222 677 PBXClassColumnIdentifier, 223 237,224 ); 225 Frame = "{{0, 0}, { 278, 659}}";226 MembersFrame = "{{0, 407}, {280, 252}}";678 300, 679 ); 680 Frame = "{{0, 0}, {341, 578}}"; 681 MembersFrame = "{{0, 357}, {343, 221}}"; 227 682 MembersTreeTableConfiguration = ( 228 683 PBXBookColumnIdentifier, 229 684 20, 230 685 PBXMethodColumnIdentifier, 231 2 36,686 299, 232 687 ); 233 688 }; 234 689 Tab2 = { 235 Frame = "{{0, 0}, { 200, 100}}";690 Frame = "{{0, 0}, {319, 576}}"; 236 691 }; 237 692 Tab3 = { 238 Frame = "{{0, 0}, {200, 557}}"; 239 TargetTableConfiguration = ( 240 ActiveObject, 693 Frame = "{{0, 0}, {341, 578}}"; 694 Split0 = { 695 Frame = "{{0, 0}, {341, 281}}"; 696 TargetTreeTableConfiguration = ( 697 ActiveTarget, 698 16, 699 TargetName, 700 309, 701 ); 702 }; 703 Split1 = { 704 BuildStyleTreeTableConfiguration = ( 705 IsActive, 706 16, 707 Name, 708 310, 709 ); 710 Frame = "{{0, 290}, {341, 288}}"; 711 }; 712 SplitCount = 2; 713 }; 714 Tab4 = { 715 ExecutableTreeTableConfiguration = ( 716 ActiveExecutable, 241 717 16, 242 ObjectNames, 243 202.296, 244 ); 245 }; 246 Tab4 = { 718 ExecutableName, 719 286, 720 ); 721 Frame = "{{0, 0}, {319, 576}}"; 722 }; 723 Tab5 = { 247 724 BreakpointsTreeTableConfiguration = ( 248 725 breakpointColumn, … … 253 730 Frame = "{{0, 0}, {250, 100}}"; 254 731 }; 255 TabCount = 5; 256 TabsVisible = NO; 257 }; 258 StatusViewVisible = NO; 259 Template = F5CA7ECB015C094F0DCA290F; 260 ToolbarVisible = NO; 261 WindowLocation = "{48, 349}"; 262 }; 263 "PBXTemplateGeometry-F5CA7ECC015C09990DCA290F" = { 264 ContentSize = "{956, 601}"; 265 LeftSlideOut = { 266 ActiveTab = 4; 267 Collapsed = NO; 268 Frame = "{{0, 23}, {956, 578}}"; 269 Split0 = { 270 ActiveTab = 0; 271 Collapsed = NO; 272 Frame = "{{274, 0}, {682, 578}}"; 273 Split0 = { 274 Frame = "{{0, 273}, {682, 305}}"; 275 }; 276 SplitCount = 1; 277 Tab0 = { 278 Debugger = { 279 Collapsed = NO; 280 Frame = "{{0, 0}, {682, 267}}"; 281 Split0 = { 282 Frame = "{{0, 24}, {682, 243}}"; 283 Split0 = { 284 Frame = "{{0, 0}, {328, 243}}"; 285 }; 286 Split1 = { 287 DebugVariablesTableConfiguration = ( 288 Name, 289 93.80298, 290 Value, 291 116.074, 292 Summary, 293 109.123, 294 ); 295 Frame = "{{337, 0}, {345, 243}}"; 296 }; 297 SplitCount = 2; 298 }; 299 SplitCount = 1; 300 Tab0 = { 301 Frame = "{{0, 0}, {100, 50}}"; 302 }; 303 Tab1 = { 304 Frame = "{{0, 0}, {100, 50}}"; 305 }; 306 TabCount = 2; 307 TabsVisible = YES; 308 }; 309 Frame = "{{0, 0}, {682, 267}}"; 310 LauncherConfigVersion = 7; 311 }; 312 Tab1 = { 313 Frame = "{{0, 0}, {664, 208}}"; 314 LauncherConfigVersion = 3; 315 Runner = { 316 Frame = "{{0, 0}, {664, 208}}"; 317 }; 318 }; 319 Tab2 = { 320 BuildMessageFrame = "{{0, 0}, {666, 43}}"; 321 BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; 322 Frame = "{{0, 0}, {664, 50}}"; 323 }; 324 Tab3 = { 325 Frame = "{{0, 0}, {612, 295}}"; 326 }; 327 TabCount = 4; 328 TabsVisible = NO; 329 }; 330 SplitCount = 1; 331 Tab0 = { 332 Frame = "{{0, 0}, {313, 531}}"; 333 GroupTreeTableConfiguration = ( 334 TargetStatusColumn, 335 18, 336 MainColumn, 337 280, 338 ); 339 }; 340 Tab1 = { 341 ClassesFrame = "{{0, 0}, {280, 398}}"; 342 ClassesTreeTableConfiguration = ( 343 PBXBookColumnIdentifier, 344 20, 345 PBXClassColumnIdentifier, 346 237, 347 ); 348 Frame = "{{0, 0}, {278, 659}}"; 349 MembersFrame = "{{0, 407}, {280, 252}}"; 350 MembersTreeTableConfiguration = ( 351 PBXBookColumnIdentifier, 352 20, 353 PBXMethodColumnIdentifier, 354 236, 355 ); 356 }; 357 Tab2 = { 358 Frame = "{{0, 0}, {200, 100}}"; 359 }; 360 Tab3 = { 361 Frame = "{{0, 0}, {200, 557}}"; 362 TargetTableConfiguration = ( 363 ActiveObject, 364 16, 365 ObjectNames, 366 202.296, 367 ); 368 }; 369 Tab4 = { 370 BreakpointsTreeTableConfiguration = ( 371 breakpointColumn, 372 197, 373 enabledColumn, 374 31, 375 ); 376 Frame = "{{0, 0}, {250, 578}}"; 377 }; 378 TabCount = 5; 732 TabCount = 6; 379 733 TabsVisible = YES; 380 734 }; 381 735 StatusViewVisible = YES; 382 Template = F5 CA7ECC015C09990DCA290F;736 Template = F5E465990156DFB90DCA290F; 383 737 ToolbarVisible = YES; 384 WindowLocation = "{ 79, 361}";738 WindowLocation = "{2, 217}"; 385 739 }; 386 740 PBXWorkspaceContents = ( … … 459 813 Split0 = { 460 814 Split0 = { 815 NavContent0 = { 816 bookmark = F562F80B037E5D2101AEEDB1; 817 history = ( 818 F5B163A5037E543A01AEEDB1, 819 ); 820 }; 461 821 NavCount = 1; 462 822 NavGeometry0 = { 463 Frame = "{{0, 0}, {6 18, 150}}";823 Frame = "{{0, 0}, {668, 621}}"; 464 824 NavBarVisible = YES; 465 825 }; … … 494 854 Split0 = { 495 855 Split0 = { 496 NavContent0 = {497 bookmark = F562F814037E7F6101AEEDB1;498 history = (499 F562F813037E7F6101AEEDB1,500 );501 };502 856 NavCount = 1; 503 857 NavGeometry0 = { 504 Frame = "{{0, 0}, {668, 621}}"; 505 NavBarVisible = YES; 506 }; 507 }; 508 SplitCount = 1; 509 Tab0 = { 510 Debugger = { 511 Split0 = { 512 SplitCount = 2; 513 }; 514 SplitCount = 1; 515 TabCount = 2; 516 }; 517 LauncherConfigVersion = 7; 518 }; 519 Tab1 = { 520 LauncherConfigVersion = 3; 521 Runner = { 522 }; 523 }; 524 TabCount = 4; 525 }; 526 SplitCount = 1; 527 Tab1 = { 528 OptionsSetName = "Hierarchy, all classes"; 529 }; 530 TabCount = 5; 531 }; 532 }, 533 { 534 LeftSlideOut = { 535 Split0 = { 536 Split0 = { 537 NavContent0 = { 538 bookmark = F562F818037E7F6101AEEDB1; 539 history = ( 540 F562F815037E7F6101AEEDB1, 541 F562F816037E7F6101AEEDB1, 542 ); 543 prevStack = ( 544 F562F817037E7F6101AEEDB1, 545 ); 546 }; 547 NavCount = 1; 548 NavGeometry0 = { 549 Frame = "{{0, 0}, {682, 305}}"; 858 Frame = "{{0, 0}, {618, 150}}"; 550 859 NavBarVisible = YES; 551 860 }; … … 823 1132 }, 824 1133 { 1134 ContentSize = "{668, 621}"; 1135 LeftSlideOut = { 1136 Collapsed = NO; 1137 Frame = "{{0, 0}, {668, 621}}"; 1138 Split0 = { 1139 Collapsed = NO; 1140 Frame = "{{0, 0}, {668, 621}}"; 1141 Split0 = { 1142 Frame = "{{0, 0}, {668, 621}}"; 1143 }; 1144 SplitCount = 1; 1145 Tab0 = { 1146 Debugger = { 1147 Collapsed = NO; 1148 Frame = "{{0, 0}, {484, 208}}"; 1149 Split0 = { 1150 Frame = "{{0, 24}, {484, 184}}"; 1151 Split0 = { 1152 Frame = "{{0, 0}, {236, 184}}"; 1153 }; 1154 Split1 = { 1155 DebugVariablesTableConfiguration = ( 1156 Name, 1157 123, 1158 Value, 1159 85, 1160 Summary, 1161 62.123, 1162 ); 1163 Frame = "{{245, 0}, {239, 184}}"; 1164 }; 1165 SplitCount = 2; 1166 }; 1167 SplitCount = 1; 1168 Tab0 = { 1169 Frame = "{{0, 0}, {100, 50}}"; 1170 }; 1171 Tab1 = { 1172 Frame = "{{0, 0}, {100, 50}}"; 1173 }; 1174 TabCount = 2; 1175 TabsVisible = YES; 1176 }; 1177 Frame = "{{0, 0}, {484, 208}}"; 1178 LauncherConfigVersion = 7; 1179 }; 1180 Tab1 = { 1181 Frame = "{{0, 0}, {664, 208}}"; 1182 LauncherConfigVersion = 3; 1183 Runner = { 1184 Frame = "{{0, 0}, {664, 208}}"; 1185 }; 1186 }; 1187 Tab2 = { 1188 BuildMessageFrame = "{{0, 0}, {666, 43}}"; 1189 BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; 1190 Frame = "{{0, 0}, {664, 50}}"; 1191 }; 1192 Tab3 = { 1193 Frame = "{{0, 0}, {612, 295}}"; 1194 }; 1195 TabCount = 4; 1196 TabsVisible = NO; 1197 }; 1198 SplitCount = 1; 1199 Tab0 = { 1200 Frame = "{{0, 0}, {313, 531}}"; 1201 GroupTreeTableConfiguration = ( 1202 TargetStatusColumn, 1203 18, 1204 MainColumn, 1205 280, 1206 ); 1207 }; 1208 Tab1 = { 1209 ClassesFrame = "{{0, 0}, {280, 398}}"; 1210 ClassesTreeTableConfiguration = ( 1211 PBXBookColumnIdentifier, 1212 20, 1213 PBXClassColumnIdentifier, 1214 237, 1215 ); 1216 Frame = "{{0, 0}, {278, 659}}"; 1217 MembersFrame = "{{0, 407}, {280, 252}}"; 1218 MembersTreeTableConfiguration = ( 1219 PBXBookColumnIdentifier, 1220 20, 1221 PBXMethodColumnIdentifier, 1222 236, 1223 ); 1224 }; 1225 Tab2 = { 1226 Frame = "{{0, 0}, {200, 100}}"; 1227 }; 1228 Tab3 = { 1229 Frame = "{{0, 0}, {200, 557}}"; 1230 TargetTableConfiguration = ( 1231 ActiveObject, 1232 16, 1233 ObjectNames, 1234 202.296, 1235 ); 1236 }; 1237 Tab4 = { 1238 BreakpointsTreeTableConfiguration = ( 1239 breakpointColumn, 1240 197, 1241 enabledColumn, 1242 31, 1243 ); 1244 Frame = "{{0, 0}, {250, 100}}"; 1245 }; 1246 TabCount = 5; 1247 TabsVisible = NO; 1248 }; 1249 StatusViewVisible = NO; 1250 Template = F5CA7ECB015C094F0DCA290F; 1251 ToolbarVisible = NO; 1252 WindowLocation = "{392, 503}"; 1253 }, 1254 { 825 1255 ContentSize = "{618, 257}"; 826 1256 LeftSlideOut = { … … 878 1308 }; 879 1309 Tab2 = { 880 BuildMessageFrame = "{{0, 0}, {620, 12 2}}";881 BuildTranscriptFrame = "{{0, 13 1}, {620, 99}}";1310 BuildMessageFrame = "{{0, 0}, {620, 123}}"; 1311 BuildTranscriptFrame = "{{0, 132}, {620, 98}}"; 882 1312 Frame = "{{0, 0}, {618, 228}}"; 883 1313 }; … … 944 1374 WindowLocation = "{427, 271}"; 945 1375 }, 946 {947 ContentSize = "{668, 621}";948 LeftSlideOut = {949 Collapsed = NO;950 Frame = "{{0, 0}, {668, 621}}";951 Split0 = {952 Collapsed = NO;953 Frame = "{{0, 0}, {668, 621}}";954 Split0 = {955 Frame = "{{0, 0}, {668, 621}}";956 };957 SplitCount = 1;958 Tab0 = {959 Debugger = {960 Collapsed = NO;961 Frame = "{{0, 0}, {484, 208}}";962 Split0 = {963 Frame = "{{0, 24}, {484, 184}}";964 Split0 = {965 Frame = "{{0, 0}, {236, 184}}";966 };967 Split1 = {968 DebugVariablesTableConfiguration = (969 Name,970 123,971 Value,972 85,973 Summary,974 62.123,975 );976 Frame = "{{245, 0}, {239, 184}}";977 };978 SplitCount = 2;979 };980 SplitCount = 1;981 Tab0 = {982 Frame = "{{0, 0}, {100, 50}}";983 };984 Tab1 = {985 Frame = "{{0, 0}, {100, 50}}";986 };987 TabCount = 2;988 TabsVisible = YES;989 };990 Frame = "{{0, 0}, {484, 208}}";991 LauncherConfigVersion = 7;992 };993 Tab1 = {994 Frame = "{{0, 0}, {664, 208}}";995 LauncherConfigVersion = 3;996 Runner = {997 Frame = "{{0, 0}, {664, 208}}";998 };999 };1000 Tab2 = {1001 BuildMessageFrame = "{{0, 0}, {666, 43}}";1002 BuildTranscriptFrame = "{{0, 52}, {666, 0}}";1003 Frame = "{{0, 0}, {664, 50}}";1004 };1005 Tab3 = {1006 Frame = "{{0, 0}, {612, 295}}";1007 };1008 TabCount = 4;1009 TabsVisible = NO;1010 };1011 SplitCount = 1;1012 Tab0 = {1013 Frame = "{{0, 0}, {313, 531}}";1014 GroupTreeTableConfiguration = (1015 TargetStatusColumn,1016 18,1017 MainColumn,1018 280,1019 );1020 };1021 Tab1 = {1022 ClassesFrame = "{{0, 0}, {280, 398}}";1023 ClassesTreeTableConfiguration = (1024 PBXBookColumnIdentifier,1025 20,1026 PBXClassColumnIdentifier,1027 237,1028 );1029 Frame = "{{0, 0}, {278, 659}}";1030 MembersFrame = "{{0, 407}, {280, 252}}";1031 MembersTreeTableConfiguration = (1032 PBXBookColumnIdentifier,1033 20,1034 PBXMethodColumnIdentifier,1035 236,1036 );1037 };1038 Tab2 = {1039 Frame = "{{0, 0}, {200, 100}}";1040 };1041 Tab3 = {1042 Frame = "{{0, 0}, {200, 557}}";1043 TargetTableConfiguration = (1044 ActiveObject,1045 16,1046 ObjectNames,1047 202.296,1048 );1049 };1050 Tab4 = {1051 BreakpointsTreeTableConfiguration = (1052 breakpointColumn,1053 197,1054 enabledColumn,1055 31,1056 );1057 Frame = "{{0, 0}, {250, 100}}";1058 };1059 TabCount = 5;1060 TabsVisible = NO;1061 };1062 StatusViewVisible = NO;1063 Template = F5CA7ECB015C094F0DCA290F;1064 ToolbarVisible = NO;1065 WindowLocation = "{392, 503}";1066 },1067 {1068 ContentSize = "{956, 601}";1069 LeftSlideOut = {1070 ActiveTab = 4;1071 Collapsed = NO;1072 Frame = "{{0, 23}, {956, 578}}";1073 Split0 = {1074 ActiveTab = 0;1075 Collapsed = NO;1076 Frame = "{{274, 0}, {682, 578}}";1077 Split0 = {1078 Frame = "{{0, 273}, {682, 305}}";1079 };1080 SplitCount = 1;1081 Tab0 = {1082 Debugger = {1083 Collapsed = NO;1084 Frame = "{{0, 0}, {682, 267}}";1085 Split0 = {1086 Frame = "{{0, 24}, {682, 243}}";1087 Split0 = {1088 Frame = "{{0, 0}, {329, 243}}";1089 };1090 Split1 = {1091 DebugVariablesTableConfiguration = (1092 Name,1093 93.80298,1094 Value,1095 116.074,1096 Summary,1097 108.123,1098 );1099 Frame = "{{338, 0}, {344, 243}}";1100 };1101 SplitCount = 2;1102 };1103 SplitCount = 1;1104 Tab0 = {1105 Frame = "{{0, 0}, {100, 50}}";1106 };1107 Tab1 = {1108 Frame = "{{0, 0}, {100, 50}}";1109 };1110 TabCount = 2;1111 TabsVisible = YES;1112 };1113 Frame = "{{0, 0}, {682, 267}}";1114 LauncherConfigVersion = 7;1115 };1116 Tab1 = {1117 Frame = "{{0, 0}, {664, 208}}";1118 LauncherConfigVersion = 3;1119 Runner = {1120 Frame = "{{0, 0}, {664, 208}}";1121 };1122 };1123 Tab2 = {1124 BuildMessageFrame = "{{0, 0}, {666, 43}}";1125 BuildTranscriptFrame = "{{0, 52}, {666, 0}}";1126 Frame = "{{0, 0}, {664, 50}}";1127 };1128 Tab3 = {1129 Frame = "{{0, 0}, {612, 295}}";1130 };1131 TabCount = 4;1132 TabsVisible = NO;1133 };1134 SplitCount = 1;1135 Tab0 = {1136 Frame = "{{0, 0}, {313, 531}}";1137 GroupTreeTableConfiguration = (1138 TargetStatusColumn,1139 18,1140 MainColumn,1141 280,1142 );1143 };1144 Tab1 = {1145 ClassesFrame = "{{0, 0}, {280, 398}}";1146 ClassesTreeTableConfiguration = (1147 PBXBookColumnIdentifier,1148 20,1149 PBXClassColumnIdentifier,1150 237,1151 );1152 Frame = "{{0, 0}, {278, 659}}";1153 MembersFrame = "{{0, 407}, {280, 252}}";1154 MembersTreeTableConfiguration = (1155 PBXBookColumnIdentifier,1156 20,1157 PBXMethodColumnIdentifier,1158 236,1159 );1160 };1161 Tab2 = {1162 Frame = "{{0, 0}, {200, 100}}";1163 };1164 Tab3 = {1165 Frame = "{{0, 0}, {200, 557}}";1166 TargetTableConfiguration = (1167 ActiveObject,1168 16,1169 ObjectNames,1170 202.296,1171 );1172 };1173 Tab4 = {1174 BreakpointsTreeTableConfiguration = (1175 breakpointColumn,1176 197,1177 enabledColumn,1178 31,1179 );1180 Frame = "{{0, 0}, {250, 578}}";1181 };1182 TabCount = 5;1183 TabsVisible = YES;1184 };1185 StatusViewVisible = YES;1186 Template = F5CA7ECC015C09990DCA290F;1187 ToolbarVisible = YES;1188 WindowLocation = "{79, 361}";1189 },1190 1376 ); 1191 PBXWorkspaceStateSaveDate = 5 8758807;1377 PBXWorkspaceStateSaveDate = 59271904; 1192 1378 }; 1193 1379 perUserProjectItems = { 1194 F562F813037E7F6101AEEDB1 = F562F813037E7F6101AEEDB1; 1195 F562F814037E7F6101AEEDB1 = F562F814037E7F6101AEEDB1; 1196 F562F815037E7F6101AEEDB1 = F562F815037E7F6101AEEDB1; 1197 F562F816037E7F6101AEEDB1 = F562F816037E7F6101AEEDB1; 1198 F562F817037E7F6101AEEDB1 = F562F817037E7F6101AEEDB1; 1199 F562F818037E7F6101AEEDB1 = F562F818037E7F6101AEEDB1; 1380 F562F80B037E5D2101AEEDB1 = F562F80B037E5D2101AEEDB1; 1381 F5B163A5037E543A01AEEDB1 = F5B163A5037E543A01AEEDB1; 1200 1382 }; 1201 1383 projectwideBuildSettings = { … … 1231 1413 name = "PSAlarmSetController.m: inAtChanged:"; 1232 1414 rLen = 0; 1233 rLoc = 8 580;1415 rLoc = 8686; 1234 1416 rType = 0; 1235 1417 vrLen = 1674; … … 1241 1423 name = "PSAlarm.m: scheduledTimerWithTarget:selector:"; 1242 1424 rLen = 0; 1243 rLoc = 7029;1425 rLoc = 8289; 1244 1426 rType = 0; 1245 1427 vrLen = 822; … … 1271 1453 name = "PSAlarmsController.m: numberOfRowsInTableView:"; 1272 1454 rLen = 0; 1273 rLoc = 1 720;1455 rLoc = 1925; 1274 1456 rType = 0; 1275 1457 vrLen = 1085; 1276 1458 vrLoc = 0; 1277 1459 }; 1278 F562F810037E79EE01AEEDB1 = { 1279 isa = PBXSymbolicBreakpoint; 1280 state = 1; 1281 symbolName = "-[PSAlarmSetController awakeFromNib]"; 1282 }; 1283 F562F813037E7F6101AEEDB1 = { 1284 fRef = F59DC6D40353C9E601AEEDB1; 1285 isa = PBXBookmark; 1286 }; 1287 F562F814037E7F6101AEEDB1 = { 1288 fRef = F59DC6D40353C9E601AEEDB1; 1460 F562F80B037E5D2101AEEDB1 = { 1461 fRef = F59DC6FD0354188F01AEEDB1; 1289 1462 isa = PBXTextBookmark; 1290 name = " PSAlarmSetController.m: awakeFromNib";1463 name = "NJRDateFormatter.m: initWithDateFormat:allowNaturalLanguage:"; 1291 1464 rLen = 0; 1292 rLoc = 2784;1465 rLoc = 6368; 1293 1466 rType = 0; 1294 vrLen = 1841; 1295 vrLoc = 0; 1296 }; 1297 F562F815037E7F6101AEEDB1 = { 1298 fRef = F59DC6D40353C9E601AEEDB1; 1299 isa = PBXTextBookmark; 1300 name = "PSAlarmSetController.m: awakeFromNib"; 1301 rLen = 51; 1302 rLoc = 3497; 1303 rType = 0; 1304 vrLen = 1188; 1305 vrLoc = 3010; 1306 }; 1307 F562F816037E7F6101AEEDB1 = { 1308 fRef = F5F240CC036A877301FE7503; 1309 isa = PBXTextBookmark; 1310 rLen = 0; 1311 rLoc = 71; 1312 rType = 1; 1313 }; 1314 F562F817037E7F6101AEEDB1 = { 1315 fRef = F59DC6D40353C9E601AEEDB1; 1316 isa = PBXTextBookmark; 1317 name = "PSAlarmSetController.m: awakeFromNib"; 1318 rLen = 51; 1319 rLoc = 3497; 1320 rType = 0; 1321 vrLen = 1188; 1322 vrLoc = 3010; 1323 }; 1324 F562F818037E7F6101AEEDB1 = { 1325 fRef = F5F240CC036A877301FE7503; 1326 isa = PBXTextBookmark; 1327 name = "NJRQTMediaPopUpButton.m: _addRecentMediaFromAliasesData:"; 1328 rLen = 0; 1329 rLoc = 2850; 1330 rType = 0; 1331 vrLen = 580; 1332 vrLoc = 2437; 1467 vrLen = 2132; 1468 vrLoc = 5663; 1333 1469 }; 1334 1470 F596730D0355CFA301407038 = { … … 1372 1508 F515C769037DFB63018DB5B3, 1373 1509 F515C76A037E01E1018DB5B3, 1510 F5B79835035F3A180136A8DD, 1511 F5B7983A035F65070136A8DD, 1374 1512 ); 1375 1513 isa = PBXBookmarkGroup; … … 1391 1529 name = "PSAlarmSetController.m: inAtChanged:"; 1392 1530 rLen = 36; 1393 rLoc = 8 485;1531 rLoc = 8591; 1394 1532 rType = 0; 1395 1533 vrLen = 478; … … 1421 1559 symbolName = "-[NSException raise]"; 1422 1560 }; 1561 F5B163A5037E543A01AEEDB1 = { 1562 fRef = F59DC6FD0354188F01AEEDB1; 1563 isa = PBXTextBookmark; 1564 name = "NJRDateFormatter.m: format:withoutComponent:"; 1565 rLen = 0; 1566 rLoc = 829; 1567 rType = 0; 1568 vrLen = 2132; 1569 vrLoc = 5663; 1570 }; 1571 F5B79835035F3A180136A8DD = { 1572 fRef = F517D63E0356B80C016D68B9; 1573 isa = PBXTextBookmark; 1574 name = "PSAlarmsController.m: alarmsChanged"; 1575 rLen = 0; 1576 rLoc = 384; 1577 rType = 0; 1578 vrLen = 989; 1579 vrLoc = 1167; 1580 }; 1581 F5B7983A035F65070136A8DD = { 1582 fRef = F5B79836035F64F80136A8DD; 1583 isa = PBXTextBookmark; 1584 name = "NJRTableView.m: 1"; 1585 rLen = 0; 1586 rLoc = 0; 1587 rType = 0; 1588 vrLen = 215; 1589 vrLoc = 0; 1590 }; 1423 1591 F5F19881036B90CD01EB0372 = { 1424 1592 fRef = F59DC6D40353C9E601AEEDB1; … … 1426 1594 name = "PSAlarmSetController.m: setAlarm:"; 1427 1595 rLen = 0; 1428 rLoc = 12 078;1596 rLoc = 12184; 1429 1597 rType = 0; 1430 1598 vrLen = 1431; -
trunk/Cocoa/Pester/Source/Pester.pbproj/project.pbxproj
r49 r51 241 241 productReference = 17587328FF379C6511CA2CBB; 242 242 productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> 243 <!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">244 <plist version=\" 1.0\">243 <!DOCTYPE plist SYSTEM \"file://localhost/System/Library/DTDs/PropertyList.dtd\"> 244 <plist version=\"0.9\"> 245 245 <dict> 246 246 <key>CFBundleDevelopmentRegion</key> … … 312 312 F5F19910036D3B3101EB0372, 313 313 F515C768037DFB56018DB5B3, 314 F5B79839035F64F80136A8DD, 315 F5B79868038865B30136A8DD, 314 316 ); 315 317 isa = PBXHeadersBuildPhase; 316 runOnlyForDeploymentPostprocessing = 0;317 318 }; 318 319 29B97328FDCFA39411CA2CEA = { … … 330 331 ); 331 332 isa = PBXResourcesBuildPhase; 332 runOnlyForDeploymentPostprocessing = 0;333 333 }; 334 334 29B9732BFDCFA39411CA2CEA = { … … 369 369 F5F198DB036BE75E01EB0372, 370 370 F5F1990F036D3B3101EB0372, 371 F5B79838035F64F80136A8DD, 372 F5B79867038865B30136A8DD, 371 373 ); 372 374 isa = PBXSourcesBuildPhase; 373 runOnlyForDeploymentPostprocessing = 0;374 375 }; 375 376 29B9732CFDCFA39411CA2CEA = { … … 390 391 ); 391 392 isa = PBXFrameworksBuildPhase; 392 runOnlyForDeploymentPostprocessing = 0;393 393 }; 394 394 //290 … … 631 631 F59DC6FD0354188F01AEEDB1, 632 632 F5F2418A036A910B01FE7503, 633 F5B79866038865B30136A8DD, 634 F5B79865038865B30136A8DD, 633 635 F5F1990E036D3B3101EB0372, 634 636 F5F1990D036D3B3101EB0372, 635 637 F59E4C0E036B43D2016B311C, 636 638 F59E4C0D036B43D2016B311C, 639 F560E30E035787BC01A4E466, 640 F560E30D035787BB01A4E466, 637 641 F5F198DA036BE75E01EB0372, 638 642 F5F198D9036BE75E01EB0372, … … 644 648 F560E314035787F901A4E466 = { 645 649 children = ( 646 F5 60E30E035787BC01A4E466,647 F5 60E30D035787BB01A4E466,650 F5B79837035F64F80136A8DD, 651 F5B79836035F64F80136A8DD, 648 652 F552A8AB0358E8B201AEEDB1, 649 653 F552A8AC0358E8B201AEEDB1, … … 1241 1245 }; 1242 1246 }; 1247 F5B79836035F64F80136A8DD = { 1248 isa = PBXFileReference; 1249 path = NJRTableView.m; 1250 refType = 4; 1251 }; 1252 F5B79837035F64F80136A8DD = { 1253 isa = PBXFileReference; 1254 path = NJRTableView.h; 1255 refType = 4; 1256 }; 1257 F5B79838035F64F80136A8DD = { 1258 fileRef = F5B79836035F64F80136A8DD; 1259 isa = PBXBuildFile; 1260 settings = { 1261 }; 1262 }; 1263 F5B79839035F64F80136A8DD = { 1264 fileRef = F5B79837035F64F80136A8DD; 1265 isa = PBXBuildFile; 1266 settings = { 1267 }; 1268 }; 1269 F5B79865038865B30136A8DD = { 1270 isa = PBXFileReference; 1271 path = "NSCharacterSet-NJRExtensions.m"; 1272 refType = 4; 1273 }; 1274 F5B79866038865B30136A8DD = { 1275 isa = PBXFileReference; 1276 path = "NSCharacterSet-NJRExtensions.h"; 1277 refType = 4; 1278 }; 1279 F5B79867038865B30136A8DD = { 1280 fileRef = F5B79865038865B30136A8DD; 1281 isa = PBXBuildFile; 1282 settings = { 1283 }; 1284 }; 1285 F5B79868038865B30136A8DD = { 1286 fileRef = F5B79866038865B30136A8DD; 1287 isa = PBXBuildFile; 1288 settings = { 1289 }; 1290 }; 1243 1291 F5F19865036B806201EB0372 = { 1244 1292 children = (
Note:
See TracChangeset
for help on using the changeset viewer.