1
0

feat: make style but not finished

This commit is contained in:
2025-11-17 10:42:50 +08:00
parent d9d0bb2ed5
commit 7bc8a99d49
23 changed files with 383 additions and 130 deletions

View File

@@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BallanceTasEditor.Views"
mc:Ignorable="d" WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow"
Title="About Ballance TAS Editor" Width="340" Height="480" Icon="/Assets/MenuAbout.ico">
Title="About Ballance TAS Editor" Width="340" Height="480" Icon="/Assets/About.ico">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
@@ -33,6 +33,6 @@ Version: 1.2 stable&#13;
Build Date: October 21, 2025&#13;"/>
<!-- 确认按钮 -->
<Button Grid.Row="4" Content="OK" MinWidth="80" HorizontalAlignment="Center" Margin="10" Padding="5"/>
<Button Grid.Row="4" Content="OK" IsDefault="True" Margin="10" Padding="5" MinWidth="80" HorizontalAlignment="Center"/>
</Grid>
</Window>

View File

@@ -4,8 +4,63 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BallanceTasEditor.Views"
xmlns:styles="clr-namespace:BallanceTasEditor.Styles"
mc:Ignorable="d" WindowStartupLocation="CenterScreen"
RenderOptions.BitmapScalingMode="HighQuality"
Title="Ballance TAS Editor" Height="600" Width="800" Icon="/Assets/App.ico">
<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>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
@@ -17,7 +72,7 @@
<Menu Grid.Row="0">
<MenuItem Header="_File" Padding="5">
<MenuItem Header="_New File" Icon="{StaticResource IconMenuNewFile}" InputGestureText="Ctrl+N" Click="MenuItem_Click_3"/>
<MenuItem Header="_Open File" Icon="{StaticResource IconMenuOpenFile}" InputGestureText="Ctrl+O"/>
<MenuItem Header="_Open File" Icon="/Assets/SelectMode.ico" InputGestureText="Ctrl+O"/>
<Separator/>
<MenuItem Header="_Save File" Icon="{StaticResource IconMenuSaveFile}" InputGestureText="Ctrl+S"/>
<MenuItem Header="Save File As ..." Icon="{StaticResource IconMenuSaveFileAs}"/>
@@ -40,7 +95,7 @@
<MenuItem Header="Fill Mode" Icon="{StaticResource IconMenuFillMode}"/>
<MenuItem Header="Draw Mode" Icon="{StaticResource IconMenuDrawMode}"/>
<Separator/>
<MenuItem Header="Uniform FPS"/>
<MenuItem Header="Uniform FPS" Icon="{StaticResource IconMenuUniformFps}"/>
<Separator/>
<MenuItem Header="Preference" Icon="{StaticResource IconMenuPreference}" InputGestureText="Ctrl+P" Click="MenuItem_Click"/>
</MenuItem>
@@ -57,22 +112,28 @@
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="0">
<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"/>
<Button Margin="5" Padding="5">
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconToolBtnSelectMode}" Width="24" Height="24"/>
<TextBlock Text="Select Mode" VerticalAlignment="Center"/>
<TextBlock Text="Select Mode" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Margin="5" Padding="5">
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconToolBtnFillMode}" Width="24" Height="24"/>
<TextBlock Text="Fill Mode" VerticalAlignment="Center"/>
<TextBlock Text="Fill Mode" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Margin="5" Padding="5">
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconToolBtnDrawMode}" Width="24" Height="24"/>
<TextBlock Text="Draw Mode" VerticalAlignment="Center"/>
<TextBlock Text="Draw Mode" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
@@ -80,7 +141,7 @@
<Button Grid.Column="1" Margin="5" Padding="5">
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconToolBtnSaveFileThenRunGame}" Width="24" Height="24"/>
<TextBlock Text="Save then Run Game" VerticalAlignment="Center"/>
<TextBlock Text="Save then Run Game" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</Grid>
@@ -112,7 +173,7 @@
<MenuItem Header="Add after This" Icon="{StaticResource IconCtxMenuAdd}" Click="MenuItem_Click_2"/>
<MenuItem Header="Add before This"/>
<Separator/>
<MenuItem Header="Set FPS"/>
<MenuItem Header="Set FPS" Icon="{StaticResource IconCtxMenuFps}"/>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
@@ -131,6 +192,5 @@
<StatusBarItem Content="$Status" HorizontalAlignment="Stretch"/>
</StatusBar>
</Grid>
</Window>

View File

@@ -22,6 +22,12 @@ namespace BallanceTasEditor.Views {
InitializeComponent();
}
private void MenuItem_Click_3(object sender, RoutedEventArgs e) {
var dialog = new NewFileDialog();
dialog.Owner = this;
dialog.ShowDialog();
}
private void MenuItem_Click(object sender, RoutedEventArgs e) {
var dialog = new PreferenceDialog();
dialog.Owner = this;
@@ -41,10 +47,5 @@ namespace BallanceTasEditor.Views {
dialog.ShowDialog();
}
private void MenuItem_Click_3(object sender, RoutedEventArgs e) {
var dialog = new SetupCountAndFpsDialog();
dialog.Owner = this;
dialog.ShowDialog();
}
}
}

