From 4e0962a4e7ddcfa1ec76ece84514094f209874c4 Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Fri, 14 Sep 2018 15:20:19 -0700 Subject: [PATCH] improve overflow menu on properties panel default to outline mode issue: MatterHackers/MCCentral#4136 Consider if Modify menu in Overflow menu improves usage --- .../ApplicationView/ApplicationController.cs | 33 +++++++++++++++---- .../ApplicationView/PrinterModels.cs | 4 +-- .../PartPreviewWindow/SelectedObjectPanel.cs | 2 +- .../PartPreviewWindow/View3D/View3DWidget.cs | 4 +-- Submodules/agg-sharp | 2 +- 5 files changed, 32 insertions(+), 13 deletions(-) diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index 7fce87b13..dc2568520 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -137,7 +137,7 @@ namespace MatterHackers.MatterControl private static PrinterConfig emptyPrinter = new PrinterConfig(PrinterSettings.Empty); - public PopupMenu GetActionMenuForSceneItem(IObject3D selectedItem, InteractiveScene scene) + public PopupMenu GetActionMenuForSceneItem(IObject3D selectedItem, InteractiveScene scene, bool addInSubmenu) { var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme); @@ -162,12 +162,12 @@ namespace MatterHackers.MatterControl popupMenu.CreateHorizontalLine(); - if (true) //allowOperations) + var selectedItemType = selectedItem.GetType(); + + var menuTheme = ApplicationController.Instance.MenuTheme; + + if (addInSubmenu) { - var selectedItemType = selectedItem.GetType(); - - var menuTheme = ApplicationController.Instance.MenuTheme; - popupMenu.CreateSubMenu("Modify".Localize(), ApplicationController.Instance.MenuTheme, (modifyMenu) => { foreach (var nodeOperation in ApplicationController.Instance.Graph.Operations) @@ -187,7 +187,26 @@ namespace MatterHackers.MatterControl } } }); - }; + } + else + { + foreach (var nodeOperation in ApplicationController.Instance.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); + }; + } + } + } + } return popupMenu; } diff --git a/MatterControlLib/ApplicationView/PrinterModels.cs b/MatterControlLib/ApplicationView/PrinterModels.cs index dab76e6d3..0a970a313 100644 --- a/MatterControlLib/ApplicationView/PrinterModels.cs +++ b/MatterControlLib/ApplicationView/PrinterModels.cs @@ -633,7 +633,7 @@ namespace MatterHackers.MatterControl public class SceneContextViewState { private BedConfig sceneContext; - private RenderTypes renderType = RenderTypes.Shaded; + private RenderTypes renderType = RenderTypes.Outlines; public SceneContextViewState(BedConfig sceneContext) { @@ -643,7 +643,7 @@ namespace MatterHackers.MatterControl string renderTypeString = UserSettings.Instance.get(UserSettingsKey.defaultRenderSetting); if (renderTypeString == null) { - renderTypeString = "Shaded"; + renderTypeString = "Outlines"; UserSettings.Instance.set(UserSettingsKey.defaultRenderSetting, renderTypeString); } diff --git a/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs b/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs index 3d3bdcb55..f33c7c908 100644 --- a/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs +++ b/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs @@ -139,7 +139,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow }; overflowButton.DynamicPopupContent = () => { - return ApplicationController.Instance.GetActionMenuForSceneItem(item, sceneContext.Scene); + return ApplicationController.Instance.GetActionMenuForSceneItem(item, sceneContext.Scene, false); }; toolbar.AddChild(overflowButton); diff --git a/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs b/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs index 6c18681ab..db59b3fac 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs @@ -190,7 +190,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { UiThread.RunOnIdle(() => { - var menu = ApplicationController.Instance.GetActionMenuForSceneItem((IObject3D)treeView.SelectedNode.Tag, Scene); + var menu = ApplicationController.Instance.GetActionMenuForSceneItem((IObject3D)treeView.SelectedNode.Tag, Scene, true); var systemWindow = this.Parents().FirstOrDefault(); systemWindow.ShowPopup( @@ -1215,7 +1215,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow UiThread.RunOnIdle(() => { - var menu = ApplicationController.Instance.GetActionMenuForSceneItem(selectedItem, Scene); + var menu = ApplicationController.Instance.GetActionMenuForSceneItem(selectedItem, Scene, true); var systemWindow = this.Parents().FirstOrDefault(); systemWindow.ShowPopup( diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 3dfdf792b..6490424fd 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 3dfdf792b388971298bbeb1f4cef338fac5d412d +Subproject commit 6490424fdd99eac73e75f4d178ef0f55031d3913