Index: trunk/Cocoa/Pester/Source/Info-Pester.plist
===================================================================
--- trunk/Cocoa/Pester/Source/Info-Pester.plist	(revision 364)
+++ trunk/Cocoa/Pester/Source/Info-Pester.plist	(revision 366)
@@ -24,5 +24,5 @@
 	<string>Pest</string>
 	<key>CFBundleVersion</key>
-	<string>22</string>
+	<string>23</string>
 	<key>NSMainNibFile</key>
 	<string>MainMenu</string>
Index: trunk/Cocoa/Pester/Source/NJRHotKey.m
===================================================================
--- trunk/Cocoa/Pester/Source/NJRHotKey.m	(revision 364)
+++ trunk/Cocoa/Pester/Source/NJRHotKey.m	(revision 366)
@@ -97,6 +97,5 @@
             hotKeyModifierFlags = [[dict objectForKey: PLModifierFlags] unsignedIntValue];
             hotKeyCode = [[dict objectForKey: PLKeyCode] unsignedShortValue];
-	}
-	@catch (NSException *exception) {
+	} @catch (NSException *exception) {
 	}
         if (hotKeyCharacters == nil || hotKeyCode == 0) {
Index: trunk/Cocoa/Pester/Source/PSAlarm.h
===================================================================
--- trunk/Cocoa/Pester/Source/PSAlarm.h	(revision 364)
+++ trunk/Cocoa/Pester/Source/PSAlarm.h	(revision 366)
@@ -48,5 +48,5 @@
 
 - (NSCalendarDate *)date;
-- (NSCalendarDate *)time;
+- (NSDate *)time;
 - (NSTimeInterval)interval;
 - (NSTimeInterval)timeRemaining;
@@ -76,5 +76,5 @@
 - (void)resetTimer; // use after cancel, only effective on set alarms
 
-// 1.1 only, going away when we move to keyed archiving
+// 1.1 only, going away when we move to keyed archiving (or Core Data)
 - (NSDictionary *)propertyListRepresentation;
 - (id)initWithPropertyList:(NSDictionary *)dict;
Index: trunk/Cocoa/Pester/Source/PSAlarm.m
===================================================================
--- trunk/Cocoa/Pester/Source/PSAlarm.m	(revision 364)
+++ trunk/Cocoa/Pester/Source/PSAlarm.m	(revision 366)
@@ -247,14 +247,13 @@
 }
 
