public PBXObject(string guid, PBXDictionary dictionary) : this(guid) { // Debug.Log( "constructor parent " + this.GetType().Name ); if (!dictionary.ContainsKey(ISA_KEY) || ((string)dictionary [ISA_KEY]).CompareTo(this.GetType().Name) != 0) { Debug.LogError("PBXDictionary is not a valid ISA object"); } foreach (KeyValuePair <string, object> item in dictionary) { _data [item.Key] = item.Value; } }
public bool AddPushSystemCapabilities(bool value) { bool modified = false; PBXList targets = ((PBXList)_data [TARGET_KEY]); if (!ContainsKey(ATTRIBUTES_KEY)) { this.Add(ATTRIBUTES_KEY, new PBXDictionary()); modified = true; } PBXDictionary attributes = ((PBXDictionary)_data [ATTRIBUTES_KEY]); if (!attributes.ContainsKey(TARGET_ATTRIBUTES_KEY)) { attributes.Add(TARGET_ATTRIBUTES_KEY, new PBXDictionary()); modified = true; } PBXDictionary targetAttributes = ((PBXDictionary)attributes [TARGET_ATTRIBUTES_KEY]); foreach (object target in targets) { string targetKey = (string)target; if (!targetAttributes.ContainsKey(targetKey)) { targetAttributes.Add(targetKey, new PBXDictionary()); PBXDictionary targetAttribute = (PBXDictionary)targetAttributes [targetKey]; targetAttribute.Add("SystemCapabilities", new PBXDictionary()); PBXDictionary systemCapabilities = (PBXDictionary)targetAttribute ["SystemCapabilities"]; systemCapabilities.Add("com.apple.Push", new PBXDictionary()); PBXDictionary applePush = (PBXDictionary)systemCapabilities ["com.apple.Push"]; if (value) { applePush.Add("enabled", 1); } else { applePush.Add("enabled", 0); } modified = true; } else { PBXDictionary targetAttribute = (PBXDictionary)targetAttributes [targetKey]; if (!targetAttribute.ContainsKey(TEST_TARGET_ID_KEY)) { if (!targetAttribute.ContainsKey("SystemCapabilities")) { targetAttribute.Add("SystemCapabilities", new PBXDictionary()); } PBXDictionary systemCapabilities = (PBXDictionary)targetAttribute ["SystemCapabilities"]; if (!systemCapabilities.ContainsKey("com.apple.Push")) { systemCapabilities.Add("com.apple.Push", new PBXDictionary()); } PBXDictionary applePush = (PBXDictionary)systemCapabilities ["com.apple.Push"]; if (applePush.ContainsKey("enabled")) { applePush.Remove("enabled"); } if (value) { applePush.Add("enabled", 1); } else { applePush.Add("enabled", 0); } modified = true; } } } return(modified); }
public bool ContainsKey(string key) { return(_data.ContainsKey(key)); }
public XCProject(string filePath) : this() { if (!System.IO.Directory.Exists(filePath)) { Debug.LogWarning("Path does not exists."); return; } if (filePath.EndsWith(".xcodeproj")) { Debug.Log("Opening project " + filePath); this.projectRootPath = Path.GetDirectoryName(filePath); this.filePath = filePath; } else { Debug.Log("Looking for xcodeproj files in " + filePath); string[] projects = System.IO.Directory.GetDirectories(filePath, "*.xcodeproj"); if (projects.Length == 0) { Debug.LogWarning("Error: missing xcodeproj file"); return; } this.projectRootPath = filePath; this.filePath = projects [0]; } // Convert to absolute this.projectRootPath = Path.GetFullPath(this.projectRootPath); projectFileInfo = new FileInfo(Path.Combine(this.filePath, "project.pbxproj")); StreamReader sr = projectFileInfo.OpenText(); string contents = sr.ReadToEnd(); sr.Close(); PBXParser parser = new PBXParser(); _datastore = parser.Decode(contents); if (_datastore == null) { throw new System.Exception("Project file not found at file path " + filePath); } if (!_datastore.ContainsKey("objects")) { Debug.Log("Errore " + _datastore.Count); return; } _objects = (PBXDictionary)_datastore ["objects"]; modified = false; _rootObjectKey = (string)_datastore ["rootObject"]; if (!string.IsNullOrEmpty(_rootObjectKey)) { // _rootObject = (PBXDictionary)_objects[ _rootObjectKey ]; _project = new PBXProject(_rootObjectKey, (PBXDictionary)_objects [_rootObjectKey]); // _rootGroup = (PBXDictionary)_objects[ (string)_rootObject[ "mainGroup" ] ]; _rootGroup = new PBXGroup(_rootObjectKey, (PBXDictionary)_objects [_project.mainGroupID]); } else { Debug.LogWarning("error: project has no root object"); _project = null; _rootGroup = null; } }