From 2b3e330841c91eecc32e85f5b845a42fc2efc6ed Mon Sep 17 00:00:00 2001 From: callmeyan Date: Sat, 29 Mar 2025 21:25:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9C=A8=EF=B8=8F=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E5=9B=9E=E8=B0=83=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BF=AE=E8=AE=A2=E6=A8=A1=E5=BC=8F=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 `Bridge.cs` 文件中: - 修改 `ProcessStartInfo` 的 `Verb` 属性赋值方式,保持不变。 - 新增 `Callback` 方法,用于全局回调。 - 新增 `CheckInTrackRevisions` 方法,用于检查文档是否处于修订模式,并根据用户选择关闭修订模式或返回相应结果。 - 修改提示信息内容,并在用户选择不关闭修订模式时,返回相应错误信息。 - 调整 `JSONObject.Create()` 的链式调用格式。 - 调整 `InitProofreadCacheList` 方法的参数格式。 在 `FormMessage.cs` 文件中: - 新增 `ShowMessage` 方法的重载版本,支持自定义确认和取消按钮的文本。 在 `DocumentInfo.cs` 文件中: - 新增 `GlobalCallback` 方法,用于调用 Web 全局回调函数。 在 `ThisAddIn.cs` 文件中: - 修改日志记录信息,增加文档修订模式的状态。 - 新增 `GlobalCallback` 方法,用于全局回调。 --- .vs/AIProofread/v17/.suo | Bin 2867200 -> 2867200 bytes AIProofread/Bridge.cs | 58 ++++++++++++++++++++++++---- AIProofread/Controls/FormMessage.cs | 18 +++++++++ AIProofread/Model/DocumentInfo.cs | 16 ++++++++ AIProofread/ThisAddIn.cs | 7 +++- 5 files changed, 90 insertions(+), 9 deletions(-) diff --git a/.vs/AIProofread/v17/.suo b/.vs/AIProofread/v17/.suo index 478234477018062b481d68dd53ee2441ebc8e57c..5574349a9323d41a2845387ed34b24f49e680981 100644 GIT binary patch delta 31614 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 Yk!zy=os}!QfdtSUSd_|@*8GhB2P;ee%m4rY delta 23355 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 + /// 判断是否处理修订模式,如果没有在修订模式,则回调返回false + /// + /// + /// + public void CheckInTrackRevisions(string message,int documentId, string callbackId) + { + var doc = documentId > 0 ? Globals.ThisAddIn.GetDocumentById(documentId) : Globals.ThisAddIn.ActiveDocument; + + if (doc.CurrentDocument.TrackRevisions) + { + doc.RunInMainThread(() => + { + var result = FormMessage.ShowMessage(message, "确认", "取消", null); + if (result == DialogResult.OK) + { + // 关闭修订模式 + doc.CurrentDocument.TrackRevisions = false; + Callback(callbackId, "false"); + } + else + { + Callback(callbackId, "true"); + } + }); + } + else + { + Callback(callbackId, "false"); + } + } + /// /// 获取文档数据 /// @@ -332,14 +369,19 @@ namespace AIProofread // 判断是否处理修订模式 if (doc.TrackRevisions) { - //data.Add("code", 1); - //data.Add("message", "文档存在未处理的修订,请处理后再进行校对"); - var ret = MessageBox.Show("文档当前处于修订模式,是否关闭此模式?","提示",MessageBoxButtons.YesNo); - if(ret == DialogResult.Yes) + var ret = MessageBox.Show("该文档已开启修订模型,请关闭此模式再进行校对。是否关闭?", "提示", MessageBoxButtons.YesNo); + if (ret == DialogResult.Yes) { doc.TrackRevisions = false; } + else + { + data.Add("code", 1); + data.Add("message", "文档存在未处理的修订,请处理后再进行校对"); + return Tools.GetJSONString(data); + } } + // 判断是否需要强制升级 if (ShouldUpgradeForced()) { data.Add("code", 2); @@ -451,7 +493,7 @@ namespace AIProofread var lineNumber = range.get_Information(WdInformation.wdFirstCharacterLineNumber); return JSONObject.Create() - .Put("text",text) + .Put("text", text) .Put("page", pageNumber) .Put("line", lineNumber) .ToString(); @@ -888,12 +930,12 @@ namespace AIProofread return BridgeResult.Success(result == DialogResult.Yes ? "yes" : "no"); } - public string InitProofreadCacheList(string content,string originData) + public string InitProofreadCacheList(string content, string originData) { try { List list = JsonConvert.DeserializeObject>(content); - Dictionary dics = string.IsNullOrEmpty(originData) ? null : JsonConvert.DeserializeObject>(originData); + Dictionary dics = string.IsNullOrEmpty(originData) ? null : JsonConvert.DeserializeObject>(originData); Globals.ThisAddIn.InitProofreadCacheList(list, dics); return BridgeResult.Success(); } diff --git a/AIProofread/Controls/FormMessage.cs b/AIProofread/Controls/FormMessage.cs index d1b716c..91c6af2 100644 --- a/AIProofread/Controls/FormMessage.cs +++ b/AIProofread/Controls/FormMessage.cs @@ -85,6 +85,24 @@ namespace AIProofread.Controls formMessage.Show(); return formMessage; } + public static DialogResult ShowMessage(string message, string confirmText = "确认",string cancelText="取消", string confirmAction = null) + { + FormMessage formMessage = new FormMessage(); + formMessage.SetMessage(message); + formMessage.currentConfirmAction = confirmAction; + formMessage.BtnClose.Text = cancelText; + + if (string.IsNullOrEmpty(confirmText)) + { + formMessage.HideConfirm(); + } + else + { + formMessage.BtnConfirm.Text = confirmText; + formMessage.ResetButtons(); + } + return formMessage.ShowDialog(); + } public static DialogResult ShowMessage(string message, string confirmText = "确认", string confirmAction = null) { FormMessage formMessage = new FormMessage(); diff --git a/AIProofread/Model/DocumentInfo.cs b/AIProofread/Model/DocumentInfo.cs index 882686c..71fa364 100644 --- a/AIProofread/Model/DocumentInfo.cs +++ b/AIProofread/Model/DocumentInfo.cs @@ -526,6 +526,22 @@ namespace AIProofread.Model } + public void GlobalCallback(string callbackId, string result) + { + ProofreadMainControl control = (ProofreadMainControl)TaskPane.Control; + try + { + if (control.web.CoreWebView2 == null) + { + Thread.Sleep(1000); + } + control.web.CoreWebView2.ExecuteScriptAsync($"window.__global_callback_function('{callbackId}','{result}');"); + } + catch (Exception ex) + { + Logger.Log("GlobalCallback", "call web global function error \n" + ex.Message + "\n" + callbackId + result); + } + } public void SendMessageToWeb(string msg, object data) { var json = JsonConvert.SerializeObject(new WebMessage(msg, data)); diff --git a/AIProofread/ThisAddIn.cs b/AIProofread/ThisAddIn.cs index 4850380..1356cfe 100644 --- a/AIProofread/ThisAddIn.cs +++ b/AIProofread/ThisAddIn.cs @@ -351,7 +351,7 @@ namespace AIProofread if (formCommonsenseDetection != null) { formCommonsenseDetection.SendMessageToWeb("document-change", null); } - Logger.Log("Application_DocumentChange -- " + ActiveDocument.fileName); + Logger.Log("Application_DocumentChange -- " + ActiveDocument.fileName + " track is " + ActiveDocument.CurrentDocument.TrackRevisions); } public void SetActiveDocument(Document doc) @@ -504,6 +504,11 @@ namespace AIProofread ActiveDocument?.SendMessageToWeb(msg, data); } + public void GlobalCallback(string callbackId, string result) + { + ActiveDocument?.GlobalCallback(callbackId, result); + } + // 显示面板 public void ShowPanel() {