From 270025844efdf50151c8cb4d1879dfe38ece9966 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Tue, 19 Sep 2017 08:44:43 -0700 Subject: [PATCH 1/4] Restore inspection toggle via F1, hooks for exit on mouse up --- InspectForm.cs | 46 +++++++++++++++++++++++++++++++++---- MatterControlApplication.cs | 34 +++++++++++++++++++-------- 2 files changed, 65 insertions(+), 15 deletions(-) diff --git a/InspectForm.cs b/InspectForm.cs index 45636f07d..03aa3688d 100644 --- a/InspectForm.cs +++ b/InspectForm.cs @@ -11,6 +11,7 @@ namespace MatterHackers.MatterControl public partial class InspectForm : Form { private TreeNode activeTreeNode; + private GuiWidget inspectedWidget; private GuiWidget InspectedWidget { @@ -20,14 +21,21 @@ namespace MatterHackers.MatterControl if (inspectedWidget != null) { inspectedWidget.DebugShowBounds = false; + inspectedWidget.MouseUp -= InspectedWidget_MouseUp; + inspectedWidget.MouseDown -= InspectedWidget_MouseUp; } inspectedWidget = value; - inspectedWidget.DebugShowBounds = true; if (inspectedWidget != null) { propertyGrid1.SelectedObject = inspectedWidget; + + inspectedWidget.DebugShowBounds = true; + + // Hook to stop listing on click + inspectedWidget.MouseUp += InspectedWidget_MouseUp; + inspectedWidget.MouseDown += InspectedWidget_MouseUp; } if (activeTreeNode != null) @@ -46,26 +54,30 @@ namespace MatterHackers.MatterControl } } - bool showNamesUnderMouse = true; - private GuiWidget inspectedSystemWindow; private Vector2 mousePosition; - Dictionary treeNodes = new Dictionary(); + private Dictionary treeNodes = new Dictionary(); public InspectForm(GuiWidget inspectionSource) { InitializeComponent(); + // Store position on move, invalidate in needed inspectionSource.MouseMove += (s, e) => { mousePosition = e.Position; + + if (this.inspectedWidget?.FirstWidgetUnderMouse == false) + { + this.inspectedSystemWindow.Invalidate(); + } }; inspectionSource.AfterDraw += (s, e) => { - if (showNamesUnderMouse && !inspectionSource.HasBeenClosed) + if (this.Inspecting && !inspectionSource.HasBeenClosed) { var namedChildren = new List(); inspectedSystemWindow.FindNamedChildrenRecursive( @@ -91,6 +103,14 @@ namespace MatterHackers.MatterControl inspectionSource.Invalidate(); } + public bool Inspecting { get; set; } + + private void InspectedWidget_MouseUp(object sender, Agg.UI.MouseEventArgs e) + { + // Stop listing on click + this.Inspecting = false; + } + private void AddItem(GuiWidget widget, string text, TreeNode childNode = null) { if (treeNodes.TryGetValue(widget, out TreeNode existingNode)) @@ -180,5 +200,21 @@ namespace MatterHackers.MatterControl { this.InspectedWidget.Invalidate(); } + + public void MoveUpTree() + { + if (activeTreeNode?.Parent is TreeNode parent) + { + this.InspectedWidget = parent.Tag as GuiWidget; + } + } + + public void MoveDownTree() + { + if (activeTreeNode?.Nodes.Cast().FirstOrDefault() is TreeNode firstChild) + { + this.InspectedWidget = firstChild.Tag as GuiWidget; + } + } } } diff --git a/MatterControlApplication.cs b/MatterControlApplication.cs index 7180826d8..5addb9904 100644 --- a/MatterControlApplication.cs +++ b/MatterControlApplication.cs @@ -757,18 +757,32 @@ namespace MatterHackers.MatterControl if (!keyEvent.Handled) { - if (keyEvent.KeyCode == Keys.F1) + switch (keyEvent.KeyCode) { - //showNamesUnderMouse = !showNamesUnderMouse; - if (inspectForm == null) - { - inspectForm = new InspectForm(this); - inspectForm.FormClosed += (s, e2) => + case Keys.F1: + if (inspectForm != null) { - inspectForm = null; - }; - inspectForm.Show(); - } + // Toggle mode if window is open + inspectForm.Inspecting = !inspectForm.Inspecting; + } + else + { + // Otherwise open + inspectForm = new InspectForm(this); + inspectForm.FormClosed += (s, e2) => + { + inspectForm = null; + }; + inspectForm.Show(); + } + break; + case Keys.F2: + inspectForm?.MoveUpTree(); + break; + + case Keys.F3: + inspectForm?.MoveDownTree(); + break; } } } From 0aebbbe84103232ec724c6ed2c89d155347d5b9b Mon Sep 17 00:00:00 2001 From: John Lewin Date: Tue, 19 Sep 2017 08:51:08 -0700 Subject: [PATCH 2/4] Move property below constructor, remove key bindings --- InspectForm.cs | 105 +++++++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 61 deletions(-) diff --git a/InspectForm.cs b/InspectForm.cs index 03aa3688d..d3cc813fe 100644 --- a/InspectForm.cs +++ b/InspectForm.cs @@ -11,49 +11,6 @@ namespace MatterHackers.MatterControl public partial class InspectForm : Form { private TreeNode activeTreeNode; - - private GuiWidget inspectedWidget; - private GuiWidget InspectedWidget - { - get => inspectedWidget; - set - { - if (inspectedWidget != null) - { - inspectedWidget.DebugShowBounds = false; - inspectedWidget.MouseUp -= InspectedWidget_MouseUp; - inspectedWidget.MouseDown -= InspectedWidget_MouseUp; - } - - inspectedWidget = value; - - if (inspectedWidget != null) - { - propertyGrid1.SelectedObject = inspectedWidget; - - inspectedWidget.DebugShowBounds = true; - - // Hook to stop listing on click - inspectedWidget.MouseUp += InspectedWidget_MouseUp; - inspectedWidget.MouseDown += InspectedWidget_MouseUp; - } - - if (activeTreeNode != null) - { - activeTreeNode.Checked = false; - } - - if (treeNodes.TryGetValue(inspectedWidget, out TreeNode treeNode)) - { - treeView1.SelectedNode = treeNode; - activeTreeNode = treeNode; - activeTreeNode.Checked = true; - } - - inspectedWidget.Invalidate(); - } - } - private GuiWidget inspectedSystemWindow; private Vector2 mousePosition; @@ -69,7 +26,7 @@ namespace MatterHackers.MatterControl { mousePosition = e.Position; - if (this.inspectedWidget?.FirstWidgetUnderMouse == false) + if (this.InspectedWidget?.FirstWidgetUnderMouse == false) { this.inspectedSystemWindow.Invalidate(); } @@ -105,6 +62,48 @@ namespace MatterHackers.MatterControl public bool Inspecting { get; set; } + private GuiWidget _inspectedWidget; + private GuiWidget InspectedWidget + { + get => _inspectedWidget; + set + { + if (_inspectedWidget != null) + { + _inspectedWidget.DebugShowBounds = false; + _inspectedWidget.MouseUp -= InspectedWidget_MouseUp; + _inspectedWidget.MouseDown -= InspectedWidget_MouseUp; + } + + _inspectedWidget = value; + + if (_inspectedWidget != null) + { + propertyGrid1.SelectedObject = _inspectedWidget; + + _inspectedWidget.DebugShowBounds = true; + + // Hook to stop listing on click + _inspectedWidget.MouseUp += InspectedWidget_MouseUp; + _inspectedWidget.MouseDown += InspectedWidget_MouseUp; + } + + if (activeTreeNode != null) + { + activeTreeNode.Checked = false; + } + + if (treeNodes.TryGetValue(_inspectedWidget, out TreeNode treeNode)) + { + treeView1.SelectedNode = treeNode; + activeTreeNode = treeNode; + activeTreeNode.Checked = true; + } + + _inspectedWidget.Invalidate(); + } + } + private void InspectedWidget_MouseUp(object sender, Agg.UI.MouseEventArgs e) { // Stop listing on click @@ -162,7 +161,7 @@ namespace MatterHackers.MatterControl private string BuildName(GuiWidget widget) { - string nameToWrite = inspectedWidget == widget ? "* " : ""; + string nameToWrite = _inspectedWidget == widget ? "* " : ""; if (!string.IsNullOrEmpty(widget.Name)) { nameToWrite += $"{widget.GetType().Name} --- {widget.Name}"; @@ -175,22 +174,6 @@ namespace MatterHackers.MatterControl return nameToWrite; } - int selectionIndex; - - protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e) - { - if (e.KeyCode == System.Windows.Forms.Keys.F2) - { - selectionIndex++; - } - else if (e.KeyCode == System.Windows.Forms.Keys.F2) - { - selectionIndex--; - } - - base.OnKeyDown(e); - } - private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { this.InspectedWidget = e.Node.Tag as GuiWidget; From 80dd7a379b35d5e544826514ca46c75c6556c947 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Tue, 19 Sep 2017 08:56:48 -0700 Subject: [PATCH 3/4] Move Inspector into utilities --- MatterControl.csproj | 6 +++--- .../InspectForm.Designer.cs | 0 InspectForm.cs => Utilities/InspectForm.cs | 0 InspectForm.resx => Utilities/InspectForm.resx | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename InspectForm.Designer.cs => Utilities/InspectForm.Designer.cs (100%) rename InspectForm.cs => Utilities/InspectForm.cs (100%) rename InspectForm.resx => Utilities/InspectForm.resx (100%) diff --git a/MatterControl.csproj b/MatterControl.csproj index 0da9e7b14..834dfd4ea 100644 --- a/MatterControl.csproj +++ b/MatterControl.csproj @@ -143,10 +143,10 @@ - + Form - + InspectForm.cs @@ -497,7 +497,7 @@ config.json - + InspectForm.cs diff --git a/InspectForm.Designer.cs b/Utilities/InspectForm.Designer.cs similarity index 100% rename from InspectForm.Designer.cs rename to Utilities/InspectForm.Designer.cs diff --git a/InspectForm.cs b/Utilities/InspectForm.cs similarity index 100% rename from InspectForm.cs rename to Utilities/InspectForm.cs diff --git a/InspectForm.resx b/Utilities/InspectForm.resx similarity index 100% rename from InspectForm.resx rename to Utilities/InspectForm.resx From 396b558579ca5817aaae4bf1ca3e760ffff9f47f Mon Sep 17 00:00:00 2001 From: John Lewin Date: Tue, 19 Sep 2017 08:57:48 -0700 Subject: [PATCH 4/4] Conditionally include Inspector in debug builds only --- MatterControl.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MatterControl.csproj b/MatterControl.csproj index 834dfd4ea..813dddeb6 100644 --- a/MatterControl.csproj +++ b/MatterControl.csproj @@ -143,10 +143,10 @@ - + Form - + InspectForm.cs @@ -497,7 +497,7 @@ config.json - + InspectForm.cs