-- (NSCalendarDate *)time;
-{
+- (NSDate *)time;
+{
+    // XXX this works, but the result is unlikely to be useful until we move away from NSCalendarDate elsewhere
     if (alarmType == PSAlarmInterval) [self _setDateFromInterval];
-    return [[NSCalendarDate alloc] initWithYear: 0
-                                          month: 1
-                                            day: 1
-                                           hour: [alarmDate hourOfDay]
-                                         minute: [alarmDate minuteOfHour]
-                                         second: [alarmDate secondOfMinute]
-                                       timeZone: nil];
+
+    NSCalendar *calendar = [NSCalendar currentCalendar];
+
+    return [calendar dateFromComponents: 
+	    [calendar components: NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit fromDate: alarmDate]];
 }
 
Index: trunk/Cocoa/Pester/Source/PSSnoozeUntilController.m
===================================================================
--- trunk/Cocoa/Pester/Source/PSSnoozeUntilController.m	(revision 364)
+++ trunk/Cocoa/Pester/Source/PSSnoozeUntilController.m	(revision 366)
@@ -29,5 +29,6 @@
         [PSTimeDateEditor setUpTimeField: timeOfDay dateField: timeDate completions: timeDateCompletions];
         if ([alarm isValid]) {
-            [timeOfDay setObjectValue: [alarm time]];
+	    // [alarm time] works fine for display, but we can't use it overall until we've moved off NSCalendarDate
+            [timeOfDay setObjectValue: [alarm date]];
             [timeDate setObjectValue: [alarm date]];
         }
Index: trunk/Cocoa/Pester/Source/PSSpeechAlert.m
===================================================================
--- trunk/Cocoa/Pester/Source/PSSpeechAlert.m	(revision 364)
+++ trunk/Cocoa/Pester/Source/PSSpeechAlert.m	(revision 366)
@@ -60,5 +60,8 @@
 {
     NSMutableAttributedString *string = [[@"Speak message with voice " small] mutableCopy];
-    [string appendAttributedString: [voice underlined]];
+    NSString *voiceName = [[NSSpeechSynthesizer attributesForVoice: voice] objectForKey: NSVoiceName];
+    if (voiceName == nil)
+	voiceName = voice;
+    [string appendAttributedString: [voiceName underlined]];
     return [string autorelease];
 }
Index: trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.mode2v3
===================================================================
--- trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.mode2v3	(revision 364)
+++ trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.mode2v3	(revision 366)
@@ -198,5 +198,225 @@
 	<array/>
 	<key>OpenEditors</key>
-	<array/>
+	<array>
+		<dict>
+			<key>Content</key>
+			<dict>
+				<key>PBXProjectModuleGUID</key>
+				<string>E150468D0CFD567100DE47E9</string>
+				<key>PBXProjectModuleLabel</key>
+				<string>PSAlarm.m</string>
+				<key>PBXSplitModuleInNavigatorKey</key>
+				<dict>
+					<key>Split0</key>
+					<dict>
+						<key>PBXProjectModuleGUID</key>
+						<string>E150468E0CFD567100DE47E9</string>
+						<key>PBXProjectModuleLabel</key>
+						<string>PSAlarm.m</string>
+						<key>_historyCapacity</key>
+						<integer>0</integer>
+						<key>bookmark</key>
+						<string>E15046B30CFD5BA600DE47E9</string>
+						<key>history</key>
+						<array>
+							<string>E150468F0CFD567100DE47E9</string>
+							<string>E15046A90CFD5AF700DE47E9</string>
+						</array>
+						<key>prevStack</key>
+						<array>
+							<string>E15046900CFD567100DE47E9</string>
+							<string>E15046910CFD567100DE47E9</string>
+						</array>
+					</dict>
+					<key>SplitCount</key>
+					<string>1</string>
+				</dict>
+				<key>StatusBarVisibility</key>
+				<false/>
+			</dict>
+			<key>Geometry</key>
+			<dict>
+				<key>Frame</key>
+				<string>{{0, -1}, {1052, 913}}</string>
+				<key>PBXModuleWindowStatusBarHidden2</key>
+				<true/>
+				<key>RubberWindowFrame</key>
+				<string>179 245 1052 933 0 0 1920 1178 </string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Content</key>
+			<dict>
+				<key>PBXProjectModuleGUID</key>
+				<string>E15046930CFD567100DE47E9</string>
+				<key>PBXProjectModuleLabel</key>
+				<string>PSSnoozeUntilController.m</string>
+				<key>PBXSplitModuleInNavigatorKey</key>
+				<dict>
+					<key>Split0</key>
+					<dict>
+						<key>PBXProjectModuleGUID</key>
+						<string>E15046940CFD567100DE47E9</string>
+						<key>PBXProjectModuleLabel</key>
+						<string>PSSnoozeUntilController.m</string>
+						<key>_historyCapacity</key>
+						<integer>0</integer>
+						<key>bookmark</key>
+						<string>E15046B40CFD5BA600DE47E9</string>
+						<key>history</key>
+						<array>
+							<string>E15046950CFD567100DE47E9</string>
+							<string>E15046AD0CFD5B6400DE47E9</string>
+						</array>
+						<key>prevStack</key>
+						<array>
+							<string>E15046970CFD567100DE47E9</string>
+							<string>E15046980CFD567100DE47E9</string>
+						</array>
+					</dict>
+					<key>SplitCount</key>
+					<string>1</string>
+				</dict>
+				<key>StatusBarVisibility</key>
+				<false/>
+			</dict>
+			<key>Geometry</key>
+			<dict>
+				<key>Frame</key>
+				<string>{{0, -1}, {872, 915}}</string>
+				<key>PBXModuleWindowStatusBarHidden2</key>
+				<true/>
+				<key>RubberWindowFrame</key>
+				<string>688 76 872 935 0 0 1920 1178 </string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Content</key>
+			<dict>
+				<key>PBXProjectModuleGUID</key>
+				<string>E150469E0CFD567100DE47E9</string>
+				<key>PBXProjectModuleLabel</key>
+				<string>PSAlarm.h</string>
+				<key>PBXSplitModuleInNavigatorKey</key>
+				<dict>
+					<key>Split0</key>
+					<dict>
+						<key>PBXProjectModuleGUID</key>
+						<string>E150469F0CFD567100DE47E9</string>
+						<key>PBXProjectModuleLabel</key>
+						<string>PSAlarm.h</string>
+						<key>_historyCapacity</key>
+						<integer>0</integer>
+						<key>bookmark</key>
+						<string>E15046B50CFD5BA600DE47E9</string>
+						<key>history</key>
+						<array>
+							<string>E15046A00CFD567100DE47E9</string>
+							<string>E15046A10CFD567100DE47E9</string>
+						</array>
+						<key>prevStack</key>
+						<array>
+							<string>E15046A20CFD567100DE47E9</string>
+							<string>E15046A30CFD567100DE47E9</string>
+							<string>E15046A40CFD567100DE47E9</string>
+						</array>
+					</dict>
+					<key>SplitCount</key>
+					<string>1</string>
+				</dict>
+				<key>StatusBarVisibility</key>
+				<false/>
+			</dict>
+			<key>Geometry</key>
+			<dict>
+				<key>Frame</key>
+				<string>{{0, -1}, {1016, 966}}</string>
+				<key>PBXModuleWindowStatusBarHidden2</key>
+				<true/>
+				<key>RubberWindowFrame</key>
+				<string>466 188 1016 986 0 0 1920 1178 </string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Content</key>
+			<dict>
+				<key>PBXProjectModuleGUID</key>
+				<string>E150469A0CFD567100DE47E9</string>
+				<key>PBXProjectModuleLabel</key>
+				<string>PSTimeDateEditor.m</string>
+				<key>PBXSplitModuleInNavigatorKey</key>
+				<dict>
+					<key>Split0</key>
+					<dict>
+						<key>PBXProjectModuleGUID</key>
+						<string>E150469B0CFD567100DE47E9</string>
+						<key>PBXProjectModuleLabel</key>
+						<string>PSTimeDateEditor.m</string>
+						<key>_historyCapacity</key>
+						<integer>0</integer>
+						<key>bookmark</key>
+						<string>E15046B60CFD5BA600DE47E9</string>
+						<key>history</key>
+						<array>
+							<string>E150469C0CFD567100DE47E9</string>
+						</array>
+					</dict>
+					<key>SplitCount</key>
+					<string>1</string>
+				</dict>
+				<key>StatusBarVisibility</key>
+				<false/>
+			</dict>
+			<key>Geometry</key>
+			<dict>
+				<key>Frame</key>
+				<string>{{0, -1}, {889, 678}}</string>
+				<key>PBXModuleWindowStatusBarHidden2</key>
+				<true/>
+				<key>RubberWindowFrame</key>
+				<string>102 123 889 698 0 0 1920 1178 </string>
+			</dict>
+		</dict>
+		<dict>
+			<key>Content</key>
+			<dict>
+				<key>PBXProjectModuleGUID</key>
+				<string>E15046A60CFD567100DE47E9</string>
+				<key>PBXProjectModuleLabel</key>
+				<string>PSAlarmNotifierController.m</string>
+				<key>PBXSplitModuleInNavigatorKey</key>
+				<dict>
+					<key>Split0</key>
+					<dict>
+						<key>PBXProjectModuleGUID</key>
+						<string>E15046A70CFD567100DE47E9</string>
+						<key>PBXProjectModuleLabel</key>
+						<string>PSAlarmNotifierController.m</string>
+						<key>_historyCapacity</key>
+						<integer>0</integer>
+						<key>bookmark</key>
+						<string>E15046B70CFD5BA600DE47E9</string>
+						<key>history</key>
+						<array>
+							<string>E15046760CFD507900DE47E9</string>
+						</array>
+					</dict>
+					<key>SplitCount</key>
+					<string>1</string>
+				</dict>
+				<key>StatusBarVisibility</key>
+				<false/>
+			</dict>
+			<key>Geometry</key>
+			<dict>
+				<key>Frame</key>
+				<string>{{0, -1}, {820, 819}}</string>
+				<key>PBXModuleWindowStatusBarHidden2</key>
+				<true/>
+				<key>RubberWindowFrame</key>
+				<string>613 82 820 839 0 0 1920 1178 </string>
+			</dict>
+		</dict>
+	</array>
 	<key>PerspectiveWidths</key>
 	<array>
@@ -262,7 +482,4 @@
 										<string>080E96DDFE201D6D7F000001</string>
 										<string>F560E311035787D501A4E466</string>
-										<string>F560E314035787F901A4E466</string>
-										<string>F59E47AF036AAC31016B311C</string>
-										<string>F560E312035787E001A4E466</string>
 										<string>29B97317FDCFA39411CA2CEA</string>
 										<string>E10E71F3040C335800050002</string>
@@ -273,11 +490,12 @@
 									<array>
 										<array>
-											<integer>110</integer>
-											<integer>108</integer>
+											<integer>22</integer>
+											<integer>4</integer>
+											<integer>1</integer>
 											<integer>0</integer>
 										</array>
 									</array>
 									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-									<string>{{0, 1497}, {334, 441}}</string>
+									<string>{{0, 596}, {334, 441}}</string>
 								</dict>
 								<key>PBXTopSmartGroupGIDs</key>
@@ -438,6 +656,6 @@
 			<key>TableOfContents</key>
 			<array>
-				<string>E15045D00CFCF47100DE47E9</string>
-				<string>E15045D10CFCF47100DE47E9</string>
+				<string>E15046720CFD4F8A00DE47E9</string>
+				<string>E15046730CFD4F8A00DE47E9</string>
 				<string>1C9437FD063B20B00039CFAC</string>
 				<string>1C9437FE063B20B00039CFAC</string>
@@ -472,5 +690,13 @@
 	<key>WindowOrderList</key>
 	<array>
-		<string>E1B123120CF664D6004975AA</string>
+		<string>1C530D54069F1CE1000CFCEE</string>
+		<string>E15046A60CFD567100DE47E9</string>
+		<string>1C530D52069F1CE1000CFCEE</string>
+		<string>E150469A0CFD567100DE47E9</string>
+		<string>1C530D5B069F1CE1000CFCEE</string>
+		<string>1C530D57069F1CE1000CFCEE</string>
+		<string>E150469E0CFD567100DE47E9</string>
+		<string>E15046930CFD567100DE47E9</string>
+		<string>E150468D0CFD567100DE47E9</string>
 		<string>/Users/nicholas/Documents/Development/Pester/Source/Pester.xcodeproj</string>
 	</array>
@@ -636,5 +862,5 @@
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>NJRValidatingField.h</string>
+								<string>PSAlarm.m</string>
 								<key>StatusBarVisibility</key>
 								<true/>
@@ -692,5 +918,5 @@
 			<array>
 				<string>1C530D52069F1CE1000CFCEE</string>
-				<string>E15043790CFB91AF00DE47E9</string>
+				<string>E150467F0CFD54FF00DE47E9</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
@@ -703,5 +929,5 @@
 			<string>1C530D52069F1CE1000CFCEE</string>
 			<key>WindowToolIsVisible</key>
-			<false/>
+			<true/>
 		</dict>
 		<dict>
@@ -734,6 +960,6 @@
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {445, 368}}</string>
-											<string>{{445, 0}, {536, 368}}</string>
+											<string>{{0, 0}, {445, 375}}</string>
+											<string>{{445, 0}, {536, 375}}</string>
 										</array>
 									</dict>
