Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/nicholas.mode2
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/nicholas.mode2	(revision 182)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/nicholas.mode2	(revision 182)
@@ -0,0 +1,1328 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActivePerspectiveName</key>
+	<string>Project</string>
+	<key>AllowedModules</key>
+	<array>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXSmartGroupTreeModule</string>
+			<key>Name</key>
+			<string>Groups and Files Outline View</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXNavigatorGroup</string>
+			<key>Name</key>
+			<string>Editor</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>XCTaskListModule</string>
+			<key>Name</key>
+			<string>Task List</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>XCDetailModule</string>
+			<key>Name</key>
+			<string>File and Smart Group Detail Viewer</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>1</string>
+			<key>Module</key>
+			<string>PBXBuildResultsModule</string>
+			<key>Name</key>
+			<string>Detailed Build Results Viewer</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>1</string>
+			<key>Module</key>
+			<string>PBXProjectFindModule</string>
+			<key>Name</key>
+			<string>Project Batch Find Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXRunSessionModule</string>
+			<key>Name</key>
+			<string>Run Log</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXBookmarksModule</string>
+			<key>Name</key>
+			<string>Bookmarks Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXClassBrowserModule</string>
+			<key>Name</key>
+			<string>Class Browser</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXCVSModule</string>
+			<key>Name</key>
+			<string>Source Code Control Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXDebugBreakpointsModule</string>
+			<key>Name</key>
+			<string>Debug Breakpoints Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>XCDockableInspector</string>
+			<key>Name</key>
+			<string>Inspector</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXOpenQuicklyModule</string>
+			<key>Name</key>
+			<string>Open Quickly Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>1</string>
+			<key>Module</key>
+			<string>PBXDebugSessionModule</string>
+			<key>Name</key>
+			<string>Debugger</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>1</string>
+			<key>Module</key>
+			<string>PBXDebugCLIModule</string>
+			<key>Name</key>
+			<string>Debug Console</string>
+		</dict>
+	</array>
+	<key>Description</key>
+	<string>CondensedDescriptionKey</string>
+	<key>DockingSystemVisible</key>
+	<false/>
+	<key>Extension</key>
+	<string>mode2</string>
+	<key>FavBarConfig</key>
+	<dict>
+		<key>PBXProjectModuleGUID</key>
+		<string>E18B482E082F08E9000E96F5</string>
+		<key>XCBarModuleItemNames</key>
+		<dict/>
+		<key>XCBarModuleItems</key>
+		<array/>
+	</dict>
+	<key>FirstTimeWindowDisplayed</key>
+	<false/>
+	<key>Identifier</key>
+	<string>com.apple.perspectives.project.mode2</string>
+	<key>MajorVersion</key>
+	<integer>32</integer>
+	<key>MinorVersion</key>
+	<integer>0</integer>
+	<key>Name</key>
+	<string>Condensed</string>
+	<key>Notifications</key>
+	<array/>
+	<key>OpenEditors</key>
+	<array/>
+	<key>PerspectiveWidths</key>
+	<array>
+		<integer>-1</integer>
+	</array>
+	<key>Perspectives</key>
+	<array>
+		<dict>
+			<key>ChosenToolbarItems</key>
+			<array>
+				<string>buildOrClean</string>
+				<string>build-and-runOrDebug</string>
+				<string>clean</string>
+				<string>com.apple.ide.PBXToolbarStopButton</string>
+				<string>NSToolbarFlexibleSpaceItem</string>
+				<string>get-info</string>
+			</array>
+			<key>ControllerClassBaseName</key>
+			<string></string>
+			<key>IconName</key>
+			<string>WindowOfProject</string>
+			<key>Identifier</key>
+			<string>perspective.project</string>
+			<key>IsVertical</key>
+			<false/>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Proportion</key>
+					<string>308pt</string>
+					<key>Tabs</key>
+					<array>
+						<dict>
+							<key>BecomeActive</key>
+							<true/>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXBottomSmartGroupGIDs</key>
+								<array/>
+								<key>PBXProjectModuleGUID</key>
+								<string>1C9437FD063B20B00039CFAC</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Files</string>
+								<key>PBXProjectStructureProvided</key>
+								<string>yes</string>
+								<key>PBXSmartGroupTreeModuleColumnData</key>
+								<dict>
+									<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+									<array>
+										<real>22</real>
+										<real>269</real>
+									</array>
+									<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+									<array>
+										<string>TargetStatusColumn</string>
+										<string>MainColumn</string>
+									</array>
+								</dict>
+								<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+								<dict>
+									<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+									<array>
+										<string>29B97314FDCFA39411CA2CEA</string>
+										<string>E14993A503DE868D00050002</string>
+										<string>29B97315FDCFA39411CA2CEA</string>
+										<string>E1AFA51C03ECFDB000050001</string>
+										<string>E12FEC3C04959F1C00AEFBF9</string>
+										<string>E14343AE03DB48F700050002</string>
+										<string>E1BF154403DB950B00050002</string>
+									</array>
+									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+									<array>
+										<array>
+											<integer>0</integer>
+										</array>
+									</array>
+									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+									<string>{{0, 0}, {291, 440}}</string>
+								</dict>
+								<key>PBXTopSmartGroupGIDs</key>
+								<array/>
+								<key>XCIncludePerspectivesSwitch</key>
+								<false/>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{10, 27}, {308, 458}}</string>
+								<key>GroupTreeTableConfiguration</key>
+								<array>
+									<string>TargetStatusColumn</string>
+									<real>22</real>
+									<string>MainColumn</string>
+									<real>269</real>
+								</array>
+								<key>RubberWindowFrame</key>
+								<string>1244 652 308 526 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXSmartGroupTreeModule</string>
+						</dict>
+						<dict>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXBottomSmartGroupGIDs</key>
+								<array>
+									<string>1C37FBAC04509CD000000102</string>
+									<string>1C37FAAC04509CD000000102</string>
+								</array>
+								<key>PBXProjectModuleGUID</key>
+								<string>1C9437FE063B20B00039CFAC</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Targets</string>
+								<key>PBXProjectStructureProvided</key>
+								<string>no</string>
+								<key>PBXSmartGroupTreeModuleColumnData</key>
+								<dict>
+									<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+									<array>
+										<real>291</real>
+									</array>
+									<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+									<array>
+										<string>MainColumn</string>
+									</array>
+								</dict>
+								<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+								<dict>
+									<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+									<array/>
+									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+									<array>
+										<array>
+											<integer>1</integer>
+										</array>
+									</array>
+									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+									<string>{{0, 0}, {291, 440}}</string>
+								</dict>
+								<key>PBXTopSmartGroupGIDs</key>
+								<array/>
+								<key>XCIncludePerspectivesSwitch</key>
+								<false/>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{10, 27}, {308, 458}}</string>
+								<key>GroupTreeTableConfiguration</key>
+								<array>
+									<string>MainColumn</string>
+									<real>291</real>
+								</array>
+							</dict>
+							<key>Module</key>
+							<string>PBXSmartGroupTreeModule</string>
+						</dict>
+						<dict>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXBottomSmartGroupGIDs</key>
+								<array>
+									<string>1C08E77C0454961000C914BD</string>
+									<string>1C37FABC05509CD000000102</string>
+									<string>1C37FABC05539CD112110102</string>
+									<string>E2644B35053B69B200211256</string>
+									<string>1C37FABC04509CD000100104</string>
+									<string>1CC0EA4004350EF90044410B</string>
+									<string>1CC0EA4004350EF90041110B</string>
+								</array>
+								<key>PBXProjectModuleGUID</key>
+								<string>1C9437FF063B20B00039CFAC</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Other</string>
+								<key>PBXProjectStructureProvided</key>
+								<string>no</string>
+								<key>PBXSmartGroupTreeModuleColumnData</key>
+								<dict>
+									<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+									<array>
+										<real>291</real>
+									</array>
+									<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+									<array>
+										<string>MainColumn</string>
+									</array>
+								</dict>
+								<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+								<dict>
+									<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+									<array/>
+									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+									<array>
+										<array>
+											<integer>3</integer>
+										</array>
+									</array>
+									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+									<string>{{0, 0}, {291, 440}}</string>
+								</dict>
+								<key>PBXTopSmartGroupGIDs</key>
+								<array/>
+								<key>XCIncludePerspectivesSwitch</key>
+								<false/>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{10, 27}, {308, 458}}</string>
+								<key>GroupTreeTableConfiguration</key>
+								<array>
+									<string>MainColumn</string>
+									<real>291</real>
+								</array>
+							</dict>
+							<key>Module</key>
+							<string>PBXSmartGroupTreeModule</string>
+						</dict>
+					</array>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Project</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>XCModuleDock</string>
+				<string>XCDockableTabModule</string>
+				<string>PBXSmartGroupTreeModule</string>
+				<string>PBXSmartGroupTreeModule</string>
+				<string>PBXSmartGroupTreeModule</string>
+			</array>
+			<key>TableOfContents</key>
+			<array>
+				<string>E170DF9A08359B3000B484AC</string>
+				<string>E170DF9B08359B3000B484AC</string>
+				<string>1C9437FD063B20B00039CFAC</string>
+				<string>1C9437FE063B20B00039CFAC</string>
+				<string>1C9437FF063B20B00039CFAC</string>
+			</array>
+			<key>ToolbarConfiguration</key>
+			<string>xcode.toolbar.config.default.short</string>
+		</dict>
+	</array>
+	<key>PerspectivesBarVisible</key>
+	<false/>
+	<key>ShelfIsVisible</key>
+	<false/>
+	<key>SourceDescription</key>
+	<string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode2.xcperspec'</string>
+	<key>StatusbarIsVisible</key>
+	<true/>
+	<key>TimeStamp</key>
+	<real>0.0</real>
+	<key>ToolbarDisplayMode</key>
+	<integer>2</integer>
+	<key>ToolbarIsVisible</key>
+	<true/>
+	<key>ToolbarSizeMode</key>
+	<integer>2</integer>
+	<key>Type</key>
+	<string>Perspectives</string>
+	<key>UpdateMessage</key>
+	<string></string>
+	<key>WindowJustification</key>
+	<integer>0</integer>
+	<key>WindowOrderList</key>
+	<array>
+		<string>/Users/nicholas/Documents/Development/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode</string>
+		<string>E18B4838082F0937000E96F5</string>
+	</array>
+	<key>WindowString</key>
+	<string>1244 652 308 526 0 0 1600 1178 </string>
+	<key>WindowTools</key>
+	<array>
+		<dict>
+			<key>FirstTimeWindowDisplayed</key>
+			<false/>
+			<key>Identifier</key>
+			<string>windowTool.detail</string>
+			<key>IsVertical</key>
+			<false/>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXBottomSmartGroupGIDs</key>
+								<array>
+									<string>1C37FBAC04509CD000000102</string>
+									<string>1C37FAAC04509CD000000102</string>
+									<string>1C08E77C0454961000C914BD</string>
+									<string>1C37FABC05509CD000000102</string>
+									<string>1C37FABC05539CD112110102</string>
+									<string>E2644B35053B69B200211256</string>
+									<string>1C37FABC04509CD000100104</string>
+									<string>1CC0EA4004350EF90044410B</string>
+									<string>1CC0EA4004350EF90041110B</string>
+								</array>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CE0B1FE06471DED0097A5F4</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Files</string>
+								<key>PBXProjectStructureProvided</key>
+								<string>yes</string>
+								<key>PBXSmartGroupTreeModuleColumnData</key>
+								<dict>
+									<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+									<array>
+										<real>245</real>
+									</array>
+									<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+									<array>
+										<string>MainColumn</string>
+									</array>
+								</dict>
+								<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+								<dict>
+									<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+									<array>
+										<string>29B97314FDCFA39411CA2CEA</string>
+										<string>1C37FABC05509CD000000102</string>
+									</array>
+									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+									<array>
+										<array>
+											<integer>0</integer>
+										</array>
+									</array>
+									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+									<string>{{0, 0}, {245, 350}}</string>
+								</dict>
+								<key>PBXTopSmartGroupGIDs</key>
+								<array/>
+								<key>XCIncludePerspectivesSwitch</key>
+								<false/>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 0}, {262, 368}}</string>
+								<key>GroupTreeTableConfiguration</key>
+								<array>
+									<string>MainColumn</string>
+									<real>245</real>
+								</array>
+								<key>RubberWindowFrame</key>
+								<string>387 731 744 409 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXSmartGroupTreeModule</string>
+							<key>Proportion</key>
+							<string>262pt</string>
+						</dict>
+						<dict>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CA1AED706398EBD00589147</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Detail</string>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{267, 0}, {477, 368}}</string>
+								<key>RubberWindowFrame</key>
+								<string>387 731 744 409 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>XCDetailModule</string>
+							<key>Proportion</key>
+							<string>477pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>368pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Detail</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXSmartGroupTreeModule</string>
+				<string>XCDetailModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<true/>
+			<key>TableOfContents</key>
+			<array>
+				<string>1C335F2C07B51CD20023D4EE</string>
+				<string>E18B49AB082F12B8000E96F5</string>
+				<string>1CE0B1FE06471DED0097A5F4</string>
+				<string>1CA1AED706398EBD00589147</string>
+			</array>
+			<key>ToolbarConfiguration</key>
+			<string>xcode.toolbar.config.default</string>
+			<key>WindowString</key>
+			<string>387 731 744 409 0 0 1600 1178 </string>
+			<key>WindowToolGUID</key>
+			<string>1C335F2C07B51CD20023D4EE</string>
+			<key>WindowToolIsVisible</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>Identifier</key>
+			<string>MENUSEPARATOR</string>
+		</dict>
+		<dict>
+			<key>FirstTimeWindowDisplayed</key>
+			<false/>
+			<key>Identifier</key>
+			<string>windowTool.build</string>
+			<key>IsVertical</key>
+			<true/>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CD0528F0623707200166675</string>
+								<key>PBXProjectModuleLabel</key>
+								<string></string>
+								<key>StatusBarVisibility</key>
+								<false/>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 0}, {807, 0}}</string>
+								<key>RubberWindowFrame</key>
+								<string>707 46 807 200 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXNavigatorGroup</string>
+							<key>Proportion</key>
+							<string>0pt</string>
+						</dict>
+						<dict>
+							<key>BecomeActive</key>
+							<true/>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>XCMainBuildResultsModuleGUID</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Build</string>
+								<key>XCBuildResultsTrigger_Collapse</key>
+								<integer>1021</integer>
+								<key>XCBuildResultsTrigger_Open</key>
+								<integer>1011</integer>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 5}, {807, 175}}</string>
+								<key>RubberWindowFrame</key>
+								<string>707 46 807 200 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXBuildResultsModule</string>
+							<key>Proportion</key>
+							<string>175pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>180pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Build Results</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXBuildResultsModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<false/>
+			<key>TableOfContents</key>
+			<array>
+				<string>1C530D52069F1CE1000CFCEE</string>
+				<string>E17DD6C808344ACB00D16E0F</string>
+				<string>1CD0528F0623707200166675</string>
+				<string>XCMainBuildResultsModuleGUID</string>
+			</array>
+			<key>ToolbarConfiguration</key>
+			<string>xcode.toolbar.config.build</string>
+			<key>WindowString</key>
+			<string>707 46 807 200 0 0 1600 1178 </string>
+			<key>WindowToolGUID</key>
+			<string>1C530D52069F1CE1000CFCEE</string>
+			<key>WindowToolIsVisible</key>
+			<true/>
+		</dict>
+		<dict>
+			<key>Identifier</key>
+			<string>windowTool.debugger</string>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>Debugger</key>
+								<dict>
+									<key>HorizontalSplitView</key>
+									<dict>
+										<key>_collapsingFrameDimension</key>
+										<real>0.0</real>
+										<key>_indexOfCollapsedView</key>
+										<integer>0</integer>
+										<key>_percentageOfCollapsedView</key>
+										<real>0.0</real>
+										<key>isCollapsed</key>
+										<string>yes</string>
+										<key>sizes</key>
+										<array>
+											<string>{{0, 0}, {333, 166}}</string>
+											<string>{{333, 0}, {384, 166}}</string>
+										</array>
+									</dict>
+									<key>VerticalSplitView</key>
+									<dict>
+										<key>_collapsingFrameDimension</key>
+										<real>0.0</real>
+										<key>_indexOfCollapsedView</key>
+										<integer>0</integer>
+										<key>_percentageOfCollapsedView</key>
+										<real>0.0</real>
+										<key>isCollapsed</key>
+										<string>yes</string>
+										<key>sizes</key>
+										<array>
+											<string>{{0, 0}, {717, 166}}</string>
+											<string>{{0, 166}, {717, 229}}</string>
+										</array>
+									</dict>
+								</dict>
+								<key>LauncherConfigVersion</key>
+								<string>8</string>
+								<key>PBXProjectModuleGUID</key>
+								<string>1C162984064C10D400B95A72</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Debug - GLUTExamples (Underwater)</string>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>DebugConsoleDrawerSize</key>
+								<string>{100, 120}</string>
+								<key>DebugConsoleVisible</key>
+								<string>None</string>
+								<key>DebugConsoleWindowFrame</key>
+								<string>{{200, 200}, {500, 300}}</string>
+								<key>DebugSTDIOWindowFrame</key>
+								<string>{{200, 200}, {500, 300}}</string>
+								<key>Frame</key>
+								<string>{{0, 0}, {717, 395}}</string>
+								<key>RubberWindowFrame</key>
+								<string>124 412 717 437 0 0 1440 878 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXDebugSessionModule</string>
+							<key>Proportion</key>
+							<string>100%</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>100%</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Debugger</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXDebugSessionModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<integer>1</integer>
+			<key>TableOfContents</key>
+			<array>
+				<string>1C530D54069F1CE1000CFCEE</string>
+				<string>1C530D55069F1CE1000CFCEE</string>
+				<string>1C162984064C10D400B95A72</string>
+				<string>1C530D56069F1CE1000CFCEE</string>
+			</array>
+			<key>ToolbarConfiguration</key>
+			<string>xcode.toolbar.config.debug</string>
+			<key>WindowString</key>
+			<string>124 412 717 437 0 0 1440 878 </string>
+			<key>WindowToolGUID</key>
+			<string>1C530D54069F1CE1000CFCEE</string>
+			<key>WindowToolIsVisible</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>FirstTimeWindowDisplayed</key>
+			<false/>
+			<key>Identifier</key>
+			<string>windowTool.find</string>
+			<key>IsVertical</key>
+			<true/>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>Dock</key>
+							<array>
+								<dict>
+									<key>ContentConfiguration</key>
+									<dict>
+										<key>PBXProjectModuleGUID</key>
+										<string>1CDD528C0622207200134675</string>
+										<key>PBXProjectModuleLabel</key>
+										<string>ICeCoffEE.m</string>
+										<key>StatusBarVisibility</key>
+										<true/>
+									</dict>
+									<key>GeometryConfiguration</key>
+									<dict>
+										<key>Frame</key>
+										<string>{{0, 0}, {854, 187}}</string>
+										<key>RubberWindowFrame</key>
+										<string>229 160 854 724 0 0 1600 1178 </string>
+									</dict>
+									<key>Module</key>
+									<string>PBXNavigatorGroup</string>
+									<key>Proportion</key>
+									<string>854pt</string>
+								</dict>
+							</array>
+							<key>Proportion</key>
+							<string>187pt</string>
+						</dict>
+						<dict>
+							<key>BecomeActive</key>
+							<true/>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CD0528E0623707200166675</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Project Find</string>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 192}, {854, 491}}</string>
+								<key>RubberWindowFrame</key>
+								<string>229 160 854 724 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXProjectFindModule</string>
+							<key>Proportion</key>
+							<string>491pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>683pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Project Find</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXProjectFindModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<true/>
+			<key>TableOfContents</key>
+			<array>
+				<string>1C530D57069F1CE1000CFCEE</string>
+				<string>E191FC360831AC44003B09BC</string>
+				<string>E191FC370831AC44003B09BC</string>
+				<string>1CDD528C0622207200134675</string>
+				<string>1CD0528E0623707200166675</string>
+			</array>
+			<key>WindowString</key>
+			<string>229 160 854 724 0 0 1600 1178 </string>
+			<key>WindowToolGUID</key>
+			<string>1C530D57069F1CE1000CFCEE</string>
+			<key>WindowToolIsVisible</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>Identifier</key>
+			<string>MENUSEPARATOR</string>
+		</dict>
+		<dict>
+			<key>Identifier</key>
+			<string>windowTool.debuggerConsole</string>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>BecomeActive</key>
+							<integer>1</integer>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>1C78EAAC065D492600B07095</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Debugger Console</string>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 0}, {440, 358}}</string>
+								<key>RubberWindowFrame</key>
+								<string>149 87 440 400 0 0 1440 878 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXDebugCLIModule</string>
+							<key>Proportion</key>
+							<string>358pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>358pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Debugger Console</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXDebugCLIModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<integer>1</integer>
+			<key>TableOfContents</key>
+			<array>
+				<string>1C530D5B069F1CE1000CFCEE</string>
+				<string>1C530D5C069F1CE1000CFCEE</string>
+				<string>1C78EAAC065D492600B07095</string>
+			</array>
+			<key>WindowString</key>
+			<string>149 87 440 400 0 0 1440 878 </string>
+			<key>WindowToolGUID</key>
+			<string>1C530D5B069F1CE1000CFCEE</string>
+			<key>WindowToolIsVisible</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>FirstTimeWindowDisplayed</key>
+			<false/>
+			<key>Identifier</key>
+			<string>windowTool.run</string>
+			<key>IsVertical</key>
+			<true/>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>LauncherConfigVersion</key>
+								<string>3</string>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CD0528B0623707200166675</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Run</string>
+								<key>Runner</key>
+								<dict>
+									<key>HorizontalSplitView</key>
+									<dict>
+										<key>_collapsingFrameDimension</key>
+										<real>0.0</real>
+										<key>_indexOfCollapsedView</key>
+										<integer>0</integer>
+										<key>_percentageOfCollapsedView</key>
+										<real>0.0</real>
+										<key>isCollapsed</key>
+										<string>yes</string>
+										<key>sizes</key>
+										<array>
+											<string>{{0, 0}, {367, 168}}</string>
+											<string>{{0, 173}, {367, 270}}</string>
+										</array>
+									</dict>
+									<key>VerticalSplitView</key>
+									<dict>
+										<key>_collapsingFrameDimension</key>
+										<real>0.0</real>
+										<key>_indexOfCollapsedView</key>
+										<integer>0</integer>
+										<key>_percentageOfCollapsedView</key>
+										<real>0.0</real>
+										<key>isCollapsed</key>
+										<string>yes</string>
+										<key>sizes</key>
+										<array>
+											<string>{{0, 0}, {406, 443}}</string>
+											<string>{{411, 0}, {517, 443}}</string>
+										</array>
+									</dict>
+								</dict>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 0}, {702, 248}}</string>
+								<key>RubberWindowFrame</key>
+								<string>827 57 702 268 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXRunSessionModule</string>
+							<key>Proportion</key>
+							<string>248pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>248pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Run Log</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXRunSessionModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<false/>
+			<key>TableOfContents</key>
+			<array>
+				<string>1C0AD2B3069F1EA900FABCE6</string>
+				<string>E170DF3408359A5B00B484AC</string>
+				<string>1CD0528B0623707200166675</string>
+				<string>E170DF3508359A5B00B484AC</string>
+			</array>
+			<key>ToolbarConfiguration</key>
+			<string>xcode.toolbar.config.run</string>
+			<key>WindowString</key>
+			<string>827 57 702 268 0 0 1600 1178 </string>
+			<key>WindowToolGUID</key>
+			<string>1C0AD2B3069F1EA900FABCE6</string>
+			<key>WindowToolIsVisible</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>FirstTimeWindowDisplayed</key>
+			<false/>
+			<key>Identifier</key>
+			<string>windowTool.scm</string>
+			<key>IsVertical</key>
+			<true/>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>1C78EAB2065D492600B07095</string>
+								<key>PBXProjectModuleLabel</key>
+								<string></string>
+								<key>StatusBarVisibility</key>
+								<true/>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 0}, {634, 0}}</string>
+								<key>RubberWindowFrame</key>
+								<string>73 783 634 373 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXNavigatorGroup</string>
+							<key>Proportion</key>
+							<string>0pt</string>
+						</dict>
+						<dict>
+							<key>BecomeActive</key>
+							<true/>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CD052920623707200166675</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>SCM Results</string>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 5}, {634, 327}}</string>
+								<key>RubberWindowFrame</key>
+								<string>73 783 634 373 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXCVSModule</string>
+							<key>Proportion</key>
+							<string>327pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>332pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>SCM</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXCVSModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<true/>
+			<key>TableOfContents</key>
+			<array>
+				<string>E18B4838082F0937000E96F5</string>
+				<string>E170DF9C08359B3000B484AC</string>
+				<string>1C78EAB2065D492600B07095</string>
+				<string>1CD052920623707200166675</string>
+			</array>
+			<key>ToolbarConfiguration</key>
+			<string>xcode.toolbar.config.scm</string>
+			<key>WindowString</key>
+			<string>73 783 634 373 0 0 1600 1178 </string>
+			<key>WindowToolGUID</key>
+			<string>E18B4838082F0937000E96F5</string>
+			<key>WindowToolIsVisible</key>
+			<true/>
+		</dict>
+		<dict>
+			<key>Identifier</key>
+			<string>windowTool.breakpoints</string>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>BecomeActive</key>
+							<integer>1</integer>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CD052930623707200166675</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Breakpoints</string>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>BreakpointsTreeTableConfiguration</key>
+								<array>
+									<string>enabledColumn</string>
+									<real>16</real>
+									<string>breakpointColumn</string>
+									<real>201.5830078125</real>
+								</array>
+								<key>Frame</key>
+								<string>{{0, 0}, {240, 195}}</string>
+								<key>RubberWindowFrame</key>
+								<string>751 36 240 216 0 0 1280 1002 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXDebugBreakpointsModule</string>
+							<key>Proportion</key>
+							<string>195pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>195pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Breakpoints</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXDebugBreakpointsModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<integer>0</integer>
+			<key>TableOfContents</key>
+			<array>
+				<string>1C78EAB6065D492600B07095</string>
+				<string>1C78EAB7065D492600B07095</string>
+				<string>1CD052930623707200166675</string>
+			</array>
+			<key>WindowString</key>
+			<string>751 36 240 216 0 0 1280 1002 </string>
+		</dict>
+		<dict>
+			<key>FirstTimeWindowDisplayed</key>
+			<false/>
+			<key>Identifier</key>
+			<string>windowTool.bookmarks</string>
+			<key>IsVertical</key>
+			<true/>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>BecomeActive</key>
+							<true/>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>E18B49F9082F18C6000E96F5</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Bookmarks</string>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>Frame</key>
+								<string>{{0, 0}, {285, 181}}</string>
+								<key>RubberWindowFrame</key>
+								<string>352 945 285 201 0 0 1600 1178 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXBookmarksModule</string>
+							<key>Proportion</key>
+							<string>181pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>181pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Bookmarks</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXBookmarksModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<false/>
+			<key>TableOfContents</key>
+			<array>
+				<string>E18B49FA082F18C6000E96F5</string>
+				<string>E18B49FB082F18C6000E96F5</string>
+				<string>E18B49F9082F18C6000E96F5</string>
+			</array>
+			<key>WindowString</key>
+			<string>352 945 285 201 0 0 1600 1178 </string>
+			<key>WindowToolGUID</key>
+			<string>E18B49FA082F18C6000E96F5</string>
+			<key>WindowToolIsVisible</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>Identifier</key>
+			<string>windowTool.classBrowser</string>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>BecomeActive</key>
+							<integer>1</integer>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>OptionsSetName</key>
+								<string>Hierarchy, all classes</string>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CA6456E063B45B4001379D8</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>Class Browser - NSObject</string>
+							</dict>
+							<key>GeometryConfiguration</key>
+							<dict>
+								<key>ClassesFrame</key>
+								<string>{{0, 0}, {368, 96}}</string>
+								<key>ClassesTreeTableConfiguration</key>
+								<array>
+									<string>PBXClassNameColumnIdentifier</string>
+									<real>208</real>
+									<string>PBXClassBookColumnIdentifier</string>
+									<real>22</real>
+								</array>
+								<key>Frame</key>
+								<string>{{0, 0}, {624, 318}}</string>
+								<key>MembersFrame</key>
+								<string>{{0, 105}, {368, 395}}</string>
+								<key>MembersTreeTableConfiguration</key>
+								<array>
+									<string>PBXMemberTypeIconColumnIdentifier</string>
+									<real>22</real>
+									<string>PBXMemberNameColumnIdentifier</string>
+									<real>216</real>
+									<string>PBXMemberTypeColumnIdentifier</string>
+									<real>91</real>
+									<string>PBXMemberBookColumnIdentifier</string>
+									<real>22</real>
+								</array>
+								<key>PBXModuleWindowStatusBarHidden2</key>
+								<integer>1</integer>
+								<key>RubberWindowFrame</key>
+								<string>128 171 624 339 0 0 1440 878 </string>
+							</dict>
+							<key>Module</key>
+							<string>PBXClassBrowserModule</string>
+							<key>Proportion</key>
+							<string>319pt</string>
+						</dict>
+					</array>
+					<key>Proportion</key>
+					<string>319pt</string>
+				</dict>
+			</array>
+			<key>Name</key>
+			<string>Class Browser</string>
+			<key>ServiceClasses</key>
+			<array>
+				<string>PBXClassBrowserModule</string>
+			</array>
+			<key>StatusbarIsVisible</key>
+			<integer>0</integer>
+			<key>TableOfContents</key>
+			<array>
+				<string>1C530D60069F1CE1000CFCEE</string>
+				<string>1C530D61069F1CE1000CFCEE</string>
+				<string>1CA6456E063B45B4001379D8</string>
+			</array>
+			<key>ToolbarConfiguration</key>
+			<string>xcode.toolbar.config.classbrowser</string>
+			<key>WindowString</key>
+			<string>128 171 624 339 0 0 1440 878 </string>
+			<key>WindowToolGUID</key>
+			<string>1C530D60069F1CE1000CFCEE</string>
+			<key>WindowToolIsVisible</key>
+			<integer>0</integer>
+		</dict>
+	</array>
+</dict>
+</plist>
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/nicholas.pbxuser
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/nicholas.pbxuser	(revision 181)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/nicholas.pbxuser	(revision 182)
@@ -11,7 +11,9 @@
 	29B97313FDCFA39411CA2CEA = {
 		activeBuildStyle = 4A9504CDFFE6A4B311CA0CBA;
-		activeExecutable = E1317A3503DF242100050002;
-		activeTarget = E120DB7308141CCB00BF8DDC;
+		activeExecutable = E165AB3C03E7BCDE00050002;
+		activeTarget = E1ABAE8D0812F4B2007C5427;
 		addToTargets = (
+			E1ABAE8D0812F4B2007C5427,
+			E1ABAEBA0812F4B2007C5427,
 		);
 		breakpoints = (
@@ -169,5 +171,5 @@
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 137300198;
+			PBXPerProjectTemplateStateSaveDate = 137730838;
 			PBXPrepackagedSmartGroups_v2 = (
 				{
@@ -644,60 +646,5 @@
 				WindowFrame = "{{524, 473}, {756, 352}}";
 			};
-			PBXWorkspaceStateSaveDate = 137300198;
-		};
-		perUserProjectItems = {
-			E18B483F082F0CC5000E96F5 = E18B483F082F0CC5000E96F5;
-			E18B4846082F0CF2000E96F5 = E18B4846082F0CF2000E96F5;
-			E18B4847082F0CF2000E96F5 = E18B4847082F0CF2000E96F5;
-			E18B484A082F0CF2000E96F5 = E18B484A082F0CF2000E96F5;
-			E18B497A082F0DFB000E96F5 = E18B497A082F0DFB000E96F5;
-			E18B497B082F0DFB000E96F5 = E18B497B082F0DFB000E96F5;
-			E18B498F082F10DD000E96F5 = E18B498F082F10DD000E96F5;
-			E18B4990082F10DD000E96F5 = E18B4990082F10DD000E96F5;
-			E18B4991082F10DD000E96F5 = E18B4991082F10DD000E96F5;
-			E18B4992082F10DD000E96F5 = E18B4992082F10DD000E96F5;
-			E18B49AC082F12B8000E96F5 = E18B49AC082F12B8000E96F5;
-			E18B49AD082F12B8000E96F5 = E18B49AD082F12B8000E96F5;
-			E18B49AE082F12B8000E96F5 = E18B49AE082F12B8000E96F5;
-			E18B49AF082F12B8000E96F5 = E18B49AF082F12B8000E96F5;
-			E18B49B0082F12B8000E96F5 = E18B49B0082F12B8000E96F5;
-			E18B49B1082F12B8000E96F5 = E18B49B1082F12B8000E96F5;
-			E18B49B2082F12B8000E96F5 = E18B49B2082F12B8000E96F5;
-			E18B49B3082F12B8000E96F5 = E18B49B3082F12B8000E96F5;
-			E18B49B6082F12BD000E96F5 = E18B49B6082F12BD000E96F5;
-			E18B49BF082F12FB000E96F5 = E18B49BF082F12FB000E96F5;
-			E18B49C0082F12FB000E96F5 = E18B49C0082F12FB000E96F5;
-			E18B49C1082F12FB000E96F5 = E18B49C1082F12FB000E96F5;
-			E18B49C2082F12FB000E96F5 = E18B49C2082F12FB000E96F5;
-			E18B49C3082F12FB000E96F5 = E18B49C3082F12FB000E96F5;
-			E18B49C6082F1309000E96F5 = E18B49C6082F1309000E96F5;
-			E18B49C7082F1309000E96F5 = E18B49C7082F1309000E96F5;
-			E18B49DC082F1726000E96F5 = E18B49DC082F1726000E96F5;
-			E18B49DE082F1726000E96F5 = E18B49DE082F1726000E96F5;
-			E18B49E6082F18B7000E96F5 = E18B49E6082F18B7000E96F5;
-			E18B49E7082F18B7000E96F5 = E18B49E7082F18B7000E96F5;
-			E18B49E8082F18B7000E96F5 = E18B49E8082F18B7000E96F5;
-			E18B49E9082F18B7000E96F5 = E18B49E9082F18B7000E96F5;
-			E18B49EA082F18B7000E96F5 = E18B49EA082F18B7000E96F5;
-			E18B49EB082F18B7000E96F5 = E18B49EB082F18B7000E96F5;
-			E18B49EC082F18B7000E96F5 = E18B49EC082F18B7000E96F5;
-			E18B49ED082F18B7000E96F5 = E18B49ED082F18B7000E96F5;
-			E18B49EE082F18B7000E96F5 = E18B49EE082F18B7000E96F5;
-			E18B49EF082F18B7000E96F5 = E18B49EF082F18B7000E96F5;
-			E18B49F0082F18B7000E96F5 = E18B49F0082F18B7000E96F5;
-			E18B49F1082F18B7000E96F5 = E18B49F1082F18B7000E96F5;
-			E18B49F2082F18B7000E96F5 = E18B49F2082F18B7000E96F5;
-			E18B49F3082F18B7000E96F5 = E18B49F3082F18B7000E96F5;
-			E18B49F4082F18B7000E96F5 = E18B49F4082F18B7000E96F5;
-			E18B49F5082F18B7000E96F5 = E18B49F5082F18B7000E96F5;
-			E18B49F6082F18B7000E96F5 = E18B49F6082F18B7000E96F5;
-			E18B49F7082F18C6000E96F5 = E18B49F7082F18C6000E96F5;
-			E18B49F8082F18C6000E96F5 = E18B49F8082F18C6000E96F5;
-			E18B49FC082F18CA000E96F5 = E18B49FC082F18CA000E96F5;
-			E18B49FD082F18CA000E96F5 = E18B49FD082F18CA000E96F5;
-			E18B49FE082F18CF000E96F5 = E18B49FE082F18CF000E96F5;
-			E18B49FF082F18CF000E96F5 = E18B49FF082F18CF000E96F5;
-			E18B4A02082F18E1000E96F5 = E18B4A02082F18E1000E96F5;
-			E18B4A03082F18E1000E96F5 = E18B4A03082F18E1000E96F5;
+			PBXWorkspaceStateSaveDate = 137730838;
 		};
 		sourceControlManager = E12B21580548C9B600CFF4E9;
@@ -787,8 +734,8 @@
 	E12FEC3D04959F5A00AEFBF9 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {609, 4802}}";
-			sepNavSelRange = "{9956, 0}";
-			sepNavVisRect = "{{0, 3518}, {609, 566}}";
-			sepNavWindowFrame = "{{61, 283}, {750, 502}}";
+			sepNavIntBoundsRect = "{{0, 0}, {793, 3718}}";
+			sepNavSelRange = "{8048, 0}";
+			sepNavVisRect = "{{0, 2030}, {793, 944}}";
+			sepNavWindowFrame = "{{65, 118}, {832, 982}}";
 		};
 	};
