Restore inspection toggle via F1, hooks for exit on mouse up
This commit is contained in:
parent
b2d35e853e
commit
270025844e
2 changed files with 65 additions and 15 deletions
|
|
@ -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<GuiWidget, TreeNode> treeNodes = new Dictionary<GuiWidget, TreeNode>();
|
||||
private Dictionary<GuiWidget, TreeNode> treeNodes = new Dictionary<GuiWidget, TreeNode>();
|
||||
|
||||
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<GuiWidget.WidgetAndPosition>();
|
||||
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<TreeNode>().FirstOrDefault() is TreeNode firstChild)
|
||||
{
|
||||
this.InspectedWidget = firstChild.Tag as GuiWidget;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue