project.pbxproj #12

  • //
  • guest/
  • matt_attaway/
  • Pulse/
  • Pulse.xcodeproj/
  • project.pbxproj
  • View
  • Commits
  • Open Download .zip Download (26 KB)
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		C90EE50D189A2C03004DA5BA /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90EE50C189A2C03004DA5BA /* MainMenu.xib */; };
		C91CC3C918B1DD2C002E09A1 /* P4Message.m in Sources */ = {isa = PBXBuildFile; fileRef = C91CC3C818B1DD2C002E09A1 /* P4Message.m */; };
		C934186618B72854007E6FE5 /* perforce_angry.png in Resources */ = {isa = PBXBuildFile; fileRef = C934186518B72854007E6FE5 /* perforce_angry.png */; };
		C934186918BB198D007E6FE5 /* perforce_sad.png in Resources */ = {isa = PBXBuildFile; fileRef = C934186818BB198D007E6FE5 /* perforce_sad.png */; };
		C959416418C59F0700DCD7E8 /* Connections.xib in Resources */ = {isa = PBXBuildFile; fileRef = C959416318C59F0700DCD7E8 /* Connections.xib */; };
		C959416718C59F2500DCD7E8 /* PLSConnectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = C959416618C59F2500DCD7E8 /* PLSConnectionController.m */; };
		C968A03518B5CAF900E0DED3 /* PLSLoginController.m in Sources */ = {isa = PBXBuildFile; fileRef = C968A03418B5CAF900E0DED3 /* PLSLoginController.m */; };
		C968A03718B5CB0800E0DED3 /* Login.xib in Resources */ = {isa = PBXBuildFile; fileRef = C968A03618B5CB0800E0DED3 /* Login.xib */; };
		C9BE0C4F188BA1210042AC7B /* perforce.png in Resources */ = {isa = PBXBuildFile; fileRef = C9BE0C4E188BA1210042AC7B /* perforce.png */; };
		C9D6BB8518865A0200FF838D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9D6BB8418865A0200FF838D /* Cocoa.framework */; };
		C9D6BB8F18865A0200FF838D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C9D6BB8D18865A0200FF838D /* InfoPlist.strings */; };
		C9D6BB9118865A0200FF838D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C9D6BB9018865A0200FF838D /* main.m */; };
		C9D6BB9518865A0200FF838D /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = C9D6BB9318865A0200FF838D /* Credits.rtf */; };
		C9D6BB9818865A0200FF838D /* PLSAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9D6BB9718865A0200FF838D /* PLSAppDelegate.m */; };
		C9D6BB9D18865A0300FF838D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C9D6BB9C18865A0300FF838D /* Images.xcassets */; };
		C9D6BBA418865A0300FF838D /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9D6BBA318865A0300FF838D /* XCTest.framework */; };
		C9D6BBA518865A0300FF838D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9D6BB8418865A0200FF838D /* Cocoa.framework */; };
		C9D6BBAD18865A0300FF838D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C9D6BBAB18865A0300FF838D /* InfoPlist.strings */; };
		C9D6BBAF18865A0300FF838D /* PulseTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C9D6BBAE18865A0300FF838D /* PulseTests.m */; };
		C9D6BBBA18865A2B00FF838D /* FileSystemWatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = C9D6BBB918865A2B00FF838D /* FileSystemWatcher.m */; };
		C9EAD488189E1E1A0012AD44 /* P4Connection.m in Sources */ = {isa = PBXBuildFile; fileRef = C9EAD487189E1E1A0012AD44 /* P4Connection.m */; };
		C9EB2C10188E4913007FDD4F /* PLSOverseer.m in Sources */ = {isa = PBXBuildFile; fileRef = C9EB2C0F188E4913007FDD4F /* PLSOverseer.m */; };
		C9F4220618D18E0000990B06 /* PLSFileEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = C9F4220518D18E0000990B06 /* PLSFileEvent.m */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		C9D6BBA618865A0300FF838D /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = C9D6BB7918865A0200FF838D /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = C9D6BB8018865A0200FF838D;
			remoteInfo = Pulse;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		C90EE50C189A2C03004DA5BA /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
		C91CC3C718B1DD2C002E09A1 /* P4Message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = P4Message.h; sourceTree = "<group>"; };
		C91CC3C818B1DD2C002E09A1 /* P4Message.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = P4Message.m; sourceTree = "<group>"; };
		C934186518B72854007E6FE5 /* perforce_angry.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = perforce_angry.png; sourceTree = "<group>"; };
		C934186818BB198D007E6FE5 /* perforce_sad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = perforce_sad.png; sourceTree = "<group>"; };
		C959416318C59F0700DCD7E8 /* Connections.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Connections.xib; sourceTree = "<group>"; };
		C959416518C59F2500DCD7E8 /* PLSConnectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLSConnectionController.h; sourceTree = "<group>"; };
		C959416618C59F2500DCD7E8 /* PLSConnectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLSConnectionController.m; sourceTree = "<group>"; };
		C968A03318B5CAF900E0DED3 /* PLSLoginController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLSLoginController.h; sourceTree = "<group>"; };
		C968A03418B5CAF900E0DED3 /* PLSLoginController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLSLoginController.m; sourceTree = "<group>"; };
		C968A03618B5CB0800E0DED3 /* Login.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Login.xib; sourceTree = "<group>"; };
		C9BE0C4E188BA1210042AC7B /* perforce.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = perforce.png; sourceTree = "<group>"; };
		C9D6BB8118865A0200FF838D /* Pulse.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Pulse.app; sourceTree = BUILT_PRODUCTS_DIR; };
		C9D6BB8418865A0200FF838D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
		C9D6BB8718865A0200FF838D /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
		C9D6BB8818865A0200FF838D /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
		C9D6BB8918865A0200FF838D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
		C9D6BB8C18865A0200FF838D /* Pulse-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Pulse-Info.plist"; sourceTree = "<group>"; };
		C9D6BB8E18865A0200FF838D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
		C9D6BB9018865A0200FF838D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		C9D6BB9218865A0200FF838D /* Pulse-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Pulse-Prefix.pch"; sourceTree = "<group>"; };
		C9D6BB9418865A0200FF838D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
		C9D6BB9618865A0200FF838D /* PLSAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PLSAppDelegate.h; sourceTree = "<group>"; };
		C9D6BB9718865A0200FF838D /* PLSAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PLSAppDelegate.m; sourceTree = "<group>"; };
		C9D6BB9C18865A0300FF838D /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
		C9D6BBA218865A0300FF838D /* PulseTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PulseTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		C9D6BBA318865A0300FF838D /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
		C9D6BBAA18865A0300FF838D /* PulseTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PulseTests-Info.plist"; sourceTree = "<group>"; };
		C9D6BBAC18865A0300FF838D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
		C9D6BBAE18865A0300FF838D /* PulseTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PulseTests.m; sourceTree = "<group>"; };
		C9D6BBB818865A2B00FF838D /* FileSystemWatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileSystemWatcher.h; sourceTree = "<group>"; };
		C9D6BBB918865A2B00FF838D /* FileSystemWatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FileSystemWatcher.m; sourceTree = "<group>"; };
		C9EAD486189E1E1A0012AD44 /* P4Connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = P4Connection.h; sourceTree = "<group>"; };
		C9EAD487189E1E1A0012AD44 /* P4Connection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = P4Connection.m; sourceTree = "<group>"; };
		C9EB2C0E188E4913007FDD4F /* PLSOverseer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLSOverseer.h; sourceTree = "<group>"; };
		C9EB2C0F188E4913007FDD4F /* PLSOverseer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLSOverseer.m; sourceTree = "<group>"; };
		C9F4220418D18E0000990B06 /* PLSFileEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLSFileEvent.h; sourceTree = "<group>"; };
		C9F4220518D18E0000990B06 /* PLSFileEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLSFileEvent.m; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		C9D6BB7E18865A0200FF838D /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C9D6BB8518865A0200FF838D /* Cocoa.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		C9D6BB9F18865A0300FF838D /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C9D6BBA518865A0300FF838D /* Cocoa.framework in Frameworks */,
				C9D6BBA418865A0300FF838D /* XCTest.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		C90D3A10189A306200912393 /* Connections Window */ = {
			isa = PBXGroup;
			children = (
				C959416318C59F0700DCD7E8 /* Connections.xib */,
				C959416518C59F2500DCD7E8 /* PLSConnectionController.h */,
				C959416618C59F2500DCD7E8 /* PLSConnectionController.m */,
			);
			name = "Connections Window";
			sourceTree = "<group>";
		};
		C91CC3C618B1DD09002E09A1 /* P4 */ = {
			isa = PBXGroup;
			children = (
				C9EAD486189E1E1A0012AD44 /* P4Connection.h */,
				C9EAD487189E1E1A0012AD44 /* P4Connection.m */,
				C91CC3C718B1DD2C002E09A1 /* P4Message.h */,
				C91CC3C818B1DD2C002E09A1 /* P4Message.m */,
			);
			name = P4;
			sourceTree = "<group>";
		};
		C934186418B71C09007E6FE5 /* Windows */ = {
			isa = PBXGroup;
			children = (
				C90D3A10189A306200912393 /* Connections Window */,
				C968A02B18B5CA2300E0DED3 /* Login Window */,
			);
			name = Windows;
			sourceTree = "<group>";
		};
		C968A02B18B5CA2300E0DED3 /* Login Window */ = {
			isa = PBXGroup;
			children = (
				C968A03318B5CAF900E0DED3 /* PLSLoginController.h */,
				C968A03418B5CAF900E0DED3 /* PLSLoginController.m */,
				C968A03618B5CB0800E0DED3 /* Login.xib */,
			);
			name = "Login Window";
			sourceTree = "<group>";
		};
		C9D6BB7818865A0200FF838D = {
			isa = PBXGroup;
			children = (
				C934186818BB198D007E6FE5 /* perforce_sad.png */,
				C934186518B72854007E6FE5 /* perforce_angry.png */,
				C9BE0C4E188BA1210042AC7B /* perforce.png */,
				C9D6BB8A18865A0200FF838D /* Pulse */,
				C9D6BBA818865A0300FF838D /* PulseTests */,
				C9D6BB8318865A0200FF838D /* Frameworks */,
				C9D6BB8218865A0200FF838D /* Products */,
			);
			sourceTree = "<group>";
		};
		C9D6BB8218865A0200FF838D /* Products */ = {
			isa = PBXGroup;
			children = (
				C9D6BB8118865A0200FF838D /* Pulse.app */,
				C9D6BBA218865A0300FF838D /* PulseTests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		C9D6BB8318865A0200FF838D /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				C9D6BB8418865A0200FF838D /* Cocoa.framework */,
				C9D6BBA318865A0300FF838D /* XCTest.framework */,
				C9D6BB8618865A0200FF838D /* Other Frameworks */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		C9D6BB8618865A0200FF838D /* Other Frameworks */ = {
			isa = PBXGroup;
			children = (
				C9D6BB8718865A0200FF838D /* AppKit.framework */,
				C9D6BB8818865A0200FF838D /* CoreData.framework */,
				C9D6BB8918865A0200FF838D /* Foundation.framework */,
			);
			name = "Other Frameworks";
			sourceTree = "<group>";
		};
		C9D6BB8A18865A0200FF838D /* Pulse */ = {
			isa = PBXGroup;
			children = (
				C934186418B71C09007E6FE5 /* Windows */,
				C91CC3C618B1DD09002E09A1 /* P4 */,
				C90EE50C189A2C03004DA5BA /* MainMenu.xib */,
				C9D6BB9618865A0200FF838D /* PLSAppDelegate.h */,
				C9D6BB9718865A0200FF838D /* PLSAppDelegate.m */,
				C9D6BBB818865A2B00FF838D /* FileSystemWatcher.h */,
				C9D6BBB918865A2B00FF838D /* FileSystemWatcher.m */,
				C9EB2C0E188E4913007FDD4F /* PLSOverseer.h */,
				C9EB2C0F188E4913007FDD4F /* PLSOverseer.m */,
				C9D6BB9C18865A0300FF838D /* Images.xcassets */,
				C9D6BB8B18865A0200FF838D /* Supporting Files */,
				C9F4220418D18E0000990B06 /* PLSFileEvent.h */,
				C9F4220518D18E0000990B06 /* PLSFileEvent.m */,
			);
			path = Pulse;
			sourceTree = "<group>";
		};
		C9D6BB8B18865A0200FF838D /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				C9D6BB8C18865A0200FF838D /* Pulse-Info.plist */,
				C9D6BB8D18865A0200FF838D /* InfoPlist.strings */,
				C9D6BB9018865A0200FF838D /* main.m */,
				C9D6BB9218865A0200FF838D /* Pulse-Prefix.pch */,
				C9D6BB9318865A0200FF838D /* Credits.rtf */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		C9D6BBA818865A0300FF838D /* PulseTests */ = {
			isa = PBXGroup;
			children = (
				C9D6BBAE18865A0300FF838D /* PulseTests.m */,
				C9D6BBA918865A0300FF838D /* Supporting Files */,
			);
			path = PulseTests;
			sourceTree = "<group>";
		};
		C9D6BBA918865A0300FF838D /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				C9D6BBAA18865A0300FF838D /* PulseTests-Info.plist */,
				C9D6BBAB18865A0300FF838D /* InfoPlist.strings */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		C9D6BB8018865A0200FF838D /* Pulse */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = C9D6BBB218865A0300FF838D /* Build configuration list for PBXNativeTarget "Pulse" */;
			buildPhases = (
				C9D6BB7D18865A0200FF838D /* Sources */,
				C9D6BB7E18865A0200FF838D /* Frameworks */,
				C9D6BB7F18865A0200FF838D /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = Pulse;
			productName = Pulse;
			productReference = C9D6BB8118865A0200FF838D /* Pulse.app */;
			productType = "com.apple.product-type.application";
		};
		C9D6BBA118865A0300FF838D /* PulseTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = C9D6BBB518865A0300FF838D /* Build configuration list for PBXNativeTarget "PulseTests" */;
			buildPhases = (
				C9D6BB9E18865A0300FF838D /* Sources */,
				C9D6BB9F18865A0300FF838D /* Frameworks */,
				C9D6BBA018865A0300FF838D /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				C9D6BBA718865A0300FF838D /* PBXTargetDependency */,
			);
			name = PulseTests;
			productName = PulseTests;
			productReference = C9D6BBA218865A0300FF838D /* PulseTests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		C9D6BB7918865A0200FF838D /* Project object */ = {
			isa = PBXProject;
			attributes = {
				CLASSPREFIX = PLS;
				LastUpgradeCheck = 0500;
				ORGANIZATIONNAME = "Zen of the Monkey";
				TargetAttributes = {
					C9D6BBA118865A0300FF838D = {
						TestTargetID = C9D6BB8018865A0200FF838D;
					};
				};
			};
			buildConfigurationList = C9D6BB7C18865A0200FF838D /* Build configuration list for PBXProject "Pulse" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = C9D6BB7818865A0200FF838D;
			productRefGroup = C9D6BB8218865A0200FF838D /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				C9D6BB8018865A0200FF838D /* Pulse */,
				C9D6BBA118865A0300FF838D /* PulseTests */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		C9D6BB7F18865A0200FF838D /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C959416418C59F0700DCD7E8 /* Connections.xib in Resources */,
				C9D6BB8F18865A0200FF838D /* InfoPlist.strings in Resources */,
				C9D6BB9D18865A0300FF838D /* Images.xcassets in Resources */,
				C934186918BB198D007E6FE5 /* perforce_sad.png in Resources */,
				C9BE0C4F188BA1210042AC7B /* perforce.png in Resources */,
				C934186618B72854007E6FE5 /* perforce_angry.png in Resources */,
				C9D6BB9518865A0200FF838D /* Credits.rtf in Resources */,
				C90EE50D189A2C03004DA5BA /* MainMenu.xib in Resources */,
				C968A03718B5CB0800E0DED3 /* Login.xib in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		C9D6BBA018865A0300FF838D /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C9D6BBAD18865A0300FF838D /* InfoPlist.strings in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		C9D6BB7D18865A0200FF838D /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C9F4220618D18E0000990B06 /* PLSFileEvent.m in Sources */,
				C9D6BB9818865A0200FF838D /* PLSAppDelegate.m in Sources */,
				C91CC3C918B1DD2C002E09A1 /* P4Message.m in Sources */,
				C959416718C59F2500DCD7E8 /* PLSConnectionController.m in Sources */,
				C968A03518B5CAF900E0DED3 /* PLSLoginController.m in Sources */,
				C9D6BBBA18865A2B00FF838D /* FileSystemWatcher.m in Sources */,
				C9EAD488189E1E1A0012AD44 /* P4Connection.m in Sources */,
				C9EB2C10188E4913007FDD4F /* PLSOverseer.m in Sources */,
				C9D6BB9118865A0200FF838D /* main.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		C9D6BB9E18865A0300FF838D /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				C9D6BBAF18865A0300FF838D /* PulseTests.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		C9D6BBA718865A0300FF838D /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = C9D6BB8018865A0200FF838D /* Pulse */;
			targetProxy = C9D6BBA618865A0300FF838D /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
		C9D6BB8D18865A0200FF838D /* InfoPlist.strings */ = {
			isa = PBXVariantGroup;
			children = (
				C9D6BB8E18865A0200FF838D /* en */,
			);
			name = InfoPlist.strings;
			sourceTree = "<group>";
		};
		C9D6BB9318865A0200FF838D /* Credits.rtf */ = {
			isa = PBXVariantGroup;
			children = (
				C9D6BB9418865A0200FF838D /* en */,
			);
			name = Credits.rtf;
			sourceTree = "<group>";
		};
		C9D6BBAB18865A0300FF838D /* InfoPlist.strings */ = {
			isa = PBXVariantGroup;
			children = (
				C9D6BBAC18865A0300FF838D /* en */,
			);
			name = InfoPlist.strings;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		C9D6BBB018865A0300FF838D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.9;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = macosx;
			};
			name = Debug;
		};
		C9D6BBB118865A0300FF838D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = YES;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.9;
				SDKROOT = macosx;
			};
			name = Release;
		};
		C9D6BBB318865A0300FF838D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				COMBINE_HIDPI_IMAGES = YES;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "Pulse/Pulse-Prefix.pch";
				INFOPLIST_FILE = "Pulse/Pulse-Info.plist";
				PRODUCT_NAME = "$(TARGET_NAME)";
				WRAPPER_EXTENSION = app;
			};
			name = Debug;
		};
		C9D6BBB418865A0300FF838D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				COMBINE_HIDPI_IMAGES = YES;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "Pulse/Pulse-Prefix.pch";
				INFOPLIST_FILE = "Pulse/Pulse-Info.plist";
				PRODUCT_NAME = "$(TARGET_NAME)";
				WRAPPER_EXTENSION = app;
			};
			name = Release;
		};
		C9D6BBB618865A0300FF838D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Pulse.app/Contents/MacOS/Pulse";
				COMBINE_HIDPI_IMAGES = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(DEVELOPER_FRAMEWORKS_DIR)",
					"$(inherited)",
				);
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "Pulse/Pulse-Prefix.pch";
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				INFOPLIST_FILE = "PulseTests/PulseTests-Info.plist";
				PRODUCT_NAME = "$(TARGET_NAME)";
				TEST_HOST = "$(BUNDLE_LOADER)";
				WRAPPER_EXTENSION = xctest;
			};
			name = Debug;
		};
		C9D6BBB718865A0300FF838D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Pulse.app/Contents/MacOS/Pulse";
				COMBINE_HIDPI_IMAGES = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(DEVELOPER_FRAMEWORKS_DIR)",
					"$(inherited)",
				);
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "Pulse/Pulse-Prefix.pch";
				INFOPLIST_FILE = "PulseTests/PulseTests-Info.plist";
				PRODUCT_NAME = "$(TARGET_NAME)";
				TEST_HOST = "$(BUNDLE_LOADER)";
				WRAPPER_EXTENSION = xctest;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		C9D6BB7C18865A0200FF838D /* Build configuration list for PBXProject "Pulse" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				C9D6BBB018865A0300FF838D /* Debug */,
				C9D6BBB118865A0300FF838D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		C9D6BBB218865A0300FF838D /* Build configuration list for PBXNativeTarget "Pulse" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				C9D6BBB318865A0300FF838D /* Debug */,
				C9D6BBB418865A0300FF838D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		C9D6BBB518865A0300FF838D /* Build configuration list for PBXNativeTarget "PulseTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				C9D6BBB618865A0300FF838D /* Debug */,
				C9D6BBB718865A0300FF838D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = C9D6BB7918865A0200FF838D /* Project object */;
}
# Change User Description Committed
#12 8706 Matt Attaway Infrastructure work to more intelligently handle FSEvents

