using Panuon.WPF.UI; using System; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace HMI.UI { public partial class KeyboardWindow : WindowX { private bool _isCapsLockOn = false; public bool IsCapsLockOn { get => _isCapsLockOn; set { Set(ref _isCapsLockOn, value); } } public KeyboardWindow() { DataContext = this; InitializeComponent(); } public bool? Open(string data) { Data = data; inputTextBox.Text = data; return this.ShowDialog(); } public string Data { get; private set; } private void KeyButton_Click(object sender, RoutedEventArgs e) { if (sender is Button button) { string key = button.Content.ToString(); if (_isCapsLockOn && IsLetter(key)) { key = key.ToUpper(); } else { key = key.ToLower(); } InsertText(key); } } private bool IsLetter(string key) { return key.Length == 1 && char.IsLetter(key[0]); } private void InsertText(string text) { inputTextBox.Text += text; inputTextBox.Focus(); } private void BackspaceButton_Click(object sender, RoutedEventArgs e) { if (inputTextBox.Text.Length > 0) { inputTextBox.Text = inputTextBox.Text.Substring(0, inputTextBox.Text.Length - 1); } inputTextBox.Focus(); } private void ClearButton_Click(object sender, RoutedEventArgs e) { inputTextBox.Clear(); inputTextBox.Focus(); } private void EnterButton_Click(object sender, RoutedEventArgs e) { //InsertText(Environment.NewLine); } private void SpaceButton_Click(object sender, RoutedEventArgs e) { InsertText(" "); } private void CapsButton_Click(object sender, RoutedEventArgs e) { IsCapsLockOn = !IsCapsLockOn; } private void Cancel_Click(object sender, RoutedEventArgs e) { Data = string.Empty; DialogResult = false; this.Close(); } private void Ok_Click(object sender, RoutedEventArgs e) { Data = inputTextBox.Text; DialogResult = true; this.Close(); } } }