@@ -902,7 +849,7 @@
 	E1317B2F03DFC4DE00050002 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {621, 5687}}";
-			sepNavSelRange = "{12497, 0}";
-			sepNavVisRect = "{{0, 4344}, {621, 155}}";
+			sepNavIntBoundsRect = "{{0, 0}, {813, 5086}}";
+			sepNavSelRange = "{12661, 13}";
+			sepNavVisRect = "{{0, 3914}, {813, 170}}";
 			sepNavWindowFrame = "{{84, 262}, {750, 502}}";
 		};
@@ -921,6 +868,6 @@
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {508, 682}}";
-			sepNavSelRange = "{1772, 0}";
-			sepNavVisRect = "{{0, 130}, {508, 551}}";
+			sepNavSelRange = "{1665, 38}";
+			sepNavVisRect = "{{0, 99}, {508, 551}}";
 			sepNavWindowFrame = "{{174, 96}, {547, 589}}";
 		};
@@ -1022,16 +969,24 @@
 	E14343B303DB4CF200050002 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {733, 825}}";
-			sepNavSelRange = "{1980, 0}";
-			sepNavVisRect = "{{0, 382}, {733, 443}}";
-			sepNavWindowFrame = "{{38, 304}, {750, 502}}";
+			sepNavIntBoundsRect = "{{0, 0}, {725, 746}}";
+			sepNavSelRange = "{2148, 0}";
+			sepNavVisRect = "{{0, 0}, {725, 745}}";
+			sepNavWindowFrame = "{{55, 199}, {764, 783}}";
 		};
 	};
 	E14343B403DB4CF200050002 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {686, 6787}}";