@@ -750,6 +976,6 @@
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {981, 368}}</string>
-											<string>{{0, 368}, {981, 350}}</string>
+											<string>{{0, 0}, {981, 375}}</string>
+											<string>{{0, 375}, {981, 343}}</string>
 										</array>
 									</dict>
@@ -784,5 +1010,5 @@
 									</array>
 									<key>Frame</key>
-									<string>{{445, 0}, {536, 368}}</string>
+									<string>{{445, 0}, {536, 375}}</string>
 									<key>RubberWindowFrame</key>
 									<string>843 200 981 759 0 0 1920 1178 </string>
@@ -812,11 +1038,11 @@
 			<array>
 				<string>1C530D54069F1CE1000CFCEE</string>
-				<string>E15043670CFB8D4800DE47E9</string>
+				<string>E15046800CFD54FF00DE47E9</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>E15043680CFB8D4800DE47E9</string>
-				<string>E15043690CFB8D4800DE47E9</string>
-				<string>E150436A0CFB8D4800DE47E9</string>
-				<string>E150436B0CFB8D4800DE47E9</string>
-				<string>E150436C0CFB8D4800DE47E9</string>
+				<string>E15046810CFD54FF00DE47E9</string>
+				<string>E15046820CFD54FF00DE47E9</string>
+				<string>E15046830CFD54FF00DE47E9</string>
+				<string>E15046840CFD54FF00DE47E9</string>
+				<string>E15046850CFD54FF00DE47E9</string>
 			</array>
 			<key>ToolbarConfiguration</key>
