mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-03-21 17:48:28 -05:00
Wave 1: Complete PKMEditor tabs + user refinements
Main tab: shiny toggle, PID reroll, nicknamed flag, Stat Nature, Form ComboBox, Pokérus, friendship/hatch label swap, legality icon. Met tab: fateful encounter, battle version, obedience level. Stats tab: EV total, hyper training, Dynamax, Gigantamax, Alpha, Tera. Moves tab: PP display, PP Ups, relearn moves. Cosmetic tab: size/scale controls. OT/Misc tab: OT/HT gender, handler, EC reroll, Home Tracker. Includes user refinements to menu structure, SAV tab layout, slot context menu code-behind, and control styling.
This commit is contained in:
parent
5552be293f
commit
475fb816d3
|
|
@ -3,6 +3,7 @@
|
|||
using System.Linq;
|
||||
using Avalonia.Media.Imaging;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using PKHeX.Avalonia.Converters;
|
||||
using PKHeX.Core;
|
||||
using PKHeX.Drawing.PokeSprite.Avalonia;
|
||||
|
|
@ -138,6 +139,86 @@ public partial class PKMEditorViewModel : ObservableObject
|
|||
[ObservableProperty] private ushort _tid;
|
||||
[ObservableProperty] private ushort _sid;
|
||||
|
||||
// OT Gender
|
||||
[ObservableProperty] private byte _otGender;
|
||||
|
||||
public string OtGenderSymbol => OtGender switch
|
||||
{
|
||||
0 => "\u2642", // ♂
|
||||
1 => "\u2640", // ♀
|
||||
_ => "\u2014", // —
|
||||
};
|
||||
|
||||
partial void OnOtGenderChanged(byte value)
|
||||
{
|
||||
OnPropertyChanged(nameof(OtGenderSymbol));
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
private void ToggleOtGender()
|
||||
{
|
||||
OtGender = (byte)(OtGender == 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
// Handling Trainer
|
||||
[ObservableProperty] private int _currentHandler;
|
||||
[ObservableProperty] private string _handlingTrainerName = string.Empty;
|
||||
[ObservableProperty] private byte _htGender;
|
||||
|
||||
public string HtGenderSymbol => HtGender switch
|
||||
{
|
||||
0 => "\u2642", // ♂
|
||||
1 => "\u2640", // ♀
|
||||
_ => "\u2014", // —
|
||||
};
|
||||
|
||||
partial void OnHtGenderChanged(byte value)
|
||||
{
|
||||
OnPropertyChanged(nameof(HtGenderSymbol));
|
||||
}
|
||||
|
||||
[ObservableProperty] private bool _hasHandler;
|
||||
|
||||
// Encryption Constant
|
||||
[ObservableProperty] private string _encryptionConstantHex = "00000000";
|
||||
|
||||
[RelayCommand]
|
||||
private void RerollEc()
|
||||
{
|
||||
var rng = new Random();
|
||||
var ec = (uint)rng.Next();
|
||||
EncryptionConstantHex = ec.ToString("X8");
|
||||
}
|
||||
|
||||
// Home Tracker
|
||||
[ObservableProperty] private string _homeTrackerHex = "0000000000000000";
|
||||
[ObservableProperty] private bool _hasHomeTracker;
|
||||
|
||||
// Met — Fateful Encounter
|
||||
[ObservableProperty] private bool _fatefulEncounter;
|
||||
|
||||
// Met — Obedience Level (Gen 9)
|
||||
[ObservableProperty] private byte _obedienceLevel;
|
||||
[ObservableProperty] private bool _hasObedienceLevel;
|
||||
|
||||
// Met — Battle Version (Gen 8+)
|
||||
[ObservableProperty] private int _battleVersion;
|
||||
[ObservableProperty] private bool _hasBattleVersion;
|
||||
[ObservableProperty] private ComboItem? _selectedBattleVersion;
|
||||
|
||||
partial void OnSelectedBattleVersionChanged(ComboItem? value)
|
||||
{
|
||||
if (value is not null)
|
||||
BattleVersion = value.Value;
|
||||
}
|
||||
|
||||
// Cosmetic — Size/Scale
|
||||
[ObservableProperty] private int _heightScalar;
|
||||
[ObservableProperty] private int _weightScalar;
|
||||
[ObservableProperty] private int _scale;
|
||||
[ObservableProperty] private bool _hasSizeData;
|
||||
[ObservableProperty] private bool _hasScale;
|
||||
|
||||
[ObservableProperty]
|
||||
private bool _isInitialized;
|
||||
|
||||
|
|
@ -351,6 +432,57 @@ public void PopulateFields(PKM pk)
|
|||
Tid = pk.TID16;
|
||||
Sid = pk.SID16;
|
||||
|
||||
// OT Gender
|
||||
OtGender = pk.OriginalTrainerGender;
|
||||
|
||||
// Handling Trainer
|
||||
CurrentHandler = pk.CurrentHandler;
|
||||
HandlingTrainerName = pk.HandlingTrainerName;
|
||||
HtGender = pk.HandlingTrainerGender;
|
||||
HasHandler = !string.IsNullOrEmpty(pk.HandlingTrainerName);
|
||||
|
||||
// Encryption Constant
|
||||
EncryptionConstantHex = pk.EncryptionConstant.ToString("X8");
|
||||
|
||||
// Home Tracker
|
||||
if (pk is IHomeTrack ht)
|
||||
{
|
||||
HasHomeTracker = true;
|
||||
HomeTrackerHex = ht.Tracker.ToString("X16");
|
||||
}
|
||||
else
|
||||
{
|
||||
HasHomeTracker = false;
|
||||
HomeTrackerHex = "0000000000000000";
|
||||
}
|
||||
|
||||
// Met — Fateful Encounter
|
||||
FatefulEncounter = pk.FatefulEncounter;
|
||||
|
||||
// Met — Obedience Level
|
||||
if (pk is IObedienceLevel ol)
|
||||
{
|
||||
HasObedienceLevel = true;
|
||||
ObedienceLevel = ol.ObedienceLevel;
|
||||
}
|
||||
else
|
||||
{
|
||||
HasObedienceLevel = false;
|
||||
ObedienceLevel = 0;
|
||||
}
|
||||
|
||||
// Met — Battle Version
|
||||
if (pk is IBattleVersion bv)
|
||||
{
|
||||
HasBattleVersion = true;
|
||||
BattleVersion = (int)bv.BattleVersion;
|
||||
}
|
||||
else
|
||||
{
|
||||
HasBattleVersion = false;
|
||||
BattleVersion = 0;
|
||||
}
|
||||
|
||||
// Cosmetic — Markings
|
||||
if (pk is IAppliedMarkings7 m7)
|
||||
{
|
||||
|
|
@ -417,6 +549,32 @@ public void PopulateFields(PKM pk)
|
|||
IsFavorite = false;
|
||||
}
|
||||
|
||||
// Cosmetic — Size/Scale
|
||||
if (pk is IScaledSize ss)
|
||||
{
|
||||
HasSizeData = true;
|
||||
HeightScalar = ss.HeightScalar;
|
||||
WeightScalar = ss.WeightScalar;
|
||||
if (pk is IScaledSize3 ss3)
|
||||
{
|
||||
HasScale = true;
|
||||
Scale = ss3.Scale;
|
||||
}
|
||||
else
|
||||
{
|
||||
HasScale = false;
|
||||
Scale = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
HasSizeData = false;
|
||||
HasScale = false;
|
||||
HeightScalar = 0;
|
||||
WeightScalar = 0;
|
||||
Scale = 0;
|
||||
}
|
||||
|
||||
// Refresh location lists based on version/context before setting selected items
|
||||
RefreshLocationLists();
|
||||
|
||||
|
|
@ -435,6 +593,9 @@ public void PopulateFields(PKM pk)
|
|||
SelectedMetLocation = MetLocationList.FirstOrDefault(x => x.Value == pk.MetLocation);
|
||||
SelectedEggLocation = EggLocationList.FirstOrDefault(x => x.Value == pk.EggLocation);
|
||||
|
||||
if (pk is IBattleVersion)
|
||||
SelectedBattleVersion = VersionList.FirstOrDefault(x => x.Value == BattleVersion);
|
||||
|
||||
UpdateSprite();
|
||||
}
|
||||
|
||||
|
|
@ -487,6 +648,22 @@ public void PopulateFields(PKM pk)
|
|||
|
||||
Entity.IsEgg = IsEgg;
|
||||
|
||||
// OT Gender
|
||||
Entity.OriginalTrainerGender = OtGender;
|
||||
|
||||
// Handling Trainer
|
||||
Entity.CurrentHandler = (byte)CurrentHandler;
|
||||
Entity.HandlingTrainerName = HandlingTrainerName;
|
||||
Entity.HandlingTrainerGender = HtGender;
|
||||
|
||||
// Encryption Constant
|
||||
if (uint.TryParse(EncryptionConstantHex, System.Globalization.NumberStyles.HexNumber, null, out var ec))
|
||||
Entity.EncryptionConstant = ec;
|
||||
|
||||
// Home Tracker
|
||||
if (Entity is IHomeTrack htSave && ulong.TryParse(HomeTrackerHex, System.Globalization.NumberStyles.HexNumber, null, out var tracker))
|
||||
htSave.Tracker = tracker;
|
||||
|
||||
// Cosmetic — Markings
|
||||
if (Entity is IAppliedMarkings7 m7)
|
||||
{
|
||||
|
|
@ -542,6 +719,26 @@ public void PopulateFields(PKM pk)
|
|||
Entity.EggMonth = (byte)Math.Clamp(EggMonth, 0, 12);
|
||||
Entity.EggDay = (byte)Math.Clamp(EggDay, 0, 31);
|
||||
|
||||
// Met — Fateful Encounter
|
||||
Entity.FatefulEncounter = FatefulEncounter;
|
||||
|
||||
// Met — Obedience Level
|
||||
if (Entity is IObedienceLevel olSave)
|
||||
olSave.ObedienceLevel = ObedienceLevel;
|
||||
|
||||
// Met — Battle Version
|
||||
if (Entity is IBattleVersion bvSave)
|
||||
bvSave.BattleVersion = (GameVersion)BattleVersion;
|
||||
|
||||
// Cosmetic — Size/Scale
|
||||
if (Entity is IScaledSize ssSave)
|
||||
{
|
||||
ssSave.HeightScalar = (byte)Math.Clamp(HeightScalar, 0, 255);
|
||||
ssSave.WeightScalar = (byte)Math.Clamp(WeightScalar, 0, 255);
|
||||
if (Entity is IScaledSize3 ss3Save)
|
||||
ss3Save.Scale = (byte)Math.Clamp(Scale, 0, 255);
|
||||
}
|
||||
|
||||
return Entity;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -100,53 +100,71 @@
|
|||
<TextBlock Text="Met" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<Grid Margin="4,2,4,2"
|
||||
RowDefinitions="27,27,27,27,27,27,27,27"
|
||||
ColumnDefinitions="104,*">
|
||||
<!-- Origin Game -->
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Origin Game:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" ItemsSource="{Binding VersionList}" SelectedItem="{Binding SelectedVersion}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<Grid Margin="4,2,4,2"
|
||||
RowDefinitions="27,27,27,27,27,27,27,27,27,27"
|
||||
ColumnDefinitions="104,*">
|
||||
<!-- Origin Game -->
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Origin Game:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" ItemsSource="{Binding VersionList}" SelectedItem="{Binding SelectedVersion}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
|
||||
<!-- Met Location -->
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Text="Met Location:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding MetLocationList}" SelectedItem="{Binding SelectedMetLocation}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
<!-- Met Location -->
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Text="Met Location:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding MetLocationList}" SelectedItem="{Binding SelectedMetLocation}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
|
||||
<!-- Ball -->
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Text="Ball:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="2" Grid.Column="1" ItemsSource="{Binding BallList}" SelectedItem="{Binding SelectedBall}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
<!-- Ball -->
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Text="Ball:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="2" Grid.Column="1" ItemsSource="{Binding BallList}" SelectedItem="{Binding SelectedBall}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
|
||||
<!-- Met Level -->
|
||||
<TextBlock Grid.Row="3" Grid.Column="0" Text="Met Level:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<NumericUpDown Grid.Row="3" Grid.Column="1" Value="{Binding MetLevel}" Minimum="0" Maximum="100" Height="25" Width="60" HorizontalAlignment="Left" />
|
||||
<!-- Met Level + Fateful Encounter -->
|
||||
<TextBlock Grid.Row="3" Grid.Column="0" Text="Met Level:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<StackPanel Grid.Row="3" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" Spacing="8">
|
||||
<NumericUpDown Value="{Binding MetLevel}" Minimum="0" Maximum="100" Height="25" Width="60" />
|
||||
<CheckBox IsChecked="{Binding FatefulEncounter}" Content="Fateful" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Met Date -->
|
||||
<TextBlock Grid.Row="4" Grid.Column="0" Text="Met Date:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<StackPanel Grid.Row="4" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" Spacing="4">
|
||||
<NumericUpDown Value="{Binding MetYear}" Minimum="0" Maximum="255" Height="25" Width="60" />
|
||||
<TextBlock Text="/" VerticalAlignment="Center" />
|
||||
<NumericUpDown Value="{Binding MetMonth}" Minimum="0" Maximum="12" Height="25" Width="52" />
|
||||
<TextBlock Text="/" VerticalAlignment="Center" />
|
||||
<NumericUpDown Value="{Binding MetDay}" Minimum="0" Maximum="31" Height="25" Width="52" />
|
||||
</StackPanel>
|
||||
<!-- Met Date -->
|
||||
<TextBlock Grid.Row="4" Grid.Column="0" Text="Met Date:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<StackPanel Grid.Row="4" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" Spacing="4">
|
||||
<NumericUpDown Value="{Binding MetYear}" Minimum="0" Maximum="255" Height="25" Width="60" />
|
||||
<TextBlock Text="/" VerticalAlignment="Center" />
|
||||
<NumericUpDown Value="{Binding MetMonth}" Minimum="0" Maximum="12" Height="25" Width="52" />
|
||||
<TextBlock Text="/" VerticalAlignment="Center" />
|
||||
<NumericUpDown Value="{Binding MetDay}" Minimum="0" Maximum="31" Height="25" Width="52" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Egg Location -->
|
||||
<TextBlock Grid.Row="5" Grid.Column="0" Text="Egg Location:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="5" Grid.Column="1" ItemsSource="{Binding EggLocationList}" SelectedItem="{Binding SelectedEggLocation}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
<!-- Egg Location -->
|
||||
<TextBlock Grid.Row="5" Grid.Column="0" Text="Egg Location:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="5" Grid.Column="1" ItemsSource="{Binding EggLocationList}" SelectedItem="{Binding SelectedEggLocation}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
|
||||
<!-- Egg Met Date -->
|
||||
<TextBlock Grid.Row="6" Grid.Column="0" Text="Egg Met Date:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<StackPanel Grid.Row="6" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" Spacing="4">
|
||||
<NumericUpDown Value="{Binding EggYear}" Minimum="0" Maximum="255" Height="25" Width="60" />
|
||||
<TextBlock Text="/" VerticalAlignment="Center" />
|
||||
<NumericUpDown Value="{Binding EggMonth}" Minimum="0" Maximum="12" Height="25" Width="52" />
|
||||
<TextBlock Text="/" VerticalAlignment="Center" />
|
||||
<NumericUpDown Value="{Binding EggDay}" Minimum="0" Maximum="31" Height="25" Width="52" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<!-- Egg Met Date -->
|
||||
<TextBlock Grid.Row="6" Grid.Column="0" Text="Egg Met Date:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<StackPanel Grid.Row="6" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" Spacing="4">
|
||||
<NumericUpDown Value="{Binding EggYear}" Minimum="0" Maximum="255" Height="25" Width="60" />
|
||||
<TextBlock Text="/" VerticalAlignment="Center" />
|
||||
<NumericUpDown Value="{Binding EggMonth}" Minimum="0" Maximum="12" Height="25" Width="52" />
|
||||
<TextBlock Text="/" VerticalAlignment="Center" />
|
||||
<NumericUpDown Value="{Binding EggDay}" Minimum="0" Maximum="31" Height="25" Width="52" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Battle Version (visible when HasBattleVersion) -->
|
||||
<TextBlock Grid.Row="7" Grid.Column="0" Text="Battle Ver:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0"
|
||||
IsVisible="{Binding HasBattleVersion}" />
|
||||
<ComboBox Grid.Row="7" Grid.Column="1" ItemsSource="{Binding VersionList}" SelectedItem="{Binding SelectedBattleVersion}"
|
||||
DisplayMemberBinding="{Binding Text, DataType=core:ComboItem}" Height="25" Width="144" HorizontalAlignment="Left"
|
||||
IsVisible="{Binding HasBattleVersion}" />
|
||||
|
||||
<!-- Obedience Level (visible when HasObedienceLevel) -->
|
||||
<TextBlock Grid.Row="8" Grid.Column="0" Text="Obedience Lv:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0"
|
||||
IsVisible="{Binding HasObedienceLevel}" />
|
||||
<NumericUpDown Grid.Row="8" Grid.Column="1" Value="{Binding ObedienceLevel}" Minimum="0" Maximum="100" Height="25" Width="60" HorizontalAlignment="Left"
|
||||
IsVisible="{Binding HasObedienceLevel}" />
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- Stats Tab -->
|
||||
|
|
@ -282,6 +300,23 @@
|
|||
<CheckBox IsChecked="{Binding IsFavorite}" Content="Favorite" Margin="4,0,0,0" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Size/Scale Section -->
|
||||
<StackPanel IsVisible="{Binding HasSizeData}" Spacing="0">
|
||||
<TextBlock Text="Size" FontWeight="SemiBold" Margin="0,2,0,2" />
|
||||
<Grid RowDefinitions="27,27,27" ColumnDefinitions="104,*">
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Height:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<NumericUpDown Grid.Row="0" Grid.Column="1" Value="{Binding HeightScalar}" Minimum="0" Maximum="255" Height="25" Width="60" HorizontalAlignment="Left" />
|
||||
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Text="Weight:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<NumericUpDown Grid.Row="1" Grid.Column="1" Value="{Binding WeightScalar}" Minimum="0" Maximum="255" Height="25" Width="60" HorizontalAlignment="Left" />
|
||||
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Text="Scale:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0"
|
||||
IsVisible="{Binding HasScale}" />
|
||||
<NumericUpDown Grid.Row="2" Grid.Column="1" Value="{Binding Scale}" Minimum="0" Maximum="255" Height="25" Width="60" HorizontalAlignment="Left"
|
||||
IsVisible="{Binding HasScale}" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
|
@ -294,14 +329,62 @@
|
|||
<TextBlock Text="OT/Misc" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<Grid Margin="8" RowDefinitions="27,27,27" ColumnDefinitions="104,*">
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="OT Name:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Ot}" Height="25" Width="144" HorizontalAlignment="Left" />
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Text="TID:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<NumericUpDown Grid.Row="1" Grid.Column="1" Value="{Binding Tid}" Minimum="0" Maximum="65535" Height="25" Width="80" HorizontalAlignment="Left" />
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Text="SID:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<NumericUpDown Grid.Row="2" Grid.Column="1" Value="{Binding Sid}" Minimum="0" Maximum="65535" Height="25" Width="80" HorizontalAlignment="Left" />
|
||||
</Grid>
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<Grid Margin="4,2,4,2" RowDefinitions="27,27,27,8,27,27,27,8,27,27" ColumnDefinitions="104,*">
|
||||
<!-- OT Name + Gender -->
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="OT Name:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<TextBox Text="{Binding Ot}" Height="25" Width="120" />
|
||||
<Button Content="{Binding OtGenderSymbol}" Command="{Binding ToggleOtGenderCommand}"
|
||||
FontSize="14" FontWeight="Bold" Width="24" Height="25" Padding="0" Margin="4,0,0,0"
|
||||
HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- TID -->
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Text="TID:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<NumericUpDown Grid.Row="1" Grid.Column="1" Value="{Binding Tid}" Minimum="0" Maximum="65535" Height="25" Width="80" HorizontalAlignment="Left" />
|
||||
|
||||
<!-- SID -->
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Text="SID:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<NumericUpDown Grid.Row="2" Grid.Column="1" Value="{Binding Sid}" Minimum="0" Maximum="65535" Height="25" Width="80" HorizontalAlignment="Left" />
|
||||
|
||||
<!-- Separator -->
|
||||
<Border Grid.Row="3" Grid.ColumnSpan="2" BorderBrush="#CCCCCC" BorderThickness="0,0,0,1" Margin="0,2" />
|
||||
|
||||
<!-- Handler -->
|
||||
<TextBlock Grid.Row="4" Grid.Column="0" Text="Handler:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<ComboBox Grid.Row="4" Grid.Column="1" SelectedIndex="{Binding CurrentHandler}" Height="25" Width="100" HorizontalAlignment="Left">
|
||||
<ComboBoxItem Content="OT" />
|
||||
<ComboBoxItem Content="Not OT" />
|
||||
</ComboBox>
|
||||
|
||||
<!-- HT Name + Gender (visible when HasHandler) -->
|
||||
<TextBlock Grid.Row="5" Grid.Column="0" Text="HT Name:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0"
|
||||
IsVisible="{Binding HasHandler}" />
|
||||
<StackPanel Grid.Row="5" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center"
|
||||
IsVisible="{Binding HasHandler}">
|
||||
<TextBox Text="{Binding HandlingTrainerName}" Height="25" Width="120" />
|
||||
<TextBlock Text="{Binding HtGenderSymbol}" FontSize="14" FontWeight="Bold"
|
||||
VerticalAlignment="Center" Margin="6,0,0,0" Width="16" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Separator -->
|
||||
<Border Grid.Row="7" Grid.ColumnSpan="2" BorderBrush="#CCCCCC" BorderThickness="0,0,0,1" Margin="0,2" />
|
||||
|
||||
<!-- Encryption Constant -->
|
||||
<TextBlock Grid.Row="8" Grid.Column="0" Text="EC:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" />
|
||||
<StackPanel Grid.Row="8" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<TextBox Text="{Binding EncryptionConstantHex}" Height="25" Width="72" FontFamily="Courier New,Consolas,monospace" />
|
||||
<Button Content="Reroll" Command="{Binding RerollEcCommand}" Height="25" Margin="4,0,0,0" Padding="6,0" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Home Tracker -->
|
||||
<TextBlock Grid.Row="9" Grid.Column="0" Text="Tracker:" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0"
|
||||
IsVisible="{Binding HasHomeTracker}" />
|
||||
<TextBox Grid.Row="9" Grid.Column="1" Text="{Binding HomeTrackerHex}" Height="25" Width="130" HorizontalAlignment="Left"
|
||||
FontFamily="Courier New,Consolas,monospace" IsVisible="{Binding HasHomeTracker}" />
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</DockPanel>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user