fixed position error
This commit is contained in:
parent
59aacb27a1
commit
aba0247d14
Binary file not shown.
@ -1,15 +1,21 @@
|
|||||||
using AIProofread.Controls;
|
using AIProofread.Controls;
|
||||||
using Microsoft.Office.Interop.Word;
|
using Microsoft.Office.Interop.Word;
|
||||||
|
using Microsoft.Office.Tools.Word;
|
||||||
using Microsoft.Web.WebView2.Core;
|
using Microsoft.Web.WebView2.Core;
|
||||||
using Microsoft.Web.WebView2.WinForms;
|
using Microsoft.Web.WebView2.WinForms;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Runtime.InteropServices.ComTypes;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Xml.Linq;
|
||||||
using UtilLib;
|
using UtilLib;
|
||||||
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header;
|
||||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
|
||||||
using Document = Microsoft.Office.Interop.Word.Document;
|
using Document = Microsoft.Office.Interop.Word.Document;
|
||||||
|
|
||||||
@ -311,14 +317,105 @@ namespace AIProofread
|
|||||||
Globals.ThisAddIn.SendMessageToWeb("select", proofreadId);
|
Globals.ThisAddIn.SendMessageToWeb("select", proofreadId);
|
||||||
marks[proofreadId].Select();
|
marks[proofreadId].Select();
|
||||||
}
|
}
|
||||||
|
Globals.ThisAddIn.SendMessageToWeb("select_proofread", proofreadId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processMark(int proofreadId,int status)
|
public void processMark(int proofreadId, int status)
|
||||||
{
|
{
|
||||||
if (proofreadId > 0 && marks.ContainsKey(proofreadId))
|
if (proofreadId > 0 && marks.ContainsKey(proofreadId))
|
||||||
{
|
{
|
||||||
marks[proofreadId].Process(status);
|
marks[proofreadId].Process(status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void InitContent(string content)
|
||||||
|
{
|
||||||
|
List<DocumentCorrectItem> list = JsonConvert.DeserializeObject<List<DocumentCorrectItem>>(content);
|
||||||
|
//
|
||||||
|
clearAllProofreadMark();
|
||||||
|
|
||||||
|
//var app = Globals.ThisAddIn.Application;
|
||||||
|
//var cur = app.Selection;
|
||||||
|
//
|
||||||
|
foreach (var correct in list)
|
||||||
|
{
|
||||||
|
//cur.TypeText(correct.Insert);
|
||||||
|
//var rng = cur.Range;
|
||||||
|
if (correct.Diffs != null && correct.Diffs.Count > 0)
|
||||||
|
{
|
||||||
|
//var diffs = correct.Diffs.OrderBy(it =>
|
||||||
|
//{
|
||||||
|
// if (it.tag != "i") return it.start;
|
||||||
|
// return it.start + correct.Insert_len;
|
||||||
|
//}).ToList();
|
||||||
|
int index = 0;
|
||||||
|
foreach (var item in correct.Diffs)
|
||||||
|
{
|
||||||
|
var mark = AddBookmark(item, index, correct.Offset, correct.Insert_len);
|
||||||
|
if (item.tag != "i") index++;
|
||||||
|
marks.Add(item.id, new ProofreadItem(item, mark));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Microsoft.Office.Tools.Word.Bookmark AddBookmark(CorrectedContent item, int findIndex, int offset, int length)
|
||||||
|
{
|
||||||
|
var document = Globals.ThisAddIn.Application.ActiveDocument;
|
||||||
|
ControlCollection controls = Globals.Factory.GetVstoObject(document).Controls;
|
||||||
|
var Start = offset;
|
||||||
|
var End = offset + length - 1;
|
||||||
|
// 整体选区的内容
|
||||||
|
var fullRange = document.Range(Start, End);
|
||||||
|
string fullText = fullRange.Text;
|
||||||
|
End = offset + item.start;
|
||||||
|
Start = offset + item.end;
|
||||||
|
|
||||||
|
Microsoft.Office.Tools.Word.Bookmark bookmark = null;
|
||||||
|
var r = document.Range(End, Start);
|
||||||
|
var markName = Config.BuildBookmarkName(item.id);
|
||||||
|
|
||||||
|
// 判断是否已经存在
|
||||||
|
if (controls.Contains(markName))
|
||||||
|
{
|
||||||
|
controls.Remove(markName);
|
||||||
|
}
|
||||||
|
// 判断选区是否正确
|
||||||
|
if (item.tag == "i" || r.Text == item.origin)
|
||||||
|
{
|
||||||
|
bookmark = controls.AddBookmark(r, markName);
|
||||||
|
bookmark.Tag = "ai_proofread";
|
||||||
|
if (item.color != null)
|
||||||
|
{
|
||||||
|
// 给选区添加背景颜色
|
||||||
|
r.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(item.color));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int startPos = 0, index,findCount = 0;
|
||||||
|
while ((index = fullText.IndexOf(item.origin, startPos)) != -1)
|
||||||
|
{
|
||||||
|
if (findCount == findIndex)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
findCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return bookmark;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ using System;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using AIProofread;
|
using AIProofread;
|
||||||
using Microsoft.Office.Interop.Word;
|
using Microsoft.Office.Interop.Word;
|
||||||
|
using Microsoft.Office.Tools.Word;
|
||||||
using Bookmark = Microsoft.Office.Tools.Word.Bookmark;
|
using Bookmark = Microsoft.Office.Tools.Word.Bookmark;
|
||||||
|
|
||||||
namespace UtilLib
|
namespace UtilLib
|
||||||
@ -16,16 +17,20 @@ namespace UtilLib
|
|||||||
public ProofreadItem(CorrectedContent content)
|
public ProofreadItem(CorrectedContent content)
|
||||||
{
|
{
|
||||||
this.content = content;
|
this.content = content;
|
||||||
InitBookMark();
|
InitBookMark(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitBookMark()
|
public ProofreadItem(CorrectedContent content, Bookmark bookmark)
|
||||||
|
{
|
||||||
|
this.content = content;
|
||||||
|
InitBookMark(bookmark);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitBookMark(Bookmark bookmark)
|
||||||
{
|
{
|
||||||
// 创建mark
|
// 创建mark
|
||||||
this.mark = DocumentUtil.AddBookmark(
|
this.mark = bookmark != null ? bookmark
|
||||||
content.tag == "i" ? null : content.color,
|
: DocumentUtil.AddBookmark(content.tag == "i" ? null : content.color, content.start, content.end);
|
||||||
content.start, content.end
|
|
||||||
);
|
|
||||||
if (mark != null)
|
if (mark != null)
|
||||||
{
|
{
|
||||||
// 记录目前字体
|
// 记录目前字体
|
||||||
@ -57,6 +62,10 @@ namespace UtilLib
|
|||||||
if (mark != null)
|
if (mark != null)
|
||||||
{
|
{
|
||||||
mark.Range.Font.Size = originSize + 2; // 将选中标签文本放大字体
|
mark.Range.Font.Size = originSize + 2; // 将选中标签文本放大字体
|
||||||
|
//Globals.ThisAddIn.Application.ActiveWindow.View.Type = Microsoft.Office.Interop.Word.WdViewType.wdOutlineView;
|
||||||
|
//Globals.ThisAddIn.Application.ActiveWindow.View.SeekView = Microsoft.Office.Interop.Word.WdSeekView.wdSeekPrimaryHeader;
|
||||||
|
//Globals.ThisAddIn.Application.ActiveWindow.Activate();
|
||||||
|
mark.Select();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void UnSelect()
|
public void UnSelect()
|
||||||
@ -85,12 +94,13 @@ namespace UtilLib
|
|||||||
content.isAccept = status;
|
content.isAccept = status;
|
||||||
if (status == AcceptStatus.Accept)
|
if (status == AcceptStatus.Accept)
|
||||||
{
|
{
|
||||||
if(content.tag == "r" || content.tag == "i")
|
if (content.tag == "r" || content.tag == "i")
|
||||||
{
|
{
|
||||||
mark.Text = content.text;
|
mark.Text = content.text;
|
||||||
}else if (content.tag == "d")
|
}
|
||||||
|
else if (content.tag == "d")
|
||||||
{
|
{
|
||||||
mark.Text = "\u200C";
|
mark.Text = "";
|
||||||
}
|
}
|
||||||
ResetMarkStyle();
|
ResetMarkStyle();
|
||||||
}
|
}
|
||||||
@ -104,9 +114,9 @@ namespace UtilLib
|
|||||||
{
|
{
|
||||||
mark.Text = content.origin;
|
mark.Text = content.origin;
|
||||||
}
|
}
|
||||||
else if(content.tag == "i")
|
else if (content.tag == "i")
|
||||||
{
|
{
|
||||||
mark.Text = "\u200C";
|
mark.Text = "";
|
||||||
}
|
}
|
||||||
SetMarkStyle();
|
SetMarkStyle();
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
14
util-lib/DocumentCorrectItem.cs
Normal file
14
util-lib/DocumentCorrectItem.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace UtilLib
|
||||||
|
{
|
||||||
|
public class DocumentCorrectItem
|
||||||
|
{
|
||||||
|
public string Key { get; set; }
|
||||||
|
public string Insert { get; set; }
|
||||||
|
public string New_text { get; set; }
|
||||||
|
public int Insert_len { get; set; }
|
||||||
|
public int Offset { get; set; }
|
||||||
|
public List<CorrectedContent> Diffs { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -45,6 +45,7 @@
|
|||||||
<Compile Include="AcceptEnum.cs" />
|
<Compile Include="AcceptEnum.cs" />
|
||||||
<Compile Include="Colors.cs" />
|
<Compile Include="Colors.cs" />
|
||||||
<Compile Include="CorrectedContent.cs" />
|
<Compile Include="CorrectedContent.cs" />
|
||||||
|
<Compile Include="DocumentCorrectItem.cs" />
|
||||||
<Compile Include="ProofreadType.cs" />
|
<Compile Include="ProofreadType.cs" />
|
||||||
<Compile Include="Userinfo.cs" />
|
<Compile Include="Userinfo.cs" />
|
||||||
<Compile Include="UtilLib.cs" />
|
<Compile Include="UtilLib.cs" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user