@@ -850,5 +1076,5 @@
 										<string>1CDD528C0622207200134675</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>PSApplication.m</string>
+										<string>PSAlarm.m</string>
 										<key>StatusBarVisibility</key>
 										<true/>
@@ -908,6 +1134,6 @@
 			<array>
 				<string>1C530D57069F1CE1000CFCEE</string>
-				<string>E15043970CFBA77500DE47E9</string>
-				<string>E15043980CFBA77500DE47E9</string>
+				<string>E15046870CFD54FF00DE47E9</string>
+				<string>E15046880CFD54FF00DE47E9</string>
 				<string>1CDD528C0622207200134675</string>
 				<string>1CD0528E0623707200166675</string>
@@ -918,5 +1144,5 @@
 			<string>1C530D57069F1CE1000CFCEE</string>
 			<key>WindowToolIsVisible</key>
-			<false/>
+			<true/>
 		</dict>
 		<dict>
@@ -974,5 +1200,5 @@
 			<array>
 				<string>1C530D5B069F1CE1000CFCEE</string>
-				<string>E150436D0CFB8D4800DE47E9</string>
+				<string>E15046890CFD54FF00DE47E9</string>
 				<string>1C78EAAC065D492600B07095</string>
 			</array>
@@ -984,5 +1210,5 @@
 			<string>1C530D5B069F1CE1000CFCEE</string>
 			<key>WindowToolIsVisible</key>
