Compare commits

..

No commits in common. "dev/main" and "main" have entirely different histories.

181 changed files with 1392 additions and 9997 deletions

5
.gitignore vendored
View File

@ -3,10 +3,5 @@ bin
packages
TestConsoleApp
.vs
obj
**/obj/Debug/**
**/obj/Release/**
**/obj/Test/**
**/**/obj/Debug/**
**/**/obj/Release/**
**/**/obj/Test/**

Binary file not shown.

View File

@ -11,8 +11,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "util-lib", "util-lib\util-l
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "updater", "updater\updater.csproj", "{73AC658D-CD49-4731-8491-A7BDBC811559}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ai-proofread-client", "ai-proofread-client\ai-proofread-client.csproj", "{48C0B207-150A-40B7-9A25-ECF9218FF86F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -44,12 +42,6 @@ Global
{73AC658D-CD49-4731-8491-A7BDBC811559}.Release|Any CPU.Build.0 = Release|Any CPU
{73AC658D-CD49-4731-8491-A7BDBC811559}.Test|Any CPU.ActiveCfg = Debug|Any CPU
{73AC658D-CD49-4731-8491-A7BDBC811559}.Test|Any CPU.Build.0 = Debug|Any CPU
{48C0B207-150A-40B7-9A25-ECF9218FF86F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48C0B207-150A-40B7-9A25-ECF9218FF86F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48C0B207-150A-40B7-9A25-ECF9218FF86F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48C0B207-150A-40B7-9A25-ECF9218FF86F}.Release|Any CPU.Build.0 = Release|Any CPU
{48C0B207-150A-40B7-9A25-ECF9218FF86F}.Test|Any CPU.ActiveCfg = Debug|Any CPU
{48C0B207-150A-40B7-9A25-ECF9218FF86F}.Test|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -128,12 +128,6 @@
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
<HintPath>..\packages\BouncyCastle.Cryptography.2.3.1\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
</Reference>
<Reference Include="DocumentFormat.OpenXml, Version=3.3.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
<HintPath>..\packages\DocumentFormat.OpenXml.3.3.0\lib\net46\DocumentFormat.OpenXml.dll</HintPath>
</Reference>
<Reference Include="DocumentFormat.OpenXml.Framework, Version=3.3.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
<HintPath>..\packages\DocumentFormat.OpenXml.Framework.3.3.0\lib\net46\DocumentFormat.OpenXml.Framework.dll</HintPath>
</Reference>
<Reference Include="Enums.NET, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7ea1c1650d506225, processorArchitecture=MSIL">
<HintPath>..\packages\Enums.NET.4.0.1\lib\net45\Enums.NET.dll</HintPath>
</Reference>
@ -143,17 +137,11 @@
<Reference Include="ICSharpCode.SharpZipLib, Version=1.4.2.13, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.4.2\lib\netstandard2.0\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=3.0.4.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.3.0.4\lib\net462\log4net.dll</HintPath>
</Reference>
<Reference Include="MathNet.Numerics, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cd8b63ad3d691a37, processorArchitecture=MSIL">
<HintPath>..\packages\MathNet.Numerics.Signed.5.0.0\lib\net461\MathNet.Numerics.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.3.0.1\lib\netstandard2.0\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<EmbedInteropTypes>True</EmbedInteropTypes>
<Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.3.0.0\lib\netstandard2.0\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.WebView2.Core, Version=1.0.2210.55, Culture=neutral, PublicKeyToken=2a8ab48044d2601e, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Web.WebView2.1.0.2210.55\lib\net45\Microsoft.Web.WebView2.Core.dll</HintPath>
@ -179,7 +167,6 @@
<Reference Include="NPOI.OpenXmlFormats, Version=2.7.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.1\lib\netstandard2.0\NPOI.OpenXmlFormats.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="SixLabors.Fonts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d998eea7b14cab13, processorArchitecture=MSIL">
<HintPath>..\packages\SixLabors.Fonts.1.0.1\lib\netstandard2.0\SixLabors.Fonts.dll</HintPath>
</Reference>
@ -190,9 +177,6 @@
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.ComponentModel.Annotations.5.0.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.ConfigurationManager, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
@ -201,7 +185,6 @@
<Reference Include="System.Data" />
<Reference Include="System.Data.OracleClient" />
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
@ -220,8 +203,8 @@
<Reference Include="System.Security.Cryptography.Pkcs, Version=6.0.0.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Pkcs.6.0.3\lib\net461\System.Security.Cryptography.Pkcs.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Xml, Version=8.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Xml.8.0.2\lib\net462\System.Security.Cryptography.Xml.dll</HintPath>
<Reference Include="System.Security.Cryptography.Xml, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Xml.6.0.1\lib\net461\System.Security.Cryptography.Xml.dll</HintPath>
</Reference>
<Reference Include="System.Security.Permissions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Permissions.6.0.0\lib\net461\System.Security.Permissions.dll</HintPath>
@ -242,7 +225,6 @@
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
@ -302,42 +284,18 @@
<Compile Include="Controls\BaseWinForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormCommonsenseDetection.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormCommonsenseDetection.Designer.cs">
<DependentUpon>FormCommonsenseDetection.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormContact.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormContact.Designer.cs">
<DependentUpon>FormContact.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormDialog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormDialog.Designer.cs">
<DependentUpon>FormDialog.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormLexicon.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormLexicon.Designer.cs">
<DependentUpon>FormLexicon.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormLoading.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormLoading.Designer.cs">
<DependentUpon>FormLoading.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormLogger.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormLogger.Designer.cs">
<DependentUpon>FormLogger.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormLogin.cs">
<SubType>Form</SubType>
</Compile>
@ -350,124 +308,50 @@
<Compile Include="Controls\FormMain.Designer.cs">
<DependentUpon>FormMain.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormMask.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormMask.Designer.cs">
<DependentUpon>FormMask.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormMessage.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormMessage.Designer.cs">
<DependentUpon>FormMessage.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormReadme.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormReadme.Designer.cs">
<DependentUpon>FormReadme.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormSetting.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormSetting.Designer.cs">
<DependentUpon>FormSetting.cs</DependentUpon>
</Compile>
<Compile Include="Controls\FormWebView.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\FormWebView.Designer.cs">
<DependentUpon>FormWebView.cs</DependentUpon>
</Compile>
<Compile Include="Controls\MessageTips.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\MessageTips.Designer.cs">
<DependentUpon>MessageTips.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ProofreadMainControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ProofreadMainControl.Designer.cs">
<DependentUpon>ProofreadMainControl.cs</DependentUpon>
</Compile>
<Compile Include="core\AppModule.cs" />
<Compile Include="core\BridgeResult.cs" />
<Compile Include="core\CommonSenseDetection.cs" />
<Compile Include="core\CorrectionCharacter.cs" />
<Compile Include="core\CorrectionFragmentAbstract.cs" />
<Compile Include="core\CorrectionRangeAbstract.cs" />
<Compile Include="core\CorrectResultExportor.cs" />
<Compile Include="core\DocumentReader.cs" />
<Compile Include="core\DocumentText.cs" />
<Compile Include="core\DocumentUtil.cs" />
<Compile Include="core\EventForwarder.cs" />
<Compile Include="core\JSONObject.cs" />
<Compile Include="core\StringUtil.cs" />
<Compile Include="core\Tools.cs" />
<Compile Include="core\MainPanelWebMessage.cs" />
<Compile Include="core\ExportConfig.cs" />
<Compile Include="core\WebView2EventHandler.cs" />
<Compile Include="LogHelper.cs" />
<Compile Include="Model\BridgeResult.cs" />
<Compile Include="Model\CommonsenseDetectionItem.cs" />
<Compile Include="Model\DocumentContent.cs" />
<Compile Include="Model\DocumentInfo.cs" />
<Compile Include="Model\DocumentList.cs" />
<Compile Include="Model\ExportDataItem.cs" />
<Compile Include="Model\InsertMarkData.cs" />
<Compile Include="Model\ProofreadRangeInfo.cs" />
<Compile Include="Logger.cs" />
<Compile Include="ProofreadItem.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Transform.cs" />
<Compile Include="Util\HostHelper.cs" />
<Compile Include="Util\HttpUtil.cs" />
<Compile Include="Util\User32Util.cs" />
<EmbeddedResource Include="Controls\FormCommonsenseDetection.resx">
<DependentUpon>FormCommonsenseDetection.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormContact.resx">
<DependentUpon>FormContact.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormDialog.resx">
<DependentUpon>FormDialog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormLexicon.resx">
<DependentUpon>FormLexicon.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormLoading.resx">
<DependentUpon>FormLoading.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormLogger.resx">
<DependentUpon>FormLogger.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormLogin.resx">
<DependentUpon>FormLogin.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormMain.resx">
<DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormMask.resx">
<DependentUpon>FormMask.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormMessage.resx">
<DependentUpon>FormMessage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormReadme.resx">
<DependentUpon>FormReadme.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormSetting.resx">
<DependentUpon>FormSetting.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\FormWebView.resx">
<DependentUpon>FormWebView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\MessageTips.resx">
<DependentUpon>MessageTips.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ProofreadMainControl.resx">
<DependentUpon>ProofreadMainControl.cs</DependentUpon>
</EmbeddedResource>
@ -479,7 +363,6 @@
<EmbeddedResource Include="Ribbon1.resx">
<DependentUpon>Ribbon1.cs</DependentUpon>
</EmbeddedResource>
<None Include="app.config" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@ -524,75 +407,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\button.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-refresh.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-refresh-wps.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-save.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-save-wps.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\button_default.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\form_bg.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-panel-wps.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-panel.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-history-wps.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-history.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-export-wps.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-export.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon_close.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo_wps.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo_no_text.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo_no_text_wps.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-ai-robot.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-ai-robot-wps.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-manual.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon-manual-wps.jpg" />
</ItemGroup>
<ItemGroup>
<Content Include="favicon.ico" />
<None Include="Resources\icon-update-new-wps.jpg" />
<None Include="Resources\icon-update-new.png" />
<Folder Include="Resources\" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
@ -621,9 +436,6 @@
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>favicon.ico</ApplicationIcon>
</PropertyGroup>
<!-- Include the build rules for a C# project. -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- Include additional build rules for an Office application add-in. -->

View File

@ -8,10 +8,6 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartAction>Project</StartAction>
<StartProgram>C:\Soft\Kingsoft\WPS Office\12.1.0.20784\office6\wps.exe</StartProgram>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
<StartAction>Project</StartAction>
<StartProgram>C:\Soft\Kingsoft\WPS Office\12.1.0.18608\office6\wps.exe</StartProgram>
<StartProgram>C:\Soft\Kingsoft\WPS Office\12.1.0.17827\office6\wps.exe</StartProgram>
</PropertyGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,4 @@
using System;
using System.IO;
using System.Text.RegularExpressions;
namespace AIProofread
@ -10,63 +9,28 @@ namespace AIProofread
Test,
Prod
}
public class AppServer
{
/// <summary>
/// 开发环境
/// </summary>
public const string DEV = "http://localhost:5173/";
/// <summary>
/// 一体机
/// </summary>
public const string ALL_IN_ONE = "http://112.48.25.226:89/";
/// <summary>
/// 果麦预发布环境
/// </summary>
public const string PRE = "https://pre-gm-plugin.gachafun.com/";
/// <summary>
/// 果麦生产环境
/// </summary>
public const string PROD = "https://gm-plugin.gachafun.com/";
/// <summary>
/// 测试环境
/// </summary>
public const string TEST = "http://tt-plugin.zverse.group/";
}
public class Config
{
public static readonly string APP_NAME = "AI校对王";
public static readonly string APP_VERSION = "2.2.6";
public static readonly string BuildVersion = "20250623_1757";
public static readonly string APP_VERSION = "1.0.11";
public static bool IS_WPS = false;
public static bool UpgradeForcedNotice = false;
public static readonly string APP_BASE_DIR = AppDomain.CurrentDomain.BaseDirectory;
public static readonly string CONFIG_FILE = AppDomain.CurrentDomain.BaseDirectory + "app.json";
public static string USER_MANUAL_URL = "https://aiprhelp.guomai.cn/";
/// <summary>
/// 文本背景色
/// </summary>
public static readonly string TextBackgroundColor = "#E9DABB"; // e9dabb D6AA69
public static string DeviceId = "";
#if DEBUG
#if DEBUG
/// <summary>
/// 网页访问地址
/// </summary>
public static string WEB_PATH = AppServer.DEV; //pre-gm-plugin.gachafun.com localhost:5173 gm2-plugin.zverse.group
public static string WEB_PATH = "http://192.168.10.100:5173/";
public static bool RUN_IN_DEBUG = true;
public static AppEnvironment APP_ENV = AppEnvironment.Dev;
#else
public static string WEB_PATH = AppServer.PROD; // gm-plugin.gachafun.com pre-gm-plugin.gachafun.com
#else
public static string WEB_PATH = "https://gm-plugin.gachafun.com/";
public static bool RUN_IN_DEBUG = false;
public static AppEnvironment APP_ENV = AppEnvironment.Prod;
#endif
#endif
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 APP_README_PATH = APP_DATA_PATH + "\\readme\\";
public static readonly string WEB_DATA_PATH = APP_DATA_PATH + "\\userdata";
/// <summary>
@ -75,14 +39,6 @@ namespace AIProofread
public static readonly string BOOKMARK_NAME_PREFIX = "ai_proofread_";
private static readonly Regex regex = new Regex("^ai_proofread_\\d+$");
public static string GetCurrentVersionReadmeCacheFile()
{
if (!Directory.Exists(APP_README_PATH))
{
Directory.CreateDirectory(APP_README_PATH);
}
return Path.Combine(APP_README_PATH, APP_VERSION + ".txt");
}
public static bool IsProofreadMark(string name)
{
@ -115,8 +71,7 @@ namespace AIProofread
/// <returns></returns>
public static string WebPath(string path)
{
Random r = new Random();
return WEB_PATH + path + (path.IndexOf("?") == -1 ? "?":"&") + $"ver={APP_VERSION}&r=" + r.NextDouble();
return WEB_PATH + path;
}
}
}

View File

@ -1,9 +1,11 @@
using log4net;
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.WinForms;
using System;
using System.Net;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AIProofread.Controls
@ -12,7 +14,6 @@ namespace AIProofread.Controls
[ComVisible(true)]
public class BaseWinForm : Form
{
#region WIN32 API
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
private static extern IntPtr CreateRoundRectRgn(
int nLeftRect, // x-coordinate of upper-left corner
@ -48,9 +49,6 @@ namespace AIProofread.Controls
private const int WM_NCHITTEST = 0x84; // variables for dragging the form
private const int HTCLIENT = 0x1;
private const int HTCAPTION = 0x2;
#endregion
private readonly ILog logger = LogHelper.GetLogger(typeof(BaseWinForm));
protected override CreateParams CreateParams
{
@ -112,12 +110,7 @@ namespace AIProofread.Controls
this.FormBorderStyle = FormBorderStyle.None;
}
public void SetHeight(int height)
{
this.Height = height;
}
protected async void InitWebView(WebView2 webView, String url, string name, Action callaback = null)
protected async void InitWebView(WebView2 webView,String url,string name)
{
//Bridge.InitWebEnvAsync(name, webView);
try
@ -130,48 +123,12 @@ namespace AIProofread.Controls
var eventForwarder = new EventForwarder(this);
webView.CoreWebView2.AddHostObjectToScript("event", eventForwarder);
webView.CoreWebView2.AddHostObjectToScript("host", this);
webView.CoreWebView2.AddHostObjectToScript("bridge", Bridge.bridge);
if (callaback != null)
{
callaback();
}
webView.Source = new Uri(url);
}
catch (Exception ex)
}catch (Exception ex)
{
logger.Error("\ninit webview error:" + ex.Message, ex);
}
}
public void Download(string url)
{
Globals.ThisAddIn.ActiveDocument.RunInMainThread(() =>
{
var sfd = new SaveFileDialog();
sfd.Filter = "Excel文件|*.xlsx";
sfd.DefaultExt = ".xlsx";
if (sfd.ShowDialog() == DialogResult.OK)
{
var fileName = sfd.FileName;
Download(url, fileName);
}
});
}
public void Download(string url, string fileName)
{
// 现在url对应文件并保存到fileName
try
{
using (var client = new WebClient())
{
client.DownloadFile(url, fileName);
}
}
catch (Exception ex)
{
logger.Error("\nDownload error:" + ex.Message, ex);
Logger.Log("\ninit webview error:" + ex.Message + "\n" + ex.StackTrace);
}
}
}

View File

@ -1,69 +0,0 @@
namespace AIProofread.Controls
{
partial class FormCommonsenseDetection
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormCommonsenseDetection));
this.MainWebView = new Microsoft.Web.WebView2.WinForms.WebView2();
((System.ComponentModel.ISupportInitialize)(this.MainWebView)).BeginInit();
this.SuspendLayout();
//
// MainWebView
//
this.MainWebView.AllowExternalDrop = false;
this.MainWebView.BackColor = System.Drawing.SystemColors.ControlDark;
this.MainWebView.CreationProperties = null;
this.MainWebView.DefaultBackgroundColor = System.Drawing.Color.White;
this.MainWebView.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainWebView.Location = new System.Drawing.Point(0, 0);
this.MainWebView.Name = "MainWebView";
this.MainWebView.Size = new System.Drawing.Size(800, 600);
this.MainWebView.TabIndex = 0;
this.MainWebView.ZoomFactor = 1D;
//
// FormCommonsenseDetection
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 600);
this.Controls.Add(this.MainWebView);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormCommonsenseDetection";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "常识性检测";
this.Load += new System.EventHandler(this.FormCommonsenseDetection_Load);
((System.ComponentModel.ISupportInitialize)(this.MainWebView)).EndInit();
this.ResumeLayout(false);
}
#endregion
private Microsoft.Web.WebView2.WinForms.WebView2 MainWebView;
}
}

View File

@ -1,69 +0,0 @@
using AIProofread.core;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UtilLib;
namespace AIProofread.Controls
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public partial class FormCommonsenseDetection : BaseWinForm
{
private bool initialized = false;
private List<WebMessage> actions = new List<WebMessage>();
public FormCommonsenseDetection()
{
InitializeComponent();
}
private void FormCommonsenseDetection_Load(object sender, EventArgs e)
{
// 初始化
InitWebView(MainWebView, Config.WebPath("commonsense-detection"), "commonsense-detection", () =>
{
MainWebView.CoreWebView2.AddHostObjectToScript("detection", CommonSenseDetection.Instance(this));
});
}
private void SendToWeb(string action, object data)
{
var json = JsonConvert.SerializeObject(new WebMessage(action, data));
MainWebView.CoreWebView2.PostWebMessageAsJson(json);
}
public void SendMessageToWeb(string action, object data)
{
// 判断是否已经初始化完成
if (this.initialized)
{
SendToWeb(action, data);
return;
}
// 添加到队列
actions.Add(new WebMessage(action, data));
//this.action = action;
//this.data = data;
}
public void InitializationCompleted()
{
if (!this.initialized && actions.Count > 0) // !string.IsNullOrEmpty(this.action)
{
actions.ForEach(item =>
{
SendToWeb(item.Message, item.Data);
});
// clear
actions.Clear();
//SendToWeb(this.action, this.data);
//this.action = null;
//this.data = null;
}
this.initialized = true;
}
}
}

View File

@ -1,451 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAAAAEACAAoTAAAFgAAACgAAACAAAAAAAEAAAEACAAAAAAAAEAAAAAAAAAAAAAAAAEAAAAB
AAAAAAAAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq
1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAGmq1gBpqtYAaarWAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAw6bZKstri4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4
uLi4uLi4uLi4uLi4uLi4rJRvOQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAB5rwOPw9/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/HjvmseBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAABRfy/T7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79MtfFAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsm/T7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/GbLAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOsD7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vAOgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTE+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+/v7+/vCNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgrvv7+/v7+/v7+/v7+/v7
+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+/v7+/v7+/v7+/v7+/uuHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX73+/v7+/v7
+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/d8CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2
4/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7
+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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAGDRIW2dvb29tZVdEMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////
///////////////////////AAAAAAAAAAAAD////////AAAAAAAAAAAAAH///////AAAAAAAAAAAAAA/
//////gAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAA//////4AAAAAAAAAAAAAAH/////8AAAAAAAAAA
AAAAA/////+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB/////wAAAAAAAAAAAAAAAP////8AAAAA
AAAAAAAAAAD/////AAAAAAAAAAAAAAAA/////wAH///wAAAP///gAP////4AD///8AAAD///8AB////+
AA////AAAA////AAf////gAP///wAAAP///wAH////4AD///8AAAD///8AB////+AA////AAAA////AA
f////gAP///wAAAP///wAH////4AD///8AAAD///8AB////+AA////AAAA////AAf////gAP///wAAAP
///wAH////4AD///8AAAD///8AB////+AA////AAAA////AAf////gAP///////////wAH//AB4AD///
////////8AB4AAAOAA////////////AAcAAADgAP///////////wAHAAAA4AD///////////8ABwAAAO
AA////////////AAcAAADgAP///////////wAHAAAA4AD///////////8ABwAAAOAA////////////AA
cAAADgAP//w////8P//wAHAAAA4AD//gB///4Af/8ABwAAAOAA//wAP//8AD//AAcAAADgAP/4AB//+A
Af/wAHAAAAAAD/8AAP//AAD/8ABwAAAAAA//AAD//wAA//AAAAAAAAAP/gAAf/4AAH/wAAAAAAAAD/4A
AH/+AAB/8AAAAAAAAA/+AAB//gAAf/AAAAAAAAAP/gAAf/4AAH/wAAAAAAAAD/4AAH/+AAB/8AAAAAAA
AA/+AAB//gAAf/AAAAAAAAAP/wAA//8AAP/wAAAAAAAAD/8AAP//AAD/8AAAAAAAAA//gAH//4AB//AA
AAAAAAAP/8AD///AA//wAAAAAAAAD//wB///4A//8AAAAAAAAA////////////AAAAAAAAAP////////
///4AAAAAAAAD///////////+AAAAAAAAA////////////gAAAAADgAP////////////////AA4AD///
//////wAD////wAOAA/////////AAAH///8ADgAP////////AAAAP///8v4AD////////AAAAA/////+
AA////////AAAAAD/////gAP///////AAAAAAP////4AD///////gAAAAAB////+AA///////wAAAAAA
P////gAP//////wAAAAAAB////4AD//////4AAAAAAAH///+AA//////8AAAAAAAA////gAP/////+AA
AAAAAAP///4AD//////gAAP/8AAB///+AA//////wAAf//wAAP///gAP/////4AAP///AAB///4AB///
//8AAP///8AAf///AAP/////AAH////gAD///wAAAAAA/gAD////8AAf//8AAAAAAP4AB/4f//gAH///
AAAAAAD8AA/+D//8AB///4AAAAAA/AAf/A///gAP//+AAAAAAPwAP/gH//4AD///wAAAAAD4AD/4A///
AAf//+AAAAAA+AB/8AP//4AH///wAAAAAPgAf+AB//+AB///+AAAAADwAP/AAP//wAf///wAAAAA8AD/
wAD//8AD////AAAAAPAA/4AAf//AA////8AAAADwAf8AAD//4AP////4AAAB4AH/AAAf/+AD////////
/+AB/gAAH//gA//////////gAfwAAA//4AP/////////4AH4AAAH/+AB/////////+AB+ABAB//gAf//
///////gAfAAwAP/4AH/////////4AHwAeAB/+AD/////////+AB8AHwAP/gA//////////gAfwP8AB/
4AP/////////8AH///gAf+AD//////////AA///8AD/AA//////////wAP///gAfwAP/////////8AD/
//4AH8AD//////////gAf///AA+AB//////////4AH///4APgAf/////////+AA///+ADwAH////////
//wAP///wA4AD//////////8AB/////+AA///////////AAP/////AAP//////////4AB/////gAH///
///////+AAf////wAB///////////wAB////4AA///////////8AAP///8AAf///////////gAB///8A
AH///////////8AAH//+AAD////////////AAAf/8AAB////////////4AAAf4AAA/////////////AA
AAAAAAP////////////4AAAAAAAH/////////////AAAAAAAD/////////////4AAAAAAD//////////
////gAAAAAB//////////////8AAAAAA///////////////gAAAAA///////////////+AAAAAf/////
//////////4AAAAf////////////////wAAA//////////////////wAD///////////////////////
////////////////////////
</value>
</data>
</root>

View File

@ -40,7 +40,7 @@
this.WebViewContact.Dock = System.Windows.Forms.DockStyle.Fill;
this.WebViewContact.Location = new System.Drawing.Point(0, 0);
this.WebViewContact.Name = "WebViewContact";
this.WebViewContact.Size = new System.Drawing.Size(620, 450);
this.WebViewContact.Size = new System.Drawing.Size(400, 310);
this.WebViewContact.TabIndex = 0;
this.WebViewContact.ZoomFactor = 1D;
//
@ -48,11 +48,11 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(620, 450);
this.ClientSize = new System.Drawing.Size(400, 310);
this.Controls.Add(this.WebViewContact);
this.Name = "FormContact";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "联系客服";
this.Load += new System.EventHandler(this.FormContact_Load);
((System.ComponentModel.ISupportInitialize)(this.WebViewContact)).EndInit();

View File

@ -4,15 +4,12 @@ using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AIProofread.Controls
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public partial class FormContact : BaseWinForm
{
public FormContact()

View File

@ -1,111 +0,0 @@
namespace AIProofread.Controls
{
partial class FormDialog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.LabelMeesage = new System.Windows.Forms.Label();
this.BtnClose = new System.Windows.Forms.Button();
this.BtnConfirm = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// LabelMeesage
//
this.LabelMeesage.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LabelMeesage.ForeColor = System.Drawing.Color.Black;
this.LabelMeesage.Location = new System.Drawing.Point(39, 60);
this.LabelMeesage.Name = "LabelMeesage";
this.LabelMeesage.Size = new System.Drawing.Size(346, 70);
this.LabelMeesage.TabIndex = 7;
this.LabelMeesage.Text = "label1";
this.LabelMeesage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// BtnClose
//
this.BtnClose.BackColor = System.Drawing.Color.White;
this.BtnClose.BackgroundImage = global::AIProofread.Properties.Resources.button_default;
this.BtnClose.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.BtnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.BtnClose.FlatAppearance.BorderColor = System.Drawing.Color.Gainsboro;
this.BtnClose.FlatAppearance.BorderSize = 0;
this.BtnClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.BtnClose.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.BtnClose.ForeColor = System.Drawing.Color.Black;
this.BtnClose.Location = new System.Drawing.Point(222, 205);
this.BtnClose.Name = "BtnClose";
this.BtnClose.Size = new System.Drawing.Size(120, 44);
this.BtnClose.TabIndex = 6;
this.BtnClose.Text = "取消";
this.BtnClose.UseVisualStyleBackColor = false;
this.BtnClose.Click += new System.EventHandler(this.BtnClose_Click);
//
// BtnConfirm
//
this.BtnConfirm.BackgroundImage = global::AIProofread.Properties.Resources.button;
this.BtnConfirm.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.BtnConfirm.FlatAppearance.BorderSize = 0;
this.BtnConfirm.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.BtnConfirm.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.BtnConfirm.ForeColor = System.Drawing.Color.White;
this.BtnConfirm.Location = new System.Drawing.Point(78, 205);
this.BtnConfirm.Name = "BtnConfirm";
this.BtnConfirm.Size = new System.Drawing.Size(120, 44);
this.BtnConfirm.TabIndex = 5;
this.BtnConfirm.Text = "确认";
this.BtnConfirm.UseVisualStyleBackColor = true;
this.BtnConfirm.Click += new System.EventHandler(this.button2_Click);
//
// FormDialog
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.CancelButton = this.BtnClose;
this.ClientSize = new System.Drawing.Size(422, 286);
this.Controls.Add(this.LabelMeesage);
this.Controls.Add(this.BtnClose);
this.Controls.Add(this.BtnConfirm);
this.ForeColor = System.Drawing.Color.White;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormDialog";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Deactivate += new System.EventHandler(this.FormDialog_Deactivate);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormDialog_FormClosed);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label LabelMeesage;
private System.Windows.Forms.Button BtnClose;
private System.Windows.Forms.Button BtnConfirm;
}
}

View File

@ -1,70 +0,0 @@
using AIProofread.Util;
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace AIProofread.Controls
{
public partial class FormDialog : Form
{
public FormDialog()
{
InitializeComponent();
}
private static FormMask mask;
private void SetMessage(string message)
{
LabelMeesage.Text = message;
}
private void SetButtonText(string yesButtonText, string noButtonText)
{
BtnClose.Text = noButtonText;
BtnConfirm.Text = yesButtonText;
}
public static DialogResult Show(string message, string caption, string yesButtonText, string noButtonText)
{
FormDialog formMessage = new FormDialog();
mask = new FormMask(formMessage);
mask.ShowOverWord();
formMessage.SetMessage(message);
formMessage.Text = caption;
formMessage.SetButtonText(yesButtonText, noButtonText);
formMessage.TopMost = true;
IntPtr wordHandle = new IntPtr(Globals.ThisAddIn.Application.ActiveWindow.Hwnd); // 获取Word窗口句柄
User32Util.SetParent(formMessage.Handle,wordHandle);
formMessage.Show();
return DialogResult.Yes;
}
public static DialogResult Show(string message)
{
return Show(message, "", "是", "否");
}
private void BtnClose_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.No;
this.TopMost = false;
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Yes;
this.Close();
}
private void FormDialog_Deactivate(object sender, EventArgs e)
{
// SetForegroundWindow(this.Handle);
// this.Activate();
}
private void FormDialog_FormClosed(object sender, FormClosedEventArgs e)
{
mask.Close();
mask = null;
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,66 +0,0 @@
namespace AIProofread.Controls
{
partial class FormLexicon
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.MainWebView = new Microsoft.Web.WebView2.WinForms.WebView2();
((System.ComponentModel.ISupportInitialize)(this.MainWebView)).BeginInit();
this.SuspendLayout();
//
// MainWebView
//
this.MainWebView.AllowExternalDrop = true;
this.MainWebView.CreationProperties = null;
this.MainWebView.DefaultBackgroundColor = System.Drawing.Color.White;
this.MainWebView.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainWebView.Location = new System.Drawing.Point(0, 0);
this.MainWebView.Name = "MainWebView";
this.MainWebView.Size = new System.Drawing.Size(1000, 640);
this.MainWebView.TabIndex = 0;
this.MainWebView.ZoomFactor = 1D;
//
// FormLexicon
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1000, 640);
this.Controls.Add(this.MainWebView);
this.Name = "FormLexicon";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "FormLexicon";
this.Load += new System.EventHandler(this.FormLexicon_Load);
((System.ComponentModel.ISupportInitialize)(this.MainWebView)).EndInit();
this.ResumeLayout(false);
}
#endregion
private Microsoft.Web.WebView2.WinForms.WebView2 MainWebView;
}
}

View File

@ -1,21 +0,0 @@
using System;
using System.Runtime.InteropServices;
namespace AIProofread.Controls
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public partial class FormLexicon : BaseWinForm
{
public FormLexicon()
{
InitializeComponent();
}
private void FormLexicon_Load(object sender, EventArgs e)
{
// 初始化
InitWebView(MainWebView, Config.WebPath("lexicon"), "lexicon");
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,104 +0,0 @@
namespace AIProofread.Controls
{
partial class FormLogger
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormLogger));
this.LogText = new System.Windows.Forms.RichTextBox();
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.TsmiClear = new System.Windows.Forms.ToolStripMenuItem();
this.panel1 = new System.Windows.Forms.Panel();
this.contextMenuStrip1.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// LogText
//
this.LogText.AutoWordSelection = true;
this.LogText.BackColor = System.Drawing.Color.White;
this.LogText.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.LogText.ContextMenuStrip = this.contextMenuStrip1;
this.LogText.Dock = System.Windows.Forms.DockStyle.Fill;
this.LogText.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LogText.Location = new System.Drawing.Point(0, 0);
this.LogText.Name = "LogText";
this.LogText.ReadOnly = true;
this.LogText.ShowSelectionMargin = true;
this.LogText.Size = new System.Drawing.Size(784, 310);
this.LogText.TabIndex = 0;
this.LogText.Text = "";
//
// contextMenuStrip1
//
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.TsmiClear});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(125, 26);
//
// TsmiClear
//
this.TsmiClear.Name = "TsmiClear";
this.TsmiClear.Size = new System.Drawing.Size(124, 22);
this.TsmiClear.Text = "清除日志";
this.TsmiClear.Click += new System.EventHandler(this.TsmiClear_Click);
//
// panel1
//
this.panel1.Controls.Add(this.LogText);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(784, 310);
this.panel1.TabIndex = 1;
//
// FormLogger
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(784, 310);
this.Controls.Add(this.panel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormLogger";
this.Text = "实时日志";
this.TopMost = true;
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormLogger_FormClosed);
this.contextMenuStrip1.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.RichTextBox LogText;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem TsmiClear;
}
}

View File

@ -1,107 +0,0 @@
using System;
using System.Windows.Forms;
namespace AIProofread.Controls
{
public partial class FormLogger : Form
{
private ListView LogListView = new ListView();
public FormLogger()
{
InitializeComponent();
//LogListView.View = View.Details;
//LogListView.FullRowSelect = true;
//LogListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
}
private void InitLogListView()
{
var columnHeader1 = new ColumnHeader();
var columnHeader2 = new ColumnHeader();
var columnHeader3 = new ColumnHeader();
columnHeader1.Text = "Tag";
columnHeader1.Width = 67;
columnHeader2.Text = "Time";
columnHeader2.Width = 117;
columnHeader3.Text = "Message";
columnHeader3.Width = 480;
LogListView.Columns.AddRange(new ColumnHeader[] {columnHeader1,columnHeader2,columnHeader3});
}
/// <summary>
/// 显示最大日志数
/// </summary>
private const int MaxDisplayItemCount = 100;
public void Log(string time, string tag, string message)
{
ShowLogInText(time, tag, message);
}
private void ShowLogInText(string time, string tag, string message)
{
if (LogText.InvokeRequired)
{
//LogText.Invoke(new AppendLogDel(AppendLog), args);
}
else
{
LogText.AppendText(string.Format("{0} {1} {2}",time,tag,message));
LogText.AppendText(Environment.NewLine);
LogText.ScrollToCaret();
LogText.Update();
}
}
private void ShowLogInList(string time, string tag, string message)
{
if (LogListView.InvokeRequired)
{
LogListView.Invoke(new Action(() => AddLogToList(time, tag, message)));
}
else
{
AddLogToList(time, tag, message);
}
}
private void AddLogToList(string time, string tag, string message)
{
//
ListViewItem insertItem = new ListViewItem(new string[] { tag, time, message });
//
//insertItem.SubItems.Add(time);
//insertItem.SubItems.Add(tag, Color.Violet, Color.White, LogListView.Font);
//insertItem.SubItems.Add(message, Color.Blue, Color.White, LogListView.Font);
//ListViewSubItem tagItem = new ListViewSubItem(insertItem,tag);
//ListViewSubItem timeItem = new ListViewSubItem(insertItem,time, Color.Violet, Color.White, LogListView.Font);
//ListViewSubItem messageItem = new ListViewSubItem(insertItem, time, Color.Blue, Color.White, LogListView.Font);
//insertItem.SubItems.Add(tagItem);
if (LogListView.Items.Count > MaxDisplayItemCount)
{
LogListView.Items.RemoveAt(MaxDisplayItemCount);
}
//ListViewItem lstItem = new ListViewItem(" " + DateTime.Now.ToString(), imageIndex);
//lstItem.SubItems.Add(info);
LogListView.Items.Insert(0, insertItem);
}
private void FormLogger_FormClosed(object sender, FormClosedEventArgs e)
{
LogHelper.LoggerForm = null;
}
private void TsmiClear_Click(object sender, EventArgs e)
{
LogText.Text = string.Empty;
}
}
}

View File

@ -1,196 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAIB4AAAEAIACgDwAAFgAAACgAAAAgAAAAPAAAAAEAIAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAA
AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA
AAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQAA
AJUAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAA
AJgAAACYAAAAmAAAAJgAAACQAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB9AAAA/wAAAOoAAADnAAAA5wAAAOcAAADnAAAA5wAAAOcAAADnAAAA5wAAAOcAAADnAAAA5wAA
AOcAAADnAAAA5wAAAOcAAADnAAAA8AAAAPoAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAH4AAADpAAAAQQAAACMAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAA
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
ADUAAAA1AAAANQAAABoAAAAAAAAATQAAAO8AAABbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAH8AAADlAAAAIQAAAAAAAAAJAAAAFAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAA7wAAAFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAOUAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAA
AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAE0AAADvAAAAWwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAA9wAAAKkAAACbAAAAnAAAAJwAAACcAAAAnAAA
AJwAAACcAAAAnAAAAJwAAACcAAAAnAAAAJwAAACcAAAAnAAAAJwAAACbAAAAuQAAAPUAAABbAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAADhAAAA4gAAAOIAAADiAAAA4gAA
AOIAAADiAAAA4gAAAOIAAADiAAAA4gAAAOIAAADiAAAA4gAAAOIAAADiAAAA4gAAAOIAAADiAAAA2AAA
AEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAACUAAAAmAAAAJgAA
ACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA
ACYAAAAkAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD////////////////8AAA/+AAAH/gAAB/4AAAf+P//H/iIAR/4iAEf+IgBH/j//x/4//8f+IgBH/iI
AR/4iAEf+I//H/j//x/4iAEf+IgBH/iIAR/4j/8f+PABH/gAAB/4AAAf+AAAH///////////////////
//8=
</value>
</data>
</root>

View File

@ -1,11 +1,8 @@
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace AIProofread.Controls
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public partial class FormLogin : BaseWinForm
{
@ -14,19 +11,6 @@ namespace AIProofread.Controls
public FormLogin()
{
InitializeComponent();
this.FormClosed += (s, e) =>
{
// 关闭时释放资源
try
{
if (web != null)
{
web.Dispose();
web = null;
}
}
catch { };
};
//Bridge.InitWebEnvAsync("login", web);
//Bridge.AddEventHandler(BridgeEvent.LoginSuccess, OnLoginSuccess);
}
@ -34,19 +18,6 @@ namespace AIProofread.Controls
{
this.action = action;
InitializeComponent();
this.FormClosed += (s, e) =>
{
// 关闭时释放资源
try
{
if (web != null)
{
web.Dispose();
web = null;
}
}
catch { };
};
}
private void OnLoginSuccess(object sender, EventArgs e)
@ -57,9 +28,9 @@ namespace AIProofread.Controls
private void FormLogin_Load(object sender, EventArgs e)
{
//this.web.Source = new Uri(Config.WebPath("#login"));
var r = new FormLogin();
InitWebView(web, Config.WebPath("login?action=" + this.action + "&version=" + Config.APP_VERSION + "&t=" + DateTime.Now.Ticks), "login");
InitWebView(web, Config.WebPath("login?action=" + this.action), "login");
}
}
}

View File

@ -1,48 +0,0 @@
namespace AIProofread.Controls
{
partial class FormMask
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// FormMask
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FormMask";
this.Opacity = 0.1D;
this.Text = "FormMask";
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -1,46 +0,0 @@
using AIProofread.Util;
using System;
using System.Drawing;
using System.Windows.Forms;
namespace AIProofread.Controls
{
public partial class FormMask : Form
{
public Form myParent;
public FormMask(Form myParent)
{
//InitializeComponent();
this.myParent = myParent;
this.FormBorderStyle = FormBorderStyle.None;
this.BackColor = Color.Black;
this.Opacity = 0.5; // 设置遮罩透明度
this.ShowInTaskbar = false;
this.StartPosition = FormStartPosition.Manual;
this.WindowState = FormWindowState.Maximized;
this.Click += FormMask_Click;
//this.TopMost = true;
}
private void FormMask_Click(object sender, EventArgs e)
{
User32Util.SetForegroundWindow(myParent.Handle);
myParent.Focus();
}
public void ShowOverWord()
{
IntPtr wordHandle = new IntPtr(Globals.ThisAddIn.Application.ActiveWindow.Hwnd); // 获取Word窗口句柄
// User32Util.SetParent(this.Handle, wordHandle);
var wordRect = new User32Util.RECT();
User32Util.GetWindowRect(wordHandle, ref wordRect);
// 设置遮罩窗体的位置和大小
this.Bounds = new Rectangle(wordRect.Left, wordRect.Top,
wordRect.Right - wordRect.Left,
wordRect.Bottom - wordRect.Top);
this.Show();
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,158 +0,0 @@
namespace AIProofread.Controls
{
partial class FormMessage
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.LblMeesage = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.IconClose = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.BtnClose = new System.Windows.Forms.Button();
this.BtnConfirm = new System.Windows.Forms.Button();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.IconClose)).BeginInit();
this.SuspendLayout();
//
// LblMeesage
//
this.LblMeesage.BackColor = System.Drawing.Color.Transparent;
this.LblMeesage.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.LblMeesage.Location = new System.Drawing.Point(30, 60);
this.LblMeesage.Name = "LblMeesage";
this.LblMeesage.Size = new System.Drawing.Size(320, 70);
this.LblMeesage.TabIndex = 4;
this.LblMeesage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// panel1
//
this.panel1.BackgroundImage = global::AIProofread.Properties.Resources.form_bg;
this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.panel1.Controls.Add(this.IconClose);
this.panel1.Controls.Add(this.label1);
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(380, 46);
this.panel1.TabIndex = 3;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown);
//
// IconClose
//
this.IconClose.BackColor = System.Drawing.Color.Transparent;
this.IconClose.Cursor = System.Windows.Forms.Cursors.Hand;
this.IconClose.Image = global::AIProofread.Properties.Resources.icon_close;
this.IconClose.Location = new System.Drawing.Point(350, 15);
this.IconClose.Name = "IconClose";
this.IconClose.Size = new System.Drawing.Size(16, 16);
this.IconClose.TabIndex = 1;
this.IconClose.TabStop = false;
this.IconClose.Click += new System.EventHandler(this.IconClose_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.BackColor = System.Drawing.Color.Transparent;
this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(11, 12);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(74, 21);
this.label1.TabIndex = 0;
this.label1.Text = "温馨提示";
this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label1_MouseDown);
//
// BtnClose
//
this.BtnClose.BackColor = System.Drawing.Color.White;
this.BtnClose.BackgroundImage = global::AIProofread.Properties.Resources.button_default;
this.BtnClose.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.BtnClose.Cursor = System.Windows.Forms.Cursors.Hand;
this.BtnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.BtnClose.FlatAppearance.BorderColor = System.Drawing.Color.Gainsboro;
this.BtnClose.FlatAppearance.BorderSize = 0;
this.BtnClose.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.BtnClose.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
this.BtnClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.BtnClose.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.BtnClose.ForeColor = System.Drawing.Color.Black;
this.BtnClose.Location = new System.Drawing.Point(200, 150);
this.BtnClose.Name = "BtnClose";
this.BtnClose.Size = new System.Drawing.Size(120, 44);
this.BtnClose.TabIndex = 2;
this.BtnClose.Text = "关闭";
this.BtnClose.UseVisualStyleBackColor = false;
this.BtnClose.Click += new System.EventHandler(this.BtnClose_Click);
//
// BtnConfirm
//
this.BtnConfirm.BackgroundImage = global::AIProofread.Properties.Resources.button;
this.BtnConfirm.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.BtnConfirm.Cursor = System.Windows.Forms.Cursors.Hand;
this.BtnConfirm.DialogResult = System.Windows.Forms.DialogResult.OK;
this.BtnConfirm.FlatAppearance.BorderSize = 0;
this.BtnConfirm.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.BtnConfirm.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
this.BtnConfirm.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.BtnConfirm.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.BtnConfirm.ForeColor = System.Drawing.Color.White;
this.BtnConfirm.Location = new System.Drawing.Point(60, 150);
this.BtnConfirm.Name = "BtnConfirm";
this.BtnConfirm.Size = new System.Drawing.Size(120, 44);
this.BtnConfirm.TabIndex = 1;
this.BtnConfirm.Text = "重新校对";
this.BtnConfirm.UseVisualStyleBackColor = true;
this.BtnConfirm.Click += new System.EventHandler(this.BtnConfirm_Click);
//
// FormMessage
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(380, 216);
this.Controls.Add(this.LblMeesage);
this.Controls.Add(this.panel1);
this.Controls.Add(this.BtnClose);
this.Controls.Add(this.BtnConfirm);
this.Name = "FormMessage";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "FormMessage";
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.IconClose)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button BtnConfirm;
private System.Windows.Forms.Button BtnClose;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label LblMeesage;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.PictureBox IconClose;
}
}

View File

@ -1,165 +0,0 @@
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace AIProofread.Controls
{
public partial class FormMessage : BaseWinForm
{
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
/// <summary>
/// 初始化宽度
/// </summary>
private const int INIT_WIDTH = 380;
public FormMessage()
{
InitializeComponent();
}
private void SetMessage(string message)
{
LblMeesage.Text = message;
}
private string currentConfirmText;
private string currentConfirmAction;
private void SetConfirmText(string confirmText)
{
currentConfirmText = confirmText;
if (confirmText == "proofread")
{
confirmText = "重新校对";
}
BtnConfirm.Text = confirmText;
BtnConfirm.Visible = true;
BtnConfirm.Enabled = true;
}
private void HideConfirm()
{
BtnConfirm.Visible = false;
BtnConfirm.Enabled = false;
BtnClose.Location = new System.Drawing.Point((
(this.Width - BtnClose.Width) / 2
), BtnClose.Location.Y);
}
/// <summary>
/// 计算缩放
/// </summary>
/// <param name="size"></param>
/// <returns></returns>
private int ScaleSize(int size)
{
return (int)(size * this.Width * 1.0 / INIT_WIDTH);
}
private void ResetButtons()
{
BtnClose.Location = new System.Drawing.Point(ScaleSize(200), BtnClose.Location.Y);
BtnConfirm.Location = new System.Drawing.Point(ScaleSize(60), BtnConfirm.Location.Y);
BtnConfirm.Visible = true;
BtnConfirm.Enabled = true;
}
public void HideCloseBtn()
{
BtnClose.Visible = false;
LblMeesage.Location = new System.Drawing.Point(LblMeesage.Location.X, LblMeesage.Location.Y + ScaleSize(30));
}
public static FormMessage ShowMessage(string message, int closeDelay = 3000)
{
FormMessage formMessage = new FormMessage();
formMessage.SetMessage(message);
formMessage.HideConfirm();
// 先置顶
formMessage.TopMost = true;
formMessage.Show();
return formMessage;
}
public static DialogResult ShowMessage(string message, string confirmText = "确认",string cancelText="取消", string confirmAction = null)
{
FormMessage formMessage = new FormMessage();
formMessage.SetMessage(message);
formMessage.currentConfirmAction = confirmAction;
formMessage.BtnClose.Text = cancelText;
if (string.IsNullOrEmpty(confirmText))
{
formMessage.HideConfirm();
}
else
{
formMessage.BtnConfirm.Text = confirmText;
formMessage.ResetButtons();
}
return formMessage.ShowDialog();
}
public static DialogResult ShowMessage(string message, string confirmText = "确认", string confirmAction = null)
{
FormMessage formMessage = new FormMessage();
formMessage.SetMessage(message);
formMessage.currentConfirmAction = confirmAction;
if (string.IsNullOrEmpty(confirmText))
{
formMessage.HideConfirm();
}
else
{
formMessage.BtnConfirm.Text = confirmText;
formMessage.ResetButtons();
}
return formMessage.ShowDialog();
}
private void BtnClose_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(currentConfirmAction))
{
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Globals.ThisAddIn.SendMessageToWeb(currentConfirmAction, "cancel");
}
this.Close();
}
private void BtnConfirm_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(currentConfirmAction))
{
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Globals.ThisAddIn.SendMessageToWeb(currentConfirmAction, "confirm");
}
this.Close();
}
private void IconClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void HanleMouseDown()
{
ReleaseCapture();
SendMessage(this.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
private void label1_MouseDown(object sender, MouseEventArgs e)
{
HanleMouseDown();
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
HanleMouseDown();
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,68 +0,0 @@
namespace AIProofread.Controls
{
partial class FormReadme
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.WebView_ReadMe = new Microsoft.Web.WebView2.WinForms.WebView2();
((System.ComponentModel.ISupportInitialize)(this.WebView_ReadMe)).BeginInit();
this.SuspendLayout();
//
// WebView_ReadMe
//
this.WebView_ReadMe.AllowExternalDrop = true;
this.WebView_ReadMe.CreationProperties = null;
this.WebView_ReadMe.DefaultBackgroundColor = System.Drawing.Color.White;
this.WebView_ReadMe.Dock = System.Windows.Forms.DockStyle.Fill;
this.WebView_ReadMe.Location = new System.Drawing.Point(0, 0);
this.WebView_ReadMe.Name = "WebView_ReadMe";
this.WebView_ReadMe.Size = new System.Drawing.Size(600, 480);
this.WebView_ReadMe.TabIndex = 0;
this.WebView_ReadMe.ZoomFactor = 1D;
//
// FormReadme
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(600, 480);
this.Controls.Add(this.WebView_ReadMe);
this.Name = "FormReadme";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "版本更新说明";
this.TopMost = true;
this.Load += new System.EventHandler(this.FormReadme_Load);
((System.ComponentModel.ISupportInitialize)(this.WebView_ReadMe)).EndInit();
this.ResumeLayout(false);
}
#endregion
private Microsoft.Web.WebView2.WinForms.WebView2 WebView_ReadMe;
}
}

View File

@ -1,55 +0,0 @@
using AIProofread.core;
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace AIProofread.Controls
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public partial class FormReadme : BaseWinForm
{
/// <summary>
/// 单例实例。
/// </summary>
private static FormReadme INSTANCE = null;
public FormReadme()
{
InitializeComponent();
// 写入缓存
File.WriteAllText(Config.GetCurrentVersionReadmeCacheFile(), DateTime.Now.ToString("yyyy-M-d"));
}
/// <summary>
/// 获取单例对象。
/// </summary>
public static FormReadme GetInstance(bool newInstance = true)
{
if (newInstance && (INSTANCE == null || INSTANCE.IsDisposed))
{
INSTANCE = new FormReadme();
}
return INSTANCE;
}
public void CloseAndDispose()
{
if (INSTANCE != null && !INSTANCE.IsDisposed)
{
INSTANCE.Close();
INSTANCE = null;
}
}
private void FormReadme_Load(object sender, EventArgs e)
{
// 初始化
InitWebView(WebView_ReadMe, Config.WebPath("version-readme"), "version-readme", () =>
{
WebView_ReadMe.CoreWebView2.AddHostObjectToScript("readme", this);
});
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,67 +0,0 @@
namespace AIProofread.Controls
{
partial class FormWebView
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.WebView = new Microsoft.Web.WebView2.WinForms.WebView2();
((System.ComponentModel.ISupportInitialize)(this.WebView)).BeginInit();
this.SuspendLayout();
//
// WebView
//
this.WebView.AllowExternalDrop = true;
this.WebView.CreationProperties = null;
this.WebView.DefaultBackgroundColor = System.Drawing.Color.White;
this.WebView.Dock = System.Windows.Forms.DockStyle.Fill;
this.WebView.Location = new System.Drawing.Point(0, 0);
this.WebView.Name = "WebView";
this.WebView.Size = new System.Drawing.Size(800, 450);
this.WebView.TabIndex = 0;
this.WebView.ZoomFactor = 1D;
//
// FormWebView
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.WebView);
this.Name = "FormWebView";
this.ShowIcon = false;
this.Text = "FormWebView";
this.Load += new System.EventHandler(this.FormWebView_Load);
((System.ComponentModel.ISupportInitialize)(this.WebView)).EndInit();
this.ResumeLayout(false);
}
#endregion
private Microsoft.Web.WebView2.WinForms.WebView2 WebView;
}
}

View File

@ -1,37 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AIProofread.Controls
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public partial class FormWebView : BaseWinForm
{
public string WebUrl { get; set; }
public FormWebView(string url,int width,int height)
{
InitializeComponent();
this.WebUrl = url;
this.SetSize(width, height);
}
public void SetSize(int width, int height)
{
this.Width = width;
this.Height = height;
}
private void FormWebView_Load(object sender, EventArgs e)
{
// 初始化
InitWebView(WebView,this.WebUrl, "webview");
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,46 +0,0 @@
namespace AIProofread.Controls
{
partial class MessageTips
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// MessageTips
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(483, 360);
this.Name = "MessageTips";
this.Text = "MessageTips";
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AIProofread.Controls
{
public partial class MessageTips : Form
{
public MessageTips()
{
InitializeComponent();
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,6 +1,5 @@

using Microsoft.Office.Interop.Word;
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.WinForms;
using System;
using System.Windows.Forms;
@ -8,69 +7,35 @@ namespace AIProofread.Controls
{
public partial class ProofreadMainControl : UserControl
{
public ProofreadMainControl()
private Document doc;
private int minWidth;
public ProofreadMainControl(Document doc,int minWidth)
{
InitializeComponent();
this.doc = doc;
this.minWidth = minWidth;
Bridge.InitWebEnvAsync("main", web);
//this.minWidth = 420 * LabelWidth() / 42;
//this.MinimumSize = new System.Drawing.Size(this.minWidth, 0);
}
private bool isShowingErrorPage = false;
public void WebView2NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
{
if (isShowingErrorPage)
{
return;
}
if (e.IsSuccess)
{
isShowingErrorPage = false;
return;
}
isShowingErrorPage = true;
string errorPageHtml = @"
<html>
<head>
<title></title>
<style>
body { font-family: sans-serif; text-align: center; padding-top: 50px; user-select: none; }
h1 { color: #d00; }
</style>
</head>
<body oncontextmenu='return false;'>
<h1></h1>
<p></p>
<a href=" + "\"javascript:window.chrome.webview.postMessage('reload');\"" + @">重新加载</a>
</body>
</html>";
(sender as WebView2).CoreWebView2.NavigateToString(errorPageHtml);
}
private void ProofreadMainControl_Load(object sender, EventArgs e)
{
this.web.NavigationCompleted += WebView2NavigationCompleted;
this.web.WebMessageReceived += (s, ex) =>
{
if (ex.TryGetWebMessageAsString() == "reload")
{
isShowingErrorPage = false;
web.Source = new Uri(Config.WebPath("correct"));
}
};
this.web.Source = new Uri(Config.WebPath("correct" ));
this.web.Source = new Uri(Config.WebPath("home?version=" + Config.APP_VERSION + "&t=" + DateTime.Now.Ticks));
//this.SizeChanged += ProofreadMainControl_SizeChanged;
}
private void ProofreadMainControl_SizeChanged(object sender, EventArgs e)
{
//if(this.minWidth > 0 && this.Width < this.minWidth)
//{
// SendKeys.Send("{ESC}");
// this.Width = this.minWidth;
//}
if(this.minWidth > 0 && this.Width < this.minWidth)
{
SendKeys.Send("{ESC}");
this.Width = this.minWidth;
}
}
public int LabelWidth()
{

View File

@ -1,103 +0,0 @@
using AIProofread.Controls;
using log4net.Config;
using log4net;
using System;
using System.IO;
using log4net.Appender;
using log4net.Layout;
using log4net.Repository.Hierarchy;
namespace AIProofread
{
public class LogHelper
{
public static FormLogger LoggerForm;
//private static readonly string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
public static ILog Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static LogHelper()
{
//log4net.GlobalContext.Properties["APP_DATA"] = Config.APP_LOG_PATH;
//XmlConfigurator.Configure();
//Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
PatternLayout layout = new PatternLayout("%date [%thread] %-5level %logger - %message%newline");
layout.ActivateOptions();
//string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
//string logFilePath = Path.Combine(appDataPath, "YourAppName", "logs");
RollingFileAppender roller = new RollingFileAppender();
roller.File = Config.APP_LOG_PATH;
roller.AppendToFile = true;
roller.RollingStyle = RollingFileAppender.RollingMode.Date;
roller.DatePattern = "yyyy-MM-dd'.txt'";
roller.StaticLogFileName = false;
roller.Layout = layout;
roller.ActivateOptions();
hierarchy.Root.AddAppender(roller);
hierarchy.Root.Level = log4net.Core.Level.Info;
hierarchy.Configured = true;
}
/// <summary>
///
/// </summary>
/// <param name="msg"></param>
public static void Log(string tag, string message)
{
string time = DateTime.Now.ToString("HH:mm:ss");
// 如果日志窗口已经打开,则显示日志
if (LoggerForm != null && !LoggerForm.IsDisposed && LoggerForm.Visible)
{
LoggerForm.Log(time, tag, message);
}
if (!Directory.Exists(Config.APP_LOG_PATH))
{
Directory.CreateDirectory(Config.APP_LOG_PATH);
}
Logger.Debug($"[{tag}] {message}");
//try
//{
// string path = Config.APP_LOG_PATH + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
// StreamWriter streamWriter = File.AppendText(path);
// streamWriter.WriteLine("***************************[" + tag + "]***************************");
// streamWriter.WriteLine("消息:" + message);
// streamWriter.WriteLine("时间:" + time);
// streamWriter.WriteLine();
// streamWriter.Flush();
// streamWriter.Close();
// streamWriter.Dispose();
//}
//catch (Exception) { }
}
public static void Log(string msg)
{
Log((Config.IS_WPS ? "WPS" : "WORD"), msg);
}
public static void Log(Exception e)
{
Logger.Error(Config.IS_WPS ? "WPS" : "WORD" + e.ToString(), e);
//Log(e.Message + "\n" + e.StackTrace);
}
public static void Log(string tag, Exception e)
{
Logger.Error(tag, e);
}
public static void LogToWeb(string msg)
{
if (Config.RUN_IN_DEBUG)
{
Globals.ThisAddIn.SendMessageToWeb("DEBUG-LOG", msg);
}
}
internal static ILog GetLogger(Type type)
{
return LogManager.GetLogger(type);
}
}
}

50
AIProofread/Logger.cs Normal file
View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AIProofread
{
public class Logger
{
private static readonly string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
/// <summary>
///
/// </summary>
/// <param name="msg"></param>
public static void Log(string msg)
{
string path = Config.APP_LOG_PATH + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
if (!Directory.Exists(Config.APP_LOG_PATH))
{
Directory.CreateDirectory(Config.APP_LOG_PATH);
}
StreamWriter streamWriter = File.AppendText(path);
streamWriter.WriteLine("***************************[" + (Config.IS_WPS ? "WPS" : "WORD") + "]***************************");
streamWriter.WriteLine("消息:" + msg);
streamWriter.WriteLine("时间:" + DateTime.Now.ToString("yyyy - MM - dd HH: mm:ss"));
streamWriter.WriteLine();
streamWriter.Flush();
streamWriter.Close();
streamWriter.Dispose();
}
public static void Log( Exception e)
{
Log(e.Message + "\n" + e.StackTrace);
}
public static void Log(string tag, Exception e)
{
Log(tag + "\n" + e.StackTrace);
}
public static void LogToWeb(string msg)
{
if (Config.RUN_IN_DEBUG)
{
Globals.ThisAddIn.SendMessageToWeb("DEBUG-LOG", msg);
}
}
}
}

View File

@ -1,47 +0,0 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AIProofread.Model
{
class BridgeResultModel
{
[JsonProperty("code")]
public int Code { get; set; }
[JsonProperty("message")]
public string Message { get; set; }
[JsonProperty("data")]
public object Data { get; set; }
}
public class BridgeResult
{
public static string Error()
{
return Error(-1, "error");
}
public static string Error(Exception ex)
{
return Error(-1, ex.Message);
}
public static string Error(string message)
{
return Error(-1, message);
}
public static string Error(int code, string message)
{
return JsonConvert.SerializeObject(new BridgeResultModel() { Code = code, Message = message });
}
public static string Success()
{
return Success(null);
}
public static string Success(object data)
{
return JsonConvert.SerializeObject(new BridgeResultModel() { Code = 0, Data = data, Message = "success" });
}
}
}

View File

@ -1,31 +0,0 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AIProofread.Model
{
public enum CommonsenseDetectionType
{
All = 1,
Paragraph = 2
}
public class CommonsenseDetectionItem
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("type")]
public CommonsenseDetectionType Type { get; set; }
[JsonProperty("summary")]
public string Summary { get; set; }
[JsonProperty("location")]
public string Location { get; set; }
[JsonProperty("result_content")]
public string ResultContent { get; set; }
}
}

View File

@ -1,21 +0,0 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AIProofread.Model
{
public class DocumentContent
{
[JsonProperty("origin")]
public string[] OriginCut { get; set; }
[JsonProperty("trim_cut")]
public string[] TrimCut { get; set; }
[JsonProperty("paragraphs")]
public string[] Paragraphs { get; set; }
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,159 +0,0 @@
using log4net;
using log4net.Repository.Hierarchy;
using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.Linq;
namespace AIProofread.Model
{
/// <summary>
/// 文档列表
/// </summary>
public class DocumentList
{
public ILog Logger = LogHelper.GetLogger(typeof(DocumentList));
public List<DocumentInfo> documentList = new List<DocumentInfo>();
public DocumentInfo ActiveDocument { get; set; }
public int Count => documentList.Count;
public void Add(DocumentInfo documentInfo)
{
documentList.Add(documentInfo);
}
public void Clear()
{
documentList.ForEach(doc => { doc.Dispose(); });
documentList.Clear();
}
public DocumentInfo Get(int index)
{
return documentList[index];
}
public DocumentInfo GetById(int id)
{
return Count > 0 ? documentList.FirstOrDefault(x => x.Id == id) : null;
}
public DocumentInfo Get(string uniqueId)
{
return Count > 0 ? documentList.FirstOrDefault(x => x.UniqueId == uniqueId) : null;
}
public DocumentInfo Get(Document doc)
{
return Count > 0 && doc != null ? documentList.FirstOrDefault(x => x.CurrentDocument == doc) : null;
}
public DocumentInfo GetActive()
{
// documentList.FirstOrDefault(x => x.IsActive)
return Count > 0 ? ActiveDocument : null;
}
public bool Contains(DocumentInfo documentInfo)
{
return Count > 0 && documentList.Contains(documentInfo);
}
public bool Contains(string uniqueId)
{
return Count > 0 && documentList.Any(x => x.UniqueId == uniqueId);
}
// 通过文档判断是否包含
public bool Contains(Document originDocument)
{
return Count > 0 && originDocument != null && documentList.Any(x => x.CurrentDocument == originDocument);
}
/// <summary>
/// 移除文档
/// </summary>
/// <param name="documentInfo"></param>
/// <returns></returns>
public bool Remove(DocumentInfo documentInfo)
{
return documentList.Remove(documentInfo);
}
public bool Remove(Document originDocument)
{
if (Count > 0 && originDocument != null)
{
documentList.RemoveAll(x =>
{
if (x.CurrentDocument == originDocument)
{
x.Close();
return true;
}
return false;
});
}
return true;
}
/// <summary>
/// 获取文档的索引
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public int IndexOf(DocumentInfo item)
{
return documentList.IndexOf(item);
}
/// <summary>
/// 设置当前激活的文档
/// </summary>
/// <param name="originDocument"></param>
public DocumentInfo SetActiveDocument(Document originDocument)
{
Logger.Debug("SetActiveDocument(113): " + originDocument.Name);
if (originDocument == null) return null;
var document = InitDocument(originDocument);
if (document == null)
{
Logger.Error("Document not exists SetActiveDocument");
return null;
}
if (ActiveDocument != null && ActiveDocument.CurrentDocument != originDocument)
{
// WPS 只有一个窗口 所以需要先关闭之前文档的面板
ActiveDocument?.Deactive();
}
// 如果存在,则设置激活
ActiveDocument = document;
//document.IsActive = true;
document.Active();
document.CheckBtnStatus();
return document;
}
internal void HideAllPane()
{
documentList.ForEach(d => d.HidePane());
}
public DocumentInfo InitDocument(Document originDocument)
{
var document = Get(originDocument);
try
{
// 如果不存在,则添加
if (document == null)
{
Logger.Debug("Document not exists,InitDocument: " + originDocument.Name);
document = new DocumentInfo(originDocument);
Add(document);
}
}catch(Exception ex)
{
Logger.Error("InitDocument error: " + ex.Message,ex);
}
return document;
}
}
}

View File

@ -1,148 +0,0 @@
using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using UtilLib;
namespace AIProofread.Model
{
public class ExportDataItem
{
public int PageNumber { get; set; }
public int LineNumber { get; set; }
public string OriginSentence { get; set; }
public CorrectItem Item { get; set; }
private static readonly int MAX_WORD_LENGTH = 128;
public ExportDataItem(CorrectItem item, int pageNumber, int lineNumber,string originSentence = "")
{
Item = item;
PageNumber = pageNumber;
LineNumber = lineNumber;
OriginSentence = originSentence;
}
public static string GetSentence(ProofreadItem item)
{
var sentence = item.OriginSentence;
var isInsert = item.content.Tag == "i";
var limitLength = Math.Max(item.content.Origin.Length, MAX_WORD_LENGTH);
if (sentence.Length <= limitLength && !isInsert)
{
return sentence;
}
if (isInsert)
{
Debug.WriteLine("GetReadDocumentFilePath Start ==>", DateTime.Now.ToLongTimeString());
}
// 截取中间位置
if(sentence.Length > limitLength)
{
try
{
var middlePosition = limitLength / 2;
var cutStart = item.content.Start - middlePosition;
// 越界了
if (cutStart < 0)
{
cutStart = 0;
}
var originText = sentence.Substring(cutStart, Math.Min(sentence.Length - cutStart, limitLength));
if (!isInsert)
{
item.content.Start = item.content.Start - cutStart;
item.content.End = item.content.End - cutStart;
return originText;
}
}
catch (Exception ex)
{
LogHelper.Log(ex);
}
}
var sb = new StringBuilder();
if (sentence.Length <= limitLength && isInsert)
{
var before = item.content.Start == 0 ? string.Empty: sentence.Substring(0, item.content.Start);
var after = item.content.Start >= sentence.Length ? string.Empty : sentence.Substring(item.content.Start);
if (!string.IsNullOrEmpty(before))
{
sb.Append(before);
}
//
sb.Append(ToolUtil.GetBlankText(item.content.Text.Length, "˽"));
if (!string.IsNullOrEmpty(after))
{
sb.Append(after);
}
item.content.Start = item.content.Start;
item.content.End = item.content.Start + 1;
return sb.ToString().Trim();
}
var range = item.mark.Range;
// 获取range所在句子
//var first = range.Sentences.First.Start;
//var last = range.Sentences.Last.End;
var sentences = range.Sentences;
foreach (Microsoft.Office.Interop.Word.Range s in sentences)
{
var str = s.Text;
if (isInsert && range.Start >= s.Start && range.End <= s.End)
{
sb.Append(str.Replace(" ", "˽"));
}
else
{
sb.Append(str);
}
}
var first = sentences.First;
// 内容位置:用于后续标红
item.content.Start = range.Start - first.Start;
item.content.End = range.End - first.Start;
return sb.ToString().Trim();
}
public static List<ExportDataItem> GetExportData(Dictionary<int, ProofreadItem> marks)
{
List<ExportDataItem> list = new List<ExportDataItem>();
foreach (var item in marks)
{
// 没有mark
if (item.Value.mark == null) continue;
var it = item.Value.content;
// 单纯删除空格
if (it.Tag == "d" && it.Origin.Trim().Length == 0) continue;
var range = item.Value.mark.Range.Duplicate;
range.End = item.Value.mark.Start;
// 获取书签在文档的页码数
var pageNumber = range.get_Information(WdInformation.wdActiveEndPageNumber); // wdActiveEndPageNumber
// 获取书签在当前页面的行数
var lineNumber = range.get_Information(WdInformation.wdFirstCharacterLineNumber);
list.Add(new ExportDataItem(it, pageNumber, lineNumber,GetSentence(item.Value)));
}
// 根据页码和行数排序
list.Sort((x, y) =>
{
if (x.PageNumber == y.PageNumber)
{
if(x.LineNumber == y.LineNumber)
{
// 如果行数相同,则根据起始位置排序
return x.Item.Id.CompareTo(y.Item.Id);
}
// 如果页码相同,则根据行数排序
return x.LineNumber.CompareTo(y.LineNumber);
}
return x.PageNumber.CompareTo(y.PageNumber);
});
return list;
}
}
}

View File

@ -1,10 +0,0 @@
using Microsoft.Office.Tools.Word;
namespace AIProofread.Model
{
public class InsertMarkData
{
public Bookmark Mark { get; set; }
public int InsertLength { get; set; }
}
}

View File

@ -1,11 +0,0 @@
using Microsoft.Office.Interop.Word;
namespace AIProofread.Model
{
public class ProofreadRangeInfo
{
public float Size { get; set; }
public WdColor Background { get; set; }
public WdColor Color { get; set; }
}
}

View File

@ -8,36 +8,32 @@ using Bookmark = Microsoft.Office.Tools.Word.Bookmark;
namespace UtilLib
{
public class ProofreadItem
{
public Bookmark mark;
public string OriginSentence { get; set; }
public CorrectItem content;
public float originSize;
public WdColor originColor;
public WdColor originBackgroundColor;
public CorrectedContent content;
private float originSize;
private WdColor originColor;
private WdColor originBackgroundColor;
public string Name { get; set; }
public int DocumentId { get; set; }
public ProofreadItem(CorrectItem content, string originSentence, int documentId)
public ProofreadItem(CorrectedContent content,int documentId)
{
this.content = content;
this.DocumentId = documentId;
this.OriginSentence = originSentence;
InitBookMark(null);
SetMarkName();
}
private void SetMarkName()
{
this.Name = this.mark != null ? mark.Name : Config.BuildBookmarkName(content.Id);
this.Name = this.mark != null ? mark.Name : Config.BuildBookmarkName(content.id);
}
public ProofreadItem(CorrectItem content, string originSentence, Bookmark bookmark, int documentId)
public ProofreadItem(CorrectedContent content, Bookmark bookmark, int documentId)
{
this.DocumentId = documentId;
this.OriginSentence = originSentence;
this.content = content;
if (bookmark != null)
{
@ -56,13 +52,13 @@ namespace UtilLib
{
// 创建mark
this.mark = bookmark != null ? bookmark
: DocumentUtil.AddBookmark(content.Tag == "i" ? null : content.Color, content.Start, content.End);
: DocumentUtil.AddBookmark(content.tag == "i" ? null : content.color, content.start, content.end);
if (mark != null)
{
// 记录目前字体
originSize = mark.Range.Font.Size;
// 设置名称
mark.Name = Config.BuildBookmarkName(content.Id);
mark.Name = Config.BuildBookmarkName(content.id);
}
}
@ -76,14 +72,14 @@ namespace UtilLib
private void OnMarkSelected(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e)
{
//throw new System.NotImplementedException();
Bridge.bridge.SelectMarkById(content.Id, DocumentId);
Bridge.bridge.SelectMarkById(content.id,DocumentId);
}
public void Select()
{
if (mark == null) return;
mark.Range.Font.Size = originSize + 2; // 将选中标签文本放大字体
//mark.Select();
mark.Select();
}
public void UnSelect()
@ -96,7 +92,7 @@ namespace UtilLib
}
catch (Exception e)
{
LogHelper.Log(e);
Logger.Log(e);
}
}
@ -105,15 +101,12 @@ namespace UtilLib
try
{
if (mark == null) return;
// 颜色转码
var color = (WdColor)ColorTranslator.ToOle(Colors.FromHex(Config.TextBackgroundColor));
// 给选区添加背景颜色
mark.Shading.BackgroundPatternColor = color;
//mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick;
mark.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(content.color));
}
catch (Exception e)
{
LogHelper.Log(e);
Logger.Log(e);
}
}
@ -131,113 +124,49 @@ namespace UtilLib
}
catch (Exception e)
{
LogHelper.Log(e);
}
}
private void PrepareCommentProcess(Bookmark mark)
{
var doc = Globals.ThisAddIn.Application.ActiveDocument;
var fullRange = doc.Range();
var range = mark.Range;
var checkRange = doc.Range(
Math.Max(range.Start - 2, fullRange.Start),
Math.Min(range.End + 2, fullRange.End)
);
var comments = checkRange.Comments;
// 判断当前书签选区内容是否有评论
if (comments != null && comments.Count > 0)
{
LogHelper.Log("有批注");
foreach (Microsoft.Office.Interop.Word.Comment item in comments)
{
// 判断当前评论和书签选区是否一致
if (item.Scope.Start == range.Start && item.Scope.End == range.End)
{
LogHelper.Log("删除批注:" + item.Range.Text);
// 删除评论
item.Delete();
}
}
Logger.Log(e);
}
}
/// <summary>
/// 处理校对项
/// </summary>
/// <param name="status"></param>
public void Process(int status)
{
if (mark == null) return;
//
content.IsAccept = status;
// 采纳
content.isAccept = status;
if (status == AcceptStatus.Accept)
{
PrepareCommentProcess(mark);
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 = "";
}
ResetMarkStyle();
} // 复核 或者 忽略
}
else if (status == AcceptStatus.Review || status == AcceptStatus.Ignore)
{
ResetMarkStyle();
// 新增添加了空格 所以当忽略时还原
if (content.Tag == "i")
if (content.tag == "i")
{
mark.Text = "";
}
}
// 撤销处理
else if (status == AcceptStatus.Default)
{
// 撤销
if (content.Tag == "r" || content.Tag == "d")
if (content.tag == "r" || content.tag == "d")
{
mark.Text = content.Origin;
mark.Text = content.origin;
}
else if (content.Tag == "i")
else if (content.tag == "i")
{
mark.Text = ToolUtil.GetBlankText(content.Text.Length);
mark.Text = ToolUtil.GetBlankText(content.text.Length);
}
SetMarkStyle();
}
// 处理由于批注导致出现百分号
AfterMarkTextChanged(mark);
}
private void AfterMarkTextChanged(Bookmark mark)
{
// 获取标签所在段落最后的位置
var paragraphEnd = mark.Paragraphs.Last.Range.End;
var end = mark.End + 2 > paragraphEnd ? paragraphEnd : mark.End + 2;
var rng = Globals.ThisAddIn.ActiveDocument.Range(mark.End, end);
// 判断书签范围内是否有批注
if (rng.Text?.IndexOf("%") != -1)
{
LogHelper.Log($"处理百分号问题:有批注");
if (rng.Comments != null && rng.Comments.Count > 0)
{
for (var i = 1; i < rng.Comments.Count; i++)
{
var comment = rng.Comments[i];
comment.Scope.Text = comment.Scope.Text.Replace("%", "");
}
}
else
{
rng.Text = rng.Text.Replace("%", "");
}
}
}
}
}

View File

@ -7,11 +7,11 @@ using System.Security;
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("AI校对王")]
[assembly: AssemblyDescription("AI校对王 2.2.6")]
[assembly: AssemblyDescription("AI校对王")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("果麦文化传媒股份有限公司")]
[assembly: AssemblyProduct("AI校对王 2.2.6")]
[assembly: AssemblyCopyright("Copyright © 果麦文化传媒股份有限公司 2025")]
[assembly: AssemblyCompany("果麦文化")]
[assembly: AssemblyProduct("AI校对王")]
[assembly: AssemblyCopyright("Copyright © GuoMai 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -33,6 +33,6 @@ using System.Security;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.2.6.0")]
[assembly: AssemblyFileVersion("2.2.6.0")]
[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyFileVersion("1.0.0.1")]

View File

@ -60,26 +60,6 @@ namespace AIProofread.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap button {
get {
object obj = ResourceManager.GetObject("button", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap button_default {
get {
object obj = ResourceManager.GetObject("button_default", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
@ -90,36 +70,6 @@ namespace AIProofread.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap form_bg {
get {
object obj = ResourceManager.GetObject("form_bg", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_ai_robot {
get {
object obj = ResourceManager.GetObject("icon-ai-robot", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_ai_robot_wps {
get {
object obj = ResourceManager.GetObject("icon-ai-robot-wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
@ -160,56 +110,6 @@ namespace AIProofread.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_close {
get {
object obj = ResourceManager.GetObject("icon_close", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_export {
get {
object obj = ResourceManager.GetObject("icon-export", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_export_wps {
get {
object obj = ResourceManager.GetObject("icon-export-wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_history {
get {
object obj = ResourceManager.GetObject("icon-history", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_history_wps {
get {
object obj = ResourceManager.GetObject("icon-history-wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
@ -230,46 +130,6 @@ namespace AIProofread.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_manual {
get {
object obj = ResourceManager.GetObject("icon-manual", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_manual_wps {
get {
object obj = ResourceManager.GetObject("icon-manual-wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_panel {
get {
object obj = ResourceManager.GetObject("icon-panel", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_panel_wps {
get {
object obj = ResourceManager.GetObject("icon-panel-wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
@ -310,46 +170,6 @@ namespace AIProofread.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_refresh {
get {
object obj = ResourceManager.GetObject("icon-refresh", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_refresh_wps {
get {
object obj = ResourceManager.GetObject("icon-refresh-wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_save {
get {
object obj = ResourceManager.GetObject("icon-save", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_save_wps {
get {
object obj = ResourceManager.GetObject("icon-save-wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
@ -380,26 +200,6 @@ namespace AIProofread.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_update_new {
get {
object obj = ResourceManager.GetObject("icon-update-new", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap icon_update_new_wps {
get {
object obj = ResourceManager.GetObject("icon-update-new-wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
@ -429,45 +229,5 @@ namespace AIProofread.Properties {
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap logo {
get {
object obj = ResourceManager.GetObject("logo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap logo_no_text {
get {
object obj = ResourceManager.GetObject("logo_no_text", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap logo_no_text_wps {
get {
object obj = ResourceManager.GetObject("logo_no_text_wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap logo_wps {
get {
object obj = ResourceManager.GetObject("logo_wps", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -118,127 +118,56 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-setting-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-setting-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-user" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-user.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-save-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-save-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-proofread-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-proofread-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-history" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-history.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-phone" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-phone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-user-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-user-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="form_bg" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\form_bg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-save" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-logout-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-logout-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-book-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-book-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-update-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-update-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-manual" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-manual.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-setting" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-update" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-update.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-clear-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-clear-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-book" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-book.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-panel-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-panel-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-logout" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-logout.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="favicon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\favicon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-ai-robot-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-ai-robot-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-setting" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-refresh-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-refresh-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-phone" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-phone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-update" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-update.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-book" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-book.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-clear" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-clear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-manual-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-manual-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-proofread" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-proofread.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="button_default" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\button_default.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-user" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-user.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-export-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-export-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-book-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-book-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-refresh" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-refresh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-clear-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-clear-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="logo_no_text" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\logo_no_text.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="logo_no_text_wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\logo_no_text_wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="logo_wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\logo_wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-export" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-export.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-logout-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-logout-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-phone-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-phone-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-history-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-history-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-proofread-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-proofread-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-panel" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-panel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-setting-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-setting-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-ai-robot" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-ai-robot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-update-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-update-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-logout" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-logout.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon_close" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon_close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-proofread" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-proofread.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-update-new" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-update-new.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon-update-new-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-update-new-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icon-user-wps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-user-wps.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 980 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 948 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 942 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -36,59 +36,31 @@ namespace AIProofread
/// </summary>
private void InitializeComponent()
{
Microsoft.Office.Tools.Ribbon.RibbonDropDownItem ribbonDropDownItemImpl1 = this.Factory.CreateRibbonDropDownItem();
Microsoft.Office.Tools.Ribbon.RibbonDropDownItem ribbonDropDownItemImpl2 = this.Factory.CreateRibbonDropDownItem();
Microsoft.Office.Tools.Ribbon.RibbonDropDownItem ribbonDropDownItemImpl3 = this.Factory.CreateRibbonDropDownItem();
this.tabAIProofread = this.Factory.CreateRibbonTab();
this.group1 = this.Factory.CreateRibbonGroup();
this.menuProofreadList = this.Factory.CreateRibbonMenu();
this.BtnProofreadExact = this.Factory.CreateRibbonButton();
this.BtnProofreadFull = this.Factory.CreateRibbonButton();
this.BtnExportProofreadResult = this.Factory.CreateRibbonButton();
this.BtnProofreadAll = this.Factory.CreateRibbonButton();
this.btnClear = this.Factory.CreateRibbonButton();
this.btnOpenLexicon = this.Factory.CreateRibbonButton();
this.menuSencenDect = this.Factory.CreateRibbonMenu();
this.btnDetectionAll = this.Factory.CreateRibbonButton();
this.btnDetectionParagraph = this.Factory.CreateRibbonButton();
this.btnDetectionHistory = this.Factory.CreateRibbonButton();
this.btnSetting = this.Factory.CreateRibbonButton();
this.Group = this.Factory.CreateRibbonGroup();
this.ButtonSaveCache = this.Factory.CreateRibbonButton();
this.ButtonLoadCache = this.Factory.CreateRibbonButton();
this.grpOther = this.Factory.CreateRibbonGroup();
this.BtnGetContact = this.Factory.CreateRibbonButton();
this.BtnUpdate = this.Factory.CreateRibbonButton();
this.btnLogin = this.Factory.CreateRibbonButton();
this.btnLogout = this.Factory.CreateRibbonButton();
this.LblDate = this.Factory.CreateRibbonLabel();
this.LblNickname = this.Factory.CreateRibbonLabel();
this.group2 = this.Factory.CreateRibbonGroup();
this.BtnShowPanel = this.Factory.CreateRibbonButton();
this.BtnShowManual = this.Factory.CreateRibbonButton();
this.LblDate = this.Factory.CreateRibbonLabel();
this.grpDebug = this.Factory.CreateRibbonGroup();
this.btnShowPane = this.Factory.CreateRibbonButton();
this.btnHidePane = this.Factory.CreateRibbonButton();
this.BtnOpenLog = this.Factory.CreateRibbonButton();
this.BtnOpenLogger = this.Factory.CreateRibbonButton();
this.BtnTest = this.Factory.CreateRibbonButton();
this.BtnOpenAppDir = this.Factory.CreateRibbonButton();
this.BtnShowVersion = this.Factory.CreateRibbonButton();
this.button2 = this.Factory.CreateRibbonButton();
this.dropDown1 = this.Factory.CreateRibbonDropDown();
this.button1 = this.Factory.CreateRibbonButton();
this.tabAIProofread.SuspendLayout();
this.group1.SuspendLayout();
this.Group.SuspendLayout();
this.grpOther.SuspendLayout();
this.group2.SuspendLayout();
this.grpDebug.SuspendLayout();
this.SuspendLayout();
//
// tabAIProofread
//
this.tabAIProofread.Groups.Add(this.group1);
this.tabAIProofread.Groups.Add(this.Group);
this.tabAIProofread.Groups.Add(this.grpOther);
this.tabAIProofread.Groups.Add(this.group2);
this.tabAIProofread.Groups.Add(this.grpDebug);
this.tabAIProofread.Label = "AI校对王";
this.tabAIProofread.Name = "tabAIProofread";
@ -96,52 +68,32 @@ namespace AIProofread
//
// group1
//
this.group1.Items.Add(this.menuProofreadList);
this.group1.Items.Add(this.BtnExportProofreadResult);
this.group1.Items.Add(this.BtnProofreadAll);
this.group1.Items.Add(this.btnClear);
this.group1.Items.Add(this.btnOpenLexicon);
this.group1.Items.Add(this.menuSencenDect);
this.group1.Items.Add(this.btnSetting);
this.group1.Items.Add(this.BtnGetContact);
this.group1.Items.Add(this.BtnUpdate);
this.group1.Items.Add(this.btnLogin);
this.group1.Items.Add(this.btnLogout);
this.group1.Items.Add(this.LblNickname);
this.group1.Items.Add(this.LblDate);
this.group1.Name = "group1";
//
// menuProofreadList
// BtnProofreadAll
//
this.menuProofreadList.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.menuProofreadList.Image = global::AIProofread.Properties.Resources.icon_proofread;
this.menuProofreadList.Items.Add(this.BtnProofreadExact);
this.menuProofreadList.Items.Add(this.BtnProofreadFull);
this.menuProofreadList.Label = "全文校对\r\n";
this.menuProofreadList.Name = "menuProofreadList";
this.menuProofreadList.ShowImage = true;
//
// BtnProofreadExact
//
this.BtnProofreadExact.Label = "优先查准";
this.BtnProofreadExact.Name = "BtnProofreadExact";
this.BtnProofreadExact.ShowImage = true;
this.BtnProofreadExact.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnProofreadExact_Click);
//
// BtnProofreadFull
//
this.BtnProofreadFull.Label = "优先查全";
this.BtnProofreadFull.Name = "BtnProofreadFull";
this.BtnProofreadFull.ShowImage = true;
this.BtnProofreadFull.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnProofreadFull_Click);
//
// BtnExportProofreadResult
//
this.BtnExportProofreadResult.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.BtnExportProofreadResult.Image = global::AIProofread.Properties.Resources.icon_export;
this.BtnExportProofreadResult.Label = "勘误表导出\r\n";
this.BtnExportProofreadResult.Name = "BtnExportProofreadResult";
this.BtnExportProofreadResult.ShowImage = true;
this.BtnExportProofreadResult.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnExportProofreadResult_Click);
this.BtnProofreadAll.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.BtnProofreadAll.Image = global::AIProofread.Properties.Resources.icon_proofread;
this.BtnProofreadAll.Label = "全文校对\n";
this.BtnProofreadAll.Name = "BtnProofreadAll";
this.BtnProofreadAll.ShowImage = true;
this.BtnProofreadAll.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnProofreadAll_Click);
//
// btnClear
//
this.btnClear.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.btnClear.Image = global::AIProofread.Properties.Resources.icon_clear;
this.btnClear.Label = "清除标注\r\n";
this.btnClear.Label = "清除标注\n";
this.btnClear.Name = "btnClear";
this.btnClear.ShowImage = true;
this.btnClear.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnClear_Click);
@ -150,92 +102,25 @@ namespace AIProofread
//
this.btnOpenLexicon.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.btnOpenLexicon.Image = global::AIProofread.Properties.Resources.icon_book;
this.btnOpenLexicon.Label = "词库管理\r\n";
this.btnOpenLexicon.Label = "词库管理\n";
this.btnOpenLexicon.Name = "btnOpenLexicon";
this.btnOpenLexicon.ShowImage = true;
this.btnOpenLexicon.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnOpenLexicon_Click);
//
// menuSencenDect
//
this.menuSencenDect.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.menuSencenDect.Image = global::AIProofread.Properties.Resources.icon_ai_robot;
this.menuSencenDect.Items.Add(this.btnDetectionAll);
this.menuSencenDect.Items.Add(this.btnDetectionParagraph);
this.menuSencenDect.Items.Add(this.btnDetectionHistory);
this.menuSencenDect.Label = "常识性校对助手\r\n";
this.menuSencenDect.Name = "menuSencenDect";
this.menuSencenDect.ShowImage = true;
//
// btnDetectionAll
//
this.btnDetectionAll.Label = "全文常识检测\r\n";
this.btnDetectionAll.Name = "btnDetectionAll";
this.btnDetectionAll.ShowImage = true;
this.btnDetectionAll.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnDetectionAll_Click);
//
// btnDetectionParagraph
//
this.btnDetectionParagraph.Enabled = false;
this.btnDetectionParagraph.Label = "段落常识检测\r\n";
this.btnDetectionParagraph.Name = "btnDetectionParagraph";
this.btnDetectionParagraph.ShowImage = true;
this.btnDetectionParagraph.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnDetectionParagraph_Click);
//
// btnDetectionHistory
//
this.btnDetectionHistory.Label = "历史检测记录\r\n";
this.btnDetectionHistory.Name = "btnDetectionHistory";
this.btnDetectionHistory.ShowImage = true;
this.btnDetectionHistory.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnDetectionHistory_Click);
//
// btnSetting
//
this.btnSetting.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.btnSetting.Image = global::AIProofread.Properties.Resources.icon_setting;
this.btnSetting.Label = "设置\r\n";
this.btnSetting.Label = "插件设置\n";
this.btnSetting.Name = "btnSetting";
this.btnSetting.ShowImage = true;
this.btnSetting.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnSetting_Click);
//
// Group
//
this.Group.Items.Add(this.ButtonSaveCache);
this.Group.Items.Add(this.ButtonLoadCache);
this.Group.Name = "Group";
//
// ButtonSaveCache
//
this.ButtonSaveCache.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.ButtonSaveCache.Image = global::AIProofread.Properties.Resources.icon_save;
this.ButtonSaveCache.Label = "保存进度\r\n";
this.ButtonSaveCache.Name = "ButtonSaveCache";
this.ButtonSaveCache.ShowImage = true;
this.ButtonSaveCache.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.ButtonSaveCache_Click);
//
// ButtonLoadCache
//
this.ButtonLoadCache.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.ButtonLoadCache.Image = global::AIProofread.Properties.Resources.icon_history;
this.ButtonLoadCache.Label = "加载进度\r\n";
this.ButtonLoadCache.Name = "ButtonLoadCache";
this.ButtonLoadCache.ShowImage = true;
this.ButtonLoadCache.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.ButtonLoadCache_Click);
//
// grpOther
//
this.grpOther.Items.Add(this.BtnGetContact);
this.grpOther.Items.Add(this.BtnUpdate);
this.grpOther.Items.Add(this.btnLogin);
this.grpOther.Items.Add(this.btnLogout);
this.grpOther.Items.Add(this.LblDate);
this.grpOther.Items.Add(this.LblNickname);
this.grpOther.Name = "grpOther";
//
// BtnGetContact
//
this.BtnGetContact.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.BtnGetContact.Image = global::AIProofread.Properties.Resources.icon_phone;
this.BtnGetContact.Label = "联系客服\r\n";
this.BtnGetContact.Label = "联系客服\n";
this.BtnGetContact.Name = "BtnGetContact";
this.BtnGetContact.ShowImage = true;
this.BtnGetContact.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnGetContact_Click);
@ -244,7 +129,7 @@ namespace AIProofread
//
this.BtnUpdate.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.BtnUpdate.Image = global::AIProofread.Properties.Resources.icon_update;
this.BtnUpdate.Label = "版本更新\r\n";
this.BtnUpdate.Label = "版本更新\n";
this.BtnUpdate.Name = "BtnUpdate";
this.BtnUpdate.ShowImage = true;
this.BtnUpdate.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnUpdate_Click);
@ -253,71 +138,39 @@ namespace AIProofread
//
this.btnLogin.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.btnLogin.Image = global::AIProofread.Properties.Resources.icon_user;
this.btnLogin.Label = "用户登录\r\n";
this.btnLogin.Label = "用户登录\n";
this.btnLogin.Name = "btnLogin";
this.btnLogin.ScreenTip = "用户登录\r\n";
this.btnLogin.ShowImage = true;
this.btnLogin.SuperTip = "通过手机验证码或者密码登录账号";
this.btnLogin.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnLogin_Click);
//
// btnLogout
//
this.btnLogout.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.btnLogout.Image = global::AIProofread.Properties.Resources.icon_logout;
this.btnLogout.Label = "退出登录\r\n";
this.btnLogout.Label = "退出登录\n";
this.btnLogout.Name = "btnLogout";
this.btnLogout.ShowImage = true;
this.btnLogout.Visible = false;
this.btnLogout.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnLogout_Click);
//
// LblDate
//
this.LblDate.Label = "过期时间:";
this.LblDate.Name = "LblDate";
this.LblDate.Visible = false;
//
// LblNickname
//
this.LblNickname.Label = "xxx 已登录";
this.LblNickname.Name = "LblNickname";
this.LblNickname.Visible = false;
//
// group2
// LblDate
//
this.group2.Items.Add(this.BtnShowPanel);
this.group2.Items.Add(this.BtnShowManual);
this.group2.Name = "group2";
//
// BtnShowPanel
//
this.BtnShowPanel.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.BtnShowPanel.Enabled = false;
this.BtnShowPanel.Image = global::AIProofread.Properties.Resources.icon_panel;
this.BtnShowPanel.Label = "显示面板\r\n";
this.BtnShowPanel.Name = "BtnShowPanel";
this.BtnShowPanel.ShowImage = true;
this.BtnShowPanel.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnShowPanel_Click);
//
// BtnShowManual
//
this.BtnShowManual.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
this.BtnShowManual.Image = global::AIProofread.Properties.Resources.icon_manual;
this.BtnShowManual.Label = "用户手册\r\n";
this.BtnShowManual.Name = "BtnShowManual";
this.BtnShowManual.ShowImage = true;
this.BtnShowManual.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnShowManual_Click);
this.LblDate.Label = "过期时间:";
this.LblDate.Name = "LblDate";
this.LblDate.Visible = false;
//
// grpDebug
//
this.grpDebug.Items.Add(this.btnShowPane);
this.grpDebug.Items.Add(this.btnHidePane);
this.grpDebug.Items.Add(this.BtnOpenLog);
this.grpDebug.Items.Add(this.BtnOpenLogger);
this.grpDebug.Items.Add(this.BtnTest);
this.grpDebug.Items.Add(this.BtnOpenAppDir);
this.grpDebug.Items.Add(this.BtnShowVersion);
this.grpDebug.Items.Add(this.button2);
this.grpDebug.Items.Add(this.dropDown1);
this.grpDebug.Items.Add(this.button1);
this.grpDebug.Label = "开发调试";
this.grpDebug.Name = "grpDebug";
this.grpDebug.Visible = false;
@ -340,46 +193,11 @@ namespace AIProofread
this.BtnOpenLog.Name = "BtnOpenLog";
this.BtnOpenLog.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnOpenLog_Click);
//
// BtnOpenLogger
// button1
//
this.BtnOpenLogger.Label = "打开日志窗口";
this.BtnOpenLogger.Name = "BtnOpenLogger";
this.BtnOpenLogger.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnOpenLogger_Click);
//
// BtnTest
//
this.BtnTest.Label = "获取当前位置";
this.BtnTest.Name = "BtnTest";
this.BtnTest.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnTest_Click);
//
// BtnOpenAppDir
//
this.BtnOpenAppDir.Label = "打开插件目录";
this.BtnOpenAppDir.Name = "BtnOpenAppDir";
this.BtnOpenAppDir.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnOpenAppDir_Click);
//
// BtnShowVersion
//
this.BtnShowVersion.Label = "版本查看";
this.BtnShowVersion.Name = "BtnShowVersion";
this.BtnShowVersion.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnShowVersion_Click);
//
// button2
//
this.button2.Label = "打开登录窗口";
this.button2.Name = "button2";
this.button2.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button2_Click);
//
// dropDown1
//
ribbonDropDownItemImpl1.Label = "开发";
ribbonDropDownItemImpl2.Label = "测试";
ribbonDropDownItemImpl3.Label = "生产";
this.dropDown1.Items.Add(ribbonDropDownItemImpl1);
this.dropDown1.Items.Add(ribbonDropDownItemImpl2);
this.dropDown1.Items.Add(ribbonDropDownItemImpl3);
this.dropDown1.Label = "环境";
this.dropDown1.Name = "dropDown1";
this.button1.Label = "更新测试版本";
this.button1.Name = "button1";
this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button1_Click);
//
// Ribbon1
//
@ -391,12 +209,6 @@ namespace AIProofread
this.tabAIProofread.PerformLayout();
this.group1.ResumeLayout(false);
this.group1.PerformLayout();
this.Group.ResumeLayout(false);
this.Group.PerformLayout();
this.grpOther.ResumeLayout(false);
this.grpOther.PerformLayout();
this.group2.ResumeLayout(false);
this.group2.PerformLayout();
this.grpDebug.ResumeLayout(false);
this.grpDebug.PerformLayout();
this.ResumeLayout(false);
@ -411,6 +223,7 @@ namespace AIProofread
internal Microsoft.Office.Tools.Ribbon.RibbonLabel LblNickname;
internal Microsoft.Office.Tools.Ribbon.RibbonLabel LblDate;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnLogin;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnProofreadAll;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnClear;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnOpenLexicon;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnSetting;
@ -420,27 +233,7 @@ namespace AIProofread
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnShowPane;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnHidePane;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnOpenLog;
internal Microsoft.Office.Tools.Ribbon.RibbonGroup Group;
internal Microsoft.Office.Tools.Ribbon.RibbonButton ButtonSaveCache;
internal Microsoft.Office.Tools.Ribbon.RibbonButton ButtonLoadCache;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnOpenLogger;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnTest;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnOpenAppDir;
internal Microsoft.Office.Tools.Ribbon.RibbonGroup group2;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnShowPanel;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnExportProofreadResult;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnShowVersion;
internal Microsoft.Office.Tools.Ribbon.RibbonDropDown dropDown1;
internal Microsoft.Office.Tools.Ribbon.RibbonGroup grpOther;
internal Microsoft.Office.Tools.Ribbon.RibbonMenu menuSencenDect;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnDetectionAll;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnDetectionParagraph;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnDetectionHistory;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnShowManual;
internal Microsoft.Office.Tools.Ribbon.RibbonMenu menuProofreadList;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnProofreadExact;
internal Microsoft.Office.Tools.Ribbon.RibbonButton BtnProofreadFull;
internal Microsoft.Office.Tools.Ribbon.RibbonButton button2;
internal Microsoft.Office.Tools.Ribbon.RibbonButton button1;
}
partial class ThisRibbonCollection

View File

@ -3,118 +3,63 @@ using System;
using System.Diagnostics;
using AIProofread.Controls;
using UtilLib;
using System.Drawing;
using System.Security.Cryptography;
using Microsoft.Office.Interop.Word;
using System.IO;
using System.Threading.Tasks;
using AIProofread.Util;
using Microsoft.Office.Tools.Word;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AIProofread.core;
using System.Windows.Forms;
using AIProofread.Properties;
using System.Security.Policy;
namespace AIProofread
{
public partial class Ribbon1
{
private bool IS_LOGIN = false;
private Userinfo currentLoginUserinfo;
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
//btnLogin.Label = "用户\n登录";
//btnLogout.Label = "退出\n登录";
Globals.ThisAddIn.ribbon = this;
InitModule();
Globals.ThisAddIn.ribbon = this;
ShowDebug();
}
/// <summary>
/// 用于调试或测试
/// </summary>
public void InitModule()
public void ShowDebug()
{
menuProofreadList.Visible = AppModule.ENABLE_PROOFREAD;
BtnExportProofreadResult.Visible = AppModule.ENABLE_EXPORT_PROOFREAD_RESULT;
btnOpenLexicon.Visible = AppModule.ENABLE_LEXICON_MANAGE;
menuSencenDect.Visible = AppModule.ENABLE_COMMONSENSE_CHECK;
btnSetting.Visible = AppModule.ENABLE_SETTING;
ButtonSaveCache.Visible = AppModule.ENABLE_SAVE_CACHE;
ButtonLoadCache.Visible = AppModule.ENABLE_LOAD_CACHE;
BtnGetContact.Visible = AppModule.ENABLE_CUSTOMER_SERVICE;
BtnUpdate.Visible = AppModule.ENABLE_UPGRADE;
BtnShowManual.Visible = AppModule.ENABLE_HELP;
// 调试面板
grpDebug.Visible = Config.RUN_IN_DEBUG;
}
public void SetCommonBtnStatus(bool status)
{
// BtnProofreadAll.Enabled = status;
menuProofreadList.Enabled = status;
btnClear.Enabled = status;
btnOpenLexicon.Enabled = status;
btnSetting.Enabled = status;
BtnUpdate.Enabled = status;
btnLogin.Enabled = status;
btnLogout.Enabled = status;
ButtonLoadCache.Enabled = status;
ButtonSaveCache.Enabled = status;
menuSencenDect.Enabled = status;
//BtnShowPanel.Enabled = status;
BtnExportProofreadResult.Enabled = status;
}
public void SetBtnStatus(string key, bool status)
{
if (key == "proofread-status")
if (Config.RUN_IN_DEBUG)
{
SetCommonBtnStatus(status);
}
else if (key == "view-panel")
{
BtnShowPanel.Enabled = status;
}
else if (key == "disable-by-upgrade")
{
SetCommonBtnStatus(status);
BtnUpdate.Enabled = true;
BtnShowPanel.Enabled = status;
grpDebug.Visible = true;
}
}
/// <summary>
/// 初始化WPS相关功能(图标)
/// </summary>
public void InitWPS()
{
menuProofreadList.Image = AIProofread.Properties.Resources.icon_proofread_wps;
BtnProofreadAll.Image = AIProofread.Properties.Resources.icon_proofread_wps;
btnClear.Image = AIProofread.Properties.Resources.icon_clear_wps;
btnOpenLexicon.Image = AIProofread.Properties.Resources.icon_book_wps;
btnSetting.Image = AIProofread.Properties.Resources.icon_setting_wps;
BtnGetContact.Image = AIProofread.Properties.Resources.icon_phone_wps;
BtnUpdate.Image = AIProofread.Properties.Resources.icon_update_wps;
btnLogin.Image = AIProofread.Properties.Resources.icon_user_wps;
menuSencenDect.Image = AIProofread.Properties.Resources.icon_ai_robot_wps;
btnLogout.Image = AIProofread.Properties.Resources.icon_logout_wps;
// 缓存相关
ButtonLoadCache.Image = AIProofread.Properties.Resources.icon_refresh_wps;
ButtonSaveCache.Image = AIProofread.Properties.Resources.icon_save_wps;
// 显示面板
BtnShowPanel.Image = AIProofread.Properties.Resources.icon_panel_wps;
// 导出校对结果
BtnExportProofreadResult.Image = AIProofread.Properties.Resources.icon_export_wps;
BtnShowManual.Image = AIProofread.Properties.Resources.icon_manual_wps;
}
public void ProcessLoginInfo(Userinfo userinfo)
{
if (userinfo == null) return;
currentLoginUserinfo = userinfo;
// 登录状态
IS_LOGIN = true;
// 切换登录状态
ToggleLogin();
LblNickname.Label = userinfo.nickname;
LblDate.Label = userinfo.expiration;
@ -122,31 +67,17 @@ namespace AIProofread
// 关闭所有登录窗口
foreach (var item in Globals.ThisAddIn.LoginFormList)
{
try
if (!item.IsDisposed)
{
if (!item.IsDisposed)
{
item.Close();
}
}
catch (Exception ex)
{
LogHelper.Log(this.Name, ex);
item.Close();
}
}
Globals.ThisAddIn.LoginFormList.Clear();
}
/// <summary>
/// 注销登录
/// </summary>
public void ProcessLogout()
{
Globals.ThisAddIn.CloseReadmeIfShown();
IS_LOGIN = false;
currentLoginUserinfo = null;
ToggleLogin();
Globals.ThisAddIn.HideAllPanel();
}
// 处理是否登录的展示
@ -163,84 +94,64 @@ namespace AIProofread
// 弹出登录窗口
private void btnLogin_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Bridge.bridge.ShowLoginForm(null);
}
// 注销登录
private void btnLogout_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.ActiveDocument.ShowDialog(currentLoginUserinfo.phone + " 退出AI校对王", "确定", "logout");
//Globals.ThisAddIn.ShowDialog("退出AI校对王",)
// 注销吧
//Bridge.bridge.Logout(null);
//Globals.ThisAddIn.HideAllPanel();
//Globals.ThisAddIn.SendMessageToWeb("confirm-logout", null);
}
public void ShowNewVersionIcon()
{
Globals.ThisAddIn.CloseReadmeIfShown();
BtnUpdate.Image = Globals.ThisAddIn.IsWPS? Resources.icon_update_new_wps : Resources.icon_update_new;
Bridge.bridge.Logout(null);
Globals.ThisAddIn.HideAllPanel();
}
private void btnOpenLexicon_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.SendMessageToWeb("show-lexicon", null);
//(new FormLexicon()).Show();
}
private void btnSetting_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.SendMessageToWeb("show-setting", null);
}
private void BtnGetContact_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
var frm = new FormContact();
Globals.ThisAddIn.ActiveDocument.RunInMainThread(() =>
{
frm.ShowDialog();
});
(new FormContact()).ShowDialog();
}
private void BtnUpdate_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
//System.Windows.Forms.MessageBox.Show("当前插件是最新版本");
//Globals.ThisAddIn.SendMessageToWeb("upgrade", Config.APP_VERSION);
Bridge.bridge.ShowUpgradeView();
}
private void BtnProofreadAll_Click(object sender, RibbonControlEventArgs e)
{
string time = DateTime.Now.ToString("yyyy - MM - dd HH: mm:ss: fff:ffffff");
Globals.ThisAddIn.SendMessageToWeb("start", time);
}
private void btnClear_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
//DocumentUtil.ClearProofreadMarks();
Globals.ThisAddIn.ActiveDocument.ShowDialog("请确认是否清除此文档的所有校对标注?", "确定", "clear-tips");
//if (result == DialogResult.OK)
//{
// //Bridge.bridge.clearAllProofreadMark(null);
// Globals.ThisAddIn.ClearAllProofreadMark();
//}
var result = MessageBox.Show("请确认是否清除此文档的所有校对标注?", "提示", MessageBoxButtons.OKCancel);
if(result == DialogResult.OK)
{
Bridge.bridge.clearAllProofreadMark(null);
Globals.ThisAddIn.SendMessageToWeb("clear-tips", null);
}
}
private void btnShowPane_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.ShowPanel();
}
private void btnHidePane_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.HidePanel();
}
@ -476,7 +387,7 @@ namespace AIProofread
}
catch (Exception exception)
{
LogHelper.Log(exception);
Logger.Log(exception);
}
return result;
}
@ -496,182 +407,5 @@ namespace AIProofread
{
Bridge.StartUpgradeProcess();
}
private void BtnOpenLogger_Click(object sender, RibbonControlEventArgs e)
{
// 判断日志窗口是否已经存在或者打开
if (LogHelper.LoggerForm == null || LogHelper.LoggerForm.IsDisposed)
{
// 创建日志窗口
LogHelper.LoggerForm = new FormLogger();
}
LogHelper.LoggerForm.Show();
}
private int GetRangeParagraphNumber(Range range)
{
var app = Globals.ThisAddIn.Application;
int paragraphNumber = 0;
if (range.Paragraphs.Count > 0)
{
// 获取当前文本在文档的段落数
var currentParagraph = range.Paragraphs.First;
var currentParagraphStart = currentParagraph.Range.Start;
var allParagraphs = app.ActiveDocument.Paragraphs;
for (var i = 1; i <= allParagraphs.Count; i++)
{
var paragraph = allParagraphs[i];
var paragraphStart = paragraph.Range.Start;
if (paragraphStart > currentParagraphStart)
{
break;
}
if (currentParagraphStart == paragraphStart || paragraph == currentParagraph)
{
paragraphNumber = i;
break;
}
}
}
return paragraphNumber;
}
private void BtnTest_Click(object sender, RibbonControlEventArgs e)
{
// 获取当前系统时间戳
//int time = (int)(DateTime.Now.Ticks / 10000000);
//BtnTest.Label = "测试按钮" + time;
//var result = MessageBox.Show("Test", "xxx");
//Globals.ThisAddIn.Application.
var app = Globals.ThisAddIn.Application;
var selection = app.Selection;
var range = selection.Range.Duplicate;
range.End = selection.Start;
// 获取所在页
var pageNumber = GetIndexPageNumber(range);
// 获取所在行
var rowNumber = range.get_Information(WdInformation.wdFirstCharacterLineNumber);
int paragraphNumber = GetRangeParagraphNumber(range);
MessageBox.Show($"当前页:{pageNumber}, 行:{rowNumber}, 段落:{paragraphNumber}");
}
private void ButtonSaveCache_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.SendMessageToWeb("save-cache", "");
}
private void ButtonLoadCache_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.ShowDialog("即将加载最近保存的进度,新的修改可能会丢失!", "确定", "load-cache");
}
private void BtnShowPanel_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.SendMessageToWeb("show-panel", "");
}
private void BtnOpenAppDir_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
// 打开日志目录
Process.Start(AppDomain.CurrentDomain.BaseDirectory);
}
private void BtnExportProofreadResult_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.SendMessageToWeb("export-result", "");
}
private void BtnShowVersion_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.SendMessageToWeb("show-version", "");
}
public Range currectSelectRange;
private void btnDetectionAll_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.SendMessageToWeb("show-check-all", "");
}
private void btnDetectionParagraph_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
// 获取当前选中的选区的首尾段落起始与结束位置
var start = currectSelectRange.Start; // .Paragraphs.First.Range
var end = currectSelectRange.End; // .Paragraphs.Last.Range
var data = JSONObject.Create().Put("start", start).Put("end", end).ToString();
Globals.ThisAddIn.SendMessageToWeb("show-check-range", data);
}
private void btnDetectionHistory_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.SendMessageToWeb("show-check-history", "");
}
/// <summary>
/// 存储当前选区
/// </summary>
/// <param name="s"></param>
public void ParseSelectionChange(Selection s)
{
var r = s.Range;
this.currectSelectRange = r;
if (CommonSenseDetection.instance.isChecking)
{
return;
}
btnDetectionParagraph.Enabled = r.Start != r.End;
btnDetectionAll.Enabled = r.Start == r.End;
}
public void SetDetectionBtnStatus(bool allStatus,bool rangeStatus)
{
btnDetectionAll.Enabled = allStatus;
btnDetectionParagraph.Enabled = rangeStatus;
}
private void BtnShowManual_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
try
{
Process.Start(Config.USER_MANUAL_URL);
}catch (Exception) {
Globals.ThisAddIn.ActiveDocument.ShowMessage("打开用户手册失败", 2000, false);
}
}
private void BtnProofreadExact_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
//
Globals.ThisAddIn.ActiveDocument.CheckPanel();
Globals.ThisAddIn.SendMessageToWeb("start", "exact");
}
private void BtnProofreadFull_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Globals.ThisAddIn.ActiveDocument.CheckPanel();
Globals.ThisAddIn.SendMessageToWeb("start", "full");
}
private void button2_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.CloseReadmeIfShown();
Bridge.bridge.ShowLoginForm(null);
}
}
}

View File

@ -117,115 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="tabAIProofread.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="group1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="menuProofreadList.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnProofreadExact.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnProofreadFull.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnExportProofreadResult.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnClear.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnOpenLexicon.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="menuSencenDect.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnDetectionAll.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnDetectionParagraph.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnDetectionHistory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnSetting.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Group.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ButtonSaveCache.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ButtonLoadCache.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="grpOther.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnGetContact.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnUpdate.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnLogin.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnLogout.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LblDate.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LblNickname.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="group2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnShowPanel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnShowManual.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="grpDebug.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnShowPane.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="btnHidePane.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnOpenLog.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnOpenLogger.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnTest.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnOpenAppDir.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BtnShowVersion.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="button2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dropDown1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="BtnProofreadAll.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +0,0 @@

namespace AIProofread
{
public class Transform
{
}
}

View File

@ -1,63 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AIProofread.Util
{
public class User32Util
{
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, ref RECT rect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
// 引入 User32.dll 中的 SetParent 方法
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetForegroundWindow(IntPtr hWnd);
#region
public const int HORZRES = 8;
public const int VERTRES = 10;
public const int LOGPIXELSX = 88;
public const int LOGPIXELSY = 90;
public const int DESKTOPVERTRES = 117;
public const int DESKTOPHORZRES = 118;
[DllImport("user32.dll")]
public static extern IntPtr GetDC(IntPtr ptr);
[DllImport("gdi32.dll")]
public static extern int GetDeviceCaps(
IntPtr hdc, // handle to DC
int nIndex // index of capability
);
[DllImport("user32.dll", EntryPoint = "ReleaseDC")]
public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);
[DllImport("user32.dll")]
public static extern IntPtr GetDesktopWindow();
public static float GetSreenScale()
{
var hdc = GetDC(GetDesktopWindow());
int nWidth = GetDeviceCaps(hdc, DESKTOPHORZRES);
ReleaseDC(IntPtr.Zero, hdc);
float f_Scale = (float)nWidth / (float)Screen.PrimaryScreen.Bounds.Width;
return 1 / f_Scale;
}
#endregion
}
}

Some files were not shown because too many files have changed in this diff Show More