-			sepNavSelRange = "{6810, 0}";
-			sepNavVisRect = "{{0, 2040}, {686, 353}}";
-			sepNavWindowFrame = "{{469, 47}, {750, 502}}";
+			sepNavIntBoundsRect = "{{0, 0}, {774, 6798}}";
+			sepNavSelRange = "{21057, 0}";
+			sepNavVisRect = "{{0, 5995}, {774, 783}}";
+			sepNavWindowFrame = "{{281, 288}, {813, 821}}";
+		};
+	};
+	E14343CD03DB66E900050002 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {796, 776}}";
+			sepNavSelRange = "{231, 0}";
+			sepNavVisRect = "{{0, 0}, {796, 775}}";
+			sepNavWindowFrame = "{{38, 339}, {835, 813}}";
 		};
 	};
@@ -1095,7 +1050,7 @@
 	E165AB3603E7A7FC00050002 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {743, 3645}}";
+			sepNavIntBoundsRect = "{{0, 0}, {766, 3612}}";
 			sepNavSelRange = "{1396, 0}";
-			sepNavVisRect = "{{0, 341}, {743, 363}}";
+			sepNavVisRect = "{{0, 0}, {0, 0}}";
 			sepNavWindowFrame = "{{38, 218}, {750, 502}}";
 		};
