mirror of
https://github.com/ZuneDev/ZuneUIXTools.git
synced 2026-07-27 13:11:59 -07:00
Add auto-scroll to interpreter log view
This commit is contained in:
@@ -8,26 +8,35 @@
|
||||
d:DesignHeight="450" d:DesignWidth="800"
|
||||
d:DataContext="{d:DesignInstance local:UIBDisassemblyViewModel}">
|
||||
|
||||
<DataGrid x:Name="InstructionListView" x:FieldModifier="public" IsReadOnly="True" AutoGenerateColumns="False"
|
||||
ItemsSource="{Binding Instructions}" SelectionChanged="InstructionListView_SelectionChanged">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Source" Binding="{Binding LoadUri}"/>
|
||||
<DataGridTextColumn Header="Offset" Binding="{Binding Path=Offset, StringFormat=0x{0:X}}"/>
|
||||
<DataGridTextColumn Header="OpCode" Binding="{Binding OpCode}"/>
|
||||
</DataGrid.Columns>
|
||||
<DataGrid.RowDetailsTemplate>
|
||||
<DataTemplate DataType="uixDebugData:InterpreterEntry">
|
||||
<Border Padding="8">
|
||||
<StackPanel Orientation="Vertical">
|
||||
<TextBlock Text="Parameters:"/>
|
||||
<ItemsControl ItemsSource="{Binding Parameters}"/>
|
||||
<Border Height="1" Background="Gray" Margin="0,8"/>
|
||||
<TextBlock Text="Return values:"/>
|
||||
<ItemsControl ItemsSource="{Binding ReturnValues}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</DataGrid.RowDetailsTemplate>
|
||||
</DataGrid>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<CheckBox Content="Auto-scroll" IsChecked="{Binding AutoScroll}" Padding="4"/>
|
||||
|
||||
<DataGrid x:Name="InstructionListView" IsReadOnly="True" AutoGenerateColumns="False"
|
||||
ItemsSource="{Binding Instructions}" SelectionChanged="InstructionListView_SelectionChanged"
|
||||
Grid.Row="1">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Source" Binding="{Binding LoadUri}"/>
|
||||
<DataGridTextColumn Header="Instruction" Binding="{Binding InstructionString}"/>
|
||||
</DataGrid.Columns>
|
||||
<DataGrid.RowDetailsTemplate>
|
||||
<DataTemplate DataType="uixDebugData:InterpreterEntry">
|
||||
<Border Padding="8">
|
||||
<StackPanel Orientation="Vertical">
|
||||
<TextBlock Text="Parameters:"/>
|
||||
<ItemsControl ItemsSource="{Binding Parameters}"/>
|
||||
<Border Height="1" Background="Gray" Margin="0,8"/>
|
||||
<TextBlock Text="Return values:"/>
|
||||
<ItemsControl ItemsSource="{Binding ReturnValues}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</DataGrid.RowDetailsTemplate>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
|
||||
</UserControl>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using Microsoft.Iris.Debug.Data;
|
||||
using MahApps.Metro.Controls;
|
||||
using Microsoft.Iris.Debug.Data;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace ZuneUIXTools.Modules.UIXCompiled
|
||||
@@ -13,6 +15,20 @@ namespace ZuneUIXTools.Modules.UIXCompiled
|
||||
public UIBDisassemblyView()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
InstructionListView.Loaded += InstructionListView_Loaded;
|
||||
}
|
||||
|
||||
private void InstructionListView_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
InstructionListView.Loaded -= InstructionListView_Loaded;
|
||||
InstructionListView.FindChild<ScrollViewer>().ScrollChanged += InstructionListView_ScrollChanged;
|
||||
}
|
||||
|
||||
private void InstructionListView_ScrollChanged(object sender, ScrollChangedEventArgs e)
|
||||
{
|
||||
if (ViewModel.AutoScroll && e.ExtentHeightChange != 0)
|
||||
((ScrollViewer)sender).ScrollToBottom();
|
||||
}
|
||||
|
||||
private void InstructionListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
|
||||
@@ -6,16 +6,10 @@ using Gemini.Modules.Inspector.Conventions;
|
||||
using Gemini.Modules.Inspector.Inspectors;
|
||||
using Microsoft.Iris.Debug.Data;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.Composition;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Windows.Threading;
|
||||
using WpfHexaEditor.Core.MethodExtention;
|
||||
using ZuneUIXTools.Converters;
|
||||
using ZuneUIXTools.Modules.Inspectors;
|
||||
using ZuneUIXTools.Modules.UIX;
|
||||
@@ -28,9 +22,16 @@ public class UIBDisassemblyViewModel : Document
|
||||
readonly DebuggerService _debuggerService;
|
||||
readonly IShell _shell;
|
||||
UIBDisassemblyView _view;
|
||||
bool _autoScroll;
|
||||
|
||||
public ObservableCollection<InterpreterEntry> Instructions { get; } = new();
|
||||
|
||||
public bool AutoScroll
|
||||
{
|
||||
get => _autoScroll;
|
||||
set => Set(ref _autoScroll, value);
|
||||
}
|
||||
|
||||
[ImportingConstructor]
|
||||
public UIBDisassemblyViewModel(DebuggerService debuggerService, IShell shell)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user