2024-03-28 19:22:43 +08:00

163 lines
4.9 KiB
C#

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校对王";
/// <summary>
/// 最小宽度
/// </summary>
private const int MinWidth = 400;
/// <summary>
/// 启动路径
/// </summary>
public string applicationStartupPath;
/// <summary>
/// 校对面板
/// </summary>
public ProofreadMainControl proofreadPanel;
public CustomTaskPane customTaskPane;
/// <summary>
/// 工具栏
/// </summary>
public Ribbon1 ribbon;
public bool IsWPS { get; set; }
public List<FormLogin> LoginFormList = new List<FormLogin>();
/// <summary>
/// word创建面板
/// </summary>
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
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}