Fix font sizes, stat row heights, and settings crash

- Change font sizes from 12px to 11px across PKMEditor and SAVEditor
  to match WinForms default (8.25pt ≈ 11px)
- Increase stat row heights from 22px to 24px
- Wrap settings UI builder in try-catch to prevent crash
- Fix DecimalObjectConverter.ConvertBack for uint/byte/float types
This commit is contained in:
montanon 2026-03-15 12:52:08 -03:00
parent 0cb4aa1e49
commit 9faddea873
3 changed files with 78 additions and 49 deletions

View File

@ -35,71 +35,71 @@
<StackPanel Spacing="1" Margin="4,4,4,2">
<Grid ColumnDefinitions="104,*" RowDefinitions="24,24,24,24,24,24,24,24,24,24,24" RowSpacing="1">
<!-- Row 0: PID -->
<TextBlock Grid.Row="0" Grid.Column="0" Text="PID:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding PidHex}" Width="80" HorizontalAlignment="Left" Height="24" FontSize="12" FontFamily="Consolas,Courier New,monospace" Padding="4,2" />
<TextBlock Grid.Row="0" Grid.Column="0" Text="PID:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding PidHex}" Width="80" HorizontalAlignment="Left" Height="24" FontSize="11" FontFamily="Consolas,Courier New,monospace" Padding="4,2" />
<!-- Row 1: Species -->
<TextBlock Grid.Row="1" Grid.Column="0" Text="Species:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Species:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<ComboBox Grid.Row="1" Grid.Column="1"
ItemsSource="{Binding SpeciesList}"
SelectedItem="{Binding SelectedSpecies}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
<!-- Row 2: Nickname -->
<TextBlock Grid.Row="2" Grid.Column="0" Text="Nickname:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Nickname}" Height="24" FontSize="12" Padding="4,2" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Nickname:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Nickname}" Height="24" FontSize="11" Padding="4,2" />
<!-- Row 3: EXP + Level side by side -->
<TextBlock Grid.Row="3" Grid.Column="0" Text="EXP:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="EXP:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<StackPanel Grid.Row="3" Grid.Column="1" Orientation="Horizontal" Spacing="4">
<TextBox Text="{Binding Exp}" Width="72" Height="24" FontSize="12" Padding="4,2" />
<TextBox Text="{Binding Exp}" Width="72" Height="24" FontSize="11" Padding="4,2" />
<TextBlock Text="Level:" VerticalAlignment="Center" FontSize="11" Margin="2,0,2,0" />
<NumericUpDown Value="{Binding Level}" Minimum="1" Maximum="100" Width="64" Height="24" FontSize="11" />
</StackPanel>
<!-- Row 4: Nature -->
<TextBlock Grid.Row="4" Grid.Column="0" Text="Nature:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBlock Grid.Row="4" Grid.Column="0" Text="Nature:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<ComboBox Grid.Row="4" Grid.Column="1"
ItemsSource="{Binding NatureList}"
SelectedItem="{Binding SelectedNature}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
<!-- Row 5: Form -->
<TextBlock Grid.Row="5" Grid.Column="0" Text="Form:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<NumericUpDown Grid.Row="5" Grid.Column="1" Value="{Binding Form}" Minimum="0" Width="64" HorizontalAlignment="Left" Height="24" FontSize="12" />
<TextBlock Grid.Row="5" Grid.Column="0" Text="Form:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<NumericUpDown Grid.Row="5" Grid.Column="1" Value="{Binding Form}" Minimum="0" Width="64" HorizontalAlignment="Left" Height="24" FontSize="11" />
<!-- Row 6: Held Item -->
<TextBlock Grid.Row="6" Grid.Column="0" Text="Held Item:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBlock Grid.Row="6" Grid.Column="0" Text="Held Item:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<ComboBox Grid.Row="6" Grid.Column="1"
ItemsSource="{Binding HeldItemList}"
SelectedItem="{Binding SelectedHeldItem}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
<!-- Row 7: Ability (ComboBox) -->
<TextBlock Grid.Row="7" Grid.Column="0" Text="Ability:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBlock Grid.Row="7" Grid.Column="0" Text="Ability:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<ComboBox Grid.Row="7" Grid.Column="1"
ItemsSource="{Binding AbilityList}"
SelectedItem="{Binding SelectedAbility}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
<!-- Row 8: Friendship -->
<TextBlock Grid.Row="8" Grid.Column="0" Text="Friendship:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<NumericUpDown Grid.Row="8" Grid.Column="1" Value="{Binding Friendship}" Minimum="0" Maximum="255" Width="64" HorizontalAlignment="Left" Height="24" FontSize="12" />
<TextBlock Grid.Row="8" Grid.Column="0" Text="Friendship:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<NumericUpDown Grid.Row="8" Grid.Column="1" Value="{Binding Friendship}" Minimum="0" Maximum="255" Width="64" HorizontalAlignment="Left" Height="24" FontSize="11" />
<!-- Row 9: Language -->
<TextBlock Grid.Row="9" Grid.Column="0" Text="Language:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBlock Grid.Row="9" Grid.Column="0" Text="Language:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<ComboBox Grid.Row="9" Grid.Column="1"
ItemsSource="{Binding LanguageList}"
SelectedItem="{Binding SelectedLanguage}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
<!-- Row 10: IsEgg + Shiny on same row -->
<TextBlock Grid.Row="10" Grid.Column="0" Text="" VerticalAlignment="Center" FontSize="12" />
<TextBlock Grid.Row="10" Grid.Column="0" Text="" VerticalAlignment="Center" FontSize="11" />
<StackPanel Grid.Row="10" Grid.Column="1" Orientation="Horizontal" Spacing="12">
<CheckBox IsChecked="{Binding IsEgg}" Content="Is Egg" VerticalAlignment="Center" FontSize="11" Padding="4,0" />
<CheckBox IsChecked="{Binding IsShiny}" Content="Shiny" VerticalAlignment="Center" FontSize="11" Padding="4,0" />
@ -119,7 +119,7 @@
</TabItem.Header>
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<StackPanel Spacing="4" Margin="4">
<TextBlock Text="Met Conditions" FontWeight="SemiBold" FontSize="12" />
<TextBlock Text="Met Conditions" FontWeight="SemiBold" FontSize="11" />
<TextBlock Text="(Met data editing not yet implemented)" FontSize="11" Opacity="0.6" />
</StackPanel>
</ScrollViewer>
@ -144,7 +144,7 @@
<TextBlock Grid.Column="4" Text="Total" FontWeight="Bold" HorizontalAlignment="Center" FontSize="10" />
</Grid>
<!-- HP -->
<Grid ColumnDefinitions="36,44,50,50,50" Height="22">
<Grid ColumnDefinitions="36,44,50,50,50" Height="24">
<TextBlock Grid.Column="0" Text="HP" VerticalAlignment="Center" FontSize="10" HorizontalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding Base_HP}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
<NumericUpDown Grid.Column="2" Value="{Binding Iv_HP}" Minimum="0" Maximum="31" Height="20" FontSize="10" ShowButtonSpinner="False" />
@ -152,7 +152,7 @@
<TextBlock Grid.Column="4" Text="{Binding Hp}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
</Grid>
<!-- ATK -->
<Grid ColumnDefinitions="36,44,50,50,50" Height="22">
<Grid ColumnDefinitions="36,44,50,50,50" Height="24">
<TextBlock Grid.Column="0" Text="Atk" VerticalAlignment="Center" FontSize="10" HorizontalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding Base_ATK}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
<NumericUpDown Grid.Column="2" Value="{Binding Iv_ATK}" Minimum="0" Maximum="31" Height="20" FontSize="10" ShowButtonSpinner="False" />
@ -160,7 +160,7 @@
<TextBlock Grid.Column="4" Text="{Binding Atk}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
</Grid>
<!-- DEF -->
<Grid ColumnDefinitions="36,44,50,50,50" Height="22">
<Grid ColumnDefinitions="36,44,50,50,50" Height="24">
<TextBlock Grid.Column="0" Text="Def" VerticalAlignment="Center" FontSize="10" HorizontalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding Base_DEF}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
<NumericUpDown Grid.Column="2" Value="{Binding Iv_DEF}" Minimum="0" Maximum="31" Height="20" FontSize="10" ShowButtonSpinner="False" />
@ -168,7 +168,7 @@
<TextBlock Grid.Column="4" Text="{Binding Def}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
</Grid>
<!-- SpA -->
<Grid ColumnDefinitions="36,44,50,50,50" Height="22">
<Grid ColumnDefinitions="36,44,50,50,50" Height="24">
<TextBlock Grid.Column="0" Text="SpA" VerticalAlignment="Center" FontSize="10" HorizontalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding Base_SPA}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
<NumericUpDown Grid.Column="2" Value="{Binding Iv_SPA}" Minimum="0" Maximum="31" Height="20" FontSize="10" ShowButtonSpinner="False" />
@ -176,7 +176,7 @@
<TextBlock Grid.Column="4" Text="{Binding SpA}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
</Grid>
<!-- SpD -->
<Grid ColumnDefinitions="36,44,50,50,50" Height="22">
<Grid ColumnDefinitions="36,44,50,50,50" Height="24">
<TextBlock Grid.Column="0" Text="SpD" VerticalAlignment="Center" FontSize="10" HorizontalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding Base_SPD}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
<NumericUpDown Grid.Column="2" Value="{Binding Iv_SPD}" Minimum="0" Maximum="31" Height="20" FontSize="10" ShowButtonSpinner="False" />
@ -184,7 +184,7 @@
<TextBlock Grid.Column="4" Text="{Binding SpD}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
</Grid>
<!-- Spe -->
<Grid ColumnDefinitions="36,44,50,50,50" Height="22">
<Grid ColumnDefinitions="36,44,50,50,50" Height="24">
<TextBlock Grid.Column="0" Text="Spe" VerticalAlignment="Center" FontSize="10" HorizontalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding Base_SPE}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" />
<NumericUpDown Grid.Column="2" Value="{Binding Iv_SPE}" Minimum="0" Maximum="31" Height="20" FontSize="10" ShowButtonSpinner="False" />
@ -206,33 +206,33 @@
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<StackPanel Spacing="3" Margin="4,4,4,2">
<Grid ColumnDefinitions="52,*" RowDefinitions="Auto,Auto,Auto,Auto" RowSpacing="3">
<TextBlock Grid.Row="0" Grid.Column="0" Text="Move 1:" VerticalAlignment="Center" FontSize="12" />
<TextBlock Grid.Row="0" Grid.Column="0" Text="Move 1:" VerticalAlignment="Center" FontSize="11" />
<ComboBox Grid.Row="0" Grid.Column="1"
ItemsSource="{Binding MoveList}"
SelectedItem="{Binding SelectedMove1}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Move 2:" VerticalAlignment="Center" FontSize="12" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Move 2:" VerticalAlignment="Center" FontSize="11" />
<ComboBox Grid.Row="1" Grid.Column="1"
ItemsSource="{Binding MoveList}"
SelectedItem="{Binding SelectedMove2}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Move 3:" VerticalAlignment="Center" FontSize="12" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Move 3:" VerticalAlignment="Center" FontSize="11" />
<ComboBox Grid.Row="2" Grid.Column="1"
ItemsSource="{Binding MoveList}"
SelectedItem="{Binding SelectedMove3}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="Move 4:" VerticalAlignment="Center" FontSize="12" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="Move 4:" VerticalAlignment="Center" FontSize="11" />
<ComboBox Grid.Row="3" Grid.Column="1"
ItemsSource="{Binding MoveList}"
SelectedItem="{Binding SelectedMove4}"
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}"
HorizontalAlignment="Stretch" Height="24" FontSize="12" />
HorizontalAlignment="Stretch" Height="24" FontSize="11" />
</Grid>
</StackPanel>
</ScrollViewer>
@ -248,7 +248,7 @@
</TabItem.Header>
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<StackPanel Spacing="4" Margin="4">
<TextBlock Text="Cosmetic" FontWeight="SemiBold" FontSize="12" />
<TextBlock Text="Cosmetic" FontWeight="SemiBold" FontSize="11" />
<TextBlock Text="(Cosmetic editing not yet implemented)" FontSize="11" Opacity="0.6" />
</StackPanel>
</ScrollViewer>
@ -265,14 +265,14 @@
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<StackPanel Spacing="3" Margin="4,4,4,2">
<Grid ColumnDefinitions="104,144" RowDefinitions="Auto,Auto,Auto" RowSpacing="3">
<TextBlock Grid.Row="0" Grid.Column="0" Text="OT Name:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Ot}" Height="24" FontSize="12" Padding="4,2" />
<TextBlock Grid.Row="0" Grid.Column="0" Text="OT Name:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Ot}" Height="24" FontSize="11" Padding="4,2" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="TID:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<NumericUpDown Grid.Row="1" Grid.Column="1" Value="{Binding Tid}" Minimum="0" Maximum="65535" Height="24" FontSize="12" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="TID:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<NumericUpDown Grid.Row="1" Grid.Column="1" Value="{Binding Tid}" Minimum="0" Maximum="65535" Height="24" FontSize="11" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="SID:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="12" />
<NumericUpDown Grid.Row="2" Grid.Column="1" Value="{Binding Sid}" Minimum="0" Maximum="65535" Height="24" FontSize="12" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="SID:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,6,0" FontSize="11" />
<NumericUpDown Grid.Row="2" Grid.Column="1" Value="{Binding Sid}" Minimum="0" Maximum="65535" Height="24" FontSize="11" />
</Grid>
</StackPanel>
</ScrollViewer>

