1
0

feat: entirely remove accessoryicon component

This commit is contained in:
2026-04-12 09:55:47 +08:00
parent 428e80f9ac
commit 8b42af42cc
11 changed files with 70 additions and 148 deletions

View File

@@ -6,10 +6,9 @@
<Application.Resources> <Application.Resources>
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Frontend/Styles/AccessoryIconControl.xaml"/>
<ResourceDictionary Source="/Frontend/Styles/GenericButton.xaml"/>
<ResourceDictionary Source="/Frontend/Styles/TextboxErrorTemplate.xaml"/> <ResourceDictionary Source="/Frontend/Styles/TextboxErrorTemplate.xaml"/>
<ResourceDictionary Source="/Frontend/Widgets/IconButton.xaml"/> <ResourceDictionary Source="/Frontend/Widgets/IconButton.xaml"/>
<ResourceDictionary Source="/Frontend/Widgets/IconGroupBox.xaml"/>
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
</ResourceDictionary> </ResourceDictionary>
</Application.Resources> </Application.Resources>

View File

@@ -1,51 +0,0 @@
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.Media;
namespace BallanceTasEditor.Frontend.Styles {
public class AccessoryIcon {
public static ImageSource GetIcon(DependencyObject obj) {
return (ImageSource)obj.GetValue(IconProperty);
}
public static void SetIcon(DependencyObject obj, ImageSource value) {
obj.SetValue(IconProperty, value);
}
// Using a DependencyProperty as the backing store for Icon. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IconProperty =
DependencyProperty.RegisterAttached("Icon", typeof(ImageSource), typeof(AccessoryIcon), new PropertyMetadata(null));
public static double GetIconWidth(DependencyObject obj) {
return (double)obj.GetValue(IconWidthProperty);
}
public static void SetIconWidth(DependencyObject obj, double value) {
obj.SetValue(IconWidthProperty, value);
}
// Using a DependencyProperty as the backing store for IconWidth. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IconWidthProperty =
DependencyProperty.RegisterAttached("IconWidth", typeof(double), typeof(AccessoryIcon), new PropertyMetadata(0.0));
public static double GetIconHeight(DependencyObject obj) {
return (double)obj.GetValue(IconHeightProperty);
}
public static void SetIconHeight(DependencyObject obj, double value) {
obj.SetValue(IconHeightProperty, value);
}
// Using a DependencyProperty as the backing store for IconHeight. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IconHeightProperty =
DependencyProperty.RegisterAttached("IconHeight", typeof(double), typeof(AccessoryIcon), new PropertyMetadata(0.0));
}
}

View File

@@ -1,19 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BallanceTasEditor.Frontend.Styles">
<DataTemplate x:Key="AccessoryIconDataTemplate">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Path=(local:AccessoryIcon.Icon), RelativeSource={RelativeSource AncestorType=Control, AncestorLevel=1}}"
Width="16" Height="16" RenderOptions.BitmapScalingMode="HighQuality"/>
<ContentControl Content="{Binding}" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
<Style x:Key="AccessoryIconButton" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="ContentTemplate" Value="{StaticResource AccessoryIconDataTemplate}"/>
</Style>
<Style x:Key="AccessoryIconGroupBox" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}">
<Setter Property="HeaderTemplate" Value="{StaticResource AccessoryIconDataTemplate}"/>
</Style>
</ResourceDictionary>

View File

@@ -1,35 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="OkButtonStyle" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Padding" Value="5"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="MinWidth" Value="80"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="/Frontend/Assets/Ok.ico" RenderOptions.BitmapScalingMode="HighQuality"
Width="16" Height="16" VerticalAlignment="Center"/>
<ContentControl Content="{Binding}" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CancelButtonStyle" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Padding" Value="5"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="MinWidth" Value="80"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="/Frontend/Assets/Cancel.ico" RenderOptions.BitmapScalingMode="HighQuality"
Width="16" Height="16" VerticalAlignment="Center"/>
<ContentControl Content="{Binding}" Margin="5,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

View File