@@ -1239,5 +1194,5 @@
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {686, 622}}";
-			sepNavSelRange = "{322, 18}";
+			sepNavSelRange = "{2052, 35}";
 			sepNavVisRect = "{{0, 0}, {686, 621}}";
 			sepNavWindowFrame = "{{378, 506}, {725, 659}}";
@@ -1247,580 +1202,22 @@
 		fileReference = E14343B403DB4CF200050002;
 		isa = PBXFileBreakpoint;
-		lineNumber = 153;
+		lineNumber = 144;
 		state = 1;
 	};
-	E18B483F082F0CC5000E96F5 = {
-		comments = "warning: passing argument 3 of 'CFStringCompare' makes integer from pointer without a cast";
-		fRef = F9A6986E03BE1DF000AA4DA5;
-		isa = PBXTextBookmark;
-		rLen = 1;
-		rLoc = 173;
-		rType = 1;
-	};
-	E18B4840082F0CD6000E96F5 = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.c.h;
-		name = CFString.h;
-		path = /Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h;
-		refType = 0;
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {792, 8327}}";
-			sepNavSelRange = "{13407, 196}";
-			sepNavVisRect = "{{0, 2693}, {792, 928}}";
-			sepNavWindowFrame = "{{15, 187}, {831, 986}}";
-		};
-	};
-	E18B4846082F0CF2000E96F5 = {
-		fRef = E18B4840082F0CD6000E96F5;
-		isa = PBXTextBookmark;
-		rLen = 1;
-		rLoc = 336;
-		rType = 1;
-	};
-	E18B4847082F0CF2000E96F5 = {
-		fRef = E18B4840082F0CD6000E96F5;
-		isa = PBXTextBookmark;
-		name = CFOptionFlags;
-		rLen = 13;
-		rLoc = 17210;
-		rType = 0;
-		vrLen = 4010;
-		vrLoc = 15255;
-	};
-	E18B484A082F0CF2000E96F5 = {
-		fRef = F9A6986E03BE1DF000AA4DA5;
-		isa = PBXTextBookmark;
-		name = CFStringCompare;
-		rLen = 15;
-		rLoc = 7767;
-		rType = 0;
-		vrLen = 1604;
-		vrLoc = 6944;
-	};
-	E18B497A082F0DFB000E96F5 = {
-		comments = "warning: passing argument 3 of 'CFStringCompare' makes integer from pointer without a cast";
-		fRef = F9A6986E03BE1DF000AA4DA5;
-		isa = PBXTextBookmark;
-		rLen = 1;
-		rLoc = 173;
-		rType = 1;
-	};
-	E18B497B082F0DFB000E96F5 = {
-		fRef = F9A6986E03BE1DF000AA4DA5;
-		isa = PBXTextBookmark;
-		name = "if (CFStringCompare(message, kICPreferencesChanged, NULL) == kCFCompareEqualTo)";
-		rLen = 83;
-		rLoc = 7759;
-		rType = 0;
-		vrLen = 454;
-		vrLoc = 7506;
-	};
-	E18B498F082F10DD000E96F5 = {
-		fRef = F9A6986E03BE1DF000AA4DA5;
-		isa = PBXTextBookmark;
-		name = "APEMain.m: 174";
-		rLen = 0;
-		rLoc = 7816;
-		rType = 0;
-		vrLen = 451;
-		vrLoc = 7506;
-	};
-	E18B4990082F10DD000E96F5 = {
-		comments = "warning: pointer targets in passing argument 6 of 'CFStringGetBytes' differ in signedness";
-		fRef = E14343B403DB4CF200050002;
-		isa = PBXTextBookmark;
-		rLen = 1;
-		rLoc = 256;
-		rType = 1;
-	};
-	E18B4991082F10DD000E96F5 = {
-		fRef = F9A6986E03BE1DF000AA4DA5;
-		isa = PBXTextBookmark;
-		name = "APEMain.m: 174";
-		rLen = 0;
-		rLoc = 7816;
-		rType = 0;
-		vrLen = 451;
-		vrLoc = 7506;
-	};
-	E18B4992082F10DD000E96F5 = {
-		fRef = E14343B403DB4CF200050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEE.m: 257";
-		rLen = 0;
-		rLoc = 8955;
-		rType = 0;
-		vrLen = 408;
-		vrLoc = 8784;
-	};
-	E18B49AC082F12B8000E96F5 = {
-		fRef = E14343B403DB4CF200050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEE.m: 187";
-		rLen = 0;
-		rLoc = 6810;
-		rType = 0;
-		vrLen = 1043;
-		vrLoc = 6274;
-	};
-	E18B49AD082F12B8000E96F5 = {
-		fRef = E19EB4FA03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "cachedVersion = NULL;";
-		rLen = 23;
-		rLoc = 1186;
-		rType = 0;
-		vrLen = 1076;
-		vrLoc = 797;
-	};
-	E18B49AE082F12B8000E96F5 = {
-		fRef = E169DBA103E4EF5E00050002;
-		isa = PBXTextBookmark;
-		name = "Delay(blinkDelay, &junk);";
-		rLen = 42;
-		rLoc = 7867;
-		rType = 0;
-		vrLen = 1177;
-		vrLoc = 7166;
-	};
-	E18B49AF082F12B8000E96F5 = {
-		comments = "warning: value computed is not used";
-		fRef = E1BF166A03DBE27000050002;
-		isa = PBXTextBookmark;
-		rLen = 1;
-		rLoc = 139;
-		rType = 1;
-	};
-	E18B49B0082F12B8000E96F5 = {
-		fRef = E14343B403DB4CF200050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEE.m: 187";
-		rLen = 0;
-		rLoc = 6810;
-		rType = 0;
-		vrLen = 1043;
-		vrLoc = 6274;
-	};
-	E18B49B1082F12B8000E96F5 = {
-		fRef = E19EB4FA03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "cachedVersion = NULL;";
-		rLen = 23;
-		rLoc = 1186;
-		rType = 0;
-		vrLen = 1076;
-		vrLoc = 797;
-	};
-	E18B49B2082F12B8000E96F5 = {
-		fRef = E169DBA103E4EF5E00050002;
-		isa = PBXTextBookmark;
-		name = "Delay(blinkDelay, &junk);";
-		rLen = 42;
-		rLoc = 7867;
-		rType = 0;
-		vrLen = 1177;
-		vrLoc = 7166;
-	};
-	E18B49B3082F12B8000E96F5 = {
-		fRef = E1BF166A03DBE27000050002;
-		isa = PBXTextBookmark;
-		name = "ICLog(@\"selectedRange %@ selectionRect %@ textBlinkCount %d\", NSStringFromRange(selectedRange), NSStringFromRect(selectionRect), ICCF_prefs.textBlinkCount);";
-		rLen = 161;
-		rLoc = 4705;
-		rType = 0;
-		vrLen = 1469;
-		vrLoc = 3678;
-	};
-	E18B49B6082F12BD000E96F5 = {
-		fRef = E1BF166A03DBE27000050002;
-		isa = PBXTextBookmark;
-		name = "ICLog(@\"selectedRange %@ selectionRect %@ textBlinkCount %d\", NSStringFromRange(selectedRange), NSStringFromRect(selectionRect), ICCF_prefs.textBlinkCount);";
-		rLen = 161;
-		rLoc = 4705;
-		rType = 0;
-		vrLen = 1469;
-		vrLoc = 3678;
-	};
-	E18B49BF082F12FB000E96F5 = {
-		fRef = E1BF166A03DBE27000050002;
-		isa = PBXTextBookmark;
-		name = "ICLog(@\"selectedRange %@ selectionRect %@ textBlinkCount %d\", NSStringFromRange(selectedRange), NSStringFromRect(selectionRect), ICCF_prefs.textBlinkCount);";
-		rLen = 161;
-		rLoc = 4705;
-		rType = 0;
-		vrLen = 1469;
-		vrLoc = 3678;
-	};
-	E18B49C0082F12FB000E96F5 = {
-		fRef = E1BF4A4D0487C77C00C20906;
-		isa = PBXTextBookmark;
-		name = "German: 1";
-		rLen = 0;
-		rLoc = 15;
-		rType = 0;
-		vrLen = 374;
-		vrLoc = 0;
-	};
-	E18B49C1082F12FB000E96F5 = {
-		fRef = 089C165DFE840E0CC02AAC07;
-		isa = PBXTextBookmark;
-		rLen = 3;
-		rLoc = 103;
-		rType = 0;
-	};
-	E18B49C2082F12FB000E96F5 = {
-		fRef = E1BF4A4D0487C77C00C20906;
-		isa = PBXTextBookmark;
-		name = "German: 1";
-		rLen = 0;
-		rLoc = 15;
-		rType = 0;
-		vrLen = 374;
-		vrLoc = 0;
-	};
-	E18B49C3082F12FB000E96F5 = {
-		fRef = 089C165DFE840E0CC02AAC07;
-		isa = PBXTextBookmark;
-		name = "English: 5";
-		rLen = 0;
-		rLoc = 113;
-		rType = 0;
-		vrLen = 238;
-		vrLoc = 0;
-	};
-	E18B49C6082F1309000E96F5 = {
-		fRef = E1BF166A03DBE27000050002;
-		isa = PBXTextBookmark;
-		name = "ICLog(@\"selectedRange %@ selectionRect %@ textBlinkCount %d\", NSStringFromRange(selectedRange), NSStringFromRect(selectionRect), ICCF_prefs.textBlinkCount);";
-		rLen = 161;
-		rLoc = 4705;
-		rType = 0;
-		vrLen = 1469;
-		vrLoc = 3678;
-	};
-	E18B49C7082F1309000E96F5 = {
-		fRef = 089C165DFE840E0CC02AAC07;
-		isa = PBXTextBookmark;
-		name = "English: 5";
-		rLen = 0;
-		rLoc = 113;
-		rType = 0;
-		vrLen = 238;
-		vrLoc = 0;
-	};
-	E18B49C8082F142B000E96F5 = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.c.h;
-		name = OSUtils.h;
-		path = /Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/OSUtils.h;
-		refType = 0;
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {758, 6116}}";
-			sepNavSelRange = "{8211, 7}";
-			sepNavVisRect = "{{0, 3074}, {758, 353}}";
-		};
-	};
-	E18B49CF082F1466000E96F5 = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.c.h;
-		name = CFURL.h;
-		path = /Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFURL.h;
-		refType = 0;
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {758, 4642}}";
-			sepNavSelRange = "{1704, 13}";
-			sepNavVisRect = "{{0, 308}, {758, 353}}";
-		};
-	};
-	E18B49DC082F1726000E96F5 = {
-		fRef = E18B49DD082F1726000E96F5;
-		isa = PBXTextBookmark;
-		rLen = 0;
-		rLoc = 2147483647;
-		rType = 0;
-	};
-	E18B49DD082F1726000E96F5 = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.c.h;
-		name = LSInfo.h;
-		path = /Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/LSInfo.h;
-		refType = 0;
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {686, 12155}}";
-			sepNavSelRange = "{33879, 24}";
-			sepNavVisRect = "{{0, 11533}, {686, 621}}";
-			sepNavWindowFrame = "{{567, 115}, {725, 659}}";
-		};
-	};
-	E18B49DE082F1726000E96F5 = {
-		fRef = E18B49DF082F1726000E96F5;
-		isa = PBXTextBookmark;
-		name = LSCopyApplicationURLsFor;
-		rLen = 24;
-		rLoc = 33879;
-		rType = 0;
-		vrLen = 1563;
-		vrLoc = 32560;
-	};
-	E18B49DF082F1726000E96F5 = {
-		isa = PBXFileReference;
-		name = LSInfo.h;
-		path = /Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/LSInfo.h;
-		refType = 0;
-		sourceTree = "<absolute>";
-	};
-	E18B49E6082F18B7000E96F5 = {
-		fRef = E1BF166A03DBE27000050002;
-		isa = PBXTextBookmark;
-		name = "ICLog(@\"selectedRange %@ selectionRect %@ textBlinkCount %d\", NSStringFromRange(selectedRange), NSStringFromRect(selectionRect), ICCF_prefs.textBlinkCount);";
-		rLen = 161;
-		rLoc = 4705;
-		rType = 0;
-		vrLen = 1469;
-		vrLoc = 3678;
-	};
-	E18B49E7082F18B7000E96F5 = {
-		fRef = E18B49C8082F142B000E96F5;
-		isa = PBXTextBookmark;
-		name = "Delay(";
-		rLen = 7;
-		rLoc = 8211;
-		rType = 0;
-		vrLen = 855;
-		vrLoc = 7848;
-	};
-	E18B49E8082F18B7000E96F5 = {
-		fRef = E169DBA103E4EF5E00050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEETextEdit.c: 148";
-		rLen = 0;
-		rLoc = 7587;
-		rType = 0;
-		vrLen = 1184;
-		vrLoc = 7166;
-	};
-	E18B49E9082F18B7000E96F5 = {
-		fRef = E19EB4FC03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "UICookieMonster.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 829;
-		vrLoc = 0;
-	};
-	E18B49EA082F18B7000E96F5 = {
-		fRef = E19EB4FA03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "UICookieMonster.m: 106";
-		rLen = 0;
-		rLoc = 2865;
-		rType = 0;
-		vrLen = 416;
-		vrLoc = 2659;
-	};
-	E18B49EB082F18B7000E96F5 = {
-		fRef = E18B49CF082F1466000E96F5;
-		isa = PBXTextBookmark;
-		name = "const UInt8 *";
-		rLen = 13;
-		rLoc = 1704;
-		rType = 0;
-		vrLen = 1664;
-		vrLoc = 848;
-	};
-	E18B49EC082F18B7000E96F5 = {
-		fRef = E165AB3603E7A7FC00050002;
-		isa = PBXTextBookmark;
-		name = CFURLCreateWithBytes;
-		rLen = 20;
-		rLoc = 12005;
-		rType = 0;
-		vrLen = 976;
-		vrLoc = 11724;
-	};
-	E18B49ED082F18B7000E96F5 = {
-		fRef = E1BF166A03DBE27000050002;
-		isa = PBXTextBookmark;
-		name = "ICLog(@\"selectedRange %@ selectionRect %@ textBlinkCount %d\", NSStringFromRange(selectedRange), NSStringFromRect(selectionRect), ICCF_prefs.textBlinkCount);";
-		rLen = 161;
-		rLoc = 4705;
-		rType = 0;
-		vrLen = 1469;
-		vrLoc = 3678;
-	};
-	E18B49EE082F18B7000E96F5 = {
-		fRef = E169DBA103E4EF5E00050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEETextEdit.c: 148";
-		rLen = 0;
-		rLoc = 7587;
-		rType = 0;
-		vrLen = 1184;
-		vrLoc = 7166;
-	};
-	E18B49EF082F18B7000E96F5 = {
-		fRef = E19EB4FA03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "UICookieMonster.m: 45";
-		rLen = 0;
-		rLoc = 1200;
-		rType = 0;
-		vrLen = 1076;
-		vrLoc = 797;
-	};
-	E18B49F0082F18B7000E96F5 = {
-		fRef = E19EB4FC03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "UICookieMonster.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 829;
-		vrLoc = 0;
-	};
-	E18B49F1082F18B7000E96F5 = {
-		fRef = E19EB4FA03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "UICookieMonster.m: 45";
-		rLen = 0;
-		rLoc = 1200;
-		rType = 0;
-		vrLen = 1076;
-		vrLoc = 797;
-	};
-	E18B49F2082F18B7000E96F5 = {
-		fRef = E19EB4FC03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "UICookieMonster.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 829;
-		vrLoc = 0;
-	};
-	E18B49F3082F18B7000E96F5 = {
-		fRef = E19EB4FA03DD35A700050002;
-		isa = PBXTextBookmark;
-		name = "UICookieMonster.m: 106";
-		rLen = 0;
-		rLoc = 2865;
-		rType = 0;
-		vrLen = 416;
-		vrLoc = 2659;
-	};
-	E18B49F4082F18B7000E96F5 = {
-		fRef = E18B49CF082F1466000E96F5;
-		isa = PBXTextBookmark;
-		name = "const UInt8 *";
-		rLen = 13;
-		rLoc = 1704;
-		rType = 0;
-		vrLen = 1664;
-		vrLoc = 848;
-	};
-	E18B49F5082F18B7000E96F5 = {
-		fRef = E165AB3603E7A7FC00050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEEAction.c: 36";
-		rLen = 0;
-		rLoc = 1396;
-		rType = 0;
-		vrLen = 1588;
-		vrLoc = 975;
-	};
-	E18B49F6082F18B7000E96F5 = {
-		fRef = 089C165DFE840E0CC02AAC07;
-		isa = PBXTextBookmark;
-		name = "English: 5";
-		rLen = 0;
-		rLoc = 113;
-		rType = 0;
-		vrLen = 238;
-		vrLoc = 0;
-	};
-	E18B49F7082F18C6000E96F5 = {
-		fRef = E165AB3603E7A7FC00050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEEAction.c: 36";
-		rLen = 0;
-		rLoc = 1396;
-		rType = 0;
-		vrLen = 1588;
-		vrLoc = 975;
-	};
-	E18B49F8082F18C6000E96F5 = {
-		fRef = 089C165DFE840E0CC02AAC07;
-		isa = PBXTextBookmark;
-		name = "English: 5";
-		rLen = 0;
-		rLoc = 113;
-		rType = 0;
-		vrLen = 238;
-		vrLoc = 0;
-	};
-	E18B49FC082F18CA000E96F5 = {
-		fRef = E165AB3603E7A7FC00050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEEAction.c: 36";
-		rLen = 0;
-		rLoc = 1396;
-		rType = 0;
-		vrLen = 1588;
-		vrLoc = 975;
-	};
-	E18B49FD082F18CA000E96F5 = {
-		fRef = 089C165DFE840E0CC02AAC07;
-		isa = PBXTextBookmark;
-		name = "English: 5";
-		rLen = 0;
-		rLoc = 113;
-		rType = 0;
-		vrLen = 238;
-		vrLoc = 0;
-	};
-	E18B49FE082F18CF000E96F5 = {
-		fRef = E165AB3603E7A7FC00050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEEAction.c: 36";
-		rLen = 0;
-		rLoc = 1396;
-		rType = 0;
-		vrLen = 1588;
-		vrLoc = 975;
-	};
-	E18B49FF082F18CF000E96F5 = {
-		fRef = 089C165DFE840E0CC02AAC07;
-		isa = PBXTextBookmark;
-		name = "English: 5";
-		rLen = 0;
-		rLoc = 113;
-		rType = 0;
-		vrLen = 238;
-		vrLoc = 0;
-	};
-	E18B4A02082F18E1000E96F5 = {
-		fRef = E165AB3603E7A7FC00050002;
-		isa = PBXTextBookmark;
-		name = "ICeCoffEEAction.c: 36";
-		rLen = 0;
-		rLoc = 1396;
-		rType = 0;
-		vrLen = 1588;
-		vrLoc = 975;
-	};
-	E18B4A03082F18E1000E96F5 = {
-		fRef = 089C165DFE840E0CC02AAC07;
-		isa = PBXTextBookmark;
-		name = "English: 5";
-		rLen = 0;
-		rLoc = 113;
-		rType = 0;
-		vrLen = 238;
-		vrLoc = 0;
+	E191FC9C0831B8FB003B09BC = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {739, 541}}";
+			sepNavSelRange = "{231, 0}";
+			sepNavVisRect = "{{0, 0}, {739, 540}}";
+			sepNavWindowFrame = "{{245, 385}, {778, 578}}";
+		};
+	};
+	E191FC9D0831B8FB003B09BC = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {739, 541}}";
+			sepNavSelRange = "{336, 0}";
+			sepNavVisRect = "{{0, 0}, {739, 540}}";
+			sepNavWindowFrame = "{{268, 364}, {778, 578}}";
+		};
 	};
 	E19EB4FA03DD35A700050002 = {
@@ -1967,39 +1364,40 @@
 	E1BF166A03DBE27000050002 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {758, 2050}}";
