feat: ✨️新增全局回调方法,优化修订模式处理
在 `Bridge.cs` 文件中: - 修改 `ProcessStartInfo` 的 `Verb` 属性赋值方式,保持不变。 - 新增 `Callback` 方法,用于全局回调。 - 新增 `CheckInTrackRevisions` 方法,用于检查文档是否处于修订模式,并根据用户选择关闭修订模式或返回相应结果。 - 修改提示信息内容,并在用户选择不关闭修订模式时,返回相应错误信息。 - 调整 `JSONObject.Create()` 的链式调用格式。 - 调整 `InitProofreadCacheList` 方法的参数格式。 在 `FormMessage.cs` 文件中: - 新增 `ShowMessage` 方法的重载版本,支持自定义确认和取消按钮的文本。 在 `DocumentInfo.cs` 文件中: - 新增 `GlobalCallback` 方法,用于调用 Web 全局回调函数。 在 `ThisAddIn.cs` 文件中: - 修改日志记录信息,增加文档修订模式的状态。 - 新增 `GlobalCallback` 方法,用于全局回调。
This commit is contained in:
parent
e8c18e6eb8
commit
2b3e330841
Binary file not shown.
@ -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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断是否处理修订模式,如果没有在修订模式,则回调返回false
|
||||
/// </summary>
|
||||
/// <param name="documentId"></param>
|
||||
/// <param name="callback"></param>
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取文档数据
|
||||
/// </summary>
|
||||
@ -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<CorrectContext> list = JsonConvert.DeserializeObject<List<CorrectContext>>(content);
|
||||
Dictionary<int,ProofreadRangeInfo> dics = string.IsNullOrEmpty(originData) ? null : JsonConvert.DeserializeObject<Dictionary<int, ProofreadRangeInfo>>(originData);
|
||||
Dictionary<int, ProofreadRangeInfo> dics = string.IsNullOrEmpty(originData) ? null : JsonConvert.DeserializeObject<Dictionary<int, ProofreadRangeInfo>>(originData);
|
||||
Globals.ThisAddIn.InitProofreadCacheList(list, dics);
|
||||
return BridgeResult.Success();
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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));
|
||||
|
@ -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()
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user