public VirtualKeyboardModalWindow(string title = null, string initialText = null) { DataContext = this; InitializeComponent(); EmptySpace.MouseDown += (s, a) => Keyboard.Cancel(); Keyboard.DefaultKeySet = KeySets.En(); Keyboard.Focus(); Keyboard.Title = title; Keyboard.Accepted += OnAccepted; Keyboard.Cancelled += CloseModal; Keyboard.Loaded += (s, e) => { Keyboard.Text = initialText; Keyboard.CaretIndex = initialText == null ? 0 : initialText.Length; }; }
public override void Read(EndianBinaryReader reader, ISection section = null) { if (section != null) { if (section.Format == BinaryFormat.F2nd) { reader.SeekCurrent(4); } Id = reader.ReadUInt32(); Name = reader.ReadStringOffset(StringBinaryFormat.NullTerminated); } long keySetCountOffset = reader.ReadOffset(); long keySetTypesOffset = reader.ReadOffset(); long keySetsOffset = reader.ReadOffset(); long boneInfosOffset = reader.ReadOffset(); if (section != null) { long boneIdsOffset = reader.ReadOffset(); int boneInfoCount = reader.ReadInt32(); BoneInfos.Capacity = boneInfoCount; reader.ReadAtOffset(boneInfosOffset, () => { for (int i = 0; i < boneInfoCount; i++) { BoneInfos.Add(new BoneInfo { Name = reader.ReadStringOffset(StringBinaryFormat.NullTerminated) }); } }); reader.ReadAtOffset(boneIdsOffset, () => { foreach (var boneInfo in BoneInfos) { boneInfo.Id = ( uint )reader.ReadUInt64(); } }); } else { reader.ReadAtOffset(boneInfosOffset, () => { uint index = reader.ReadUInt16(); do { BoneInfos.Add(new BoneInfo { Id = index }); index = reader.ReadUInt16(); } while (index != 0 && reader.Position < reader.Length); }); } reader.ReadAtOffset(keySetCountOffset, () => { int info = reader.ReadUInt16(); int keySetCount = info & 0x3FFF; HighBits = ( byte )(info >> 14); FrameCount = reader.ReadUInt16(); KeySets.Capacity = keySetCount; reader.ReadAtOffset(keySetTypesOffset, () => { for (int i = 0, b = 0; i < keySetCount; i++) { if (i % 8 == 0) { b = reader.ReadUInt16(); } KeySets.Add(new KeySet { Type = ( KeySetType )((b >> (i % 8 * 2)) & 3) }); } reader.ReadAtOffset(keySetsOffset, () => { foreach (var keySet in KeySets) { keySet.Read(reader, section != null); } }); }); }); }