-			sepNavSelRange = "{4705, 161}";
-			sepNavVisRect = "{{0, 1329}, {758, 353}}";
+			sepNavIntBoundsRect = "{{0, 0}, {828, 1258}}";
+			sepNavSelRange = "{833, 0}";
+			sepNavVisRect = "{{0, 11}, {828, 868}}";
+			sepNavWindowFrame = "{{95, 122}, {867, 906}}";
+		};
+	};
+	E1BF166B03DBE27000050002 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {711, 465}}";
+			sepNavSelRange = "{232, 0}";
+			sepNavVisRect = "{{0, 0}, {711, 464}}";
+			sepNavWindowFrame = "{{199, 71}, {750, 502}}";
+		};
+	};
+	E1BF166C03DBE27000050002 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {711, 465}}";
+			sepNavSelRange = "{224, 0}";
+			sepNavVisRect = "{{0, 0}, {711, 464}}";
+			sepNavWindowFrame = "{{222, 50}, {750, 502}}";
+		};
+	};
+	E1BF166D03DBE27000050002 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {711, 465}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {711, 464}}";
 			sepNavWindowFrame = "{{61, 197}, {750, 502}}";
 		};
 	};
-	E1BF166B03DBE27000050002 = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {735, 464}}";
-			sepNavSelRange = "{232, 0}";
-			sepNavVisRect = "{{0, 0}, {735, 464}}";
-			sepNavWindowFrame = "{{199, 71}, {750, 502}}";
-		};
-	};
-	E1BF166C03DBE27000050002 = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {735, 464}}";
-			sepNavSelRange = "{224, 0}";
-			sepNavVisRect = "{{0, 0}, {735, 464}}";
-			sepNavWindowFrame = "{{222, 50}, {750, 502}}";
-		};
-	};
-	E1BF166D03DBE27000050002 = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {735, 464}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 0}, {735, 464}}";
-			sepNavWindowFrame = "{{61, 197}, {750, 502}}";
-		};
-	};
 	E1BF167203DBEAA000050002 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {585, 4059}}";
