diff --git a/MatterControl.Printing/NamedAction.cs b/MatterControl.Printing/NamedAction.cs index abb828ca8..02518c78f 100644 --- a/MatterControl.Printing/NamedAction.cs +++ b/MatterControl.Printing/NamedAction.cs @@ -66,7 +66,7 @@ namespace MatterHackers.MatterControl public string Title => this.TitleResolver?.Invoke(); - public ImageBuffer Icon { get; set; } + public Func Icon { get; set; } } public static class NamedActionExtensions diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index 17f55e0b9..072e4f828 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -327,7 +327,7 @@ namespace MatterHackers.MatterControl && (nodeOperation.IsVisible?.Invoke(selectedItem) != false) && nodeOperation.IsEnabled?.Invoke(selectedItem) != false) { - var subMenuItem = modifyMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme)); + var subMenuItem = modifyMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme.InvertIcons)); subMenuItem.Click += (s2, e2) => { nodeOperation.Operation(selectedItem, scene).ConfigureAwait(false); @@ -347,7 +347,7 @@ namespace MatterHackers.MatterControl && (nodeOperation.IsVisible?.Invoke(selectedItem) != false) && nodeOperation.IsEnabled?.Invoke(selectedItem) != false) { - menuItem = popupMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme)); + menuItem = popupMenu.CreateMenuItem(nodeOperation.Title, nodeOperation.IconCollector?.Invoke(menuTheme.InvertIcons)); menuItem.Click += (s2, e2) => { nodeOperation.Operation(selectedItem, scene).ConfigureAwait(false); @@ -589,13 +589,13 @@ namespace MatterHackers.MatterControl public MainViewWidget MainView; - private Dictionary> registeredLibraryActions = new Dictionary>(); + private readonly Dictionary> registeredLibraryActions = new Dictionary>(); private List registeredSceneOperations; public ThumbnailsConfig Thumbnails { get; } - private void RebuildSceneOperations(ThemeConfig theme) + private void BuildSceneOperations() { registeredSceneOperations = new List() { @@ -637,7 +637,7 @@ namespace MatterHackers.MatterControl IsEnabled = (scene) => scene.SelectedItem != null && scene.SelectedItem is SelectionGroupObject3D && scene.SelectedItem.Children.Count > 1, - Icon = AggContext.StaticData.LoadIcon("group.png", 16, 16).SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("group.png", 16, 16).SetPreMultiply(), }, new SceneSelectionOperation() { @@ -646,7 +646,7 @@ namespace MatterHackers.MatterControl IsEnabled = (scene) => { var selectedItem = scene.SelectedItem; - if(selectedItem != null) + if (selectedItem != null) { return selectedItem is GroupObject3D || selectedItem.GetType() == typeof(Object3D) @@ -655,7 +655,7 @@ namespace MatterHackers.MatterControl return false; }, - Icon = AggContext.StaticData.LoadIcon("ungroup.png", 16, 16).SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("ungroup.png", 16, 16).SetPreMultiply(), }, new SceneSelectionSeparator(), new SceneSelectionOperation() @@ -663,14 +663,14 @@ namespace MatterHackers.MatterControl TitleResolver = () => "Duplicate".Localize(), Action = (sceneContext) => sceneContext.DuplicateItem(5), IsEnabled = (scene) => scene.SelectedItem != null, - Icon = AggContext.StaticData.LoadIcon("duplicate.png").SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("duplicate.png").SetPreMultiply(), }, new SceneSelectionOperation() { TitleResolver = () => "Remove".Localize(), Action = (sceneContext) => sceneContext.Scene.DeleteSelection(), IsEnabled = (scene) => scene.SelectedItem != null, - Icon = AggContext.StaticData.LoadIcon("remove.png").SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("remove.png").SetPreMultiply(), }, new SceneSelectionSeparator(), new SceneSelectionOperation() @@ -684,7 +684,7 @@ namespace MatterHackers.MatterControl var align = new AlignObject3D(); align.AddSelectionAsChildren(scene, selectedItem); }, - Icon = AggContext.StaticData.LoadIcon("align_left_dark.png", 16, 16, theme.InvertIcons).SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("align_left_dark.png", 16, 16, invertIcon).SetPreMultiply(), IsEnabled = (scene) => scene.SelectedItem is SelectionGroupObject3D, }, new SceneSelectionOperation() @@ -700,7 +700,7 @@ namespace MatterHackers.MatterControl } }, IsEnabled = (scene) => scene.SelectedItem != null, - Icon = AggContext.StaticData.LoadIcon("lay_flat.png", 16, 16).SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("lay_flat.png", 16, 16).SetPreMultiply(), }, new SceneSelectionSeparator(), new SceneSelectionOperation() @@ -708,7 +708,7 @@ namespace MatterHackers.MatterControl OperationType = typeof(CombineObject3D_2), TitleResolver = () => "Combine".Localize(), Action = (sceneContext) => new CombineObject3D_2().WrapSelectedItemAndSelect(sceneContext.Scene), - Icon = AggContext.StaticData.LoadIcon("combine.png").SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("combine.png").SetPreMultiply(), IsEnabled = (scene) => { var selectedItem = scene.SelectedItem; @@ -720,7 +720,7 @@ namespace MatterHackers.MatterControl OperationType = typeof(SubtractObject3D_2), TitleResolver = () => "Subtract".Localize(), Action = (sceneContext) => new SubtractObject3D_2().WrapSelectedItemAndSelect(sceneContext.Scene), - Icon = AggContext.StaticData.LoadIcon("subtract.png").SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("subtract.png").SetPreMultiply(), IsEnabled = (scene) => { var selectedItem = scene.SelectedItem; @@ -732,7 +732,7 @@ namespace MatterHackers.MatterControl OperationType = typeof(IntersectionObject3D_2), TitleResolver = () => "Intersect".Localize(), Action = (sceneContext) => new IntersectionObject3D_2().WrapSelectedItemAndSelect(sceneContext.Scene), - Icon = AggContext.StaticData.LoadIcon("intersect.png"), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("intersect.png"), IsEnabled = (scene) => { var selectedItem = scene.SelectedItem; @@ -744,7 +744,7 @@ namespace MatterHackers.MatterControl OperationType = typeof(SubtractAndReplaceObject3D_2), TitleResolver = () => "Subtract & Replace".Localize(), Action = (sceneContext) => new SubtractAndReplaceObject3D_2().WrapSelectedItemAndSelect(sceneContext.Scene), - Icon = AggContext.StaticData.LoadIcon("subtract_and_replace.png").SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("subtract_and_replace.png").SetPreMultiply(), IsEnabled = (scene) => { var selectedItem = scene.SelectedItem; @@ -761,7 +761,7 @@ namespace MatterHackers.MatterControl var array = new ArrayLinearObject3D(); array.AddSelectionAsChildren(sceneContext.Scene, sceneContext.Scene.SelectedItem); }, - Icon = AggContext.StaticData.LoadIcon("array_linear.png").SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("array_linear.png").SetPreMultiply(), IsEnabled = (scene) => scene.SelectedItem != null && !(scene.SelectedItem is SelectionGroupObject3D), }, new SceneSelectionOperation() @@ -773,7 +773,7 @@ namespace MatterHackers.MatterControl var array = new ArrayRadialObject3D(); array.AddSelectionAsChildren(sceneContext.Scene, sceneContext.Scene.SelectedItem); }, - Icon = AggContext.StaticData.LoadIcon("array_radial.png").SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("array_radial.png").SetPreMultiply(), IsEnabled = (scene) => scene.SelectedItem != null && !(scene.SelectedItem is SelectionGroupObject3D), }, new SceneSelectionOperation() @@ -785,7 +785,7 @@ namespace MatterHackers.MatterControl var array = new ArrayAdvancedObject3D(); array.AddSelectionAsChildren(sceneContext.Scene, sceneContext.Scene.SelectedItem); }, - Icon = AggContext.StaticData.LoadIcon("array_advanced.png").SetPreMultiply(), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("array_advanced.png").SetPreMultiply(), IsEnabled = (scene) => scene.SelectedItem != null && !(scene.SelectedItem is SelectionGroupObject3D), }, new SceneSelectionSeparator(), @@ -798,7 +798,7 @@ namespace MatterHackers.MatterControl var pinch = new PinchObject3D_2(); pinch.WrapSelectedItemAndSelect(sceneContext.Scene); }, - Icon = AggContext.StaticData.LoadIcon("pinch.png", 16, 16, theme.InvertIcons), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("pinch.png", 16, 16, invertIcon), IsEnabled = (scene) => scene.SelectedItem != null, }, new SceneSelectionOperation() @@ -810,7 +810,7 @@ namespace MatterHackers.MatterControl var curve = new CurveObject3D_2(); curve.WrapSelectedItemAndSelect(sceneContext.Scene); }, - Icon = AggContext.StaticData.LoadIcon("curve.png", 16, 16, theme.InvertIcons), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("curve.png", 16, 16, invertIcon), IsEnabled = (scene) => scene.SelectedItem != null, }, new SceneSelectionOperation() @@ -822,7 +822,7 @@ namespace MatterHackers.MatterControl var curve = new TwistObject3D(); curve.WrapSelectedItemAndSelect(sceneContext.Scene); }, - Icon = AggContext.StaticData.LoadIcon("twist.png", 16, 16, theme.InvertIcons), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("twist.png", 16, 16, invertIcon), IsEnabled = (scene) => scene.SelectedItem != null, }, new SceneSelectionOperation() @@ -841,7 +841,7 @@ namespace MatterHackers.MatterControl scene.UndoBuffer.AddAndDo(new ReplaceCommand(new[] { selectedItem }, new[] { fit })); } }, - Icon = AggContext.StaticData.LoadIcon("fit.png", 16, 16, theme.InvertIcons), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("fit.png", 16, 16, invertIcon), IsEnabled = (scene) => scene.SelectedItem != null && !(scene.SelectedItem is SelectionGroupObject3D), }, #if DEBUG @@ -861,33 +861,33 @@ namespace MatterHackers.MatterControl scene.UndoBuffer.AddAndDo(new ReplaceCommand(new[] { selectedItem }, new[] { fit })); } }, - Icon = AggContext.StaticData.LoadIcon("fit.png", 16, 16, theme.InvertIcons), + Icon = (invertIcon) => AggContext.StaticData.LoadIcon("fit.png", 16, 16, invertIcon), IsEnabled = (scene) => scene.SelectedItem != null && !(scene.SelectedItem is SelectionGroupObject3D), }, #endif }; - var operationIconsByType = new Dictionary>(); + var operationIconsByType = new Dictionary>(); foreach (var operation in registeredSceneOperations) { if (operation.OperationType != null) { - operationIconsByType.Add(operation.OperationType, () => operation.Icon); + operationIconsByType.Add(operation.OperationType, operation.Icon); } } // TODO: Use custom selection group icon if reusing group icon seems incorrect // // Explicitly register SelectionGroup icon - if (operationIconsByType.TryGetValue(typeof(GroupObject3D), out Func groupIconSource)) + if (operationIconsByType.TryGetValue(typeof(GroupObject3D), out Func groupIconSource)) { operationIconsByType.Add(typeof(SelectionGroupObject3D), groupIconSource); } this.Thumbnails.OperationIcons = operationIconsByType; - operationIconsByType.Add(typeof(ImageObject3D), () => AggContext.StaticData.LoadIcon("140.png", 16, 16, theme.InvertIcons)); + operationIconsByType.Add(typeof(ImageObject3D), (invertIcon) => AggContext.StaticData.LoadIcon("140.png", 16, 16, invertIcon)); } public void OpenIntoNewTab(IEnumerable selectedLibraryItems) @@ -1139,7 +1139,7 @@ namespace MatterHackers.MatterControl //_activePrinters = new List(); }; - this.RebuildSceneOperations(this.Theme); + this.BuildSceneOperations(); this.Extensions = new ExtensionsConfig(this.Library); this.Extensions.Register(new ImageEditor()); @@ -1210,7 +1210,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("noun_479927.png", theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("noun_479927.png", invertIcon) }); this.Graph.RegisterOperation( @@ -1231,7 +1231,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon(Path.Combine("ViewTransformControls", "translate.png"), 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon(Path.Combine("ViewTransformControls", "translate.png"), 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1252,7 +1252,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon(Path.Combine("ViewTransformControls", "rotate.png"), 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon(Path.Combine("ViewTransformControls", "rotate.png"), 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1272,7 +1272,7 @@ namespace MatterHackers.MatterControl } return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("scale_32x32.png", 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("scale_32x32.png", 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1326,7 +1326,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("140.png", 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("140.png", 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1343,7 +1343,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("mirror_32x32.png", 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("mirror_32x32.png", 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1391,7 +1391,7 @@ namespace MatterHackers.MatterControl && sceneItem.Parent.Parent == null && sceneItem.DescendantsAndSelf().All(d => !(d is ComponentObject3D)); }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("scale_32x32.png", 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("scale_32x32.png", 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1422,7 +1422,7 @@ namespace MatterHackers.MatterControl && sceneItem is ComponentObject3D componentObject && componentObject.Finalized; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("scale_32x32.png", 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("scale_32x32.png", 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1452,7 +1452,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("noun_84751.png", theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("noun_84751.png", invertIcon) }); this.Graph.RegisterOperation( @@ -1481,7 +1481,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("noun_simplify_340976_000000.png", 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("noun_simplify_340976_000000.png", 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1510,7 +1510,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("noun_expand_1823853_000000.png", 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("noun_expand_1823853_000000.png", 16, 16, invertIcon) }); this.Graph.RegisterOperation( @@ -1546,7 +1546,7 @@ namespace MatterHackers.MatterControl return Task.CompletedTask; }, IsVisible = (sceneItem) => sceneItem.Children.Any((i) => i is IPathObject), - IconCollector = (theme) => AggContext.StaticData.LoadIcon("noun_55060.png", theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("noun_55060.png", invertIcon) }); this.InitializeLibrary(); @@ -2198,8 +2198,7 @@ namespace MatterHackers.MatterControl /// The action to register public void RegisterLibraryAction(string section, LibraryAction printItemAction) { - List items; - if (!registeredLibraryActions.TryGetValue(section, out items)) + if (!registeredLibraryActions.TryGetValue(section, out List items)) { items = new List(); registeredLibraryActions.Add(section, items); @@ -2215,8 +2214,7 @@ namespace MatterHackers.MatterControl /// public IEnumerable RegisteredLibraryActions(string section) { - List items; - if (registeredLibraryActions.TryGetValue(section, out items)) + if (registeredLibraryActions.TryGetValue(section, out List items)) { return items; } diff --git a/MatterControlLib/ApplicationView/ThumbnailsConfig.cs b/MatterControlLib/ApplicationView/ThumbnailsConfig.cs index bc29c83e2..9885bd4c1 100644 --- a/MatterControlLib/ApplicationView/ThumbnailsConfig.cs +++ b/MatterControlLib/ApplicationView/ThumbnailsConfig.cs @@ -60,7 +60,7 @@ namespace MatterHackers.MatterControl { } - public Dictionary> OperationIcons { get; internal set; } + public Dictionary> OperationIcons { get; internal set; } public ImageBuffer DefaultThumbnail() => AggContext.StaticData.LoadIcon("cube.png", 16, 16, theme.InvertIcons); diff --git a/MatterControlLib/DesignTools/EditorTools/LithophanePlugin.cs b/MatterControlLib/DesignTools/EditorTools/LithophanePlugin.cs index df6572654..94d02dfe3 100644 --- a/MatterControlLib/DesignTools/EditorTools/LithophanePlugin.cs +++ b/MatterControlLib/DesignTools/EditorTools/LithophanePlugin.cs @@ -92,7 +92,7 @@ namespace MatterHackers.MatterControl.Plugins.Lithophane }, IsEnabled = (sceneItem) => true, IsVisible = (sceneItem) => true, - IconCollector = (theme) => AggContext.StaticData.LoadIcon("lithophane.png", 16, 16, theme.InvertIcons) + IconCollector = (invertIcon) => AggContext.StaticData.LoadIcon("lithophane.png", 16, 16, invertIcon) }); } diff --git a/MatterControlLib/Library/Providers/GraphConfig.cs b/MatterControlLib/Library/Providers/GraphConfig.cs index 5d94754d2..7c35179eb 100644 --- a/MatterControlLib/Library/Providers/GraphConfig.cs +++ b/MatterControlLib/Library/Providers/GraphConfig.cs @@ -53,7 +53,7 @@ namespace MatterHackers.MatterControl.Library public Func IsVisible { get; set; } - public Func IconCollector { get; set; } + public Func IconCollector { get; set; } public Type ResultType { get; set; } } @@ -79,7 +79,7 @@ namespace MatterHackers.MatterControl.Library if (!thumbnails.OperationIcons.ContainsKey(resultType)) { - thumbnails.OperationIcons.Add(resultType, () => nodeOperation.IconCollector(applicationController.Theme)); + thumbnails.OperationIcons.Add(resultType, nodeOperation.IconCollector); } this.Operations.Add(nodeOperation.OperationID, nodeOperation); diff --git a/MatterControlLib/PartPreviewWindow/Object3DTreeBuilder.cs b/MatterControlLib/PartPreviewWindow/Object3DTreeBuilder.cs index 4217d84a8..d6ac2b48f 100644 --- a/MatterControlLib/PartPreviewWindow/Object3DTreeBuilder.cs +++ b/MatterControlLib/PartPreviewWindow/Object3DTreeBuilder.cs @@ -101,10 +101,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow keyValues.Add(item.Source, node); // Check for operation resulting in the given type - if (ApplicationController.Instance.Thumbnails.OperationIcons.TryGetValue(item.Source.GetType(), out Func iconSource)) + if (ApplicationController.Instance.Thumbnails.OperationIcons.TryGetValue(item.Source.GetType(), out Func iconSource)) { // If exists, use the operation icon - node.Image = iconSource?.Invoke(); + node.Image = iconSource?.Invoke(theme.InvertIcons); } else { diff --git a/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs b/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs index 9fda6097b..0ca011676 100644 --- a/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs +++ b/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs @@ -214,7 +214,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow foreach(var primaryAction in primaryActions) { // TODO: Run visible/enable rules on actions, conditionally add/enable as appropriate - var button = new IconButton(primaryAction.IconCollector(theme), theme) + var button = new IconButton(primaryAction.IconCollector(theme.InvertIcons), theme) { //Name = namedAction.Title + " Button", ToolTipText = primaryAction.Title, diff --git a/MatterControlLib/PartPreviewWindow/ViewControls3D.cs b/MatterControlLib/PartPreviewWindow/ViewControls3D.cs index c2c8e4b55..d89c422be 100644 --- a/MatterControlLib/PartPreviewWindow/ViewControls3D.cs +++ b/MatterControlLib/PartPreviewWindow/ViewControls3D.cs @@ -465,7 +465,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.AddChild(CreateSupportButton(theme)); } - button = new IconButton(namedAction.Icon, theme) + button = new IconButton(namedAction.Icon(theme.InvertIcons), theme) { Name = namedAction.Title + " Button", ToolTipText = namedAction.Title,