-			<false/>
+			<true/>
 		</dict>
 		<dict>
@@ -1115,5 +1341,5 @@
 			<array>
 				<string>E1B123120CF664D6004975AA</string>
-				<string>E150465E0CFCFB0200DE47E9</string>
+				<string>E15046670CFD45AE00DE47E9</string>
 				<string>1C78EAB2065D492600B07095</string>
 				<string>1CD052920623707200166675</string>
@@ -1126,5 +1352,5 @@
 			<string>E1B123120CF664D6004975AA</string>
 			<key>WindowToolIsVisible</key>
-			<true/>
+			<false/>
 		</dict>
 		<dict>
Index: trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.pbxuser
===================================================================
--- trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.pbxuser	(revision 364)
+++ trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.pbxuser	(revision 366)
@@ -74,5 +74,5 @@
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 217904241;
+			PBXPerProjectTemplateStateSaveDate = 217930680;
 			"PBXTemplateGeometry-F5314676015831810DCA290F" = {
 				ContentSize = "{618, 257}";
@@ -793,5 +793,27 @@
 				},
 			);
-			PBXWorkspaceStateSaveDate = 217904241;
+			PBXWorkspaceStateSaveDate = 217930680;
+		};
+		perUserProjectItems = {
+			E15046760CFD507900DE47E9 = E15046760CFD507900DE47E9 /* PBXBookmark */;
+			E150468F0CFD567100DE47E9 = E150468F0CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046900CFD567100DE47E9 = E15046900CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046910CFD567100DE47E9 = E15046910CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046950CFD567100DE47E9 = E15046950CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046970CFD567100DE47E9 = E15046970CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046980CFD567100DE47E9 = E15046980CFD567100DE47E9 /* PBXTextBookmark */;
+			E150469C0CFD567100DE47E9 = E150469C0CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046A00CFD567100DE47E9 = E15046A00CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046A10CFD567100DE47E9 = E15046A10CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046A20CFD567100DE47E9 = E15046A20CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046A30CFD567100DE47E9 = E15046A30CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046A40CFD567100DE47E9 = E15046A40CFD567100DE47E9 /* PBXTextBookmark */;
+			E15046A90CFD5AF700DE47E9 = E15046A90CFD5AF700DE47E9 /* PBXTextBookmark */;
+			E15046AD0CFD5B6400DE47E9 = E15046AD0CFD5B6400DE47E9 /* PBXTextBookmark */;
+			E15046B30CFD5BA600DE47E9 = E15046B30CFD5BA600DE47E9 /* PBXTextBookmark */;
+			E15046B40CFD5BA600DE47E9 = E15046B40CFD5BA600DE47E9 /* PBXTextBookmark */;
+			E15046B50CFD5BA600DE47E9 = E15046B50CFD5BA600DE47E9 /* PBXTextBookmark */;
+			E15046B60CFD5BA600DE47E9 = E15046B60CFD5BA600DE47E9 /* PBXTextBookmark */;
+			E15046B70CFD5BA600DE47E9 = E15046B70CFD5BA600DE47E9 /* PBXTextBookmark */;
 		};
 		sourceControlManager = E1B11EDC0CF5F2EB004975AA /* Source Control */;
