Files
ShrlAlgoToolkit/ShrlAlgoStudio/DrfxFontFixerView.xaml

179 lines
8.4 KiB
Plaintext
Raw Normal View History

2026-01-02 17:30:41 +08:00
<ms:MelWindow
2026-02-17 22:17:23 +08:00
x:Class="ShrlAlgoStudio.DrfxFontFixerView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2026-02-17 22:17:23 +08:00
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"
2026-01-02 17:30:41 +08:00
xmlns:ms="https://github.com/ShrlAlgo/Melskin"
2026-02-17 22:17:23 +08:00
Title="DaVinci Resolve drfx 字体替换"
Width="1000"
Height="700"
mc:Ignorable="d">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="200" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="1.5*" />
</Grid.ColumnDefinitions>
<GroupBox Grid.Row="0" Header="添加需要处理的 drfx 文件">
2026-02-17 22:17:23 +08:00
<ListBox x:Name="FileListBox" BorderThickness="1" />
</GroupBox>
2026-02-17 22:17:23 +08:00
<ms:FlexibleRowPanel Grid.Row="1" Grid.Column="0">
<Button
2026-02-17 22:17:23 +08:00
x:Name="AddFilesButton"
Click="AddFilesButton_Click"
2026-02-17 22:17:23 +08:00
Content="添加drfx文件" />
<Button
2026-02-17 22:17:23 +08:00
x:Name="ClearListButton"
Click="ClearListButton_Click"
2026-02-17 22:17:23 +08:00
Content="清空处理列表" />
2026-01-02 17:30:41 +08:00
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel
2026-02-17 22:17:23 +08:00
Grid.Row="2"
2025-10-15 19:54:35 +08:00
Grid.Column="0"
2026-02-17 22:17:23 +08:00
Grid.ColumnSpan="2">
<TextBox x:Name="OutputPath" ms:FlexibleRowPanel.Span="2" />
<Button
2026-02-17 22:17:23 +08:00
x:Name="BrowserOutputPathButton"
Click="BrowserOutputPathButton_Click"
2026-02-17 22:17:23 +08:00
Content="选择输出路径" />
<Button
2026-02-17 22:17:23 +08:00
x:Name="OpenOutputButton"
Click="OpenOutputButton_Click"
Content="打开输出目录"
2026-02-17 22:17:23 +08:00
IsEnabled="False" />
2026-01-02 17:30:41 +08:00
</ms:FlexibleRowPanel>
<GroupBox
2026-02-17 22:17:23 +08:00
Grid.Row="3"
2025-10-15 19:54:35 +08:00
Grid.Column="0"
Grid.ColumnSpan="2"
2026-02-17 22:17:23 +08:00
FontWeight="Bold"
Header="处理日志">
2026-02-17 22:17:23 +08:00
<ScrollViewer x:Name="LogScrollViewer" VerticalScrollBarVisibility="Auto">
<TextBlock
2026-02-17 22:17:23 +08:00
x:Name="LogTextBlock"
Margin="5"
2026-02-17 22:17:23 +08:00
FontFamily="Consolas"
TextWrapping="Wrap" />
</ScrollViewer>
</GroupBox>
<GroupBox
Grid.Row="0"
2026-02-17 22:17:23 +08:00
Grid.Column="1"
Header="扫描文件并定义字体/样式替换规则">
<DataGrid
2026-02-17 22:17:23 +08:00
x:Name="MappingDataGrid"
AutoGenerateColumns="False"
2026-02-17 22:17:23 +08:00
CanUserAddRows="False">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ToolTipService.ShowDuration" Value="30000" />
<Setter Property="ToolTip" Value="{Binding UsageInfo}" />
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn
2026-02-17 22:17:23 +08:00
Width="*"
Binding="{Binding OriginalFont}"
Header="原始字体"
2026-02-17 22:17:23 +08:00
IsReadOnly="True" />
<DataGridTextColumn
2026-02-17 22:17:23 +08:00
Width="*"
Binding="{Binding OriginalStyle}"
Header="原始样式"
2026-02-17 22:17:23 +08:00
IsReadOnly="True" />
<DataGridTemplateColumn Width="*" Header="新字体">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!-- 注意我们仍然保留LostFocus因为它能最好地处理“手动输入”文本的场景 -->
<ComboBox
IsEditable="True"
ItemsSource="{Binding DataContext.SystemFonts, RelativeSource={RelativeSource AncestorType=Window}}"
LostFocus="NewFontComboBox_LostFocus"
Text="{Binding NewFont, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
2026-02-17 22:17:23 +08:00
<DataGridTemplateColumn Width="*" Header="新样式">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox Text="{Binding DataContext.NewStyle, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridCell}}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsNewFontInSystem}" Value="True">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ComboBox
IsEditable="True"
ItemsSource="{Binding Path=DataContext.AvailableNewStyles, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridCell}}"
Text="{Binding DataContext.NewStyle, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridCell}}" />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<StackPanel
Grid.Row="1"
2026-02-17 22:17:23 +08:00
Grid.Column="1"
HorizontalAlignment="Right"
2026-02-17 22:17:23 +08:00
VerticalAlignment="Bottom"
Orientation="Horizontal">
<Button
2026-02-17 22:17:23 +08:00
x:Name="ScanFilesButton"
Click="ScanFilesButton_Click"
2026-02-17 22:17:23 +08:00
Content="扫描文件并更新映射表" />
<Button
2026-02-17 22:17:23 +08:00
x:Name="LoadMapButton"
Click="LoadMapButton_Click"
2026-02-17 22:17:23 +08:00
Content="加载映射表" />
<Button
2026-02-17 22:17:23 +08:00
x:Name="SaveMapButton"
Click="SaveMapButton_Click"
2026-02-17 22:17:23 +08:00
Content="保存映射表" />
<Button
2026-02-17 22:17:23 +08:00
x:Name="ClearMapButton"
Click="ClearMapButton_Click"
2026-02-17 22:17:23 +08:00
Content="清空映射表" />
</StackPanel>
2026-02-17 22:17:23 +08:00
<Grid Grid.Row="5" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ProgressBar
2026-02-17 22:17:23 +08:00
x:Name="MainProgressBar"
Grid.Column="0"
2026-02-17 22:17:23 +08:00
Height="35" />
<Button
2026-02-17 22:17:23 +08:00
x:Name="StartButton"
Grid.Column="1"
2026-02-17 22:17:23 +08:00
Click="StartButton_Click"
Content="开始处理" />
</Grid>
</Grid>
2026-01-02 17:30:41 +08:00
</ms:MelWindow>