-			sepNavSelRange = "{4814, 0}";
-			sepNavVisRect = "{{0, 2104}, {585, 566}}";
+			sepNavIntBoundsRect = "{{0, 0}, {796, 3157}}";
+			sepNavSelRange = "{70, 0}";
+			sepNavVisRect = "{{0, 0}, {796, 775}}";
+			sepNavWindowFrame = "{{61, 318}, {835, 813}}";
 		};
 	};
@@ -2047,10 +1445,18 @@
 		};
 	};
+	F56276BA03796C8B01AA4DA5 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {828, 2332}}";
+			sepNavSelRange = "{4066, 61}";
+			sepNavVisRect = "{{0, 1463}, {828, 868}}";
+			sepNavWindowFrame = "{{38, 246}, {867, 906}}";
+		};
+	};
 	F56276C20379923401AA4DA5 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {735, 5823}}";
-			sepNavSelRange = "{7948, 0}";
-			sepNavVisRect = "{{0, 2619}, {735, 464}}";
-			sepNavWindowFrame = "{{59, 150}, {750, 502}}";
+			sepNavIntBoundsRect = "{{0, 0}, {739, 5988}}";
+			sepNavSelRange = "{16837, 0}";
+			sepNavVisRect = "{{0, 2531}, {739, 540}}";
+			sepNavWindowFrame = "{{59, 74}, {778, 578}}";
 		};
 	};
@@ -2066,6 +1472,6 @@
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {711, 3613}}";
-			sepNavSelRange = "{7816, 0}";
-			sepNavVisRect = "{{0, 1956}, {711, 444}}";
+			sepNavSelRange = "{9679, 0}";
+			sepNavVisRect = "{{0, 2432}, {711, 464}}";
 			sepNavWindowFrame = "{{440, 49}, {750, 502}}";
 		};
@@ -2080,7 +1486,8 @@
 	F9A6987103BE1DFF00AA4DA5 = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {840, 2027}}";
+			sepNavIntBoundsRect = "{{0, 0}, {828, 1870}}";
 			sepNavSelRange = "{4986, 0}";
