Compare commits
65 Commits
Author | SHA1 | Date | |
---|---|---|---|
e28499b26f | |||
5c52c1a87a | |||
16c24c10ec | |||
fc3773b65d | |||
ff9a25d437 | |||
8284a9d552 | |||
a54765e911 | |||
32e85c62c0 | |||
5b519f48e1 | |||
b1ace782f8 | |||
d061406026 | |||
fa62b66a02 | |||
5e4f692897 | |||
3c3ccb8847 | |||
1644a1591f | |||
2bebf743ba | |||
fb2f5e0d16 | |||
cf148e9000 | |||
e52fd188b6 | |||
200f415ac6 | |||
2b3e330841 | |||
e8c18e6eb8 | |||
342e32f49f | |||
d16d6d4671 | |||
a296604f2c | |||
5013e10cb1 | |||
31ee6d4894 | |||
03e0ffdce8 | |||
f418ec74e5 | |||
e04d6104b2 | |||
d37882d6dd | |||
b97e7d15ee | |||
d0126e6986 | |||
c546fe21ef | |||
90fc77b258 | |||
907f4bc971 | |||
22095404e0 | |||
94e7327dce | |||
b8f7341b9d | |||
41bfe9c5a3 | |||
f1ddfa3d65 | |||
7426273320 | |||
697756127c | |||
3a3d128ab0 | |||
e363d6df8b | |||
f7f9fdf5d3 | |||
b3b931e89f | |||
c036b904fa | |||
95de468a04 | |||
ad0afdc54c | |||
bc65188c0c | |||
59ebe8a18d | |||
753094447a | |||
d132bbfa3a | |||
8ab9a209e5 | |||
afddb096b7 | |||
5b6b615bd2 | |||
3c0d0f4608 | |||
76147498f4 | |||
70c0654a41 | |||
8ceaf028d8 | |||
e58390f7ef | |||
7ec0f49aa5 | |||
089e0bc64a | |||
4116886a32 |
5
.gitignore
vendored
@ -3,5 +3,10 @@ bin
|
||||
packages
|
||||
TestConsoleApp
|
||||
.vs
|
||||
obj
|
||||
**/obj/Debug/**
|
||||
**/obj/Release/**
|
||||
**/obj/Test/**
|
||||
**/**/obj/Debug/**
|
||||
**/**/obj/Release/**
|
||||
**/**/obj/Test/**
|
@ -11,6 +11,8 @@ 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
|
||||
@ -42,6 +44,12 @@ 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
|
||||
|
@ -128,6 +128,12 @@
|
||||
<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>
|
||||
@ -137,11 +143,17 @@
|
||||
<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.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 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>
|
||||
<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>
|
||||
@ -167,6 +179,7 @@
|
||||
<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>
|
||||
@ -177,6 +190,9 @@
|
||||
<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">
|
||||
@ -185,6 +201,7 @@
|
||||
<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>
|
||||
@ -203,8 +220,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=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 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>
|
||||
<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>
|
||||
@ -225,6 +242,7 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
@ -284,18 +302,42 @@
|
||||
<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>
|
||||
@ -308,50 +350,124 @@
|
||||
<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="Logger.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="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>
|
||||
@ -363,6 +479,7 @@
|
||||
<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>
|
||||
@ -407,7 +524,75 @@
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Resources\" />
|
||||
<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" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
@ -436,6 +621,9 @@
|
||||
<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. -->
|
||||
|
@ -8,6 +8,10 @@
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<StartAction>Project</StartAction>
|
||||
<StartProgram>C:\Soft\Kingsoft\WPS Office\12.1.0.17827\office6\wps.exe</StartProgram>
|
||||
<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>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace AIProofread
|
||||
@ -9,28 +10,63 @@ 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 = "1.0.11";
|
||||
public static readonly string APP_VERSION = "2.2.6";
|
||||
public static readonly string BuildVersion = "20250623_1757";
|
||||
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
|
||||
/// <summary>
|
||||
/// 网页访问地址
|
||||
/// </summary>
|
||||
public static string WEB_PATH = "http://192.168.10.100:5173/";
|
||||
public static string WEB_PATH = AppServer.DEV; //pre-gm-plugin.gachafun.com localhost:5173 gm2-plugin.zverse.group
|
||||
public static bool RUN_IN_DEBUG = true;
|
||||
public static AppEnvironment APP_ENV = AppEnvironment.Dev;
|
||||
#else
|
||||
public static string WEB_PATH = "https://gm-plugin.gachafun.com/";
|
||||
public static string WEB_PATH = AppServer.PROD; // gm-plugin.gachafun.com pre-gm-plugin.gachafun.com
|
||||
public static bool RUN_IN_DEBUG = false;
|
||||
public static AppEnvironment APP_ENV = AppEnvironment.Prod;
|
||||
#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>
|
||||
@ -39,6 +75,14 @@ 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)
|
||||
{
|
||||
@ -71,7 +115,8 @@ namespace AIProofread
|
||||
/// <returns></returns>
|
||||
public static string WebPath(string path)
|
||||
{
|
||||
return WEB_PATH + path;
|
||||
Random r = new Random();
|
||||
return WEB_PATH + path + (path.IndexOf("?") == -1 ? "?":"&") + $"ver={APP_VERSION}&r=" + r.NextDouble();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,9 @@
|
||||
using Microsoft.Web.WebView2.Core;
|
||||
using log4net;
|
||||
using Microsoft.Web.WebView2.Core;
|
||||
using Microsoft.Web.WebView2.WinForms;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AIProofread.Controls
|
||||
@ -14,6 +12,7 @@ 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
|
||||
@ -49,6 +48,9 @@ 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
|
||||
{
|
||||
@ -110,7 +112,12 @@ namespace AIProofread.Controls
|
||||
this.FormBorderStyle = FormBorderStyle.None;
|
||||
}
|
||||
|
||||
protected async void InitWebView(WebView2 webView,String url,string name)
|
||||
public void SetHeight(int height)
|
||||
{
|
||||
this.Height = height;
|
||||
}
|
||||
|
||||
protected async void InitWebView(WebView2 webView, String url, string name, Action callaback = null)
|
||||
{
|
||||
//Bridge.InitWebEnvAsync(name, webView);
|
||||
try
|
||||
@ -123,12 +130,48 @@ 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.Log("\ninit webview error:" + ex.Message + "\n" + ex.StackTrace);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
69
AIProofread/Controls/FormCommonsenseDetection.Designer.cs
generated
Normal file
@ -0,0 +1,69 @@
|
||||
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;
|
||||
}
|
||||
}
|
69
AIProofread/Controls/FormCommonsenseDetection.cs
Normal file
@ -0,0 +1,69 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
451
AIProofread/Controls/FormCommonsenseDetection.resx
Normal file
@ -0,0 +1,451 @@
|
||||
<?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
|
||||
+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
|
||||
+/v7+/v77tJ/KAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQqdrbW8fv7+/v7
|
||||
+/v7+/v7+/v7+/vu06xlHQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
CTptlrPL3vH7+/v7+/vs3cauj2UwBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
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>
|
6
AIProofread/Controls/FormContact.Designer.cs
generated
@ -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(400, 310);
|
||||
this.WebViewContact.Size = new System.Drawing.Size(620, 450);
|
||||
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(400, 310);
|
||||
this.ClientSize = new System.Drawing.Size(620, 450);
|
||||
this.Controls.Add(this.WebViewContact);
|
||||
this.Name = "FormContact";
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "联系客服";
|
||||
this.Load += new System.EventHandler(this.FormContact_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.WebViewContact)).EndInit();
|
||||
|
@ -4,12 +4,15 @@ 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()
|
||||
|
111
AIProofread/Controls/FormDialog.Designer.cs
generated
Normal file
@ -0,0 +1,111 @@
|
||||
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;
|
||||
}
|
||||
}
|
70
AIProofread/Controls/FormDialog.cs
Normal file
@ -0,0 +1,70 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
120
AIProofread/Controls/FormDialog.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
66
AIProofread/Controls/FormLexicon.Designer.cs
generated
Normal file
@ -0,0 +1,66 @@
|
||||
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;
|
||||
}
|
||||
}
|
21
AIProofread/Controls/FormLexicon.cs
Normal file
@ -0,0 +1,21 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
120
AIProofread/Controls/FormLexicon.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
104
AIProofread/Controls/FormLogger.Designer.cs
generated
Normal file
@ -0,0 +1,104 @@
|
||||
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;
|
||||
}
|
||||
}
|
107
AIProofread/Controls/FormLogger.cs
Normal file
@ -0,0 +1,107 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
196
AIProofread/Controls/FormLogger.resx
Normal file
@ -0,0 +1,196 @@
|
||||
<?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
|
||||
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
|
||||
AOUAAAAhAAAAAAAAAIkAAAD8AAAAhAAAAAAAAABhAAAA7wAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAA
|
||||
APMAAAB3AAAAAAAAAE0AAADvAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAB/AAAA5QAAACEAAAAAAAAAagAAAMkAAABoAAAAAAAAABUAAAA0AAAANQAAADUAAAA1AAAANQAA
|
||||
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>
|
@ -1,8 +1,11 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AIProofread.Controls
|
||||
{
|
||||
[ClassInterface(ClassInterfaceType.AutoDual)]
|
||||
[ComVisible(true)]
|
||||
public partial class FormLogin : BaseWinForm
|
||||
{
|
||||
|
||||
@ -11,6 +14,19 @@ 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);
|
||||
}
|
||||
@ -18,6 +34,19 @@ 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)
|
||||
@ -28,9 +57,9 @@ namespace AIProofread.Controls
|
||||
private void FormLogin_Load(object sender, EventArgs e)
|
||||
{
|
||||
//this.web.Source = new Uri(Config.WebPath("#login"));
|
||||
InitWebView(web, Config.WebPath("login?action=" + this.action), "login");
|
||||
var r = new FormLogin();
|
||||
InitWebView(web, Config.WebPath("login?action=" + this.action + "&version=" + Config.APP_VERSION + "&t=" + DateTime.Now.Ticks), "login");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
48
AIProofread/Controls/FormMask.Designer.cs
generated
Normal file
@ -0,0 +1,48 @@
|
||||
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
|
||||
}
|
||||
}
|
46
AIProofread/Controls/FormMask.cs
Normal file
@ -0,0 +1,46 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
120
AIProofread/Controls/FormMask.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
158
AIProofread/Controls/FormMessage.Designer.cs
generated
Normal file
@ -0,0 +1,158 @@
|
||||
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;
|
||||
}
|
||||
}
|
165
AIProofread/Controls/FormMessage.cs
Normal file
@ -0,0 +1,165 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
120
AIProofread/Controls/FormMessage.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
68
AIProofread/Controls/FormReadme.Designer.cs
generated
Normal file
@ -0,0 +1,68 @@
|
||||
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;
|
||||
}
|
||||
}
|
55
AIProofread/Controls/FormReadme.cs
Normal file
@ -0,0 +1,55 @@
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
120
AIProofread/Controls/FormReadme.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
67
AIProofread/Controls/FormWebView.Designer.cs
generated
Normal file
@ -0,0 +1,67 @@
|
||||
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;
|
||||
}
|
||||
}
|
37
AIProofread/Controls/FormWebView.cs
Normal file
@ -0,0 +1,37 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
120
AIProofread/Controls/FormWebView.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
46
AIProofread/Controls/MessageTips.Designer.cs
generated
Normal file
@ -0,0 +1,46 @@
|
||||
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
|
||||
}
|
||||
}
|
20
AIProofread/Controls/MessageTips.cs
Normal file
@ -0,0 +1,20 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
120
AIProofread/Controls/MessageTips.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
@ -1,5 +1,6 @@
|
||||
using Microsoft.Office.Interop.Word;
|
||||
|
||||
using Microsoft.Web.WebView2.Core;
|
||||
using Microsoft.Web.WebView2.WinForms;
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@ -7,35 +8,69 @@ namespace AIProofread.Controls
|
||||
{
|
||||
public partial class ProofreadMainControl : UserControl
|
||||
{
|
||||
private Document doc;
|
||||
private int minWidth;
|
||||
|
||||
|
||||
public ProofreadMainControl(Document doc,int minWidth)
|
||||
public ProofreadMainControl()
|
||||
{
|
||||
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.Source = new Uri(Config.WebPath("home?version=" + Config.APP_VERSION + "&t=" + DateTime.Now.Ticks));
|
||||
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.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()
|
||||
{
|
||||
|
103
AIProofread/LogHelper.cs
Normal file
@ -0,0 +1,103 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
47
AIProofread/Model/BridgeResult.cs
Normal file
@ -0,0 +1,47 @@
|
||||
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" });
|
||||
}
|
||||
}
|
||||
}
|
31
AIProofread/Model/CommonsenseDetectionItem.cs
Normal file
@ -0,0 +1,31 @@
|
||||
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; }
|
||||
}
|
||||
}
|
21
AIProofread/Model/DocumentContent.cs
Normal file
@ -0,0 +1,21 @@
|
||||
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; }
|
||||
|
||||
}
|
||||
}
|
1086
AIProofread/Model/DocumentInfo.cs
Normal file
159
AIProofread/Model/DocumentList.cs
Normal file
@ -0,0 +1,159 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
148
AIProofread/Model/ExportDataItem.cs
Normal file
@ -0,0 +1,148 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
10
AIProofread/Model/InsertMarkData.cs
Normal file
@ -0,0 +1,10 @@
|
||||
using Microsoft.Office.Tools.Word;
|
||||
|
||||
namespace AIProofread.Model
|
||||
{
|
||||
public class InsertMarkData
|
||||
{
|
||||
public Bookmark Mark { get; set; }
|
||||
public int InsertLength { get; set; }
|
||||
}
|
||||
}
|
11
AIProofread/Model/ProofreadRangeInfo.cs
Normal file
@ -0,0 +1,11 @@
|
||||
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; }
|
||||
}
|
||||
}
|
@ -8,32 +8,36 @@ using Bookmark = Microsoft.Office.Tools.Word.Bookmark;
|
||||
|
||||
namespace UtilLib
|
||||
{
|
||||
|
||||
public class ProofreadItem
|
||||
{
|
||||
public Bookmark mark;
|
||||
public CorrectedContent content;
|
||||
private float originSize;
|
||||
private WdColor originColor;
|
||||
private WdColor originBackgroundColor;
|
||||
public string OriginSentence { get; set; }
|
||||
public CorrectItem content;
|
||||
public float originSize;
|
||||
public WdColor originColor;
|
||||
public WdColor originBackgroundColor;
|
||||
public string Name { get; set; }
|
||||
public int DocumentId { get; set; }
|
||||
|
||||
public ProofreadItem(CorrectedContent content,int documentId)
|
||||
public ProofreadItem(CorrectItem content, string originSentence, 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(CorrectedContent content, Bookmark bookmark, int documentId)
|
||||
public ProofreadItem(CorrectItem content, string originSentence, Bookmark bookmark, int documentId)
|
||||
{
|
||||
this.DocumentId = documentId;
|
||||
this.OriginSentence = originSentence;
|
||||
this.content = content;
|
||||
if (bookmark != null)
|
||||
{
|
||||
@ -52,13 +56,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,14 +76,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()
|
||||
@ -92,7 +96,7 @@ namespace UtilLib
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Log(e);
|
||||
LogHelper.Log(e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,12 +105,15 @@ namespace UtilLib
|
||||
try
|
||||
{
|
||||
if (mark == null) return;
|
||||
//mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick;
|
||||
mark.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(content.color));
|
||||
|
||||
// 颜色转码
|
||||
var color = (WdColor)ColorTranslator.ToOle(Colors.FromHex(Config.TextBackgroundColor));
|
||||
// 给选区添加背景颜色
|
||||
mark.Shading.BackgroundPatternColor = color;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Log(e);
|
||||
LogHelper.Log(e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,49 +131,113 @@ namespace UtilLib
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Log(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <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)
|
||||
{
|
||||
if (content.tag == "r" || content.tag == "i")
|
||||
PrepareCommentProcess(mark);
|
||||
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("%", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,11 +7,11 @@ using System.Security;
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("AI校对王")]
|
||||
[assembly: AssemblyDescription("AI校对王")]
|
||||
[assembly: AssemblyDescription("AI校对王 2.2.6")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("果麦文化")]
|
||||
[assembly: AssemblyProduct("AI校对王")]
|
||||
[assembly: AssemblyCopyright("Copyright © GuoMai 2024")]
|
||||
[assembly: AssemblyCompany("果麦文化传媒股份有限公司")]
|
||||
[assembly: AssemblyProduct("AI校对王 2.2.6")]
|
||||
[assembly: AssemblyCopyright("Copyright © 果麦文化传媒股份有限公司 2025")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
@ -33,6 +33,6 @@ using System.Security;
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||
// 方法是按如下所示使用“*”: :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.1")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.1")]
|
||||
[assembly: AssemblyVersion("2.2.6.0")]
|
||||
[assembly: AssemblyFileVersion("2.2.6.0")]
|
||||
|
||||
|
240
AIProofread/Properties/Resources.Designer.cs
generated
@ -60,6 +60,26 @@ 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>
|
||||
@ -70,6 +90,36 @@ 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>
|
||||
@ -110,6 +160,56 @@ 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>
|
||||
@ -130,6 +230,46 @@ 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>
|
||||
@ -170,6 +310,46 @@ 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>
|
||||
@ -200,6 +380,26 @@ 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>
|
||||
@ -229,5 +429,45 @@ 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -118,56 +118,127 @@
|
||||
<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="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-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-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-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-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-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-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-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-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 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-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 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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</root>
|
BIN
AIProofread/Resources/button.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
AIProofread/Resources/button_default.png
Normal file
After Width: | Height: | Size: 456 B |
BIN
AIProofread/Resources/export.png
Normal file
After Width: | Height: | Size: 980 B |
BIN
AIProofread/Resources/form_bg.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
AIProofread/Resources/icon-ai-robot-wps.jpg
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
AIProofread/Resources/icon-ai-robot.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 948 B After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 3.6 KiB |
BIN
AIProofread/Resources/icon-export-wps.jpg
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
AIProofread/Resources/icon-export.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
AIProofread/Resources/icon-history-wps.jpg
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
AIProofread/Resources/icon-history.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
AIProofread/Resources/icon-manual-wps.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
AIProofread/Resources/icon-manual.png
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
AIProofread/Resources/icon-panel-wps.jpg
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
AIProofread/Resources/icon-panel.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.4 KiB |
BIN
AIProofread/Resources/icon-refresh-wps.jpg
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
AIProofread/Resources/icon-refresh.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
AIProofread/Resources/icon-save-wps.jpg
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
AIProofread/Resources/icon-save.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 3.6 KiB |
BIN
AIProofread/Resources/icon-update-new-wps.jpg
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
AIProofread/Resources/icon-update-new.png
Normal file
After Width: | Height: | Size: 843 B |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 942 B After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.5 KiB |
BIN
AIProofread/Resources/icon_close.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
AIProofread/Resources/logo.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
AIProofread/Resources/logo_no_text.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
AIProofread/Resources/logo_no_text_wps.jpg
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
AIProofread/Resources/logo_wps.jpg
Normal file
After Width: | Height: | Size: 4.5 KiB |
281
AIProofread/Ribbon1.Designer.cs
generated
@ -36,31 +36,59 @@ 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.BtnProofreadAll = this.Factory.CreateRibbonButton();
|
||||
this.menuProofreadList = this.Factory.CreateRibbonMenu();
|
||||
this.BtnProofreadExact = this.Factory.CreateRibbonButton();
|
||||
this.BtnProofreadFull = this.Factory.CreateRibbonButton();
|
||||
this.BtnExportProofreadResult = 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.LblNickname = this.Factory.CreateRibbonLabel();
|
||||
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.grpDebug = this.Factory.CreateRibbonGroup();
|
||||
this.btnShowPane = this.Factory.CreateRibbonButton();
|
||||
this.btnHidePane = this.Factory.CreateRibbonButton();
|
||||
this.BtnOpenLog = this.Factory.CreateRibbonButton();
|
||||
this.button1 = 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.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";
|
||||
@ -68,32 +96,52 @@ namespace AIProofread
|
||||
//
|
||||
// group1
|
||||
//
|
||||
this.group1.Items.Add(this.BtnProofreadAll);
|
||||
this.group1.Items.Add(this.menuProofreadList);
|
||||
this.group1.Items.Add(this.BtnExportProofreadResult);
|
||||
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";
|
||||
//
|
||||
// BtnProofreadAll
|
||||
// menuProofreadList
|
||||
//
|
||||
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);
|
||||
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);
|
||||
//
|
||||
// btnClear
|
||||
//
|
||||
this.btnClear.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
|
||||
this.btnClear.Image = global::AIProofread.Properties.Resources.icon_clear;
|
||||
this.btnClear.Label = "清除标注\n";
|
||||
this.btnClear.Label = "清除标注\r\n";
|
||||
this.btnClear.Name = "btnClear";
|
||||
this.btnClear.ShowImage = true;
|
||||
this.btnClear.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnClear_Click);
|
||||
@ -102,25 +150,92 @@ namespace AIProofread
|
||||
//
|
||||
this.btnOpenLexicon.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
|
||||
this.btnOpenLexicon.Image = global::AIProofread.Properties.Resources.icon_book;
|
||||
this.btnOpenLexicon.Label = "词库管理\n";
|
||||
this.btnOpenLexicon.Label = "词库管理\r\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 = "插件设置\n";
|
||||
this.btnSetting.Label = "设置\r\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 = "联系客服\n";
|
||||
this.BtnGetContact.Label = "联系客服\r\n";
|
||||
this.BtnGetContact.Name = "BtnGetContact";
|
||||
this.BtnGetContact.ShowImage = true;
|
||||
this.BtnGetContact.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnGetContact_Click);
|
||||
@ -129,7 +244,7 @@ namespace AIProofread
|
||||
//
|
||||
this.BtnUpdate.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
|
||||
this.BtnUpdate.Image = global::AIProofread.Properties.Resources.icon_update;
|
||||
this.BtnUpdate.Label = "版本更新\n";
|
||||
this.BtnUpdate.Label = "版本更新\r\n";
|
||||
this.BtnUpdate.Name = "BtnUpdate";
|
||||
this.BtnUpdate.ShowImage = true;
|
||||
this.BtnUpdate.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnUpdate_Click);
|
||||
@ -138,39 +253,71 @@ namespace AIProofread
|
||||
//
|
||||
this.btnLogin.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
|
||||
this.btnLogin.Image = global::AIProofread.Properties.Resources.icon_user;
|
||||
this.btnLogin.Label = "用户登录\n";
|
||||
this.btnLogin.Label = "用户登录\r\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 = "退出登录\n";
|
||||
this.btnLogout.Label = "退出登录\r\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);
|
||||
//
|
||||
// LblNickname
|
||||
//
|
||||
this.LblNickname.Label = "xxx 已登录";
|
||||
this.LblNickname.Name = "LblNickname";
|
||||
this.LblNickname.Visible = false;
|
||||
//
|
||||
// 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
|
||||
//
|
||||
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);
|
||||
//
|
||||
// grpDebug
|
||||
//
|
||||
this.grpDebug.Items.Add(this.btnShowPane);
|
||||
this.grpDebug.Items.Add(this.btnHidePane);
|
||||
this.grpDebug.Items.Add(this.BtnOpenLog);
|
||||
this.grpDebug.Items.Add(this.button1);
|
||||
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.Label = "开发调试";
|
||||
this.grpDebug.Name = "grpDebug";
|
||||
this.grpDebug.Visible = false;
|
||||
@ -193,11 +340,46 @@ namespace AIProofread
|
||||
this.BtnOpenLog.Name = "BtnOpenLog";
|
||||
this.BtnOpenLog.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnOpenLog_Click);
|
||||
//
|
||||
// button1
|
||||
// BtnOpenLogger
|
||||
//
|
||||
this.button1.Label = "更新测试版本";
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button1_Click);
|
||||
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";
|
||||
//
|
||||
// Ribbon1
|
||||
//
|
||||
@ -209,6 +391,12 @@ 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);
|
||||
@ -223,7 +411,6 @@ 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;
|
||||
@ -233,7 +420,27 @@ 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.RibbonButton button1;
|
||||
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;
|
||||
}
|
||||
|
||||
partial class ThisRibbonCollection
|
||||
|
@ -3,81 +3,150 @@ 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;
|
||||
ShowDebug();
|
||||
|
||||
InitModule();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 用于调试或测试
|
||||
/// </summary>
|
||||
public void ShowDebug()
|
||||
public void InitModule()
|
||||
{
|
||||
if (Config.RUN_IN_DEBUG)
|
||||
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)
|
||||
{
|
||||
grpDebug.Visible = true;
|
||||
// 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")
|
||||
{
|
||||
SetCommonBtnStatus(status);
|
||||
}
|
||||
else if (key == "view-panel")
|
||||
{
|
||||
BtnShowPanel.Enabled = status;
|
||||
}
|
||||
else if (key == "disable-by-upgrade")
|
||||
{
|
||||
SetCommonBtnStatus(status);
|
||||
BtnUpdate.Enabled = true;
|
||||
BtnShowPanel.Enabled = status;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化WPS相关功能(图标)
|
||||
/// </summary>
|
||||
public void InitWPS()
|
||||
{
|
||||
BtnProofreadAll.Image = AIProofread.Properties.Resources.icon_proofread_wps;
|
||||
menuProofreadList.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;
|
||||
|
||||
// 关闭所有登录窗口
|
||||
foreach (var item in Globals.ThisAddIn.LoginFormList)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!item.IsDisposed)
|
||||
{
|
||||
item.Close();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Log(this.Name, ex);
|
||||
}
|
||||
}
|
||||
Globals.ThisAddIn.LoginFormList.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注销登录
|
||||
/// </summary>
|
||||
public void ProcessLogout()
|
||||
{
|
||||
Globals.ThisAddIn.CloseReadmeIfShown();
|
||||
IS_LOGIN = false;
|
||||
currentLoginUserinfo = null;
|
||||
ToggleLogin();
|
||||
Globals.ThisAddIn.HideAllPanel();
|
||||
}
|
||||
|
||||
// 处理是否登录的展示
|
||||
@ -94,64 +163,84 @@ 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();
|
||||
//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;
|
||||
}
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
(new FormContact()).ShowDialog();
|
||||
Globals.ThisAddIn.CloseReadmeIfShown();
|
||||
var frm = new FormContact();
|
||||
Globals.ThisAddIn.ActiveDocument.RunInMainThread(() =>
|
||||
{
|
||||
frm.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();
|
||||
var result = MessageBox.Show("请确认是否清除此文档的所有校对标注?", "提示", MessageBoxButtons.OKCancel);
|
||||
if(result == DialogResult.OK)
|
||||
{
|
||||
Bridge.bridge.clearAllProofreadMark(null);
|
||||
Globals.ThisAddIn.SendMessageToWeb("clear-tips", null);
|
||||
}
|
||||
|
||||
Globals.ThisAddIn.ActiveDocument.ShowDialog("请确认是否清除此文档的所有校对标注?", "确定", "clear-tips");
|
||||
//if (result == DialogResult.OK)
|
||||
//{
|
||||
// //Bridge.bridge.clearAllProofreadMark(null);
|
||||
// Globals.ThisAddIn.ClearAllProofreadMark();
|
||||
//}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
@ -387,7 +476,7 @@ namespace AIProofread
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Logger.Log(exception);
|
||||
LogHelper.Log(exception);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -407,5 +496,182 @@ 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,7 +117,115 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="BtnProofreadAll.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<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">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
7
AIProofread/Transform.cs
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
namespace AIProofread
|
||||
{
|
||||
public class Transform
|
||||
{
|
||||
}
|
||||
}
|
63
AIProofread/Util/User32Util.cs
Normal file
@ -0,0 +1,63 @@
|
||||
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
|
||||
}
|
||||
}
|