@@ -20,6 +20,8 @@ namespace BallanceTasEditor.Frontend.ViewModels {
private Shared.IDialogService m_DialogService; private Shared.IDialogService m_DialogService;
#region File Menu
#region File Operation #region File Operation
[ObservableProperty] [ObservableProperty]
@@ -153,6 +155,22 @@ namespace BallanceTasEditor.Frontend.ViewModels {
#endregion #endregion
#endregion
#region Edit Menu
#region Preference
[RelayCommand]
private void Preference() {
m_DialogService.ShowPreferenceDialog();
}
#endregion
#endregion
#region Help Menu #region Help Menu
[RelayCommand] [RelayCommand]

View File

@@ -5,6 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BallanceTasEditor.Frontend.Views" xmlns:local="clr-namespace:BallanceTasEditor.Frontend.Views"
xmlns:vm="clr-namespace:BallanceTasEditor.Frontend.ViewModels" xmlns:vm="clr-namespace:BallanceTasEditor.Frontend.ViewModels"
xmlns:widget="clr-namespace:BallanceTasEditor.Frontend.Widgets"
d:DataContext="{d:DesignInstance vm:AboutDialog}" d:DataContext="{d:DesignInstance vm:AboutDialog}"
mc:Ignorable="d" WindowStartupLocation="CenterOwner" ResizeMode="NoResize" ShowInTaskbar="False" mc:Ignorable="d" WindowStartupLocation="CenterOwner" ResizeMode="NoResize" ShowInTaskbar="False"
Title="About Ballance TAS Editor" Width="340" Height="480" Icon="/Frontend/Assets/About.ico"> Title="About Ballance TAS Editor" Width="340" Height="480" Icon="/Frontend/Assets/About.ico">
@@ -35,6 +36,8 @@ Version: 1.2 stable&#13;
Build Date: October 21, 2025&#13;"/> Build Date: October 21, 2025&#13;"/>
<!-- 确认按钮 --> <!-- 确认按钮 -->
<Button Grid.Row="4" Content="OK" Margin="10" HorizontalAlignment="Center" Style="{StaticResource OkButtonStyle}" IsDefault="True" Command="{Binding OkCommand}"/> <widget:IconButton Grid.Row="4" Margin="10" HorizontalAlignment="Center"
Style="{StaticResource OkIconButtonStyle}" IsDefault="True"
Command="{Binding OkCommand}"/>
</Grid> </Grid>
</Window> </Window>

View File

@@ -62,9 +62,9 @@
</Grid> </Grid>
<StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Right" Margin="10"> <StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Right" Margin="10">
<Button Content="OK" Margin="5" Style="{StaticResource OkButtonStyle}" IsDefault="True" <widget:IconButton Margin="5" Style="{StaticResource OkIconButtonStyle}" IsDefault="True"
Command="{Binding OkCommand}"/> Command="{Binding OkCommand}"/>
<Button Content="Cancel" Margin="5" Style="{StaticResource CancelButtonStyle}" <widget:IconButton Margin="5" Style="{StaticResource CancelIconButtonStyle}"
Command="{Binding CancelCommand}"/> Command="{Binding CancelCommand}"/>
</StackPanel> </StackPanel>
</Grid> </Grid>

View File

@@ -55,9 +55,9 @@
</Grid> </Grid>
<StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Right" Margin="10"> <StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Right" Margin="10">
<Button Content="OK" Margin="5" Style="{StaticResource OkButtonStyle}" IsDefault="True" <widget:IconButton Margin="5" Style="{StaticResource OkIconButtonStyle}" IsDefault="True"
Command="{Binding OkCommand}"/> Command="{Binding OkCommand}"/>
<Button Content="Cancel" Margin="5" Style="{StaticResource CancelButtonStyle}" <widget:IconButton Margin="5" Style="{StaticResource CancelIconButtonStyle}"
Command="{Binding CancelCommand}"/> Command="{Binding CancelCommand}"/>
</StackPanel> </StackPanel>
</Grid> </Grid>

View File

@@ -30,9 +30,9 @@
</Grid> </Grid>
<StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Right" Margin="10"> <StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Right" Margin="10">
<Button Content="OK" Margin="5" Style="{StaticResource OkButtonStyle}" IsDefault="True" <widget:IconButton Margin="5" Style="{StaticResource OkIconButtonStyle}" IsDefault="True"
Command="{Binding OkCommand}"/> Command="{Binding OkCommand}"/>
<Button Content="Cancel" Margin="5" Style="{StaticResource CancelButtonStyle}" <widget:IconButton Margin="5" Style="{StaticResource CancelIconButtonStyle}"
Command="{Binding CancelCommand}"/> Command="{Binding CancelCommand}"/>
</StackPanel> </StackPanel>
</Grid> </Grid>

View File

@@ -4,8 +4,8 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BallanceTasEditor.Frontend.Views" xmlns:local="clr-namespace:BallanceTasEditor.Frontend.Views"
xmlns:styles="clr-namespace:BallanceTasEditor.Frontend.Styles"
xmlns:vm="clr-namespace:BallanceTasEditor.Frontend.ViewModels" xmlns:vm="clr-namespace:BallanceTasEditor.Frontend.ViewModels"
xmlns:widget="clr-namespace:BallanceTasEditor.Frontend.Widgets"
mc:Ignorable="d" mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:MainWindow}" d:DataContext="{d:DesignInstance vm:MainWindow}"
WindowStartupLocation="CenterScreen" WindowStartupLocation="CenterScreen"
@@ -74,7 +74,7 @@
<MenuItem Header="Clear Keys" Icon="{StaticResource IconClearKeys}"/> <MenuItem Header="Clear Keys" Icon="{StaticResource IconClearKeys}"/>
<MenuItem Header="Uniform FPS" Icon="{StaticResource IconUniformFps}"/> <MenuItem Header="Uniform FPS" Icon="{StaticResource IconUniformFps}"/>
<Separator/> <Separator/>
<MenuItem Header="Preference" Icon="{StaticResource IconPreference}" InputGestureText="Ctrl+P"/> <MenuItem Header="Preference" Icon="{StaticResource IconPreference}" InputGestureText="Ctrl+P" Command="{Binding PreferenceCommand}"/>
</MenuItem> </MenuItem>
<MenuItem Header="_Help" Padding="5"> <MenuItem Header="_Help" Padding="5">
<MenuItem Header="Report Bug" Icon="{StaticResource IconReportBug}" Command="{Binding ReportBugCommand}"/> <MenuItem Header="Report Bug" Icon="{StaticResource IconReportBug}" Command="{Binding ReportBugCommand}"/>
@@ -89,16 +89,20 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="0"> <StackPanel Orientation="Horizontal" Grid.Column="0">
<Button Content="Select Mode" Margin="5" Padding="5" <widget:IconButton ButtonText="Select Mode"
Style="{StaticResource AccessoryIconButton}" styles:AccessoryIcon.Icon="/Frontend/Assets/SelectMode.ico"/> ButtonIcon="/Frontend/Assets/SelectMode.ico"
<Button Content="Fill Mode" Margin="5" Padding="5" Margin="5" Padding="5"/>
Style="{StaticResource AccessoryIconButton}" styles:AccessoryIcon.Icon="/Frontend/Assets/FillMode.ico"/> <widget:IconButton ButtonText="Fill Mode"
<Button Content="Draw Mode" Margin="5" Padding="5" ButtonIcon="/Frontend/Assets/FillMode.ico"
Style="{StaticResource AccessoryIconButton}" styles:AccessoryIcon.Icon="/Frontend/Assets/DrawMode.ico"/> Margin="5" Padding="5"/>
<widget:IconButton ButtonText="Draw Mode"
ButtonIcon="/Frontend/Assets/DrawMode.ico"
Margin="5" Padding="5"/>
</StackPanel> </StackPanel>
<Button Content="Save File then Run Game" Grid.Column="1" Margin="5" Padding="5" <widget:IconButton ButtonText="Save File then Run Game"
Style="{StaticResource AccessoryIconButton}" styles:AccessoryIcon.Icon="/Frontend/Assets/SaveFileThenRunGame.ico"/> ButtonIcon="/Frontend/Assets/SaveFileThenRunGame.ico"
Grid.Column="1" Margin="5" Padding="5"/>
</Grid> </Grid>

View File

@@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BallanceTasEditor.Frontend.Views" xmlns:local="clr-namespace:BallanceTasEditor.Frontend.Views"
xmlns:vm="clr-namespace:BallanceTasEditor.Frontend.ViewModels" xmlns:vm="clr-namespace:BallanceTasEditor.Frontend.ViewModels"
xmlns:styles="clr-namespace:BallanceTasEditor.Frontend.Styles" xmlns:widget="clr-namespace:BallanceTasEditor.Frontend.Widgets"
d:DataContext="{d:DesignInstance vm:PreferenceDialog}" d:DataContext="{d:DesignInstance vm:PreferenceDialog}"
mc:Ignorable="d" WindowStartupLocation="CenterOwner" ResizeMode="NoResize" ShowInTaskbar="False" mc:Ignorable="d" WindowStartupLocation="CenterOwner" ResizeMode="NoResize" ShowInTaskbar="False"
Title="Editor Preference" Height="450" Width="400" Icon="/Frontend/Assets/Preference.ico"> Title="Editor Preference" Height="450" Width="400" Icon="/Frontend/Assets/Preference.ico">
@@ -17,9 +17,9 @@
<ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Visible"> <ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Visible">
<StackPanel Orientation="Vertical"> <StackPanel Orientation="Vertical">
<!-- TODO: This icon is wrong. --> <widget:IconGroupBox GroupBoxText="Editor Layout"
<GroupBox Header="Editor Layout" Margin="10" Padding="10" GroupBoxIcon="/Frontend/Assets/EditorLayout.ico"
Style="{StaticResource AccessoryIconGroupBox}" styles:AccessoryIcon.Icon="/Frontend/Assets/EditorLayout.ico"> Margin="10" Padding="10">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
@@ -28,9 +28,10 @@
<RadioButton Content="Horizontal Layout" GroupName="EditorLayout" Grid.Column="0"/> <RadioButton Content="Horizontal Layout" GroupName="EditorLayout" Grid.Column="0"/>
<RadioButton Content="Vertical Layout" GroupName="EditorLayout" Grid.Column="1"/> <RadioButton Content="Vertical Layout" GroupName="EditorLayout" Grid.Column="1"/>
</Grid> </Grid>
</GroupBox> </widget:IconGroupBox>
<GroupBox Header="Paste Behavior" Margin="10" Padding="10" <widget:IconGroupBox GroupBoxText="Paste Behavior"
Style="{StaticResource AccessoryIconGroupBox}" styles:AccessoryIcon.Icon="/Frontend/Assets/PasteFrame.ico"> GroupBoxIcon="/Frontend/Assets/PasteFrame.ico"
Margin="10" Padding="10">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
@@ -39,13 +40,15 @@
<RadioButton Content="Insert Paste" GroupName="PasteBehavior" Grid.Column="0"/> <RadioButton Content="Insert Paste" GroupName="PasteBehavior" Grid.Column="0"/>
<RadioButton Content="Overwritten Paste" GroupName="PasteBehavior" Grid.Column="1"/> <RadioButton Content="Overwritten Paste" GroupName="PasteBehavior" Grid.Column="1"/>
</Grid> </Grid>
</GroupBox> </widget:IconGroupBox>
<GroupBox Header="Frame Count" Margin="10" Padding="10" <widget:IconGroupBox GroupBoxText="Frame Count"
Style="{StaticResource AccessoryIconGroupBox}" styles:AccessoryIcon.Icon="/Frontend/Assets/Count.ico"> GroupBoxIcon="/Frontend/Assets/Count.ico"
Margin="10" Padding="10">
<TextBox Padding="3"/> <TextBox Padding="3"/>
</GroupBox> </widget:IconGroupBox>
<GroupBox Header="Game Path" Margin="10" Padding="10" <widget:IconGroupBox GroupBoxText="Game Path"
Style="{StaticResource AccessoryIconGroupBox}" styles:AccessoryIcon.Icon="/Frontend/Assets/SaveFileThenRunGame.ico"> GroupBoxIcon="/Frontend/Assets/SaveFileThenRunGame.ico"
Margin="10" Padding="10">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
@@ -54,14 +57,14 @@
<TextBox IsReadOnly="True" Padding="3" Grid.Column="0"/> <TextBox IsReadOnly="True" Padding="3" Grid.Column="0"/>
<Button Content="Browse" Margin="5,0,0,0" MinWidth="80" Grid.Column="1"/> <Button Content="Browse" Margin="5,0,0,0" MinWidth="80" Grid.Column="1"/>
</Grid> </Grid>
</GroupBox> </widget:IconGroupBox>
</StackPanel> </StackPanel>
</ScrollViewer> </ScrollViewer>
<StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Right" Margin="10"> <StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Right" Margin="10">
<Button Content="OK" Margin="5" Style="{StaticResource OkButtonStyle}" IsDefault="True" <widget:IconButton Margin="5" Style="{StaticResource OkIconButtonStyle}" IsDefault="True"
Command="{Binding OkCommand}"/> Command="{Binding OkCommand}"/>
<Button Content="Cancel" Margin="5" Style="{StaticResource CancelButtonStyle}" <widget:IconButton Margin="5" Style="{StaticResource CancelIconButtonStyle}"
Command="{Binding CancelCommand}"/> Command="{Binding CancelCommand}"/>
</StackPanel> </StackPanel>
</Grid> </Grid>