Made Object3D listen for and update on Children modified

added Immutable Attribute
added Hide From Tree View Attribute

issue: MatterHackers/MCCentral#4806
support remove does not update tree view
This commit is contained in:
Lars Brubaker 2019-01-07 10:11:12 -08:00
parent adc1b4862e
commit 4c6db60ec6
8 changed files with 111 additions and 33 deletions

View file

@ -295,9 +295,31 @@ namespace MatterHackers.MatterControl
var menuTheme = this.MenuTheme;
if (addInSubmenu)
if (!selectedItemType.IsDefined(typeof(ImmutableAttribute), false))
{
popupMenu.CreateSubMenu("Modify".Localize(), this.MenuTheme, (modifyMenu) =>
if (addInSubmenu)
{
popupMenu.CreateSubMenu("Modify".Localize(), this.MenuTheme, (modifyMenu) =>
{
foreach (var nodeOperation in this.Graph.Operations)
{
foreach (var type in nodeOperation.MappedTypes)
{
if (type.IsAssignableFrom(selectedItemType)
&& (nodeOperation.IsVisible?.Invoke(selectedItem) != false)
&& nodeOperation.IsEnabled?.Invoke(selectedItem) != false)
{
var subMenuItem = modifyMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme));
subMenuItem.Click += (s2, e2) =>
{
nodeOperation.Operation(selectedItem, scene).ConfigureAwait(false);
};
}
}
}
});
}
else
{
foreach (var nodeOperation in this.Graph.Operations)
{
@ -307,33 +329,14 @@ namespace MatterHackers.MatterControl
&& (nodeOperation.IsVisible?.Invoke(selectedItem) != false)
&& nodeOperation.IsEnabled?.Invoke(selectedItem) != false)
{
var subMenuItem = modifyMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme));
subMenuItem.Click += (s2, e2) =>
menuItem = popupMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme));
menuItem.Click += (s2, e2) =>
{
nodeOperation.Operation(selectedItem, scene).ConfigureAwait(false);
};
}
}
}
});
}
else
{
foreach (var nodeOperation in this.Graph.Operations)
{
foreach (var type in nodeOperation.MappedTypes)
{
if (type.IsAssignableFrom(selectedItemType)
&& (nodeOperation.IsVisible?.Invoke(selectedItem) != false)
&& nodeOperation.IsEnabled?.Invoke(selectedItem) != false)
{
menuItem = popupMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme));
menuItem.Click += (s2, e2) =>
{
nodeOperation.Operation(selectedItem, scene).ConfigureAwait(false);
};
}
}
}
}