2025-11-12 09:16:51 +08:00
|
|
|
<Window x:Class="BallanceTasEditor.Views.MainWindow"
|
|
|
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
|
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
|
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
|
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
|
|
|
xmlns:local="clr-namespace:BallanceTasEditor.Views"
|
2025-11-17 10:42:50 +08:00
|
|
|
xmlns:styles="clr-namespace:BallanceTasEditor.Styles"
|
2025-11-16 15:44:14 +08:00
|
|
|
mc:Ignorable="d" WindowStartupLocation="CenterScreen"
|
2025-11-17 10:42:50 +08:00
|
|
|
RenderOptions.BitmapScalingMode="HighQuality"
|
2025-11-16 15:44:14 +08:00
|
|
|
Title="Ballance TAS Editor" Height="600" Width="800" Icon="/Assets/App.ico">
|
2025-11-17 10:42:50 +08:00
|
|
|
|
|
|
|
|
<Window.Resources>
|
|
|
|
|
<!-- Menu Icons -->
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuNewFile" Source="/Assets/NewFile.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuOpenFile" Source="/Assets/OpenFile.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuSaveFile" Source="/Assets/SaveFile.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuSaveFileAs" Source="/Assets/SaveFileAs.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuSaveFileThenRunGame" Source="/Assets/SaveFileThenRunGame.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuCloseFile" Source="/Assets/CloseFile.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuExit" Source="/Assets/Exit.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuUndo" Source="/Assets/Undo.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuRedo" Source="/Assets/Redo.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuNextItem" Source="/Assets/NextItem.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuNextPage" Source="/Assets/NextPage.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuPreviousItem" Source="/Assets/PreviousItem.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuPreviousPage" Source="/Assets/PreviousPage.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuGoto" Source="/Assets/Goto.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuDrawMode" Source="/Assets/DrawMode.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuFillMode" Source="/Assets/FillMode.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuSelectMode" Source="/Assets/SelectMode.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuUniformFps" Source="/Assets/SetFps.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuPreference" Source="/Assets/Preference.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuReportBug" Source="/Assets/ReportBug.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconMenuAbout" Source="/Assets/About.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
|
|
|
|
|
<!-- Mode Tool Button Icons -->
|
|
|
|
|
<Image x:Shared="False" x:Key="IconToolBtnDrawMode" Source="/Assets/DrawMode.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconToolBtnFillMode" Source="/Assets/FillMode.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconToolBtnSelectMode" Source="/Assets/SelectMode.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconToolBtnSaveFileThenRunGame" Source="/Assets/SaveFileThenRunGame.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
|
|
|
|
|
<!-- Background Drag & Drop Icon -->
|
|
|
|
|
<Image x:Shared="False" x:Key="IconDragAndDrop" Source="/Assets/OpenFile.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
|
|
|
|
|
<!-- Context Menu Icons -->
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuSet" Source="/Assets/SetCell.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuUnset" Source="/Assets/UnsetCell.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuFlip" Source="/Assets/FlipCell.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuCut" Source="/Assets/CutFrame.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuCopy" Source="/Assets/CopyFrame.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuPaste" Source="/Assets/PasteFrame.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuDelete" Source="/Assets/DeleteFrame.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuAdd" Source="/Assets/AddFrame.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconCtxMenuFps" Source="/Assets/SetFps.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
|
|
|
|
|
<!-- Panel Icons -->
|
|
|
|
|
<Image x:Shared="False" x:Key="IconPanelGoto" Source="/Assets/PanelGoto.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconPanelNextItem" Source="/Assets/PanelNextItem.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconPanelNextPage" Source="/Assets/PanelNextPage.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconPanelPreviousItem" Source="/Assets/PanelPreviousItem.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
<Image x:Shared="False" x:Key="IconPanelPreviousPage" Source="/Assets/PanelPreviousPage.ico" RenderOptions.BitmapScalingMode="HighQuality" UseLayoutRounding="True" SnapsToDevicePixels="True"/>
|
|
|
|
|
</Window.Resources>
|
|
|
|
|
|
2025-11-12 09:16:51 +08:00
|
|
|
<Grid>
|
2025-11-16 15:44:14 +08:00
|
|
|
<Grid.RowDefinitions>
|
|
|
|
|
<RowDefinition Height="auto"/>
|
|
|
|
|
<RowDefinition Height="auto"/>
|
|
|
|
|
<RowDefinition Height="*"/>
|
|
|
|
|
<RowDefinition Height="auto"/>
|
|
|
|
|
</Grid.RowDefinitions>
|
|
|
|
|
|
|
|
|
|
<Menu Grid.Row="0">
|
|
|
|
|
<MenuItem Header="_File" Padding="5">
|
|
|
|
|
<MenuItem Header="_New File" Icon="{StaticResource IconMenuNewFile}" InputGestureText="Ctrl+N" Click="MenuItem_Click_3"/>
|
2025-11-17 10:42:50 +08:00
|
|
|
<MenuItem Header="_Open File" Icon="/Assets/SelectMode.ico" InputGestureText="Ctrl+O"/>
|
2025-11-16 15:44:14 +08:00
|
|
|
<Separator/>
|
|
|
|
|
<MenuItem Header="_Save File" Icon="{StaticResource IconMenuSaveFile}" InputGestureText="Ctrl+S"/>
|
|
|
|
|
<MenuItem Header="Save File As ..." Icon="{StaticResource IconMenuSaveFileAs}"/>
|
|
|
|
|
<MenuItem Header="Save File then _Run Game" Icon="{StaticResource IconMenuSaveFileThenRunGame}" InputGestureText="B"/>
|
|
|
|
|
<Separator/>
|
|
|
|
|
<MenuItem Header="Close File" Icon="{StaticResource IconMenuCloseFile}"/>
|
|
|
|
|
<MenuItem Header="Exit" Icon="{StaticResource IconMenuExit}"/>
|
|
|
|
|
</MenuItem>
|
|
|
|
|
<MenuItem Header="_Edit" Padding="5">
|
|
|
|
|
<MenuItem Header="_Undo" Icon="{StaticResource IconMenuUndo}" InputGestureText="Ctrl+Z"/>
|
|
|
|
|
<MenuItem Header="_Redo" Icon="{StaticResource IconMenuRedo}" InputGestureText="Ctrl+Y"/>
|
|
|
|
|
<Separator/>
|
|
|
|
|
<MenuItem Header="Previous Page" Icon="{StaticResource IconPanelPreviousPage}" InputGestureText="A"/>
|
|
|
|
|
<MenuItem Header="Previous Item" Icon="{StaticResource IconPanelPreviousItem}" InputGestureText="S"/>
|
|
|
|
|
<MenuItem Header="Next Page" Icon="{StaticResource IconPanelNextPage}" InputGestureText="D"/>
|
|
|
|
|
<MenuItem Header="Next Item" Icon="{StaticResource IconPanelNextItem}" InputGestureText="F"/>
|
|
|
|
|
<MenuItem Header="Goto Item" Icon="{StaticResource IconPanelGoto}" InputGestureText="G"/>
|
|
|
|
|
<Separator/>
|
|
|
|
|
<MenuItem Header="Select Mode" Icon="{StaticResource IconMenuSelectMode}"/>
|
|
|
|
|
<MenuItem Header="Fill Mode" Icon="{StaticResource IconMenuFillMode}"/>
|
|
|
|
|
<MenuItem Header="Draw Mode" Icon="{StaticResource IconMenuDrawMode}"/>
|
|
|
|
|
<Separator/>
|
2025-11-17 10:42:50 +08:00
|
|
|
<MenuItem Header="Uniform FPS" Icon="{StaticResource IconMenuUniformFps}"/>
|
2025-11-16 15:44:14 +08:00
|
|
|
<Separator/>
|
|
|
|
|
<MenuItem Header="Preference" Icon="{StaticResource IconMenuPreference}" InputGestureText="Ctrl+P" Click="MenuItem_Click"/>
|
|
|
|
|
</MenuItem>
|
|
|
|
|
<MenuItem Header="_Help" Padding="5">
|
|
|
|
|
<MenuItem Header="Report Bug" Icon="{StaticResource IconMenuReportBug}"/>
|
|
|
|
|
<MenuItem Header="About" Icon="{StaticResource IconMenuAbout}" Click="MenuItem_Click_1"/>
|
|
|
|
|
</MenuItem>
|
|
|
|
|
</Menu>
|
|
|
|
|
|
|
|
|
|
<Grid Grid.Row="1">
|
|
|
|
|
<Grid.ColumnDefinitions>
|
|
|
|
|
<ColumnDefinition Width="*"/>
|
|
|
|
|
<ColumnDefinition Width="auto"/>
|
|
|
|
|
</Grid.ColumnDefinitions>
|
|
|
|
|
|
|
|
|
|
<StackPanel Orientation="Horizontal" Grid.Column="0">
|
2025-11-17 10:42:50 +08:00
|
|
|
<Button Margin="5" Padding="5">
|
|
|
|
|
<controls:IconTextBlock Icon="{StaticResource IconToolBtnSelectMode}" Text="Select Mode"/>
|
|
|
|
|
</Button>
|
|
|
|
|
<Button Style="{StaticResource AccessoryIconButton}" styles:AccessoryIcon.AccessoryIcon="{StaticResource IconToolBtnSelectMode}" Content="Select Mode" Margin="5" Padding="5"/>
|
|
|
|
|
<Button Style="{StaticResource AccessoryIconButton}" styles:AccessoryIcon.AccessoryIcon="/Assets/Mode" Content="Select Mode" Margin="5" Padding="5"/>
|
|
|
|
|
|
2025-11-16 15:44:14 +08:00
|
|
|
<Button Margin="5" Padding="5">
|
|
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
|
<ContentControl Content="{StaticResource IconToolBtnSelectMode}" Width="24" Height="24"/>
|
2025-11-17 10:42:50 +08:00
|
|
|
<TextBlock Text="Select Mode" Margin="5,0,0,0" VerticalAlignment="Center"/>
|
2025-11-16 15:44:14 +08:00
|
|
|
</StackPanel>
|
|
|
|
|
</Button>
|
|
|
|
|
<Button Margin="5" Padding="5">
|
|
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
|
<ContentControl Content="{StaticResource IconToolBtnFillMode}" Width="24" Height="24"/>
|
2025-11-17 10:42:50 +08:00
|
|
|
<TextBlock Text="Fill Mode" Margin="5,0,0,0" VerticalAlignment="Center"/>
|
2025-11-16 15:44:14 +08:00
|
|
|
</StackPanel>
|
|
|
|
|
</Button>
|
|
|
|
|
<Button Margin="5" Padding="5">
|
|
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
|
<ContentControl Content="{StaticResource IconToolBtnDrawMode}" Width="24" Height="24"/>
|
2025-11-17 10:42:50 +08:00
|
|
|
<TextBlock Text="Draw Mode" Margin="5,0,0,0" VerticalAlignment="Center"/>
|
2025-11-16 15:44:14 +08:00
|
|
|
</StackPanel>
|
|
|
|
|
</Button>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
<Button Grid.Column="1" Margin="5" Padding="5">
|
|
|
|
|
<StackPanel Orientation="Horizontal">
|
|
|
|
|
<ContentControl Content="{StaticResource IconToolBtnSaveFileThenRunGame}" Width="24" Height="24"/>
|
2025-11-17 10:42:50 +08:00
|
|
|
<TextBlock Text="Save then Run Game" Margin="5,0,0,0" VerticalAlignment="Center"/>
|
2025-11-16 15:44:14 +08:00
|
|
|
</StackPanel>
|
|
|
|
|
</Button>
|
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
<Grid Grid.Row="2">
|
|
|
|
|
<Grid VerticalAlignment="Center" HorizontalAlignment="Center" AllowDrop="True">
|
|
|
|
|
<Rectangle StrokeThickness="4" Stroke="Gray" StrokeDashArray="4 4" Fill="Transparent"/>
|
|
|
|
|
<StackPanel Orientation="Horizontal" Margin="20">
|
|
|
|
|
<ContentControl Content="{StaticResource IconDragAndDrop}" Width="24" Height="24" Margin="5" VerticalAlignment="Center"/>
|
|
|
|
|
<TextBlock Margin="5" Text="Open or Drop a TAS File for Editing" Foreground="Gray" FontSize="16" VerticalAlignment="Center"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
<Grid.ContextMenu>
|
|
|
|
|
<ContextMenu>
|
|
|
|
|
<MenuItem Header="Set" Icon="{StaticResource IconCtxMenuSet}"/>
|
|
|
|
|
<MenuItem Header="Unset" Icon="{StaticResource IconCtxMenuUnset}"/>
|
|
|
|
|
<MenuItem Header="Flip" Icon="{StaticResource IconCtxMenuFlip}"/>
|
|
|
|
|
<Separator/>
|
|
|
|
|
<MenuItem Header="Cut" Icon="{StaticResource IconCtxMenuCut}" InputGestureText="Ctrl+X"/>
|
|
|
|
|
<MenuItem Header="Copy" Icon="{StaticResource IconCtxMenuCopy}" InputGestureText="Ctrl+C"/>
|
|
|
|
|
<MenuItem Header="Paste after This" Icon="{StaticResource IconCtxMenuPaste}" InputGestureText="Ctrl+V"/>
|
|
|
|
|
<MenuItem Header="Paste before This"/>
|
|
|
|
|
<Separator/>
|
|
|
|
|
<MenuItem Header="Delete This" Icon="{StaticResource IconCtxMenuDelete}"/>
|
|
|
|
|
<MenuItem Header="Delete after This" InputGestureText="Del"/>
|
|
|
|
|
<MenuItem Header="Delete before This" InputGestureText="Backspace"/>
|
|
|
|
|
<Separator/>
|
|
|
|
|
<MenuItem Header="Add after This" Icon="{StaticResource IconCtxMenuAdd}" Click="MenuItem_Click_2"/>
|
|
|
|
|
<MenuItem Header="Add before This"/>
|
|
|
|
|
<Separator/>
|
2025-11-17 10:42:50 +08:00
|
|
|
<MenuItem Header="Set FPS" Icon="{StaticResource IconCtxMenuFps}"/>
|
2025-11-16 15:44:14 +08:00
|
|
|
</ContextMenu>
|
|
|
|
|
</Grid.ContextMenu>
|
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
<StatusBar Grid.Row="3">
|
|
|
|
|
<!-- 这玩意要逆序排列才能达到我想要的需求也是奇葩 -->
|
|
|
|
|
<StatusBarItem Content="v1.2 stable" DockPanel.Dock="Right" Foreground="Gray" FontStyle="Italic"/>
|
|
|
|
|
<Separator DockPanel.Dock="Right"/>
|
|
|
|
|
<StatusBarItem Content="$PasteMode" DockPanel.Dock="Right"/>
|
|
|
|
|
<Separator DockPanel.Dock="Right"/>
|
|
|
|
|
<StatusBarItem Content="$Selection" DockPanel.Dock="Right"/>
|
|
|
|
|
<Separator DockPanel.Dock="Right"/>
|
|
|
|
|
<StatusBarItem Content="$ToolMode" DockPanel.Dock="Right"/>
|
|
|
|
|
<Separator DockPanel.Dock="Right"/>
|
|
|
|
|
|
|
|
|
|
<StatusBarItem Content="$Status" HorizontalAlignment="Stretch"/>
|
|
|
|
|
</StatusBar>
|
|
|
|
|
|
2025-11-12 09:16:51 +08:00
|
|
|
</Grid>
|
|
|
|
|
</Window>
|