Files
MesenCE/UI/Debugger/Windows/TileViewerWindow.axaml

189 lines
7.1 KiB
XML

<Window
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:m="clr-namespace:Mesen"
xmlns:vm="using:Mesen.ViewModels"
xmlns:sys="using:System"
xmlns:v="using:Mesen.Views"
xmlns:c="using:Mesen.Controls"
xmlns:i="using:Mesen.Interop"
xmlns:l="using:Mesen.Localization"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dvm="using:Mesen.Debugger.ViewModels"
xmlns:dc="using:Mesen.Debugger.Controls"
xmlns:dv="using:Mesen.Debugger.Views"
mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="600"
x:Class="Mesen.Debugger.Windows.TileViewerWindow"
x:DataType="dvm:TileViewerViewModel"
Width="600" Height="600"
Title="{l:Translate wndTitle}"
Icon="/Assets/VerticalLayout.png"
>
<Design.DataContext>
<dvm:TileViewerViewModel />
</Design.DataContext>
<Window.Styles>
<Style Selector="Button.selected">
<Setter Property="Background" Value="{StaticResource ButtonBackgroundPointerOver}" />
<Setter Property="BorderBrush" Value="{StaticResource ButtonBorderBrushPointerOver}" />
</Style>
</Window.Styles>
<Window.Resources>
<VisualBrush x:Key="DisabledOverlayBrush" TileMode="Tile" Stretch="None" AlignmentX="Left" AlignmentY="Top" SourceRect="0,0,7,7" DestinationRect="0,0,7,7">
<VisualBrush.Visual>
<Panel>
<Line StartPoint="0, 0" EndPoint="7, 7" Stroke="Gray" StrokeThickness="1" Opacity="0.5" />
<Line StartPoint="7, 0" EndPoint="0, 7" Stroke="LightGray" StrokeThickness="1" Opacity="0.5" />
</Panel>
</VisualBrush.Visual>
</VisualBrush>
</Window.Resources>
<DockPanel>
<Panel DockPanel.Dock="Top">
<c:MesenMenu DockPanel.Dock="Top" Name="ActionMenu">
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{Binding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{Binding ViewMenuActions}" />
</c:MesenMenu>
<c:IconButton
HorizontalAlignment="Right"
DockPanel.Dock="Right"
ToolTip.Tip="{l:Translate btnToggleSettings}"
Click="OnSettingsClick"
Icon="Assets/Settings.png"
/>
</Panel>
<dv:RefreshTimingView DataContext="{Binding RefreshTiming}" DockPanel.Dock="Bottom" />
<ScrollViewer DockPanel.Dock="Right" IsVisible="{Binding Config.ShowSettingsPanel}">
<StackPanel Margin="3">
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
<TextBlock Text="{l:Translate lblPresets}" Margin="0 5 0 0 " VerticalAlignment="Top" />
<Panel Grid.Column="1" MaxWidth="160" HorizontalAlignment="Left">
<ItemsControl ItemsSource="{Binding ConfigPresetRows}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Classes.selected="{Binding Selected}" Content="{Binding Name}" MinWidth="25" Command="{Binding ClickCommand}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Panel>
<Rectangle Grid.Row="1" Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="0 5" DockPanel.Dock="Top" Grid.ColumnSpan="2" />
<TextBlock Grid.Column="0" Grid.Row="2" Text="{l:Translate lblSource}" />
<c:EnumComboBox
Grid.Column="1" Grid.Row="2"
SelectedItem="{Binding Config.Source}"
AvailableValues="{Binding AvailableMemoryTypes}"
/>
<TextBlock Grid.Column="0" Grid.Row="3" Text="{l:Translate lblAddress}" />
<dc:HexInput
Grid.Column="1" Grid.Row="3"
Value="{Binding Config.StartAddress}"
LargeIncrement="{Binding AddressIncrement}"
SmallIncrement="1"
Minimum="0"
Maximum="{Binding MaximumAddress}"
Margin="1"
/>
<TextBlock Grid.Column="0" Grid.Row="4" Text="{l:Translate lblSize}" />
<StackPanel Grid.Column="1" Grid.Row="4" Orientation="Horizontal">
<c:MesenNumericUpDown Value="{Binding Config.ColumnCount}" Minimum="4" Maximum="256" Increment="2" />
<TextBlock Margin="5 0">by</TextBlock>
<c:MesenNumericUpDown Value="{Binding Config.RowCount}" Minimum="4" Maximum="256" Increment="2" />
</StackPanel>
<TextBlock Grid.Column="0" Grid.Row="5" Text="{l:Translate lblFormat}" IsVisible="{Binding ShowFormatDropdown}" />
<c:EnumComboBox
Grid.Column="1" Grid.Row="5"
SelectedItem="{Binding Config.Format}"
AvailableValues="{Binding AvailableFormats}"
IsVisible="{Binding ShowFormatDropdown}"
/>
<TextBlock Grid.Column="0" Grid.Row="6" Text="{l:Translate lblTileLayout}" />
<c:EnumComboBox
Grid.Column="1" Grid.Row="6"
SelectedItem="{Binding Config.Layout}"
/>
<TextBlock Grid.Column="0" Grid.Row="7" Text="{l:Translate lblBackground}" />
<c:EnumComboBox
Grid.Column="1" Grid.Row="7"
SelectedItem="{Binding Config.Background}"
/>
<TextBlock Grid.Column="0" Grid.Row="8" Text="{l:Translate lblFilter}" IsVisible="{Binding ShowFilterDropdown}" />
<c:EnumComboBox
Grid.Column="1" Grid.Row="8"
IsVisible="{Binding ShowFilterDropdown}"
SelectedItem="{Binding Config.Filter}"
/>
<CheckBox Grid.Row="9" Grid.ColumnSpan="2" Content="{l:Translate chkShowTileGrid}" IsChecked="{Binding Config.ShowTileGrid}" />
<CheckBox Grid.Row="10" Grid.ColumnSpan="2" Content="{l:Translate chkUseGrayscalePalette}" IsChecked="{Binding Config.UseGrayscalePalette}" />
</Grid>
<Border BorderBrush="Gray" BorderThickness="1" HorizontalAlignment="Left" VerticalAlignment="Top" Padding="0" Margin="0">
<Panel>
<dc:PaletteSelector
ColumnCount="{Binding PaletteColumnCount}"
IsEnabled="{Binding !Config.UseGrayscalePalette}"
BlockSize="12"
SelectionMode="{Binding PaletteSelectionMode}"
PaletteColors="{Binding PaletteColors}"
RawPalette="{Binding RawPalette}"
RawFormat="{Binding RawFormat}"
SelectedPalette="{Binding SelectedPalette}"
/>
<Rectangle
Fill="{StaticResource DisabledOverlayBrush}"
Stretch="Fill"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
IsVisible="{Binding Config.UseGrayscalePalette}"
/>
</Panel>
</Border>
<c:GroupBox
Header="{l:Translate lblSelectedTile}"
Margin="0 5 0 0"
IsVisible="{Binding PreviewPanel, Converter={x:Static ObjectConverters.IsNotNull}}"
>
<ContentControl Content="{Binding PreviewPanel}" />
</c:GroupBox>
</StackPanel>
</ScrollViewer>
<dc:ScrollPictureViewer
x:Name="picViewer"
Source="{Binding ViewerBitmap}"
Zoom="{Binding Config.ImageScale}"
ShowGrid="{Binding Config.ShowTileGrid}"
GridSizeX="{Binding GridSizeX}"
GridSizeY="{Binding GridSizeY}"
SelectionRect="{Binding SelectionRect}"
OverlayLines="{Binding PageDelimiters}"
/>
</DockPanel>
</Window>