fixed: 修复首次加载插件面板初始化多个窗口或环境无法正确初始化
This commit is contained in:
parent
b1ace782f8
commit
5b519f48e1
Binary file not shown.
@ -576,6 +576,7 @@ namespace AIProofread
|
|||||||
webViewDict.Add(name, webView);
|
webViewDict.Add(name, webView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logger.Error("初始化Main Pane Web环境 开始");
|
||||||
// 禁用web安全,允许跨域 否则需要web编译为umd加载模式
|
// 禁用web安全,允许跨域 否则需要web编译为umd加载模式
|
||||||
var ops = new CoreWebView2EnvironmentOptions("--disable-web-security");
|
var ops = new CoreWebView2EnvironmentOptions("--disable-web-security");
|
||||||
var env = await CoreWebView2Environment.CreateAsync(null, Config.WEB_DATA_PATH, ops);
|
var env = await CoreWebView2Environment.CreateAsync(null, Config.WEB_DATA_PATH, ops);
|
||||||
@ -586,12 +587,13 @@ namespace AIProofread
|
|||||||
// 添加 js与客户端代理
|
// 添加 js与客户端代理
|
||||||
|
|
||||||
webView.CoreWebView2.AddHostObjectToScript("bridge", bridge);
|
webView.CoreWebView2.AddHostObjectToScript("bridge", bridge);
|
||||||
|
Logger.Error("初始化Main Pane Web环境 结束");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Debug.WriteLine("初始化web环境失败" + ex.Message);
|
||||||
Logger.Error("初始化web环境失败", ex);
|
Logger.Error("初始化web环境失败", ex);
|
||||||
LogHelper.Log(ex);
|
//LogHelper.Log(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ namespace AIProofread.Controls
|
|||||||
if (ex.TryGetWebMessageAsString() == "reload")
|
if (ex.TryGetWebMessageAsString() == "reload")
|
||||||
{
|
{
|
||||||
isShowingErrorPage = false;
|
isShowingErrorPage = false;
|
||||||
web.Source = new Uri(Config.WebPath("correct"));
|
//web.Source = new Uri(Config.WebPath("correct"));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.web.Source = new Uri(Config.WebPath("correct" ));
|
this.web.Source = new Uri(Config.WebPath("correct" ));
|
||||||
|
@ -8,6 +8,7 @@ using System.Windows.Forms;
|
|||||||
using AIProofread.Controls;
|
using AIProofread.Controls;
|
||||||
using AIProofread.core;
|
using AIProofread.core;
|
||||||
using AIProofread.Util;
|
using AIProofread.Util;
|
||||||
|
using log4net;
|
||||||
using Microsoft.Office.Interop.Word;
|
using Microsoft.Office.Interop.Word;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using UtilLib;
|
using UtilLib;
|
||||||
@ -20,6 +21,7 @@ namespace AIProofread.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class DocumentInfo
|
public class DocumentInfo
|
||||||
{
|
{
|
||||||
|
public ILog Logger = LogHelper.GetLogger(typeof(DocumentInfo));
|
||||||
public static readonly int MIN_WIDTH = 420;
|
public static readonly int MIN_WIDTH = 420;
|
||||||
private static char[] ArticleSpecialChars = new char[4] { '\a', '\r', '\v', '\f' };
|
private static char[] ArticleSpecialChars = new char[4] { '\a', '\r', '\v', '\f' };
|
||||||
|
|
||||||
@ -74,8 +76,8 @@ namespace AIProofread.Model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsActive { get; internal set; }
|
public bool IsActive { get; internal set; } = false;
|
||||||
public bool PaneVisible { get; set; }
|
public bool PaneVisible { get; set; } = false;
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
public CustomTaskPane TaskPane { get; set; }
|
public CustomTaskPane TaskPane { get; set; }
|
||||||
@ -102,26 +104,33 @@ namespace AIProofread.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void ShowPane()
|
public void ShowPane()
|
||||||
{
|
{
|
||||||
if (null != TaskPane)
|
if(null == TaskPane)
|
||||||
{
|
|
||||||
TaskPane.Visible = PaneVisible = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
CreateTaskPane();
|
CreateTaskPane();
|
||||||
}
|
}
|
||||||
|
Logger.Debug("TaskPane.Visible {"+TaskPane==null?"null":(TaskPane.Visible?"true":"false")+" => true");
|
||||||
|
TaskPane.Visible = PaneVisible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 隐藏面板
|
||||||
|
/// </summary>
|
||||||
|
public void HidePane()
|
||||||
|
{
|
||||||
|
if (!PaneVisible) return;
|
||||||
|
ShowDocumentStatus("HidePane");
|
||||||
|
Logger.Debug($"TaskPane.Visible {TaskPane.Visible} => false");
|
||||||
|
TaskPane.Visible = PaneVisible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RunInMainThread(Action action)
|
public void RunInMainThread(Action action)
|
||||||
{
|
{
|
||||||
if (null != TaskPane)
|
Logger.Debug($"RunInMainThread {action}");
|
||||||
{
|
if (null == TaskPane)
|
||||||
TaskPane.Control.BeginInvoke(action);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
CreateTaskPane();
|
CreateTaskPane();
|
||||||
}
|
}
|
||||||
|
TaskPane.Control.BeginInvoke(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowDialog(string message, string confirmText, string confirmAction)
|
public void ShowDialog(string message, string confirmText, string confirmAction)
|
||||||
@ -167,16 +176,7 @@ namespace AIProofread.Model
|
|||||||
|
|
||||||
private void ShowDocumentStatus(string tag)
|
private void ShowDocumentStatus(string tag)
|
||||||
{
|
{
|
||||||
// Logger.Log($"{fileName} {tag} PaneVisible is {PaneVisible} Poofread is {Proofread} Proofreading is {Proofreading}");
|
// Logger.Log($"{fileName} {tag} PaneVisible is {PaneVisible} Poofread is {Proofread} Proofreading is {Proofreading}");
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 隐藏面板
|
|
||||||
/// </summary>
|
|
||||||
public void HidePane()
|
|
||||||
{
|
|
||||||
ShowDocumentStatus(" HidePane");
|
|
||||||
if (null != TaskPane) TaskPane.Visible = PaneVisible = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -184,7 +184,7 @@ namespace AIProofread.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void Active()
|
public void Active()
|
||||||
{
|
{
|
||||||
ShowDocumentStatus(" Active");
|
ShowDocumentStatus("Active");
|
||||||
IsActive = true;
|
IsActive = true;
|
||||||
if (Config.IS_WPS && null != TaskPane && PaneVisible)
|
if (Config.IS_WPS && null != TaskPane && PaneVisible)
|
||||||
{
|
{
|
||||||
@ -194,7 +194,7 @@ namespace AIProofread.Model
|
|||||||
|
|
||||||
public void Deactive()
|
public void Deactive()
|
||||||
{
|
{
|
||||||
ShowDocumentStatus(" Deactive");
|
ShowDocumentStatus("Deactive");
|
||||||
IsActive = false;
|
IsActive = false;
|
||||||
if (Config.IS_WPS)
|
if (Config.IS_WPS)
|
||||||
{
|
{
|
||||||
@ -203,7 +203,7 @@ namespace AIProofread.Model
|
|||||||
// 异步等待一段时间 重新设置为true,防止面板关闭时,触发事件
|
// 异步等待一段时间 重新设置为true,防止面板关闭时,触发事件
|
||||||
ThreadPool.QueueUserWorkItem(state =>
|
ThreadPool.QueueUserWorkItem(state =>
|
||||||
{
|
{
|
||||||
Thread.Sleep(1000);
|
Thread.Sleep(500);
|
||||||
PaneVisible = true;
|
PaneVisible = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -270,6 +270,7 @@ namespace AIProofread.Model
|
|||||||
// 创建pane 并初始化
|
// 创建pane 并初始化
|
||||||
public void CreateTaskPane()
|
public void CreateTaskPane()
|
||||||
{
|
{
|
||||||
|
Logger.Debug("CreateTaskPane");
|
||||||
var control = new ProofreadMainControl();
|
var control = new ProofreadMainControl();
|
||||||
if (MinWidth < 10)
|
if (MinWidth < 10)
|
||||||
{
|
{
|
||||||
@ -312,7 +313,12 @@ namespace AIProofread.Model
|
|||||||
this.fileName = CurrentDocument.FullName;
|
this.fileName = CurrentDocument.FullName;
|
||||||
ranges.Clear();
|
ranges.Clear();
|
||||||
ComputeUniqueId();
|
ComputeUniqueId();
|
||||||
if (TaskPane == null) CreateTaskPane();
|
if (TaskPane == null)
|
||||||
|
{
|
||||||
|
Logger.Debug("init document Initialize(318) and CreateTaskPane");
|
||||||
|
CreateTaskPane();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
using Microsoft.Office.Interop.Word;
|
using log4net;
|
||||||
|
using log4net.Repository.Hierarchy;
|
||||||
|
using Microsoft.Office.Interop.Word;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace AIProofread.Model
|
namespace AIProofread.Model
|
||||||
{
|
{
|
||||||
@ -12,6 +12,7 @@ namespace AIProofread.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class DocumentList
|
public class DocumentList
|
||||||
{
|
{
|
||||||
|
public ILog Logger = LogHelper.GetLogger(typeof(DocumentList));
|
||||||
public List<DocumentInfo> documentList = new List<DocumentInfo>();
|
public List<DocumentInfo> documentList = new List<DocumentInfo>();
|
||||||
public DocumentInfo ActiveDocument { get; set; }
|
public DocumentInfo ActiveDocument { get; set; }
|
||||||
public int Count => documentList.Count;
|
public int Count => documentList.Count;
|
||||||
@ -109,11 +110,17 @@ namespace AIProofread.Model
|
|||||||
/// <param name="originDocument"></param>
|
/// <param name="originDocument"></param>
|
||||||
public DocumentInfo SetActiveDocument(Document originDocument)
|
public DocumentInfo SetActiveDocument(Document originDocument)
|
||||||
{
|
{
|
||||||
|
Logger.Debug("SetActiveDocument(113): " + originDocument.Name);
|
||||||
if (originDocument == null) return null;
|
if (originDocument == null) return null;
|
||||||
var document = InitDocument(originDocument);
|
var document = InitDocument(originDocument);
|
||||||
|
if (document == null)
|
||||||
|
{
|
||||||
|
Logger.Error("Document not exists SetActiveDocument");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (ActiveDocument == document) return document;
|
if (ActiveDocument == document) return document;
|
||||||
else if (Globals.ThisAddIn.IsWPS)
|
|
||||||
|
if (Globals.ThisAddIn.IsWPS)
|
||||||
{
|
{
|
||||||
// WPS 只有一个窗口 所以需要先关闭之前文档的面板
|
// WPS 只有一个窗口 所以需要先关闭之前文档的面板
|
||||||
ActiveDocument?.Deactive();
|
ActiveDocument?.Deactive();
|
||||||
@ -137,6 +144,7 @@ namespace AIProofread.Model
|
|||||||
// 如果不存在,则添加
|
// 如果不存在,则添加
|
||||||
if (document == null)
|
if (document == null)
|
||||||
{
|
{
|
||||||
|
Logger.Debug("Document not exists,InitDocument: " + originDocument.Name);
|
||||||
document = new DocumentInfo(originDocument);
|
document = new DocumentInfo(originDocument);
|
||||||
Add(document);
|
Add(document);
|
||||||
}
|
}
|
||||||
|
2
AIProofread/Ribbon1.Designer.cs
generated
2
AIProofread/Ribbon1.Designer.cs
generated
@ -107,7 +107,6 @@ namespace AIProofread
|
|||||||
// menuProofreadList
|
// menuProofreadList
|
||||||
//
|
//
|
||||||
this.menuProofreadList.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
|
this.menuProofreadList.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
|
||||||
this.menuProofreadList.Enabled = false;
|
|
||||||
this.menuProofreadList.Image = global::AIProofread.Properties.Resources.icon_proofread;
|
this.menuProofreadList.Image = global::AIProofread.Properties.Resources.icon_proofread;
|
||||||
this.menuProofreadList.Items.Add(this.BtnProofreadExact);
|
this.menuProofreadList.Items.Add(this.BtnProofreadExact);
|
||||||
this.menuProofreadList.Items.Add(this.BtnProofreadFull);
|
this.menuProofreadList.Items.Add(this.BtnProofreadFull);
|
||||||
@ -290,6 +289,7 @@ namespace AIProofread
|
|||||||
// BtnShowPanel
|
// BtnShowPanel
|
||||||
//
|
//
|
||||||
this.BtnShowPanel.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
|
this.BtnShowPanel.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
|
||||||
|
this.BtnShowPanel.Enabled = false;
|
||||||
this.BtnShowPanel.Image = global::AIProofread.Properties.Resources.icon_panel;
|
this.BtnShowPanel.Image = global::AIProofread.Properties.Resources.icon_panel;
|
||||||
this.BtnShowPanel.Label = "显示面板\r\n";
|
this.BtnShowPanel.Label = "显示面板\r\n";
|
||||||
this.BtnShowPanel.Name = "BtnShowPanel";
|
this.BtnShowPanel.Name = "BtnShowPanel";
|
||||||
|
@ -9,6 +9,8 @@ using UtilLib;
|
|||||||
using AIProofread.Model;
|
using AIProofread.Model;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using log4net;
|
using log4net;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using DocumentFormat.OpenXml.EMMA;
|
||||||
|
|
||||||
|
|
||||||
namespace AIProofread
|
namespace AIProofread
|
||||||
@ -130,10 +132,28 @@ namespace AIProofread
|
|||||||
// CheckDocumentClosedTick();
|
// CheckDocumentClosedTick();
|
||||||
|
|
||||||
// 定时检测文档是否关闭
|
// 定时检测文档是否关闭
|
||||||
_timer = new System.Timers.Timer(10000);
|
//_timer = new System.Timers.Timer(10000);
|
||||||
_timer.Elapsed += CheckDocumentClosed;
|
//_timer.Elapsed += CheckDocumentClosed;
|
||||||
_timer.AutoReset = true;
|
//_timer.AutoReset = true;
|
||||||
_timer.Enabled = true;
|
//_timer.Enabled = true;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 默认已经打开了文档 直接初始化
|
||||||
|
if (Application.Documents.Count > 0 && Application.ActiveDocument != null)
|
||||||
|
{
|
||||||
|
Logger.Debug("ThisAddIn_Startup 开始初始化当前文档");
|
||||||
|
ActiveDocument = documentList.InitDocument(Application.ActiveDocument);
|
||||||
|
|
||||||
|
// 直接初始化面板
|
||||||
|
// info.CheckPanel();
|
||||||
|
Logger.Debug("ThisAddIn_Startup 结束初始化当前文档");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Error("Initialize documentlist Error ", ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex1)
|
catch (Exception ex1)
|
||||||
{
|
{
|
||||||
@ -184,6 +204,12 @@ namespace AIProofread
|
|||||||
for (int i = documentList.documentList.Count - 1; i >= 0; i--)
|
for (int i = documentList.documentList.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
var item = documentList.documentList[i];
|
var item = documentList.documentList[i];
|
||||||
|
// 判断文档对象是否已经被移除
|
||||||
|
if (item.CurrentDocument == null)
|
||||||
|
{
|
||||||
|
documentList.Remove(item);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// 可能出现另存问题 所以需要更新文件名称
|
// 可能出现另存问题 所以需要更新文件名称
|
||||||
var oldName = item.fileName;
|
var oldName = item.fileName;
|
||||||
var currentName = item.CurrentDocument.FullName;
|
var currentName = item.CurrentDocument.FullName;
|
||||||
@ -274,6 +300,7 @@ namespace AIProofread
|
|||||||
|
|
||||||
// 启动地址
|
// 启动地址
|
||||||
applicationStartupPath = System.Windows.Forms.Application.StartupPath;
|
applicationStartupPath = System.Windows.Forms.Application.StartupPath;
|
||||||
|
Logger.Debug("applicationStartupPath --> " + applicationStartupPath);
|
||||||
// 判断是否是WPS
|
// 判断是否是WPS
|
||||||
if (applicationStartupPath.Contains("WPS"))
|
if (applicationStartupPath.Contains("WPS"))
|
||||||
{
|
{
|
||||||
@ -289,22 +316,6 @@ namespace AIProofread
|
|||||||
Logger.Error("Init WPS Error ", ex);
|
Logger.Error("Init WPS Error ", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try
|
|
||||||
{
|
|
||||||
// 默认已经打开了文档 直接初始化
|
|
||||||
if(CurrentWordApplication.Documents.Count > 0){
|
|
||||||
foreach (Document item in CurrentWordApplication.Documents)
|
|
||||||
{
|
|
||||||
var info = documentList.InitDocument(item);
|
|
||||||
// 直接初始化面板
|
|
||||||
info.CheckPanel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Logger.Error("Initialize documentlist Error ", ex);
|
|
||||||
}
|
|
||||||
string verTextFile = Config.APP_BASE_DIR + Path.GetFileName("app_version.txt");
|
string verTextFile = Config.APP_BASE_DIR + Path.GetFileName("app_version.txt");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -351,21 +362,27 @@ namespace AIProofread
|
|||||||
|
|
||||||
private void Application_DocumentChange()
|
private void Application_DocumentChange()
|
||||||
{
|
{
|
||||||
|
|
||||||
// 检测是否存在打开的文档
|
// 检测是否存在打开的文档
|
||||||
if (CurrentWordApplication.Documents.Count == 0)
|
if (CurrentWordApplication.Documents.Count == 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//var document = CurrentWordApplication.ActiveDocument;
|
var document = CurrentWordApplication.ActiveDocument;
|
||||||
|
Logger.Debug("Application_DocumentChange -- " + document.Name + " 修订模式: is " + document.TrackRevisions);
|
||||||
// 设置当前文档
|
// 设置当前文档
|
||||||
ActiveDocument = documentList.SetActiveDocument(CurrentWordApplication.ActiveDocument);
|
ActiveDocument = documentList.SetActiveDocument(document);
|
||||||
|
if (ActiveDocument == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
ActiveDocument.CheckBtnStatus();
|
ActiveDocument.CheckBtnStatus();
|
||||||
CheckDocumentClosed(null, null);
|
CheckDocumentClosed(null, null);
|
||||||
if (formCommonsenseDetection != null)
|
if (formCommonsenseDetection != null)
|
||||||
{
|
{
|
||||||
formCommonsenseDetection.SendMessageToWeb("document-change", null);
|
formCommonsenseDetection.SendMessageToWeb("document-change", null);
|
||||||
}
|
}
|
||||||
//LogHelper.Log("Application_DocumentChange -- " + ActiveDocument.fileName + " track is " + ActiveDocument.CurrentDocument.TrackRevisions);
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetActiveDocument(Document doc)
|
public void SetActiveDocument(Document doc)
|
||||||
@ -390,10 +407,10 @@ namespace AIProofread
|
|||||||
/// <param name="Wn"></param>
|
/// <param name="Wn"></param>
|
||||||
private void Application_WindowActivate(Document activeDoc, Window Wn)
|
private void Application_WindowActivate(Document activeDoc, Window Wn)
|
||||||
{
|
{
|
||||||
|
Logger.Debug("Application_WindowActivate -- " + activeDoc.Name);
|
||||||
if (activeDoc != null && (ActiveDocument == null || activeDoc != ActiveDocument.CurrentDocument))
|
if (activeDoc != null && (ActiveDocument == null || activeDoc != ActiveDocument.CurrentDocument))
|
||||||
{
|
{
|
||||||
ActiveDocument = documentList.SetActiveDocument(activeDoc);
|
documentList.SetActiveDocument(activeDoc);
|
||||||
Logger.Info("Application_WindowActivate -- " + ActiveDocument.fileName);
|
|
||||||
}
|
}
|
||||||
//// 当前文档添加书签集合
|
//// 当前文档添加书签集合
|
||||||
//if (!allMarks.ContainsKey(activeDoc))
|
//if (!allMarks.ContainsKey(activeDoc))
|
||||||
@ -472,16 +489,6 @@ namespace AIProofread
|
|||||||
FmainThreadContext.Send(d, null);
|
FmainThreadContext.Send(d, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
//private void ProofreadPanel_SizeChanged(object sender, EventArgs e)
|
|
||||||
//{
|
|
||||||
// // 处理最小宽度
|
|
||||||
// if (customTaskPane != null && customTaskPane.Width < MinWidth && customTaskPane.Visible)
|
|
||||||
// {
|
|
||||||
// SendKeys.Send("{ESC}");
|
|
||||||
// customTaskPane.Width = MinWidth;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
private void Application_WindowSelectionChange(Selection s)
|
private void Application_WindowSelectionChange(Selection s)
|
||||||
{
|
{
|
||||||
ribbon.ParseSelectionChange(s);
|
ribbon.ParseSelectionChange(s);
|
||||||
@ -529,6 +536,7 @@ namespace AIProofread
|
|||||||
// 显示面板
|
// 显示面板
|
||||||
public void ShowPanel()
|
public void ShowPanel()
|
||||||
{
|
{
|
||||||
|
Logger.Debug("ShowPanel");
|
||||||
ActiveDocument?.ShowPane();
|
ActiveDocument?.ShowPane();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user