-			sepNavVisRect = "{{0, 0}, {0, 0}}";
+			sepNavVisRect = "{{0, 1001}, {828, 868}}";
+			sepNavWindowFrame = "{{15, 267}, {867, 906}}";
 		};
 	};
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/project.pbxproj
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/project.pbxproj	(revision 181)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE APE.xcode/project.pbxproj	(revision 182)
@@ -208,4 +208,5 @@
 			buildSettings = {
 				COPY_PHASE_STRIP = YES;
+				GCC_C_LANGUAGE_STANDARD = c99;
 				GCC_ENABLE_FIX_AND_CONTINUE = NO;
 				ZERO_LINK = NO;
@@ -352,4 +353,5 @@
 			refType = 4;
 			sourceTree = "<group>";
+			wrapsLines = 1;
 		};
 		E12FEC3E04959F5A00AEFBF9 = {
@@ -510,5 +512,5 @@
 			);
 			isa = PBXGroup;
-			name = "APE Manager plugin sources";
+			name = "APE preference pane plugin sources";
 			path = "";
 			refType = 4;
@@ -567,4 +569,6 @@
 				E135625E03DC9FC200050002,
 				E182C8F603DE817F00050002,
+				E191FC9C0831B8FB003B09BC,
+				E191FC9D0831B8FB003B09BC,
 			);
 			isa = PBXGroup;
@@ -632,4 +636,44 @@
 			refType = 4;
 			sourceTree = "<group>";
+		};
+		E191FC9C0831B8FB003B09BC = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			path = ICeCoffEESetServicesMenu.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		E191FC9D0831B8FB003B09BC = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.objc;
+			path = ICeCoffEESetServicesMenu.m;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		E191FC9E0831B8FB003B09BC = {
+			fileRef = E191FC9C0831B8FB003B09BC;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E191FC9F0831B8FB003B09BC = {
+			fileRef = E191FC9D0831B8FB003B09BC;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E191FCA00831B8FB003B09BC = {
+			fileRef = E191FC9C0831B8FB003B09BC;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E191FCA10831B8FB003B09BC = {
+			fileRef = E191FC9D0831B8FB003B09BC;
+			isa = PBXBuildFile;
+			settings = {
+			};
 		};
 		E19EB4F503DD359100050002 = {
@@ -735,4 +779,5 @@
 				E1ABAE9C0812F4B2007C5427,
 				E1ABAE9D0812F4B2007C5427,
+				E191FC9E0831B8FB003B09BC,
 			);
 			isa = PBXHeadersBuildPhase;
@@ -861,4 +906,5 @@
 				E1ABAEAE0812F4B2007C5427,
 				E1ABAEAF0812F4B2007C5427,
+				E191FC9F0831B8FB003B09BC,
 			);
 			isa = PBXSourcesBuildPhase;
@@ -1054,4 +1100,5 @@
 				E1ABAEC10812F4B2007C5427,
 				E1ABAEC20812F4B2007C5427,
+				E191FCA00831B8FB003B09BC,
 			);
 			isa = PBXHeadersBuildPhase;
@@ -1132,4 +1179,5 @@
 				E1ABAECD0812F4B2007C5427,
 				E1ABAECE0812F4B2007C5427,
+				E191FCA10831B8FB003B09BC,
 			);
 			isa = PBXSourcesBuildPhase;
@@ -1493,4 +1541,5 @@
 		E1BF166A03DBE27000050002 = {
 			fileEncoding = 30;
+			indentWidth = 4;
 			isa = PBXFileReference;
 			lastKnownFileType = sourcecode.c.objc;
@@ -1498,4 +1547,6 @@
 			refType = 4;
 			sourceTree = "<group>";
+			tabWidth = 8;
+			usesTabs = 1;
 		};
 		E1BF166B03DBE27000050002 = {
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.m
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.m	(revision 181)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.m	(revision 182)
@@ -1,18 +1,8 @@
-// ICeCoffEE - Internet Config Cocoa Editor Extension
+// ICeCoffEE - Internet Config Carbon/Cocoa Editor Extension
 // Nicholas Riley <mailto:icecoffee@sabi.net>
 
 /* To do/think about:
 
-- TXNClick - MLTE has its own support in Jaguar and later, but it's lousy
-
-Done:
-
-- TEClick - TextEdit
-- flash on success (like BBEdit)
-- display dialog on failure (decode OSStatus)
-- adjust URL blinking
-- app exclusion list - make a pref pane (see AquaShade config)
-- _LSCopyApplicationURLsForItemURL - list apps
-- Menu on command-option-click: add bookmark, open with other helper, pass to configurable service, ...?
+- TXNClick - MLTE has its own (lousy) support in Jaguar, seems improved in Panther, good enough to leave?
 
 */
@@ -22,4 +12,5 @@
 #include <unistd.h>
 #import "ICeCoffEESuper.h"
+#import "ICeCoffEESetServicesMenu.h"
 
 iccfPrefRec ICCF_prefs;
@@ -91,7 +82,7 @@
 
         [set autorelease];
-        [set formUnionWithCharacterSet: [[NSCharacterSet characterSetWithRange: NSMakeRange(0, 128)] invertedSet]]; // remove non-ASCII characters
+        [set formUnionWithCharacterSet: [[NSCharacterSet characterSetWithRange: NSMakeRange(0x21, 0x5e)] invertedSet]]; // nonprintable and non-ASCII characters
         [set formUnionWithCharacterSet: [NSCharacterSet punctuationCharacterSet]];
-        [set removeCharactersInString: @";/?:@&=+$,-_.!~*'()%#"]; // RFC 2396 ¤2.2, 2.3, 2.4, plus #
+        [set removeCharactersInString: @";/?:@&=+$,-_.!~*'()%#"]; // RFC 2396 ¤2.2, 2.3, 2.4, plus % and # from "delims" set
 
         tmpSet = [[set mutableCopy] autorelease];
@@ -198,19 +189,25 @@
 }
 
+// input/output 'range' is the range of source document which contains 'string'
 void ICCF_ParseURL(NSString *string, NSRange *range) {
     OSStatus err;
     Handle h;
-    long selStart, selEnd;
+    long selStart = 0, selEnd = range->length; // local offsets within 'string'
     char *urlData = NULL;
 
-    NSCAssert(range->length == [string length], @"Internal error: URL string is wrong length");
+    NSCAssert(selEnd == [string length], @"Internal error: URL string is wrong length");
     
     NS_DURING
         if ([[NSCharacterSet characterSetWithCharactersInString: @";,."] characterIsMember:
-            [string characterAtIndex: range->length - 1]]) {
-            range->length--;
-        }
-
-        string = [string substringToIndex: range->length];
+            [string characterAtIndex: selEnd - 1]]) {
+            selEnd--;
+        }
+	NSCharacterSet *alphanumericCharacterSet = [NSCharacterSet alphanumericCharacterSet];
+	while (![alphanumericCharacterSet characterIsMember: [string characterAtIndex: selStart]]) {
+	    selStart++;
+	    NSCAssert(selStart < selEnd, @"No URL is selected");
+	}
+
+        string = [string substringWithRange: NSMakeRange(selStart, selEnd - selStart)];
 
         ICLog(@"Parsing URL |%@|", string);
@@ -221,6 +218,5 @@
         NSCAssert(urlData != NULL, @"Internal error: can't allocate memory for URL string");
 
-        selStart = 0; selEnd = range->length;
-
+	// XXX getCString: is deprecated in 10.4, but this is safe and shouldn't assert because we've already verified the string can be converted to ASCII, which should be a subset of any possible system encoding.  The replacement (getCString:maxLength:encoding:) is not available until 10.4, so we leave this until we dump Internet Config and gain IDN friendliness.
         [string getCString: urlData];
 
@@ -402,14 +398,23 @@
 NSMenuItem *ICCF_ServicesMenuItem() {
     NSMenuItem *servicesItem;
-    NSMenu *servicesMenu;
-    // don't want to use [[NSApp servicesMenu] title] because the Services menu may not have been created yet
-    NSString *servicesTitle = [[NSBundle bundleWithIdentifier: @"com.apple.AppKit"] localizedStringForKey: @"Services" value: nil table: @"ServicesMenu"];
-    if (servicesTitle == nil) {
-        ICLog(@"Can't get localized text for 'Services' in AppKit.framework");
-        servicesTitle = @"Services";
+    NSString *servicesTitle = nil;
+    NSMenu *servicesMenu = [NSApp servicesMenu];
+    
+    if (servicesMenu != nil) {
+	servicesTitle = [servicesMenu title];
+	if (servicesTitle == nil) {
+	    ICLog(@"Can't get service menu title");
+	    servicesTitle = @"Services";
+	}
+    } else {
+	servicesTitle = [[NSBundle bundleWithIdentifier: @"com.apple.AppKit"] localizedStringForKey: @"Services" value: nil table: @"ServicesMenu"];
+	if (servicesTitle == nil) {
+	    ICLog(@"Can't get localized text for 'Services' in AppKit.framework");
+	    servicesTitle = @"Services";
+	}
     }
     servicesMenu = [[NSMenu alloc] initWithTitle: servicesTitle];
     servicesItem = [[NSMenuItem alloc] initWithTitle: servicesTitle action:nil keyEquivalent:@""];
-    [[NSApplication sharedApplication] setServicesMenu: servicesMenu];
+    ICCF_SetServicesMenu(servicesMenu);
     [servicesItem setSubmenu: servicesMenu];
     [servicesItem setRepresentedObject: ICCF_SERVICES_ITEM];
@@ -448,4 +453,5 @@
             }
         } else {
+	    [menuItem setKeyEquivalent: @""];
             shouldKeepItem = [menuItem isEnabled];
         }
@@ -494,4 +500,10 @@
 }
 
+
+@interface NSTextView (IC_NSSharing)
+// only in Mac OS X 10.4 and later
+- (NSArray *)selectedRanges;
+@end
+
 @implementation ICeCoffEE
 
@@ -536,5 +548,14 @@
 #endif
     if (ICCF_enabled && ICCF_prefs.commandClickEnabled && ICCF_EventIsCommandMouseDown(e)) {
-        // don't want to trigger selection extension or anything else; pass through as a plain click
+	if ([self respondsToSelector: @selector(selectedRanges)]) {
+	    // discontiguous selection support, Mac OS X 10.4 or later
+	    NSArray *ranges = [self selectedRanges];
+	    ICLog(@"ICeCoffEE selected ranges: %@", ranges);
+	    if ([ranges count] > 1 || [[ranges objectAtIndex: 0] rangeValue].length != 0)
+		goto bypass;
+	} else {
+	    // don't want to trigger selection extension or anything else; pass through as a plain click
+	    // (on Panther and earlier, command does not modify behavior)
+	}
         [super mouseDown: [NSEvent mouseEventWithType: NSLeftMouseDown location: [e locationInWindow] modifierFlags: 0 timestamp: [e timestamp] windowNumber: [e windowNumber] context: [e context] eventNumber: [e eventNumber] clickCount: 1 pressure: 0]];
         // we don't actually get a mouseUp event, just wait for mouseDown to return
@@ -548,4 +569,5 @@
         }
     } else {
+bypass:
         [super mouseDown: e];
     }
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEServicePrefController.m
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEServicePrefController.m	(revision 181)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEServicePrefController.m	(revision 182)
@@ -8,4 +8,5 @@
 
 #import "ICeCoffEEShared.h"
