130 lines
6.4 KiB
XML
130 lines
6.4 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="using:Minint.ViewModels"
|
|
xmlns:controls="using:Minint.Controls"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
mc:Ignorable="d" d:DesignWidth="1024" d:DesignHeight="700"
|
|
x:Class="Minint.Views.MainWindow"
|
|
x:DataType="vm:MainWindowViewModel"
|
|
Icon="/Assets/avalonia-logo.ico"
|
|
Title="{Binding Editor.Title}"
|
|
Width="1024" Height="700">
|
|
|
|
<Design.DataContext>
|
|
<vm:MainWindowViewModel/>
|
|
</Design.DataContext>
|
|
|
|
<DockPanel>
|
|
<!-- Menu bar -->
|
|
<Menu DockPanel.Dock="Top">
|
|
<MenuItem Header="_File">
|
|
<MenuItem Header="_New" Command="{Binding NewFileCommand}" HotKey="Ctrl+N"/>
|
|
<MenuItem Header="_Open…" Command="{Binding OpenFileCommand}" HotKey="Ctrl+O"/>
|
|
<Separator/>
|
|
<MenuItem Header="_Save" Command="{Binding SaveFileCommand}" HotKey="Ctrl+S"/>
|
|
<MenuItem Header="Save _As…" Command="{Binding SaveFileAsCommand}" HotKey="Ctrl+Shift+S"/>
|
|
</MenuItem>
|
|
<MenuItem Header="_View">
|
|
<MenuItem Header="Pixel _Grid" ToggleType="CheckBox"
|
|
IsChecked="{Binding Editor.ShowGrid}" HotKey="Ctrl+G"/>
|
|
</MenuItem>
|
|
</Menu>
|
|
|
|
<!-- Toolbar -->
|
|
<Border DockPanel.Dock="Top"
|
|
BorderBrush="{DynamicResource SystemControlForegroundBaseMediumLowBrush}"
|
|
BorderThickness="0,0,0,1" Padding="6,4">
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
|
<RadioButton GroupName="Tool" Content="Brush"
|
|
IsChecked="{Binding Editor.ActiveTool, Converter={x:Static vm:ToolTypeConverters.IsBrush}}"
|
|
Command="{Binding Editor.SelectBrushCommand}"/>
|
|
<RadioButton GroupName="Tool" Content="Eraser"
|
|
IsChecked="{Binding Editor.ActiveTool, Converter={x:Static vm:ToolTypeConverters.IsEraser}}"
|
|
Command="{Binding Editor.SelectEraserCommand}"/>
|
|
<RadioButton GroupName="Tool" Content="Fill"
|
|
IsChecked="{Binding Editor.ActiveTool, Converter={x:Static vm:ToolTypeConverters.IsFill}}"
|
|
Command="{Binding Editor.SelectFillCommand}"/>
|
|
|
|
<Separator/>
|
|
|
|
<TextBlock Text="Size:" VerticalAlignment="Center"/>
|
|
<Slider Value="{Binding Editor.BrushRadius}" Minimum="0" Maximum="64"
|
|
TickFrequency="1" IsSnapToTickEnabled="True" Width="120"
|
|
VerticalAlignment="Center"/>
|
|
<TextBlock Text="{Binding Editor.BrushRadius}" VerticalAlignment="Center"
|
|
Width="20" TextAlignment="Center"/>
|
|
|
|
<Separator/>
|
|
|
|
<TextBlock Text="Color:" VerticalAlignment="Center"/>
|
|
<ColorPicker x:Name="ToolColorPicker"
|
|
Color="{Binding Editor.PreviewColor, Mode=TwoWay}"
|
|
IsAlphaVisible="False"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Status bar -->
|
|
<Border DockPanel.Dock="Bottom" Background="{DynamicResource SystemControlBackgroundChromeMediumLowBrush}"
|
|
Padding="8,2">
|
|
<TextBlock Text="{Binding StatusText}" FontSize="12"/>
|
|
</Border>
|
|
|
|
<!-- Main content: left panel, canvas, right panel -->
|
|
<Grid ColumnDefinitions="180,*,180">
|
|
|
|
<!-- Left panel: documents -->
|
|
<Border Grid.Column="0" BorderBrush="{DynamicResource SystemControlForegroundBaseMediumLowBrush}"
|
|
BorderThickness="0,0,1,0" Padding="4">
|
|
<DockPanel>
|
|
<TextBlock DockPanel.Dock="Top" Text="Documents" FontWeight="SemiBold" Margin="0,0,0,4"/>
|
|
<ListBox ItemsSource="{Binding Editor.Documents}"
|
|
SelectedItem="{Binding Editor.ActiveDocument}"
|
|
SelectionMode="Single">
|
|
<ListBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name}"/>
|
|
</DataTemplate>
|
|
</ListBox.ItemTemplate>
|
|
</ListBox>
|
|
</DockPanel>
|
|
</Border>
|
|
|
|
<!-- Center: canvas with scrollbars -->
|
|
<Grid Grid.Column="1" RowDefinitions="*,Auto" ColumnDefinitions="*,Auto">
|
|
<Border Grid.Row="0" Grid.Column="0" Background="#FF1E1E1E" ClipToBounds="True">
|
|
<controls:PixelCanvas x:Name="Canvas"
|
|
SourceBitmap="{Binding Editor.CanvasBitmap}"
|
|
ShowGrid="{Binding Editor.ShowGrid}"/>
|
|
</Border>
|
|
<ScrollBar x:Name="HScroll" Grid.Row="1" Grid.Column="0"
|
|
Orientation="Horizontal"/>
|
|
<ScrollBar x:Name="VScroll" Grid.Row="0" Grid.Column="1"
|
|
Orientation="Vertical"/>
|
|
</Grid>
|
|
|
|
<!-- Right panel: layers -->
|
|
<Border Grid.Column="2" BorderBrush="{DynamicResource SystemControlForegroundBaseMediumLowBrush}"
|
|
BorderThickness="1,0,0,0" Padding="4">
|
|
<DockPanel>
|
|
<TextBlock DockPanel.Dock="Top" Text="Layers" FontWeight="SemiBold" Margin="0,0,0,4"/>
|
|
<ListBox ItemsSource="{Binding Editor.Layers}"
|
|
SelectedItem="{Binding Editor.ActiveLayer}"
|
|
SelectionMode="Single">
|
|
<ListBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<StackPanel Orientation="Horizontal" Spacing="4">
|
|
<CheckBox IsChecked="{Binding IsVisible}" MinWidth="0"/>
|
|
<TextBlock Text="{Binding Name}" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</ListBox.ItemTemplate>
|
|
</ListBox>
|
|
</DockPanel>
|
|
</Border>
|
|
|
|
</Grid>
|
|
</DockPanel>
|
|
</Window>
|