diff --git a/MatterControl.csproj b/MatterControl.csproj
index 0da9e7b14..813dddeb6 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/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;
}
}
}
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 66%
rename from InspectForm.cs
rename to Utilities/InspectForm.cs
index 45636f07d..d3cc813fe 100644
--- a/InspectForm.cs
+++ b/Utilities/InspectForm.cs
@@ -11,61 +11,30 @@ 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 = value;
- inspectedWidget.DebugShowBounds = true;
-
- if (inspectedWidget != null)
- {
- propertyGrid1.SelectedObject = inspectedWidget;
- }
-
- if (activeTreeNode != null)
- {
- activeTreeNode.Checked = false;
- }
-
- if (treeNodes.TryGetValue(inspectedWidget, out TreeNode treeNode))
- {
- treeView1.SelectedNode = treeNode;
- activeTreeNode = treeNode;
- activeTreeNode.Checked = true;
- }
-
- inspectedWidget.Invalidate();
- }
- }
-
- 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 +60,56 @@ namespace MatterHackers.MatterControl
inspectionSource.Invalidate();
}
+ 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
+ this.Inspecting = false;
+ }
+
private void AddItem(GuiWidget widget, string text, TreeNode childNode = null)
{
if (treeNodes.TryGetValue(widget, out TreeNode existingNode))
@@ -142,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}";
@@ -155,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;
@@ -180,5 +183,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/InspectForm.resx b/Utilities/InspectForm.resx
similarity index 100%
rename from InspectForm.resx
rename to Utilities/InspectForm.resx