View File

@ -18,7 +18,7 @@
ItemsSource="{Binding BoxNames}"
SelectedIndex="{Binding CurrentBox}"
HorizontalAlignment="Stretch"
Height="24" FontSize="12" Padding="4,2"
Height="24" FontSize="11" Padding="4,2"
Margin="2,0" />
<Button Grid.Column="2" Content="&gt;&gt;" Command="{Binding NextBoxCommand}"
Width="30" Height="24" HorizontalContentAlignment="Center"
@ -55,7 +55,7 @@
<!-- Party Tab -->
<TabItem Header="Party">
<StackPanel Margin="2,4">
<TextBlock Text="Party" FontWeight="SemiBold" FontSize="12" Margin="0,0,0,4" />
<TextBlock Text="Party" FontWeight="SemiBold" FontSize="11" Margin="0,0,0,4" />
<ItemsControl ItemsSource="{Binding PartySlots}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
@ -74,7 +74,7 @@
<!-- Other Tab (placeholder for daycare, extra slots) -->
<TabItem Header="Other">
<StackPanel Margin="4">
<TextBlock Text="Other Slots" FontWeight="SemiBold" FontSize="12" />
<TextBlock Text="Other Slots" FontWeight="SemiBold" FontSize="11" />
<TextBlock Text="Daycare, extra slots, etc." FontSize="11" Opacity="0.6" Margin="0,4,0,0" />
</StackPanel>
</TabItem>

View File

@ -20,6 +20,18 @@ private void OnDataContextChanged(object? sender, EventArgs e)
if (DataContext is not SettingsEditorViewModel vm)
return;
try
{
BuildSettingsTabs(vm);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Settings UI build failed: {ex.Message}");
}
}
private void BuildSettingsTabs(SettingsEditorViewModel vm)
{
SettingsTabs.Items.Clear();
foreach (var category in vm.Categories)
{
@ -161,8 +173,25 @@ internal sealed class DecimalObjectConverter : global::Avalonia.Data.Converters.
public object? ConvertBack(object? value, Type targetType, object? parameter, System.Globalization.CultureInfo culture)
{
if (value is decimal d)
return (object)d;
return value;
if (value is not decimal d)
return value;
try
{
if (targetType == typeof(object))
return d;
if (targetType == typeof(int))
return (int)d;
if (targetType == typeof(uint))
return (uint)d;
if (targetType == typeof(byte))
return (byte)d;
if (targetType == typeof(float))
return (float)d;
return d;
}
catch
{
return value;
}
}
}