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()
{