commit
cd66e98420
5 changed files with 102 additions and 69 deletions
|
|
@ -143,10 +143,10 @@
|
|||
<Compile Include="CustomWidgets\RadioImageWidget.cs" />
|
||||
<Compile Include="CustomWidgets\RadioPanelWidget.cs" />
|
||||
<Compile Include="CustomWidgets\ValueDisplayInfo.cs" />
|
||||
<Compile Include="InspectForm.cs">
|
||||
<Compile Include="Utilities\InspectForm.cs" Condition="'$(Configuration)' == 'Debug'">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="InspectForm.Designer.cs">
|
||||
<Compile Include="Utilities\InspectForm.Designer.cs" Condition="'$(Configuration)' == 'Debug'">
|
||||
<DependentUpon>InspectForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Library\ContentProviders\GCodeContentProvider.cs" />
|
||||
|
|
@ -497,7 +497,7 @@
|
|||
<EmbeddedResource Include="config.json">
|
||||
<LogicalName>config.json</LogicalName>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="InspectForm.resx">
|
||||
<EmbeddedResource Include="Utilities\InspectForm.resx" Condition="'$(Configuration)' == 'Debug'">
|
||||
<DependentUpon>InspectForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="App.config" />
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<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 +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<TreeNode>().FirstOrDefault() is TreeNode firstChild)
|
||||
{
|
||||
this.InspectedWidget = firstChild.Tag as GuiWidget;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue