diff --git a/.vs/AIProofread/v17/.suo b/.vs/AIProofread/v17/.suo index 4782344..5574349 100644 Binary files a/.vs/AIProofread/v17/.suo and b/.vs/AIProofread/v17/.suo differ diff --git a/AIProofread/Bridge.cs b/AIProofread/Bridge.cs index 1d10e62..9145c56 100644 --- a/AIProofread/Bridge.cs +++ b/AIProofread/Bridge.cs @@ -241,7 +241,7 @@ namespace AIProofread { WorkingDirectory = applicationBase, UseShellExecute = true, - Verb="runas" + Verb = "runas" }; Process.Start(processStartInfo); } @@ -319,6 +319,43 @@ namespace AIProofread return document.CurrentDocument.Saved; } + public void Callback(string callbackId, string result) + { + Globals.ThisAddIn.GlobalCallback(callbackId, result); + } + + /// + /// 判断是否处理修订模式,如果没有在修订模式,则回调返回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() {