@@ -825,7 +847,7 @@
 	E11373150439FCC700050002 /* NJRHotKey.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {830, 1298}}";
-			sepNavSelRange = "{2509, 35}";
-			sepNavVisRange = "{1321, 1515}";
+			sepNavIntBoundsRect = "{{0, 0}, {830, 1287}}";
+			sepNavSelRange = "{2509, 0}";
+			sepNavVisRange = "{1299, 1536}";
 			sepNavWindowFrame = "{{199, 307}, {889, 698}}";
 		};
@@ -920,4 +942,192 @@
 			sepNavWindowFrame = "{{15, 49}, {834, 1124}}";
 		};
+	};
+	E15046760CFD507900DE47E9 /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = F59DC6DC0353DE5101AEEDB1 /* PSAlarmNotifierController.m */;
+	};
+	E150468F0CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB40354E7DA01AEEDB1 /* PSAlarm.h */;
+		name = "PSAlarm.h: 50";
+		rLen = 0;
+		rLoc = 1577;
+		rType = 0;
+		vrLen = 2637;
+		vrLoc = 0;
+	};
+	E15046900CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB50354E7DA01AEEDB1 /* PSAlarm.m */;
+		name = "PSAlarm.m: 249";
+		rLen = 0;
+		rLoc = 7961;
+		rType = 0;
+		vrLen = 2044;
+		vrLoc = 6587;
+	};
+	E15046910CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB40354E7DA01AEEDB1 /* PSAlarm.h */;
+		name = "PSAlarm.h: 50";
+		rLen = 0;
+		rLoc = 1577;
+		rType = 0;
+		vrLen = 2637;
+		vrLoc = 0;
+	};
+	E15046950CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = E1DEF10203FF816300050002 /* PSSnoozeUntilController.h */;
+		name = "PSSnoozeUntilController.h: 30";
+		rLen = 0;
+		rLoc = 1039;
+		rType = 0;
+		vrLen = 1148;
+		vrLoc = 0;
+	};
+	E15046970CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = E1DEF10303FF816300050002 /* PSSnoozeUntilController.m */;
+		name = "PSSnoozeUntilController.m: 25";
+		rLen = 0;
+		rLoc = 742;
+		rType = 0;
+		vrLen = 2909;
+		vrLoc = 47;
+	};
+	E15046980CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = E1DEF10203FF816300050002 /* PSSnoozeUntilController.h */;
+		name = "PSSnoozeUntilController.h: 30";
+		rLen = 0;
+		rLoc = 1039;
+		rType = 0;
+		vrLen = 1148;
+		vrLoc = 0;
+	};
+	E150469C0CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = E1DEF117040014EB00050002 /* PSTimeDateEditor.m */;
+		rLen = 1;
+		rLoc = 11;
+		rType = 1;
+	};
+	E15046A00CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB50354E7DA01AEEDB1 /* PSAlarm.m */;
+		name = "PSAlarm.m: 83";
+		rLen = 0;
+		rLoc = 2669;
+		rType = 0;
+		vrLen = 2408;
+		vrLoc = 932;
+	};
+	E15046A10CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB40354E7DA01AEEDB1 /* PSAlarm.h */;
+		name = "PSAlarm.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 2636;
+		vrLoc = 0;
+	};
+	E15046A20CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB50354E7DA01AEEDB1 /* PSAlarm.m */;
+		name = "PSAlarm.m: 49";
+		rLen = 0;
+		rLoc = 1836;
+		rType = 0;
+		vrLen = 2668;
+		vrLoc = 0;
+	};
+	E15046A30CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB40354E7DA01AEEDB1 /* PSAlarm.h */;
+		name = "PSAlarm.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 2636;
+		vrLoc = 0;
+	};
+	E15046A40CFD567100DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB50354E7DA01AEEDB1 /* PSAlarm.m */;
+		name = "PSAlarm.m: 83";
+		rLen = 0;
+		rLoc = 2669;
+		rType = 0;
+		vrLen = 2408;
+		vrLoc = 932;
+	};
+	E15046A90CFD5AF700DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB50354E7DA01AEEDB1 /* PSAlarm.m */;
+		rLen = 14;
+		rLoc = 7839;
+		rType = 0;
+	};
+	E15046AD0CFD5B6400DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = E1DEF10303FF816300050002 /* PSSnoozeUntilController.m */;
+		name = "PSSnoozeUntilController.m: 33";
+		rLen = 4;
+		rLoc = 1177;
+		rType = 0;
+		vrLen = 2305;
+		vrLoc = 3089;
+	};
+	E15046B30CFD5BA600DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB50354E7DA01AEEDB1 /* PSAlarm.m */;
+		name = "PSAlarm.m: 253";
+		rLen = 0;
+		rLoc = 8066;
+		rType = 0;
+		vrLen = 1902;
+		vrLoc = 7055;
+	};
+	E15046B40CFD5BA600DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = E1DEF10303FF816300050002 /* PSSnoozeUntilController.m */;
+		name = "PSSnoozeUntilController.m: 70";
+		rLen = 5;
+		rLoc = 2643;
+		rType = 0;
+		vrLen = 2997;
+		vrLoc = 1131;
+	};
+	E15046B50CFD5BA600DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59F6CB40354E7DA01AEEDB1 /* PSAlarm.h */;
+		name = "PSAlarm.h: 48";
+		rLen = 0;
+		rLoc = 1545;
+		rType = 0;
+		vrLen = 2643;
+		vrLoc = 0;
+	};
+	E15046B60CFD5BA600DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = E1DEF117040014EB00050002 /* PSTimeDateEditor.m */;
+		name = "PSTimeDateEditor.m: 23";
+		rLen = 0;
+		rLoc = 829;
+		rType = 0;
+		vrLen = 2238;
+		vrLoc = 0;
+	};
+	E15046B70CFD5BA600DE47E9 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = F59DC6DC0353DE5101AEEDB1 /* PSAlarmNotifierController.m */;
+		name = "PSAlarmNotifierController.m: 97";
+		rLen = 43;
+		rLoc = 3102;
+		rType = 0;
+		vrLen = 2023;
+		vrLoc = 2791;
 	};
 	E162698303B6189000000028 /* NSTableView-NJRExtensions.m */ = {
@@ -1164,9 +1374,16 @@
 		};
 	};