+#import "ICeCoffEESetServicesMenu.h"
 #import "ICeCoffEEServicePrefController.h"
 #import "ICeCoffEENonHighlightingButtonCell.h"
@@ -222,7 +223,7 @@
 {
     if (servicesMenu == nil) {
-        servicesMenu = [[NSMenu alloc] initWithTitle: @""];
-        [[NSApplication sharedApplication] setServicesMenu: servicesMenu];
-        [servicesMenu update];
+	servicesMenu = [[NSMenu alloc] initWithTitle: @""];
+	ICCF_SetServicesMenu(servicesMenu);
+        [servicesMenu update]; // XXX necessary on 10.3? or anywhere?
         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
         NSDictionary *icDefaults = [defaults persistentDomainForName: (NSString *)kICBundleIdentifier];
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEESetServicesMenu.h
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEESetServicesMenu.h	(revision 182)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEESetServicesMenu.h	(revision 182)
@@ -0,0 +1,11 @@
+//
+//  ICeCoffEESetServicesMenu.h
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on 5/10/05.
+//  Copyright 2005 Nicholas Riley. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+void ICCF_SetServicesMenu(NSMenu *servicesMenu);
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEESetServicesMenu.m
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEESetServicesMenu.m	(revision 182)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEESetServicesMenu.m	(revision 182)
@@ -0,0 +1,32 @@
+//
+//  ICeCoffEESetServicesMenu.m
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on 5/10/05.
+//  Copyright 2005 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEESetServicesMenu.h"
+
+
+void ICCF_SetServicesMenu(NSMenu *servicesMenu) {
+    // in 10.3, this populates the menu; in 10.4, it attaches a delegate (NSServiceMaster)
+    [[NSApplication sharedApplication] setServicesMenu: servicesMenu];
+    id delegate;
+    if ( (delegate = [servicesMenu delegate]) != nil) {
+	// populate menu so we have something to filter
+	if ([delegate respondsToSelector: @selector(menuNeedsUpdate:)]) {
+	    [delegate menuNeedsUpdate: servicesMenu];
+	}
+	if ([delegate respondsToSelector: @selector(menu:updateItem:atIndex:shouldCancel:)]) {
+	    int itemCount = [delegate numberOfItemsInMenu: servicesMenu];
+	    for (int i = 0 ; i < itemCount ; i++) {
+		[servicesMenu addItemWithTitle: @"" action: NULL keyEquivalent: @""];
+	    }
+	    for (int i = 0 ; i < itemCount ; i++) {
+		if (![delegate menu: servicesMenu updateItem: (NSMenuItem *)[servicesMenu itemAtIndex: i] atIndex: i shouldCancel: NO])
+		    break;
+	    }
+	}
+    }
+}
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEWebKit.m
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEWebKit.m	(revision 181)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEWebKit.m	(revision 182)
@@ -15,19 +15,8 @@
 - (NSDictionary *)elementAtPoint:(NSPoint)point;
 - (NSString *)selectedString;
-- (void)deselectAll;
-
-// only in Safari 1.0-1.2
-- (void)setSelectionFrom:(id /* WebDOMNode */)start startOffset:(int)startOffset to:(id /* WebDOMNode */)end endOffset:(int) endOffset;
-
-- (id /* WebDOMNode */)selectionStart;
-- (int)selectionStartOffset;
-- (id /* WebDOMNode */)selectionEnd;
-- (int)selectionEndOffset;
-
-// only in Safari 1.1-1.2
 - (NSRect)selectionRect;
 
-// only in Safari 1.3
 - (void)selectNSRange:(NSRange)range;
+- (void)deselectAll;
 
 @end
@@ -38,5 +27,4 @@
 - (WebCoreBridge *)_bridge;
 
-// only in Safari 1.3
 - (NSRange)selectedRange;
 
@@ -52,34 +40,4 @@
 
 static NSEvent *downEvent = nil;
-
-// used in Safari < 1.3 because there's no sane way to set the selection
-typedef struct {
-    int startOffset;
-    int endOffset;
-    id fromNode;
-    id toNode;
-} ICCF_WebCoreSelection;
-
-static ICCF_WebCoreSelection selection = {nil, nil, 0, 0};
-
-void ICCF_GetWebCoreBridgeSelection(WebCoreBridge *bridge, ICCF_WebCoreSelection *ioSel) {
-    [ioSel->fromNode release]; ioSel->fromNode = nil;
-    [ioSel->toNode release]; ioSel->toNode = nil;
-    ioSel->startOffset = [bridge selectionStartOffset];
-    ioSel->endOffset = [bridge selectionEndOffset];
-    ioSel->fromNode = [[bridge selectionStart] retain];
-    ioSel->toNode = [[bridge selectionEnd] retain];
-}
-
-void ICCF_SetWebCoreBridgeSelection(WebCoreBridge *bridge, ICCF_WebCoreSelection *inSel) {
-    if (inSel->fromNode == nil || inSel->toNode == nil)
-        [bridge deselectAll];
-    [bridge setSelectionFrom: inSel->fromNode
-                 startOffset: inSel->startOffset
-                          to: inSel->toNode
-                   endOffset: inSel->endOffset];
-}
-// end Safari < 1.3 section
-
 static NSString *selectedString = nil;
 static NSRange selectedRange;
@@ -87,18 +45,14 @@
 - (void)mouseDown:(NSEvent *)e;
 {
-	[downEvent release]; downEvent = nil;
-    // don't want command-option-click, command-shift-click, etc. to trigger
+    [downEvent release]; downEvent = nil;
+    // don't want command-control-click, command-shift-click, etc. to trigger
     if (ICCF_enabled && ICCF_prefs.commandClickEnabled && ICCF_EventIsCommandMouseDown(e)) {
         WebCoreBridge *bridge = [(WebHTMLView *)self _bridge];
-		if ([self respondsToSelector: @selector(selectedRange)]) {
-			// Safari 1.3 save selection: it may be deselected on super mouseDown
-			selectedRange = [(WebHTMLView *)self selectedRange];
-		} else if ([bridge respondsToSelector: @selector(selectionStartOffset)]) {
-			// Safari < 1.3 save selection: it will be deselected on super mouseDown
-			ICCF_GetWebCoreBridgeSelection(bridge, &selection);
-			ICLog(@"selection start %d@%@ end %d@%@ string %@", [bridge selectionStartOffset], [bridge selectionStart], [bridge selectionEndOffset], [bridge selectionEnd], [bridge selectedString]);
-		}
-		[selectedString release]; selectedString = nil;
-		selectedString = [[bridge selectedString] retain];
+	if ([self respondsToSelector: @selector(selectedRange)]) {
+	    // save selection: it may be deselected on super mouseDown
+	    selectedRange = [(WebHTMLView *)self selectedRange];
+	}
+	[selectedString release]; selectedString = nil;
+	selectedString = [[bridge selectedString] retain];
         downEvent = [e retain];
     }
@@ -126,47 +80,26 @@
                 NS_VOIDRETURN; // donÕt activate on links
             }
-			if (selectedString == nil || [selectedString length] == 0) {
-				ICLog(@"no selected string");
-				NS_VOIDRETURN;
-			}
-			ICCF_StartIC();
-			ICCF_LaunchURL(selectedString, ICCF_KeyboardAction());
-			if (ICCF_prefs.textBlinkEnabled &&
-				[bridge respondsToSelector: @selector(selectNSRange:)]) {
-				// blink text in Safari 1.3
-				[bridge selectNSRange: selectedRange];
-				int i;
-				NSRect selectionRect = [bridge selectionRect];
-				ICLog(@"selectedRange %@ selectionRect %@ textBlinkCount %d", NSStringFromRange(selectedRange), NSStringFromRect(selectionRect), ICCF_prefs.textBlinkCount);
-				for (i = 0 ; i < ICCF_prefs.textBlinkCount ; i++) {
-					[bridge deselectAll];
-					[self setNeedsDisplayInRect: selectionRect];
-					[self display];
-					usleep(kICBlinkDelayUsecs);
-					[bridge selectNSRange: selectedRange];
-					[self setNeedsDisplayInRect: selectionRect];
-					[self display];
-					usleep(kICBlinkDelayUsecs);
-				}
-			} else {
-				// select text in Safari 1.0-1.2
-				ICCF_SetWebCoreBridgeSelection(bridge, &selection);
-				if (ICCF_prefs.textBlinkEnabled &&
-					[bridge respondsToSelector: @selector(selectionRect)]) {
-					// blink text in Safari 1.1/1.2
-					int i;
-					NSRect selectionRect = [bridge selectionRect];
-					for (i = 0 ; i < ICCF_prefs.textBlinkCount ; i++) {
-						[bridge deselectAll];
-						[self setNeedsDisplayInRect: selectionRect];
-						[self display];
-						usleep(kICBlinkDelayUsecs);
-						ICCF_SetWebCoreBridgeSelection(bridge, &selection);
-						[self setNeedsDisplayInRect: selectionRect];
-						[self display];
-						usleep(kICBlinkDelayUsecs);
-					}
-				}
-			}
+	    if (selectedString == nil || [selectedString length] == 0) {
+		ICLog(@"no selected string");
+		NS_VOIDRETURN;
+	    }
+	    ICCF_StartIC();
+	    ICCF_LaunchURL(selectedString, ICCF_KeyboardAction());
+	    if (ICCF_prefs.textBlinkEnabled && [bridge respondsToSelector: @selector(selectNSRange:)]) {
+		[bridge selectNSRange: selectedRange];
+		int i;
+		NSRect selectionRect = [bridge selectionRect];
+		ICLog(@"selectedRange %@ selectionRect %@ textBlinkCount %d", NSStringFromRange(selectedRange), NSStringFromRect(selectionRect), ICCF_prefs.textBlinkCount);
+		for (i = 0 ; i < ICCF_prefs.textBlinkCount ; i++) {
+		    [bridge deselectAll];
+		    [self setNeedsDisplayInRect: selectionRect];
+		    [self display];
+		    usleep(kICBlinkDelayUsecs);
+		    [bridge selectNSRange: selectedRange];
+		    [self setNeedsDisplayInRect: selectionRect];
+		    [self display];
+		    usleep(kICBlinkDelayUsecs);
+		}
+	    }
         NS_HANDLER
             ICCF_HandleException(localException);
