163 lines
4.9 KiB
C#
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
|
|
|
|
|
|
}
|
|
}
|