View File

@@ -0,0 +1,56 @@
<Window x:Class="BallanceTasEditor.Views.NewFileDialog"
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"
mc:Ignorable="d" WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow"
RenderOptions.BitmapScalingMode="HighQuality"
Title="New File" Height="250" Width="400" Icon="/Assets/NewFile.ico">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="Create new TAS file with given FPS and frame count." Style="{StaticResource NoteBannerStyle}"/>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="/Assets/Count.ico" Grid.Column="0" Grid.Row="0" Width="16" Height="16" VerticalAlignment="Center"/>
<Image Source="/Assets/Fps.ico" Grid.Column="0" Grid.Row="1" Width="16" Height="16" VerticalAlignment="Center"/>
<TextBlock Margin="5" Grid.Column="1" Grid.Row="0" Text="Count" VerticalAlignment="Center"/>
<TextBlock Margin="5" Grid.Column="1" Grid.Row="1" Text="FPS" VerticalAlignment="Center"/>
<TextBlock Margin="5" Grid.Column="1" Grid.Row="2" Text="Delta Time" VerticalAlignment="Center"/>
<TextBox Margin="5" Padding="3" Grid.Row="0" Grid.Column="2" VerticalAlignment="Center"/>
<TextBox Margin="5" Padding="3" Grid.Row="1" Grid.Column="2" VerticalAlignment="Center"/>
<TextBlock Margin="5" Padding="3" Grid.Row="2" Grid.Column="2" VerticalAlignment="Center" Text="N/A"/>
</Grid>
</Grid>
<StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Right" Margin="10">
<Button Content="OK" Margin="5" Style="{StaticResource OkButtonStyle}" IsDefault="True"/>
<Button Content="Cancel" Margin="5" Style="{StaticResource CancelButtonStyle}"/>
</StackPanel>
</Grid>
</Window>

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace BallanceTasEditor.Views {
/// <summary>
/// Interaction logic for NewFileDialog.xaml
/// </summary>
public partial class NewFileDialog : Window {
public NewFileDialog() {
InitializeComponent();
}
}
}

View File

@@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BallanceTasEditor.Views"
mc:Ignorable="d" WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow"
Title="Editor Preference" Height="450" Width="400" Icon="/Assets/MenuPreference.ico">
Title="Editor Preference" Height="450" Width="400" Icon="/Assets/Preference.ico">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
@@ -14,7 +14,13 @@
<ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Visible">
<StackPanel Orientation="Vertical">
<GroupBox Header="Editor Layout" Margin="10" Padding="10">
<GroupBox Margin="10" Padding="10">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconGroupEditorLayout}" Height="16" Width="16"/>
<TextBlock Text="Editor Layout" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</GroupBox.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@@ -24,7 +30,13 @@
<RadioButton Content="Vertical Layout" GroupName="EditorLayout" Grid.Column="1"/>
</Grid>
</GroupBox>
<GroupBox Header="Paste Behavior" Margin="10" Padding="10">
<GroupBox Margin="10" Padding="10">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconGroupPasteBehavior}" Height="16" Width="16"/>
<TextBlock Text="Paste Behavior" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</GroupBox.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@@ -34,10 +46,22 @@
<RadioButton Content="Overwritten Paste" GroupName="PasteBehavior" Grid.Column="1"/>
</Grid>
</GroupBox>
<GroupBox Header="Frame Count" Margin="10" Padding="10">
<GroupBox Margin="10" Padding="10">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconGroupFrameCount}" Height="16" Width="16"/>
<TextBlock Text="Frame Count" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</GroupBox.Header>
<TextBox Padding="3"/>
</GroupBox>
<GroupBox Header="Game Path" Margin="10" Padding="10">
<GroupBox Margin="10" Padding="10">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconGroupGamePath}" Height="16" Width="16"/>
<TextBlock Text="Game Path" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</GroupBox.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@@ -51,8 +75,22 @@
</ScrollViewer>
<StackPanel Grid.Row="1" HorizontalAlignment="Right" Orientation="Horizontal" Margin="10">
<Button Content="OK" IsDefault="True" Padding="5" Margin="5" MinWidth="80"/>
<Button Content="Cancel" Padding="5" Margin="5" MinWidth="80"/>
<Button IsDefault="True" Padding="5" Margin="5" MinWidth="80">
<Button.Content>
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconBtnOk}" Width="24" Height="24"/>
<TextBlock Text="OK" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</Button.Content>
</Button>
<Button Padding="5" Margin="5" MinWidth="80">
<Button.Content>
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource IconBtnCancel}" Width="24" Height="24"/>
<TextBlock Text="Cancel" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</Button.Content>
</Button>
</StackPanel>
</Grid>
</Window>