+	E1DEF10203FF816300050002 /* PSSnoozeUntilController.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {813, 899}}";
+			sepNavSelRange = "{1039, 0}";
+			sepNavVisRange = "{0, 1148}";
+		};
+	};
 	E1DEF10303FF816300050002 /* PSSnoozeUntilController.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {813, 1859}}";
-			sepNavSelRange = "{1020, 0}";
-			sepNavVisRange = "{0, 2780}";
+			sepNavIntBoundsRect = "{{0, 0}, {813, 1881}}";
+			sepNavSelRange = "{2643, 5}";
+			sepNavVisRange = "{1131, 2997}";
 			sepNavWindowFrame = "{{107, 154}, {872, 935}}";
 		};
@@ -1182,7 +1399,7 @@
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {830, 671}}";
-			sepNavSelRange = "{1543, 0}";
+			sepNavSelRange = "{829, 0}";
 			sepNavVisRange = "{0, 2238}";
-			sepNavWindowFrame = "{{835, 4}, {889, 698}}";
+			sepNavWindowFrame = "{{102, 123}, {889, 698}}";
 		};
 	};
@@ -1366,7 +1583,7 @@
 	F59DC6DC0353DE5101AEEDB1 /* PSAlarmNotifierController.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 2391}}";
-			sepNavSelRange = "{4583, 27}";
-			sepNavVisRange = "{4327, 730}";
+			sepNavIntBoundsRect = "{{0, 0}, {761, 2267}}";
+			sepNavSelRange = "{3102, 43}";
+			sepNavVisRange = "{2791, 2023}";
 			sepNavWindowFrame = "{{613, 82}, {820, 839}}";
 		};
@@ -1444,5 +1661,5 @@
 			sepNavIntBoundsRect = "{{0, 0}, {813, 1045}}";
 			sepNavSelRange = "{1054, 0}";
-			sepNavVisRange = "{358, 2980}";
+			sepNavVisRange = "{318, 3020}";
 			sepNavWindowFrame = "{{38, 217}, {872, 935}}";
 		};
@@ -1496,15 +1713,15 @@
 	F59F6CB40354E7DA01AEEDB1 /* PSAlarm.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {993, 913}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 2636}";
-			sepNavWindowFrame = "{{15, 240}, {1052, 933}}";
+			sepNavIntBoundsRect = "{{0, 0}, {957, 950}}";
+			sepNavSelRange = "{1545, 0}";
+			sepNavVisRange = "{0, 2643}";
+			sepNavWindowFrame = "{{466, 188}, {1016, 986}}";
 		};
 	};
 	F59F6CB50354E7DA01AEEDB1 /* PSAlarm.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {993, 6490}}";
-			sepNavSelRange = "{20070, 0}";
-			sepNavVisRange = "{17193, 2959}";
+			sepNavIntBoundsRect = "{{0, 0}, {993, 6688}}";
+			sepNavSelRange = "{8066, 0}";
+			sepNavVisRange = "{7055, 1902}";
 			sepNavWindowFrame = "{{466, 241}, {1052, 933}}";
 		};
Index: trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj
===================================================================
--- trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj	(revision 364)
+++ trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj	(revision 366)
@@ -947,5 +947,5 @@
 			buildSettings = {
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 22;
+				CURRENT_PROJECT_VERSION = 23;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
@@ -985,5 +985,5 @@
 			buildSettings = {
 				COPY_PHASE_STRIP = YES;
-				CURRENT_PROJECT_VERSION = 22;
+				CURRENT_PROJECT_VERSION = 23;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
