using System; using System.Collections.Generic; using Word = Microsoft.Office.Interop.Word; using Microsoft.Office.Tools.Word; using AIProofread.Controls; using Microsoft.Office.Tools; using Newtonsoft.Json; using UtilLib; using System.Threading; using Microsoft.Office.Interop.Word; namespace AIProofread { public partial class ThisAddIn { public static SynchronizationContext FmainThreadContext; public string AddinName = "AI校对王"; /// /// 最小宽度 /// private const int MinWidth = 400; /// /// 启动路径 /// public string applicationStartupPath; /// /// 校对面板 /// public ProofreadMainControl proofreadPanel; public CustomTaskPane customTaskPane; /// /// 工具栏 /// public Ribbon1 ribbon; public bool IsWPS { get; set; } public List LoginFormList = new List(); /// /// word创建面板 /// private void CreateCustomTaskPane() { proofreadPanel = new ProofreadMainControl(); customTaskPane = Globals.ThisAddIn.CustomTaskPanes.Add(proofreadPanel, AddinName); customTaskPane.Width = MinWidth; customTaskPane.Visible = false; //proofreadPanel.SizeChanged += ProofreadPanel_SizeChanged; //customTaskPane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight; } public void Send(SendOrPostCallback d) { 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 ThisAddIn_Startup(object sender, System.EventArgs e) { FmainThreadContext = SynchronizationContext.Current; //Module1.CreateCTP(); // 启动地址 applicationStartupPath = System.Windows.Forms.Application.StartupPath; if (applicationStartupPath.Contains("WPS")) { IsWPS = true; } CreateCustomTaskPane(); this.Application.WindowSelectionChange += Application_WindowSelectionChange; } private void Application_WindowSelectionChange(Word.Selection s) { if(s.Bookmarks != null) { if(s.Range.Start == s.Range.End) // 说明是点击呀 { var count = s.Bookmarks.Count; if(s.Bookmarks.Count == 1) // 只有这一个 { foreach (Microsoft.Office.Interop.Word.Bookmark item in s.Bookmarks) { int proofreadId = Config.GetBookmarkIdByName(item.Name); if (proofreadId > 0) { Bridge.bridge.SelectMarkById(proofreadId); return; } } } } } Bridge.bridge.SelectMarkById(-1); } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { // PanelModule.DisposeCTP(); this.proofreadPanel.Dispose(); this.customTaskPane.Dispose(); this.customTaskPane = null; } public void SendMessageToWeb(string msg,object data) { this.ShowPanel(); var json = JsonConvert.SerializeObject(new WebMessage(msg,data)); this.proofreadPanel.web.CoreWebView2.PostWebMessageAsJson(json); } // 显示面板 public void ShowPanel() { this.customTaskPane.Visible = true; } // 隐藏面板 public void HidePanel() { this.customTaskPane.Visible = false; } public void ShowLoginForm(string action) { FormLogin frm = new FormLogin(action); LoginFormList.Add(frm); frm.Show(); } #region VSTO generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InternalStartup() { this.Startup += new System.EventHandler(ThisAddIn_Startup); this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); } #endregion } }