XmlElement xe = (XmlElement) xn;
BuildItem bi = new BuildItem (xe, this);
buildItems.Add (bi);
+ project.LastItemGroupContaining [bi.Name] = this;
}
}
string itemInclude,
bool treatItemIncludeAsLiteral)
{
+ BuildItem item;
+
if (treatItemIncludeAsLiteral)
itemInclude = Utilities.Escape (itemInclude);
- BuildItem bi = new BuildItem (itemName, itemInclude);
+ if (FromXml) {
+ XmlElement element = itemGroupElement.OwnerDocument.CreateElement (itemName, Project.XmlNamespace);
+ itemGroupElement.AppendChild (element);
+ element.SetAttribute ("Include", itemInclude);
+ item = new BuildItem (element, this);
+ } else {
+ item = new BuildItem (itemName, itemInclude);
+ }
- bi.Evaluate (null, true);
+ item.Evaluate (null, true);
if (!read_only)
- buildItems.Add (bi);
+ buildItems.Add (item);
+
+ if (parentProject != null) {
+ parentProject.MarkProjectAsDirty ();
+ parentProject.NeedToReevaluate ();
+ }
- return bi;
+ return item;
}
public void Clear ()
itemGroupElement.RemoveAll ();
buildItems = new List <BuildItem> ();
+
+ if (parentProject != null) {
+ parentProject.MarkProjectAsDirty ();
+ parentProject.NeedToReevaluate ();
+ }
}
[MonoTODO]
public void RemoveItem (BuildItem itemToRemove)
{
+ if (itemToRemove == null)
+ return;
+
+ itemToRemove.Detach ();
+
buildItems.Remove (itemToRemove);
}
public void RemoveItemAt (int index)
{
- buildItems.RemoveAt (index);
+ BuildItem item = buildItems [index];
+
+ RemoveItem (item);
}
public BuildItem[] ToArray ()
return array;
}
+ internal void Detach ()
+ {
+ if (!FromXml)
+ throw new InvalidOperationException ();
+
+ itemGroupElement.ParentNode.RemoveChild (itemGroupElement);
+ }
+
internal void Evaluate ()
{
foreach (BuildItem bi in buildItems) {
buildItems.InsertRange (index, list);
}
- [MonoTODO]
- // FIXME: whether we can invoke get_Condition on BuildItemGroup not based on XML
public string Condition {
get {
if (FromXml)
set { parentCollection = value; }
}
- internal Project Project {
+ internal Project ParentProject {
get { return parentProject; }
}
return itemGroupElement != null;
}
}
+
+ internal XmlElement XmlElement {
+ get {
+ return itemGroupElement;
+ }
+ }
}
}