From 98885c3aefe4603a29ab6e73a70ec796a66debf7 Mon Sep 17 00:00:00 2001 From: callmeyan Date: Fri, 26 Apr 2024 15:09:43 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20=E4=BC=98=E5=8C=96=E5=A4=9A=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E7=AA=97=E5=8F=A3=E6=98=BE=E7=A4=BA=EF=BC=9B=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=B7=A5=E5=85=B7=E6=A0=8F=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/AIProofread/v17/.suo | Bin 304640 -> 329728 bytes AIProofread/AIProofread.csproj | 2 +- AIProofread/AIProofread.csproj.user | 4 + AIProofread/Bridge.cs | 90 +++++++++++----- AIProofread/Config.cs | 7 +- AIProofread/Controls/FormSetting.Designer.cs | 3 +- AIProofread/Logger.cs | 17 +-- AIProofread/ProofreadItem.cs | 26 +++-- AIProofread/Properties/AssemblyInfo.cs | 6 +- AIProofread/Ribbon1.Designer.cs | 30 ++++++ AIProofread/Ribbon1.cs | 21 +++- AIProofread/ThisAddIn.cs | 98 ++++++++++++++---- AIProofread/core/DocumentUtil.cs | 15 ++- ...AIProofread.csproj.AssemblyReference.cache | Bin 15459 -> 15459 bytes .../AIProofread.csproj.GenerateResource.cache | Bin 1202 -> 1202 bytes AIProofread/obj/Debug/AIProofread.dll | Bin 416768 -> 419840 bytes AIProofread/obj/Debug/AIProofread.pdb | Bin 132608 -> 140800 bytes .../DesignTimeResolveAssemblyReferences.cache | Bin 10855 -> 14240 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 4310 -> 4358 bytes util-lib/Colors.cs | 12 +-- util-lib/Properties/AssemblyInfo.cs | 14 +-- util-lib/ToolUtil.cs | 17 +++ util-lib/UtilLib.cs | 12 --- util-lib/util-lib.csproj | 2 +- 24 files changed, 273 insertions(+), 103 deletions(-) create mode 100644 util-lib/ToolUtil.cs delete mode 100644 util-lib/UtilLib.cs diff --git a/.vs/AIProofread/v17/.suo b/.vs/AIProofread/v17/.suo index b48215591b7a15b5deb84523685d2ff56d439fee..1c166b3c9a322db499e38089a4e23e81dbe6132e 100644 GIT binary patch delta 26407 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 delta 15516 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 i= - + diff --git a/AIProofread/AIProofread.csproj.user b/AIProofread/AIProofread.csproj.user index eaac49e..5a3723a 100644 --- a/AIProofread/AIProofread.csproj.user +++ b/AIProofread/AIProofread.csproj.user @@ -6,4 +6,8 @@ + + Program + C:\Soft\Kingsoft\WPS Office\12.1.0.16412\office6\wps.exe + \ No newline at end of file diff --git a/AIProofread/Bridge.cs b/AIProofread/Bridge.cs index c3babbf..dde95d1 100644 --- a/AIProofread/Bridge.cs +++ b/AIProofread/Bridge.cs @@ -12,8 +12,10 @@ using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; +using System.Runtime.Remoting.Contexts; using System.Text; using System.Text.RegularExpressions; +using System.Windows.Forms; using System.Xml.Linq; using UtilLib; using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header; @@ -95,12 +97,21 @@ namespace AIProofread Globals.ThisAddIn.SendMessageToWeb("start", "login"); } + public void ShowCurrentPane() + { + Globals.ThisAddIn.currentDocumentTaskPane.Visible = true; + } + public void HideCurrentPane() + { + Globals.ThisAddIn.currentDocumentTaskPane.Visible = false; + } + public void Logout(string action) { if (action == "async-info") { // web同步注销到ribbon - Globals.ThisAddIn.ribbon.ProcessLogout(); + Globals.ThisAddIn.SyncLogout(); } else { @@ -199,9 +210,22 @@ namespace AIProofread // 清除所有标记 public void clearAllProofreadMark() { - selectProofreadId = -1; - marks.Clear(); - DocumentUtil.ClearProofreadMarks(); + try + { + selectProofreadId = -1; + foreach (var item in marks.Values) + { + if (item.mark != null && item.content.tag == "i" && item.content.isAccept == AcceptStatus.Default) + { + item.mark.Text = ""; + } + } + marks.Clear(); + DocumentUtil.ClearProofreadMarks(); + }catch (Exception ex) + { + Logger.Log("ClearAllProofreadMark",ex); + } } public void removeBookmark(string markId) @@ -320,6 +344,11 @@ namespace AIProofread { Globals.ThisAddIn.ShowLoginForm(action); } + public void ShowSettingForm() + { + FormSetting frm = new FormSetting(); + frm.Show(); + } public void MoveCursor(int pos) { @@ -355,18 +384,22 @@ namespace AIProofread marks.Remove(selectProofreadId); return; } - Globals.ThisAddIn.SendMessageToWeb("select", proofreadId); + //object lineNum = (int)mark.Range.Information[WdInformation.wdFirstCharacterLineNumber] - 1; + //object goToLine = WdGoToItem.wdGoToLine; + //object goNext = WdGoToDirection.wdGoToNext; + //Globals.ThisAddIn.Application.ActiveWindow.Selection.GoTo(ref goToLine, ref goNext, ref lineNum); // - object bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark; + object bookmark = WdGoToItem.wdGoToBookmark; object bookmarkName = mark.Name; //doc.GoTo(mark); //mark.Range.GoTo(); Globals.ThisAddIn.Application.ActiveWindow.Selection.GoTo(ref bookmark, ref missing, ref missing, ref bookmarkName); - // - //mark.DisableCharacterSpaceGrid = false; - // 先滚动到可视区域 - //doc.ActiveWindow.ScrollIntoView(mark.Range); - // marks[proofreadId].Select(); + // + //mark.DisableCharacterSpaceGrid = false; + // 先滚动到可视区域 + //doc.ActiveWindow.ScrollIntoView(mark.Range); + marks[proofreadId].Select(); + Globals.ThisAddIn.SendMessageToWeb("select", proofreadId); } Globals.ThisAddIn.SendMessageToWeb("select_proofread", proofreadId); } @@ -382,7 +415,8 @@ namespace AIProofread public void InitContent(string content) { List list = JsonConvert.DeserializeObject>(content); - + // 先清除所有数据 + clearAllProofreadMark(); //var app = Globals.ThisAddIn.Application; //var cur = app.Selection; // @@ -402,12 +436,29 @@ namespace AIProofread { var mark = AddBookmark(item, index, correct.Offset, correct.Insert_len); if (item.tag != "i") index++; - marks.Add(item.id, new ProofreadItem(item, mark)); + if (mark != null) { + marks.Add(item.id, new ProofreadItem(item, mark)); + } + } + } + } + foreach (var item in marks) + { + if(item.Value.mark != null) + { + if (item.Value.content.tag == "i") + { + item.Value.mark.Text = ToolUtil.GetBlankText(item.Value.content.text.Length); + } + if (item.Value.content.color != null) + { + // 给选区添加背景颜色 + item.Value.mark.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(item.Value.content.color)); } } } } - + public Microsoft.Office.Tools.Word.Bookmark AddBookmark(CorrectedContent item, int findIndex, int offset, int length) { @@ -437,11 +488,7 @@ namespace AIProofread { bookmark = controls.AddBookmark(r, markName); bookmark.Tag = "ai_proofread"; - if (item.color != null) - { - // 给选区添加背景颜色 - r.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(item.color)); - } + } else { @@ -453,11 +500,6 @@ namespace AIProofread r = document.Range(offset + index, offset + index + item.origin.Length); bookmark = controls.AddBookmark(r, markName); bookmark.Tag = "ai_proofread"; - if (item.color != null) - { - // 给选区添加背景颜色 - r.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(item.color)); - } break; } startPos = index; diff --git a/AIProofread/Config.cs b/AIProofread/Config.cs index 3b4762a..de1a8a6 100644 --- a/AIProofread/Config.cs +++ b/AIProofread/Config.cs @@ -7,15 +7,20 @@ namespace AIProofread { public static readonly string APP_NAME = "AI校对王"; public static readonly string APP_VERSION = "1.0.0"; + public static bool IS_WPS = false; #if DEBUG /// /// 网页访问地址 /// public static readonly string WEB_PATH = "http://192.168.10.100:5173/"; + public static readonly bool RUN_IN_DEBUG = true; #else public static readonly string WEB_PATH = "https://gm-plugin.gachafun.com/"; + public static readonly bool RUN_IN_DEBUG = false; #endif - public static readonly string WEB_DATA_PATH = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\ai_proofread\\userdata"; + public static readonly string APP_DATA_PATH = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\ai_proofread"; + public static readonly string APP_LOG_PATH = APP_DATA_PATH + "\\logs\\"; + public static readonly string WEB_DATA_PATH = APP_DATA_PATH + "\\userdata"; /// /// 书签前缀 diff --git a/AIProofread/Controls/FormSetting.Designer.cs b/AIProofread/Controls/FormSetting.Designer.cs index 179a53d..4b1a9d3 100644 --- a/AIProofread/Controls/FormSetting.Designer.cs +++ b/AIProofread/Controls/FormSetting.Designer.cs @@ -51,11 +51,10 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(621, 450); this.Controls.Add(this.WebViewSetting); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "FormSetting"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "FormSetting"; this.Load += new System.EventHandler(this.FormSetting_Load); ((System.ComponentModel.ISupportInitialize)(this.WebViewSetting)).EndInit(); diff --git a/AIProofread/Logger.cs b/AIProofread/Logger.cs index 729eb3b..996bd87 100644 --- a/AIProofread/Logger.cs +++ b/AIProofread/Logger.cs @@ -9,26 +9,31 @@ namespace AIProofread { public class Logger { + private static readonly string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); /// /// /// /// public static void Log(string msg) { - string text = string.Concat(AppDomain.CurrentDomain.BaseDirectory + "\\logs", "\\"); - string path = text + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"; - if (!Directory.Exists(text)) + string path = Config.APP_LOG_PATH + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"; + if (!Directory.Exists(Config.APP_LOG_PATH)) { - Directory.CreateDirectory(text); + Directory.CreateDirectory(Config.APP_LOG_PATH); } StreamWriter streamWriter = File.AppendText(path); streamWriter.WriteLine("消息:" + msg); - streamWriter.WriteLine("时间:" + DateTime.Now.ToString("yyyy - MM - dd HH: mm:ss: fff:ffffff")); - streamWriter.WriteLine("**************************************************"); + streamWriter.WriteLine("时间:" + DateTime.Now.ToString("yyyy - MM - dd HH: mm:ss")); + streamWriter.WriteLine("***************************[" + (Config.IS_WPS?"WPS":"WORD")+ "]***************************"); streamWriter.WriteLine(); streamWriter.Flush(); streamWriter.Close(); streamWriter.Dispose(); } + + public static void Log(string tag, Exception e) + { + Log(tag + "\n" + e.StackTrace); + } } } diff --git a/AIProofread/ProofreadItem.cs b/AIProofread/ProofreadItem.cs index 48a8d18..23d7800 100644 --- a/AIProofread/ProofreadItem.cs +++ b/AIProofread/ProofreadItem.cs @@ -11,7 +11,7 @@ namespace UtilLib public class ProofreadItem { public Bookmark mark; - private CorrectedContent content; + public CorrectedContent content; private float originSize; public string Name { get; set; } public ProofreadItem(CorrectedContent content) @@ -34,6 +34,7 @@ namespace UtilLib this.mark = bookmark; // 记录目前字体 originSize = bookmark.Range.Font.Size; + mark.Selected += OnMarkSelected; } SetMarkName(); //InitBookMark(bookmark); @@ -52,7 +53,6 @@ namespace UtilLib mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick; // 设置名称 mark.Name = Config.BuildBookmarkName(content.id); - //mark.Selected += OnMarkSelected; //mark.SelectionChange += OnMarkSelectionChange; } } @@ -61,25 +61,18 @@ namespace UtilLib { //throw new System.NotImplementedException(); //mark.Range.Font.Size = originSize; - Console.WriteLine("xxx"); + //Console.WriteLine("xxx"); } private void OnMarkSelected(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e) { //throw new System.NotImplementedException(); - mark.Range.Font.Size = originSize + 2; // 将选中标签文本放大字体 + Bridge.bridge.SelectMarkById(content.id); } public void Select() { if (mark == null) return; - if (content.tag == "i") - { - var endPos = mark.Range.End; - var rng = Globals.ThisAddIn.Application.ActiveDocument.Range(endPos, endPos); - rng.Select(); - return; - } mark.Range.Font.Size = originSize + 2; // 将选中标签文本放大字体 mark.Select(); @@ -93,14 +86,14 @@ namespace UtilLib private void SetMarkStyle() { if (mark == null) return; - mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick; + //mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick; mark.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(content.color)); } private void ResetMarkStyle() { if (mark == null) return; - mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone; + //mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone; mark.Range.Shading.BackgroundPatternColor = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic; } @@ -125,6 +118,11 @@ namespace UtilLib else if (status == AcceptStatus.Review || status == AcceptStatus.Ignore) { ResetMarkStyle(); + // 新增添加了空格 所以当忽略时还原 + if (content.tag == "i") + { + mark.Text = ""; + } } else if (status == AcceptStatus.Default) { @@ -134,7 +132,7 @@ namespace UtilLib } else if (content.tag == "i") { - mark.Text = ""; + mark.Text = ToolUtil.GetBlankText(content.text.Length); } SetMarkStyle(); } diff --git a/AIProofread/Properties/AssemblyInfo.cs b/AIProofread/Properties/AssemblyInfo.cs index a176bdd..895e054 100644 --- a/AIProofread/Properties/AssemblyInfo.cs +++ b/AIProofread/Properties/AssemblyInfo.cs @@ -6,7 +6,7 @@ using System.Security; // 有关程序集的一般信息由以下 // 控制。更改这些特性值可修改 // 与程序集关联的信息。 -[assembly: AssemblyTitle("AIProofread")] +[assembly: AssemblyTitle("AI校对王")] [assembly: AssemblyDescription("AI校对王")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("果麦文化")] @@ -33,6 +33,6 @@ using System.Security; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.0.1")] +[assembly: AssemblyFileVersion("1.0.0.1")] diff --git a/AIProofread/Ribbon1.Designer.cs b/AIProofread/Ribbon1.Designer.cs index b2536eb..aa5f183 100644 --- a/AIProofread/Ribbon1.Designer.cs +++ b/AIProofread/Ribbon1.Designer.cs @@ -48,13 +48,18 @@ namespace AIProofread this.btnLogout = this.Factory.CreateRibbonButton(); this.LblNickname = this.Factory.CreateRibbonLabel(); this.LblDate = this.Factory.CreateRibbonLabel(); + this.grpDebug = this.Factory.CreateRibbonGroup(); + this.btnShowPane = this.Factory.CreateRibbonButton(); + this.btnHidePane = this.Factory.CreateRibbonButton(); this.tabAIProofread.SuspendLayout(); this.group1.SuspendLayout(); + this.grpDebug.SuspendLayout(); this.SuspendLayout(); // // tabAIProofread // this.tabAIProofread.Groups.Add(this.group1); + this.tabAIProofread.Groups.Add(this.grpDebug); this.tabAIProofread.Label = "AI校对王"; this.tabAIProofread.Name = "tabAIProofread"; this.tabAIProofread.Position = this.Factory.RibbonPosition.AfterOfficeId("TabHelp"); @@ -158,6 +163,26 @@ namespace AIProofread this.LblDate.Name = "LblDate"; this.LblDate.Visible = false; // + // grpDebug + // + this.grpDebug.Items.Add(this.btnShowPane); + this.grpDebug.Items.Add(this.btnHidePane); + this.grpDebug.Label = "开发调试"; + this.grpDebug.Name = "grpDebug"; + this.grpDebug.Visible = false; + // + // btnShowPane + // + this.btnShowPane.Label = "显示面板"; + this.btnShowPane.Name = "btnShowPane"; + this.btnShowPane.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnShowPane_Click); + // + // btnHidePane + // + this.btnHidePane.Label = "隐藏面板"; + this.btnHidePane.Name = "btnHidePane"; + this.btnHidePane.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnHidePane_Click); + // // Ribbon1 // this.Name = "Ribbon1"; @@ -168,6 +193,8 @@ namespace AIProofread this.tabAIProofread.PerformLayout(); this.group1.ResumeLayout(false); this.group1.PerformLayout(); + this.grpDebug.ResumeLayout(false); + this.grpDebug.PerformLayout(); this.ResumeLayout(false); } @@ -186,6 +213,9 @@ namespace AIProofread internal Microsoft.Office.Tools.Ribbon.RibbonButton btnSetting; internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnGetContact; internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnUpdate; + internal Microsoft.Office.Tools.Ribbon.RibbonGroup grpDebug; + internal Microsoft.Office.Tools.Ribbon.RibbonButton btnShowPane; + internal Microsoft.Office.Tools.Ribbon.RibbonButton btnHidePane; } partial class ThisRibbonCollection diff --git a/AIProofread/Ribbon1.cs b/AIProofread/Ribbon1.cs index 51686e9..65972bc 100644 --- a/AIProofread/Ribbon1.cs +++ b/AIProofread/Ribbon1.cs @@ -17,6 +17,10 @@ namespace AIProofread //btnLogout.Label = "退出\n登录"; Globals.ThisAddIn.ribbon = this; + if(Config.RUN_IN_DEBUG) + { + grpDebug.Visible = true; + } } public void InitWPS() @@ -64,8 +68,8 @@ namespace AIProofread btnLogin.Visible = !IS_LOGIN; btnLogout.Visible = IS_LOGIN; - LblNickname.Visible = IS_LOGIN; - LblDate.Visible = IS_LOGIN; + //LblNickname.Visible = IS_LOGIN; + //LblDate.Visible = IS_LOGIN; } // 弹出登录窗口 @@ -89,8 +93,7 @@ namespace AIProofread private void btnSetting_Click(object sender, RibbonControlEventArgs e) { - FormSetting frm = new FormSetting(); - frm.ShowDialog(); + Globals.ThisAddIn.SendMessageToWeb("show-setting", null); } private void BtnGetContact_Click(object sender, RibbonControlEventArgs e) @@ -115,5 +118,15 @@ namespace AIProofread DocumentUtil.ClearProofreadMarks(); Globals.ThisAddIn.SendMessageToWeb("clear-tips", null); } + + private void btnShowPane_Click(object sender, RibbonControlEventArgs e) + { + Globals.ThisAddIn.ShowPanel(); + } + + private void btnHidePane_Click(object sender, RibbonControlEventArgs e) + { + Globals.ThisAddIn.HidePanel(); + } } } diff --git a/AIProofread/ThisAddIn.cs b/AIProofread/ThisAddIn.cs index 2bdcefa..cc6e486 100644 --- a/AIProofread/ThisAddIn.cs +++ b/AIProofread/ThisAddIn.cs @@ -43,13 +43,28 @@ namespace AIProofread public List LoginFormList = new List(); public Dictionary taskPanels = new Dictionary(); - private CustomTaskPane customTaskPane; + public Dictionary panelsVisible = new Dictionary(); + public CustomTaskPane currentDocumentTaskPane; - private void Application_WindowDeactivate(Word.Document Doc, Window Wn) + private void Application_WindowDeactivate(Word.Document doc, Window Wn) { - Logger.Log("Application_WindowDeactivate -- " + Doc.FullName); + Logger.Log("Application_WindowDeactivate -- " + doc.FullName); //HidePanel(Doc); + if (taskPanels.ContainsKey(doc)) + { + var visible = taskPanels[doc].Visible; + // 记录当前文档的显示状态 + if (!panelsVisible.ContainsKey(doc)) + { + panelsVisible.Add(doc, visible); + } + else + { + panelsVisible[doc] = visible; + } + } + } private void Application_WindowActivate(Word.Document Doc, Window Wn) @@ -59,9 +74,17 @@ namespace AIProofread if (!taskPanels.ContainsKey(Doc)) { - ShowPanel(Doc); + ShowPanel(Doc,false); + } + this.currentDocumentTaskPane = taskPanels[Doc]; + if (IsWPS) + { + HideOtherPanel(Doc); + } + if (panelsVisible.ContainsKey(Doc) && panelsVisible[Doc]) + { + taskPanels[Doc].Visible = true; } - HideOtherPanel(Doc); } private void Application_DocumentBeforeClose(Word.Document Doc, ref bool Cancel) @@ -99,7 +122,7 @@ namespace AIProofread } foreach (var key in taskPanels.Keys) { - taskPanels[key].Visible = doc == key; + taskPanels[key].Visible = false; } } @@ -119,23 +142,32 @@ namespace AIProofread if (taskPanels.ContainsKey(doc)) { - taskPanels[doc].Visible = true; - this.customTaskPane = taskPanels[doc]; return taskPanels[doc]; } //proofreadPanel = new ProofreadMainControl(); var control = new ProofreadMainControl(doc, MinWidth); var panel = Globals.ThisAddIn.CustomTaskPanes.Add(control, AddinName); - this.customTaskPane = panel; + this.currentDocumentTaskPane = panel; taskPanels.Add(doc, panel); control.Width = MinWidth; panel.Width = MinWidth; - panel.Visible = show; + panel.Visible = false; + panel.VisibleChanged += Panel_VisibleChanged; + // 监听尺寸变化 防止最小尺寸小于设置值 control.SizeChanged += Control_SizeChanged; return panel; } + + private void Panel_VisibleChanged(object sender, EventArgs e) + { + if(currentDocumentTaskPane == sender) + { + + } + } + /// /// word创建面板 /// @@ -146,10 +178,10 @@ namespace AIProofread private void Control_SizeChanged(object sender, EventArgs e) { - if (customTaskPane != null && customTaskPane.Width < MinWidth) + if (currentDocumentTaskPane != null && currentDocumentTaskPane.Width < MinWidth) { SendKeys.Send("{ESC}"); - customTaskPane.Width = MinWidth; + currentDocumentTaskPane.Width = MinWidth; } } @@ -178,6 +210,7 @@ namespace AIProofread if (applicationStartupPath.Contains("WPS")) { IsWPS = true; + Config.IS_WPS = true; try { Globals.Ribbons.Ribbon1.InitWPS(); @@ -194,12 +227,18 @@ namespace AIProofread Application.WindowDeactivate += Application_WindowDeactivate; (Application as ApplicationEvents4_Event).NewDocument += Application_NewDocument; // 选区发生变化事件 - this.Application.WindowSelectionChange += Application_WindowSelectionChange; + //this.Application.WindowSelectionChange += Application_WindowSelectionChange; - if (Application.ActiveDocument != null) + try { - // 默认直接打开文档 就直接创建panel - ShowPanel(Application.ActiveDocument, false); + if (Application.ActiveDocument != null) + { + // 默认直接打开文档 就直接创建panel + ShowPanel(Application.ActiveDocument, false); + } + }catch (Exception ex2) + { + Logger.Log("加载默认文档失败: " + ex2.ToString()); } } catch (Exception ex1) @@ -241,8 +280,13 @@ namespace AIProofread { // 先显示panel var panel = this.ShowPanel(Application.ActiveDocument, true); + SendMessageToWeb(panel.Control, msg, data); + } + + public void SendMessageToWeb(UserControl panelControl, string msg, object data) + { var json = JsonConvert.SerializeObject(new WebMessage(msg, data)); - var control = (ProofreadMainControl)panel.Control; + var control = (ProofreadMainControl)panelControl; try { if (control.web.CoreWebView2 == null) @@ -260,13 +304,13 @@ namespace AIProofread // 显示面板 public void ShowPanel() { - this.customTaskPane.Visible = true; + this.currentDocumentTaskPane.Visible = true; } // 隐藏面板 public void HidePanel() { - this.customTaskPane.Visible = false; + this.currentDocumentTaskPane.Visible = false; } @@ -314,6 +358,22 @@ namespace AIProofread this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); } + public void SyncLogout() + { + ribbon.ProcessLogout(); + taskPanels.Values.ToList().ForEach(p => + { + try + { + // 同步登录失败信息 + SendMessageToWeb(p.Control, "async-logout", null); + }catch (Exception ex) { + Logger.Log("async-logout:",ex); + } + }); + + } + #endregion diff --git a/AIProofread/core/DocumentUtil.cs b/AIProofread/core/DocumentUtil.cs index bcca15c..6546b92 100644 --- a/AIProofread/core/DocumentUtil.cs +++ b/AIProofread/core/DocumentUtil.cs @@ -6,6 +6,8 @@ using UtilLib; using Microsoft.Office.Interop.Word; using Bookmark = Microsoft.Office.Tools.Word.Bookmark; using System.Collections.Generic; +using Microsoft.Office.Tools.Word; +using System; namespace AIProofread { @@ -84,6 +86,7 @@ namespace AIProofread public static void ClearProofreadMarks() { var bookmarks = Globals.ThisAddIn.Application.ActiveDocument.Bookmarks; + ControlCollection controls = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument).Controls; foreach (Microsoft.Office.Interop.Word.Bookmark mark in bookmarks) { if (Config.IsProofreadMark(mark.Name)) @@ -92,7 +95,17 @@ namespace AIProofread mark.Range.Shading.BackgroundPatternColor = WdColor.wdColorAutomatic; // 去除下划线 mark.Range.Underline = WdUnderline.wdUnderlineNone; - mark.Delete(); + //mark.Delete(); + } + try + { + if (controls.Contains(mark)) + { + controls.Remove(mark); + } + }catch(Exception e) + { + Logger.Log("remove mark",e); } } diff --git a/AIProofread/obj/Debug/AIProofread.csproj.AssemblyReference.cache b/AIProofread/obj/Debug/AIProofread.csproj.AssemblyReference.cache index d79df3e99bc1df1f75d14218e64b23ec12b81ecb..411971b3a72b8591eb085c0a74d01e07e5d39f27 100644 GIT binary patch delta 17 YcmaD{@wj3_6q~?l@xHC88xxpq08Ir4kpKVy delta 17 ZcmaD{@wj3_6x+2Y#s78UHYPCJ003A(2(17B diff --git a/AIProofread/obj/Debug/AIProofread.csproj.GenerateResource.cache b/AIProofread/obj/Debug/AIProofread.csproj.GenerateResource.cache index a23676775f22800eab00e320b3bd5296fc86a6fa..b226628b4660521528d0786f46c363b1680e86e4 100644 GIT binary patch delta 35 ocmdnQxruXwFe96kyuq{|shcGkyO{Y4cdXUFnR;fb}{pR3Y6e2h`YnV$jAT!0Nn=)4*&oF diff --git a/AIProofread/obj/Debug/AIProofread.dll b/AIProofread/obj/Debug/AIProofread.dll index 4f03a3d0ad7d896066f2e6c8d1ec8dcb0c3b3c58..3b97bb16a9339f5aea4ea770d25685b2b88b8d2c 100644 GIT binary patch delta 39693 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 Bu-5

8`XL#ZViX%OLm{`4R%t8R2R&;I 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%0DOgjakXr=hB@K>U&7Vn>()@$ERX_cy)Z!^MTG z$LUJk_2y9Jox~4sp02;|Z~7oH;H^=;K6W^jKzzRgo00fC&RTroGP{%<9;P{S0`sBJ zr9)z{4$@%Q@fBw~GXwFP6B%!JF>emU9}2{`xO^)9!=HVgwD7Z<0lsw)h25d4?Z zsfmBtP7g#>HQ>T$AVkZY?wmlp31W}t_~TFT75}R)3mF_392ls2JW5i=Wfd-rKk5#X z$OOrjjX$b~vDPwO6b?o!STU}mcyLE&ZeSp+2jb7LqmTIb0~ZiG7u-<;@vVV@62NC% zVR#32V!}JQ=0V*F5k0KUp2hKBef*~Qt# z=qR7BxWH-2!1~jH_{V|x<02o39~6sEYhfxbbQ*#9D)Ab=LFPKJb4+f9&#=f@P6tFR zCJY=5*=kp@`&@&GqH$G`(+RJvYHFHN7(NJV`RLpdpPO{`+?8{M{W)zfww?NAV#C1I;Cluu|gSTrY8yIGl)DvA?-fhST9gFb@0UzpEnFSrYbl z?hej=mAfO*+)Xa=!!lF?%_n-Dx@vX%n7|m-&V(^`CXC^{p5zGQ-vEoRHk_&t$~k6D zH9W#_5yUOfE6^`6$HTeRdt9xAb`lctuV5c}4drv!anFJH@QPpCfFAQ^o!3s35 zz;F}vj1yjo=DAt#ChP4hu4_63^eaqXep z^yXXeKdJ_rn$&>V)FfHaZ8M&CvTUiehP*pNBEsj;G`89Fl z4W|^m`P@7(S|6aw^ zF`Iv&8u@(vN;67)s-dFXgqw&!lbeB;fuBK+h7rkyZVd2Ra-h4*n(_lGKzYii-lE#-O3$>o*JRumpC9z!rfw3*3dJG?T}nj6k$Yi;z!`AOI++TH>k?z0;@Z_$`%Q4gh$| zaGt>VOdjfpfY7Ajw^x`Le*`6$;j;W>!d*h%4#@s7Gux@D12XW z@<+cbnVXLL_yLEqAaUrc3gzrX`_GT_wZ2!_wEOc}+QO}0FW&mKf{%)ihL65^>(`Dy zW>-&GQ+ffC88_5~hqy#n#0f8U=cUbGPK3)@ rJL-5eSbrbZ88=Mos28Yj*WFM$**Imh?|kDIP5u7Z&FjV}KPvwZJg)uF diff --git a/AIProofread/obj/Debug/AIProofread.pdb b/AIProofread/obj/Debug/AIProofread.pdb index ce9a92bd28a289a625bc3b38048540277ad491d5..1fdea6b357b230882ceb21ef915d84743c193ba6 100644 GIT binary patch delta 38100 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

HRzXp={ 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 DfSC;Q delta 33613 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 fWCd> 16) & 0xFF); - byte green = (byte)((hexValue >> 8) & 0xFF); - byte blue = (byte)(hexValue & 0xFF); - return FromRGB(red, green, blue); + if(!hex.StartsWith("#")) hex = "#" + hex; + return ColorTranslator.FromHtml(hex); } - public static Color FromRGB(byte red, byte green, byte blue) + public static Color FromRGB(byte red, byte green, byte blue, int opacity) { - return Color.FromArgb(red, green, blue); + return Color.FromArgb(opacity,red, green, blue); } } } diff --git a/util-lib/Properties/AssemblyInfo.cs b/util-lib/Properties/AssemblyInfo.cs index d5c9d6c..2a7ef55 100644 --- a/util-lib/Properties/AssemblyInfo.cs +++ b/util-lib/Properties/AssemblyInfo.cs @@ -5,12 +5,12 @@ using System.Runtime.InteropServices; // 有关程序集的一般信息由以下 // 控制。更改这些特性值可修改 // 与程序集关联的信息。 -[assembly: AssemblyTitle("util-lib")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyTitle("AI校对王")] +[assembly: AssemblyDescription("AI校对王")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("util-lib")] -[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyCompany("果麦文化")] +[assembly: AssemblyProduct("AI校对王")] +[assembly: AssemblyCopyright("Copyright © GuoMai 2024")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.0.1")] +[assembly: AssemblyFileVersion("1.0.0.1")] diff --git a/util-lib/ToolUtil.cs b/util-lib/ToolUtil.cs new file mode 100644 index 0000000..98a4888 --- /dev/null +++ b/util-lib/ToolUtil.cs @@ -0,0 +1,17 @@ +using System.Text; + +namespace UtilLib +{ + public class ToolUtil + { + public static string GetBlankText(int len) + { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < len; i++) + { + sb.Append(' '); + } + return sb.ToString(); + } + } +} diff --git a/util-lib/UtilLib.cs b/util-lib/UtilLib.cs deleted file mode 100644 index d40212a..0000000 --- a/util-lib/UtilLib.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace UtilLib -{ - public class UtilLib - { - } -} diff --git a/util-lib/util-lib.csproj b/util-lib/util-lib.csproj index d14cdc6..99dc0c5 100644 --- a/util-lib/util-lib.csproj +++ b/util-lib/util-lib.csproj @@ -49,7 +49,7 @@ - +