Prior to this change all file system events were equal; chown-ing a file
was considered the same as changing the content. With this change
we:

1) bundle all of the file events into one operation instead or doing it one file at a time
2) ignore any file events that are not create/delete/modify/rename

The interfaces are all in place, but the Overseers are still not taking advantage of this
information, so there’s no user visible change at this time. (hopefully)

Infrastructure only change
#11 8686 Matt Attaway Swap in new connection dialog

There’s still a fair amount of polish to do, but it’s good enough to
replace the old connection dialog.

User visible change
#10 8684 Matt Attaway First steps on the new connection dialog

At this point it’s effectively a read only dialog. Changes made in the text fields are
currently ignored. It does look much nicer though. To view it use the appropriately named
‘??????’ menu entry.

User visible change
#9 8595 Matt Attaway WIP on handling connection errors

With this change we report the errors to our delegate, but we don’t attempt to recover. That
will come with the next checkin. This change does add in the protocol for handling these errors.

User visible change
#8 8592 Matt Attaway Add less aggressive notification when background processes detect need to login

Instead of popping a dialog up right in your face we use a standard notification
and change the status icon to indicate Pulse is unhappy. Using the login menu
item will log the user is and restart the background processes.

User visible change.
#7 8590 Matt Attaway Add crude login capabilities

