From 7710b7725567f72b4ac9683a31b4669f8d211385 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sun, 24 Aug 2025 09:17:58 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E5=BF=AB=E6=8D=B7=E9=94=AE=E5=92=8C?= =?UTF-8?q?=E5=A2=A8=E8=BF=B9=E6=B8=90=E9=9A=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/Helpers/GlobalHotkeyManager.cs | 55 ++++- Ink Canvas/MainWindow.xaml | 222 +++++++++--------- Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs | 6 + .../Windows/HotkeySettingsWindow.xaml.cs | 31 ++- 4 files changed, 198 insertions(+), 116 deletions(-) diff --git a/Ink Canvas/Helpers/GlobalHotkeyManager.cs b/Ink Canvas/Helpers/GlobalHotkeyManager.cs index 56d939e8..66d7cba2 100644 --- a/Ink Canvas/Helpers/GlobalHotkeyManager.cs +++ b/Ink Canvas/Helpers/GlobalHotkeyManager.cs @@ -165,6 +165,59 @@ namespace Ink_Canvas.Helpers return new List(_registeredHotkeys.Values); } + /// + /// 获取配置文件中的快捷键信息(不注册,仅用于显示) + /// + /// 配置文件中的快捷键列表 + public List GetHotkeysFromConfigFile() + { + try + { + if (!File.Exists(HotkeyConfigFile)) + { + LogHelper.WriteLogToFile("快捷键配置文件不存在", LogHelper.LogType.Info); + return new List(); + } + + // 读取配置文件内容 + string jsonContent = File.ReadAllText(HotkeyConfigFile, System.Text.Encoding.UTF8); + if (string.IsNullOrEmpty(jsonContent)) + { + LogHelper.WriteLogToFile("快捷键配置文件为空", LogHelper.LogType.Warning); + return new List(); + } + + // 反序列化配置 + var config = JsonConvert.DeserializeObject(jsonContent); + if (config?.Hotkeys == null || config.Hotkeys.Count == 0) + { + LogHelper.WriteLogToFile("快捷键配置为空或格式错误", LogHelper.LogType.Warning); + return new List(); + } + + // 转换为HotkeyInfo列表(不注册,仅用于显示) + var hotkeyList = new List(); + foreach (var hotkeyConfig in config.Hotkeys) + { + hotkeyList.Add(new HotkeyInfo + { + Name = hotkeyConfig.Name, + Key = hotkeyConfig.Key, + Modifiers = hotkeyConfig.Modifiers, + Action = null // 不设置动作,仅用于显示 + }); + } + + LogHelper.WriteLogToFile($"从配置文件读取到 {hotkeyList.Count} 个快捷键信息", LogHelper.LogType.Info); + return hotkeyList; + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"从配置文件读取快捷键信息时出错: {ex.Message}", LogHelper.LogType.Error); + return new List(); + } + } + /// /// 注册默认快捷键集合 /// @@ -211,7 +264,7 @@ namespace Ink_Canvas.Helpers } /// - /// 从设置加载快捷键 + /// 从配置文件加载快捷键 /// public void LoadHotkeysFromSettings() { diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index f9f94034..37247924 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -4061,7 +4061,7 @@ - @@ -4176,57 +4176,69 @@ Margin="12,8,12,0" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Fill"> - + + - - - - - - - + + + + @@ -7193,53 +7205,63 @@ Margin="12,8,12,0" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Fill"> - - - + + + - - - - - + + + + @@ -7994,17 +8016,7 @@ - - - - - - + {hotkey.Modifiers}+{hotkey.Key}", LogHelper.LogType.Info); + LogHelper.WriteLogToFile($"从配置文件设置快捷键项: {hotkey.Name} -> {hotkey.Modifiers}+{hotkey.Key}", LogHelper.LogType.Info); } } - // 对于没有快捷键的项目,不设置任何值,保持为空状态 - // 这样用户就能清楚地知道哪些快捷键还没有设置 - LogHelper.WriteLogToFile("未注册的快捷键项保持为空状态", LogHelper.LogType.Info); + // 为没有快捷键的项目设置默认显示值(仅用于UI显示,不实际注册) + foreach (var kvp in _hotkeyItems) + { + var hotkeyItem = kvp.Value; + if (hotkeyItem.GetCurrentHotkey().key == Key.None) + { + // 根据DefaultKey和DefaultModifiers设置默认显示值 + SetDefaultHotkeyForItem(hotkeyItem); + LogHelper.WriteLogToFile($"设置默认显示值: {hotkeyItem.HotkeyName}", LogHelper.LogType.Info); + } + } } catch (Exception ex) {