This is the first step toward getting the login behavior I want. Right now anytime a Peforce command
gets a login error the Overseer ion charge notifies its delegate, which is currently the AppDelegate. The
AppDelegate then kicks off the requisite login dialog which gets the password and does the login.

There’s no error handling or feedback and the dialog pops up even when it is a background process that
hit the error.

The next step is to implement the Login menu item and the ‘need login’ tool tip and status icon.

User visible (and possibly user annoying) change
#6 8569 Matt Attaway Rejigger P4Connection to use a standard return type

The previous mechanism made it hard to return anything but error messages. With the P4Message
object we can return dictionaries, lists, and messages with a single object. I can use the new object
more intelligently, but that’s for another change.

I also reorganized the code to separate the ‘p4’ layer off into its own potentially reusable bucket.

No functional change.
#5 8525 Matt Attaway Refactor the Perforce interaction out of the Overseer into a separate class

No functional change, hopefully. This should just simplify the Overseer code
and set me up to have a proper place to run Perforce commands.
#4 8519 Matt Attaway Finally add a connections dialog to manage connections

It’s taken a week to figure out how to manage windows and tabelviews,
but this change adds a crude connection dialog to add and remove connections
as well as save them out to the preferences file. More to do to make it
more sane, but it works for now!
#3 8506 Matt Attaway Pull model out of controller; disable dock icon

No functional change, but the code is moderately more sane. This
change introduces an Overseer object that is responsible for maintaining
one path/Port/User/Client combination. All of the delegation responsibilities
move to the Overseer, as does FileSystemWatcher configuration.

Overall this just sets me up to actually monitor multiple paths.
#2 8504 Matt Attaway Add all the APIs!!!

This adds in a status bar icon with a pointless menu as well as needless
notifications when a file changes in the watched path. While essentially useless,
I think I’ve found the APIs for all the major pieces. Now I just need to make
them do something useful…
#1 8502 Matt Attaway Initial checkin of Pulse, a lightweight Perforce client for the Mac

This is a sketch of what a Perforce client inspired by the UX of cloud synchronization software
would look like. I’m not trying to build something production worthy yet; at this point I’m just
trying to get something up and running as fast as possible so I can play with the UX.

At this point I can monitor a directory and kick off ‘p4 info’ calls anytime a file changes. It
is the polar opposite of useful.

Do note I’ve never written code in Objective-C before. Here be ugly, malformed dragons.