1. gb2013 gb
  2. ADB

Commits

gb2013  committed 44f95b3

1.上传ADB源码;
原始版本创建者:卢春城
URL:http://www.cnblogs.com/lucc/archive/2008/09/01/1281085.html

  • Participants
  • Branches default

Comments (0)

Files changed (161)

File .hgignore

View file
  • Ignore whitespace
+# Ignore file for Visual Studio 2008
+
+# use glob syntax
+syntax: glob
+
+# Ignore Visual Studio 2008 files
+*.obj
+*.exe
+*.pdb
+*.user
+*.msi
+*.aps
+*.pch
+*.vspscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.cache
+*.ilk
+*.log
+*.lib
+*.sbr
+*.scc
+*.sws
+*.pdsync
+*.pdsyncu
+~*.doc
+[Pp]ackages*/
+[Bb]in*/
+[Dd]ebug*/
+[Ll]ogs/
+Backup/
+obj/
+[Rr]elease*/
+_ReSharper*/
+_UpgradeReport_Files/
+[Tt]est[Rr]esult*
+[Bb]uild[Ll]og.*
+*.[Pp]ublish.xml
+UpgradeLog.XML
+*.csproj.user
+*.ncb
+*.suo

File ADB.Builders/ADB.Builders.csproj

View file
  • Ignore whitespace
+ďťż<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{54E7AA19-F349-4396-B025-23B347B92B81}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>ADB.Builders</RootNamespace>
+    <AssemblyName>ADB.Builders</AssemblyName>
+    <SignAssembly>true</SignAssembly>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\Debug\builders\ADB.Builders\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\Release\builders\ADB.Builders\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualBasic" />
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DefaultBuilder.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\ADB.Factories\ADB.Factories.csproj">
+      <Project>{18635C27-53DC-4BE7-9DA7-9E0550465D87}</Project>
+      <Name>ADB.Factories</Name>
+      <Private>False</Private>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

File ADB.Builders/DefaultBuilder.cs

View file
  • Ignore whitespace
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.VisualBasic.FileIO;
+using ADB.Factories;
+using System.Xml;
+
+namespace ADB.Builders
+{
+    public class DefaultBuilder:MSDNStyleCHMDocumentBuilder
+    {
+        public DefaultBuilder(IGetData data, IInteract interact)
+            : base(data, interact)
+        {
+        }
+
+        protected override string GetTag(XmlElement elem, string xmlFile)
+        {
+            switch (elem.Name)
+            {
+            case "img":
+                {
+                    StringBuilder tag = new StringBuilder();
+                    string src = elem.GetAttribute("src");
+                    if (!string.IsNullOrEmpty(src))
+                    {
+                        try
+                        {
+                            FileSystem.CopyFile(xmlFile + "\\" + src, HtmlFileDirectory + "\\" + src, false);
+                        }
+                        catch
+                        {
+                        }
+                        tag.Append(elem.OuterXml);
+                    }
+                    return tag.ToString();
+                }
+            case "file":
+                {
+                    StringBuilder tag = new StringBuilder();
+                    string src = elem.GetAttribute("src");
+                    if (!string.IsNullOrEmpty(src))
+                    {
+                        try
+                        {
+                            FileSystem.CopyFile(xmlFile + "\\" + src, HtmlFileDirectory + "\\" + src, false);
+                        }
+                        catch
+                        {
+                        }
+                        tag.AppendFormat("<a href='{0}'>{1}</a>", src, GetInnerTags(elem, xmlFile));
+                    }
+                    return tag.ToString();
+                }
+            case "localize":
+                {
+                    XmlNodeList localElems = elem.GetElementsByTagName(System.Threading.Thread.CurrentThread.CurrentCulture.Parent.Name);
+                    if (localElems.Count > 0)
+                    {
+                        return GetInnerTags(localElems[0] as XmlElement, xmlFile);
+                    }
+                    else
+                    {
+                        if (elem.ChildNodes.Count > 0)
+                            return GetInnerTags(elem.ChildNodes[0] as XmlElement, xmlFile);
+                        else
+                            return "";
+                    }
+                }
+            default:
+                {
+                    return base.GetTag(elem, xmlFile);
+                }
+            }
+        }
+    }
+}

File ADB.Builders/Properties/AssemblyInfo.cs

View file
  • Ignore whitespace
+ďťżusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有ĺ
+// 控制。更改这些属性值可修改
+// 与程序集ĺ
+[assembly: AssemblyTitle("ADB.Builders")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("LUCC")]
+[assembly: AssemblyProduct("ADB.Builders")]
+[assembly: AssemblyCopyright("版权所有 (C) LUCC 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 使此程序集中的类型
+// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
+// 则将该类型上的 ComVisible 属性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM ĺ
+[assembly: Guid("6029281a-8887-46a8-a7ca-cf03e3f3d0ce")]
+
+// 程序集的版本信息由下面四个值组成:
+//
+//      主版本
+//      次版本 
+//      ĺ†
+//      修订号
+//
+// 可以指定所有这些值,也可以使用“修订号”和“ĺ†
+// 方法是按如下所示使用“*”:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

File ADB.Factories/ADB.Factories.csproj

View file
  • Ignore whitespace
+ďťż<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{18635C27-53DC-4BE7-9DA7-9E0550465D87}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>ADB.Factories</RootNamespace>
+    <AssemblyName>ADB.Factories</AssemblyName>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>ADB.Factories.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Debug\ADB.Factories.XML</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\ADB.Factories.XML</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualBasic" />
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="BuildProgress.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="BuildProgress.designer.cs">
+      <DependentUpon>BuildProgress.cs</DependentUpon>
+    </Compile>
+    <Compile Include="CHMDocumentBuilderFactory.cs" />
+    <Compile Include="DocumentBuilder.cs" />
+    <Compile Include="GetHHCPathDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="GetHHCPathDialog.Designer.cs">
+      <DependentUpon>GetHHCPathDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="CHM_OptionDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="CHM_OptionDialog.designer.cs">
+      <DependentUpon>CHM_OptionDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MSDNStyleCHMDocumentBuilder.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+    <Compile Include="Templates.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Templates.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Text\HtmlText.cs" />
+    <Compile Include="Text\TextTemplate.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ADB.Factories.snk" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="BuildProgress.en.resx">
+      <DependentUpon>BuildProgress.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="BuildProgress.resx">
+      <DependentUpon>BuildProgress.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GetHHCPathDialog.en.resx">
+      <DependentUpon>GetHHCPathDialog.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GetHHCPathDialog.resx">
+      <DependentUpon>GetHHCPathDialog.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="CHM_OptionDialog.en.resx">
+      <DependentUpon>CHM_OptionDialog.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="CHM_OptionDialog.resx">
+      <DependentUpon>CHM_OptionDialog.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.en.resx">
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <SubType>Designer</SubType>
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Templates.resx">
+      <SubType>Designer</SubType>
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Templates.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

File ADB.Factories/ADB.Factories.snk

  • Ignore whitespace
Binary file added.

File ADB.Factories/BuildProgress.cs

View file
  • Ignore whitespace
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace ADB.Factories
+{
+    using Properties;
+
+    internal partial class BuildProgress : Form
+    {
+        string _documentFileName = "";
+        CHMDocumentBuilderFactory _builder;
+
+        public BuildProgress(CHMDocumentBuilderFactory builder)
+        {
+            InitializeComponent();
+            _builder = builder;
+        }
+
+        private delegate void NotifyDelegate(NotifyType notifyType, object args);
+
+        public void Notify(NotifyType notifyType, object args)
+        {
+            switch (notifyType)
+            {
+            case NotifyType.ShowProgress:
+                this.progressBar1.Value = (int)args;
+                break;
+            case NotifyType.OutputDataReceived:
+                this.textBox1.AppendText((string)args);
+                break;
+			case NotifyType.Canceled:
+				button1.Enabled = true;
+				button3.Enabled = false;
+				button2.Visible = false;
+				textBox1.Text = Resources.strCanceled;
+				textBox1.ForeColor = Color.Red;
+				_documentFileName = (string)args;
+				break;
+            case NotifyType.Finished:
+                button1.Enabled = true;
+                button3.Enabled = false;
+                button2.Visible = true;
+                _documentFileName = (string)args;
+                break;
+			case NotifyType.FinishedNoCHM:
+				button1.Enabled = true;
+				button3.Enabled = false;
+				button2.Visible = false;
+				textBox1.Text = Resources.strNoCHM;
+				textBox1.ForeColor = Color.Red;
+				_documentFileName = (string)args;
+				break;
+            case NotifyType.ShowMsg:
+                this.textBox1.Text = (string)args;
+                break;
+            }
+		}
+
+		public void BeginInvokeNotify(NotifyType notifyType, object args)
+		{
+			this.BeginInvoke(new NotifyDelegate(this.Notify), notifyType, args);
+		}
+
+		public void InvokeNotify(NotifyType notifyType, object args)
+		{
+			this.Invoke(new NotifyDelegate(this.Notify), notifyType, args);
+		}
+
+        private void button1_Click(object sender, EventArgs e)
+        {
+            this.Close();
+        }
+
+        private void button2_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                System.Diagnostics.Process.Start(_documentFileName);
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message);
+            }
+        }
+
+        private void button3_Click(object sender, EventArgs e)
+        {
+            if (_builder != null && !_builder.IsFinish &&
+                MessageBox.Show(this, Resources.String55, Resources.strTip, MessageBoxButtons.YesNo) == DialogResult.Yes)
+            {
+                _builder.Cancel();
+            }
+        }
+    }
+
+    internal enum NotifyType
+    {
+        ShowProgress,
+        OutputDataReceived,
+        Finished,
+		Canceled,
+		FinishedNoCHM,
+        ShowMsg
+    }
+}

File ADB.Factories/BuildProgress.designer.cs

View file
  • Ignore whitespace
+ďťżnamespace ADB.Factories
+{
+    partial class BuildProgress
+    {
+        /// <summary>
+        /// ĺż
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// ć¸
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要
+        /// 使用代码编辑器修改此方法的ĺ†
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BuildProgress));
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.progressBar1 = new System.Windows.Forms.ProgressBar();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.button1 = new System.Windows.Forms.Button();
+            this.button2 = new System.Windows.Forms.Button();
+            this.button3 = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // textBox1
+            // 
+            this.textBox1.BackColor = System.Drawing.Color.White;
+            resources.ApplyResources(this.textBox1, "textBox1");
+            this.textBox1.Name = "textBox1";
+            this.textBox1.ReadOnly = true;
+            // 
+            // progressBar1
+            // 
+            resources.ApplyResources(this.progressBar1, "progressBar1");
+            this.progressBar1.Name = "progressBar1";
+            // 
+            // label1
+            // 
+            resources.ApplyResources(this.label1, "label1");
+            this.label1.Name = "label1";
+            // 
+            // label2
+            // 
+            resources.ApplyResources(this.label2, "label2");
+            this.label2.Name = "label2";
+            // 
+            // button1
+            // 
+            this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
+            resources.ApplyResources(this.button1, "button1");
+            this.button1.Name = "button1";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // button2
+            // 
+            resources.ApplyResources(this.button2, "button2");
+            this.button2.Name = "button2";
+            this.button2.UseVisualStyleBackColor = true;
+            this.button2.Click += new System.EventHandler(this.button2_Click);
+            // 
+            // button3
+            // 
+            resources.ApplyResources(this.button3, "button3");
+            this.button3.Name = "button3";
+            this.button3.UseVisualStyleBackColor = true;
+            this.button3.Click += new System.EventHandler(this.button3_Click);
+            // 
+            // BuildProgress
+            // 
+            resources.ApplyResources(this, "$this");
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ControlBox = false;
+            this.Controls.Add(this.button3);
+            this.Controls.Add(this.button2);
+            this.Controls.Add(this.button1);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.progressBar1);
+            this.Controls.Add(this.textBox1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
+            this.Name = "BuildProgress";
+            this.ShowInTaskbar = false;
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.TextBox textBox1;
+        private System.Windows.Forms.ProgressBar progressBar1;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Button button2;
+        private System.Windows.Forms.Button button3;
+    }
+}

File ADB.Factories/BuildProgress.en.resx

View file
  • Ignore whitespace
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="progressBar1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>137, 21</value>
+  </data>
+  <data name="progressBar1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>170, 13</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>119, 12</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Creating HTML Pages</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>131, 12</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Creating CHM Document</value>
+  </data>
+  <data name="button1.Text" xml:space="preserve">
+    <value>Close</value>
+  </data>
+  <data name="button2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>89, 255</value>
+  </data>
+  <data name="button2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 23</value>
+  </data>
+  <data name="button2.Text" xml:space="preserve">
+    <value>Open</value>
+  </data>
+  <data name="button3.Text" xml:space="preserve">
+    <value>Cancel</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Progress</value>
+  </data>
+</root>

File ADB.Factories/BuildProgress.resx

View file
  • Ignore whitespace
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>14, 74</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="textBox1.Multiline" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="textBox1.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
+    <value>Vertical</value>
+  </data>
+  <data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>295, 175</value>
+  </data>
+  <data name="textBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="textBox1.WordWrap" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="&gt;&gt;textBox1.Name" xml:space="preserve">
+    <value>textBox1</value>
+  </data>
+  <data name="&gt;&gt;textBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="progressBar1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>95, 21</value>
+  </data>
+  <data name="progressBar1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>212, 13</value>
+  </data>
+  <data name="progressBar1.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="&gt;&gt;progressBar1.Name" xml:space="preserve">
+    <value>progressBar1</value>
+  </data>
+  <data name="&gt;&gt;progressBar1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;progressBar1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;progressBar1.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 22</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>77, 12</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>页面生成进度</value>
+  </data>
+  <data name="&gt;&gt;label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name="&gt;&gt;label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 53</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>119, 12</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>CHM帮助文档生成进度</value>
+  </data>
+  <data name="&gt;&gt;label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name="&gt;&gt;label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="button1.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="button1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>153, 255</value>
+  </data>
+  <data name="button1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="button1.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="button1.Text" xml:space="preserve">
+    <value>ĺ
+  </data>
+  <data name="&gt;&gt;button1.Name" xml:space="preserve">
+    <value>button1</value>
+  </data>
+  <data name="&gt;&gt;button1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;button1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="button2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>56, 255</value>
+  </data>
+  <data name="button2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>91, 23</value>
+  </data>
+  <data name="button2.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="button2.Text" xml:space="preserve">
+    <value>打开文档</value>
+  </data>
+  <data name="button2.Visible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="&gt;&gt;button2.Name" xml:space="preserve">
+    <value>button2</value>
+  </data>
+  <data name="&gt;&gt;button2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;button2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;button2.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="button3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>234, 255</value>
+  </data>
+  <data name="button3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="button3.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="button3.Text" xml:space="preserve">
+    <value>取消</value>
+  </data>
+  <data name="&gt;&gt;button3.Name" xml:space="preserve">
+    <value>button3</value>
+  </data>
+  <data name="&gt;&gt;button3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;button3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;button3.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 12</value>
+  </data>
+  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>321, 287</value>
+  </data>
+  <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
+    <value>CenterScreen</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>进度</value>
+  </data>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>BuildProgress</value>
+  </data>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+</root>

File ADB.Factories/CHMDocumentBuilderFactory.cs

View file
  • Ignore whitespace
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Reflection;
+using ADB.Factories;
+using System.Collections;
+using System.Diagnostics;
+using System.Threading;
+using System.IO;
+using System.Windows.Forms;
+using Microsoft.VisualBasic.FileIO;
+
+namespace ADB.Factories
+{
+    using Properties;
+    using ContentTree = ContentTreeItem;
+
+    /// <summary>
+    /// ąíʞҝ¸öÉúłÉCHMÎÄľľľÄÎÄľľÉúłÉĆ÷ľÄťůŔŕ
+    /// </summary>
+    /// <remarks>
+    /// CHMDocumentBuilderFactoryĘÇŇť¸öłéĎóŔ࣏ĆäÔđÖ°ĘÇ˝ŤCreateNamespacePageŁ¨ÉúłÉĂüĂűżŐźäÎÄľľŇłĂ棊ŁŹCreateTypePageŁ¨ÉúłÉŔŕĐÍČçŔ࣏˝ÓżÚľČľÄŇłĂ棊şÍCreateMemberPageŁ¨ÉúłÉŔŕĐÍłÉÔąČ硽ˇ¨ŁŹĘôĐԾȾÄŇłĂ棊ÉúłÉľÄŇłĂćąŕŇëÎŞCHMÎÄľľŁŹ<span style="color: #ff0000">Ňň´ËŁŹľąÄăĎëąŕĐ´Ňť¸öžßÓиöĐÔťŻˇç¸ńŃůĘ˝Ł¨ąČČçMSDN2008ŃůĘ˝ŁŠľÄÎÄľľĘąŁŹÖťĐčźĚłĐ´ËŔಢÖŘĐ´CreateNamespacePageŁŹCreateTypePageşÍCreateMemberPageČý¸öˇ˝ˇ¨ź´żÉŁŹśř˛ťĐčŇŞšŘĐÄąŕŇëCHMľÄϸ˝ÚĄŁ</span>
+    /// </remarks>
+    public abstract class CHMDocumentBuilderFactory : ADB.Factories.DocumentBuilder
+    {
+        #region HTMLÄŁ°ĺ
+
+        static TextTemplate tempPage = new TextTemplate(Templates.Temp_Page);
+        static TextTemplate tempSection = new TextTemplate(Templates.Temp_Section);
+        static TextTemplate tempTypeTable = new TextTemplate(Templates.Temp_TypeTable);
+        static TextTemplate tempTypeTable_Row = new TextTemplate(Templates.Temp_TypeTable_Row);
+        static TextTemplate tempExceptionTable = new TextTemplate(Templates.Temp_ExceptionTable);
+        static TextTemplate tempExample_Description = new TextTemplate(Templates.Temp_Example_Description);
+        static TextTemplate tempExample_Code = new TextTemplate(Templates.Temp_Example_Code);
+        static TextTemplate tempExceptionTable_Row = new TextTemplate(Templates.Temp_ExceptionTable_Row);
+        static TextTemplate tempDeclaration = new TextTemplate(Templates.Temp_Declaration);
+        static TextTemplate tempParamsBlock = new TextTemplate(Templates.Temp_ParamsBlock);
+        static TextTemplate tempParam = new TextTemplate(Templates.Temp_Param);
+        static TextTemplate tempRemarks = new TextTemplate(Templates.Temp_Remarks);
+        static TextTemplate tempImg = new TextTemplate(Templates.Temp_Img);
+        static TextTemplate tempHHC = new TextTemplate(Templates.HHC);
+        static TextTemplate tempHHP = new TextTemplate(Templates.HHP);
+        static TextTemplate tempHHP_NoIndex = new TextTemplate(Templates.HHP_NoIndex);
+        static TextTemplate tempUL = new TextTemplate(Templates.UL);
+        static TextTemplate tempLI = new TextTemplate(Templates.LI);
+        static TextTemplate tempLI_Link = new TextTemplate(Templates.LI_Link);
+
+        #endregion
+
+        BuildProgress _buildProgress = null;
+
+        Hashtable _memberFileName = new Hashtable();
+
+		Hashtable _namespaceFileName = new Hashtable();
+
+		Encoding _targetEncoding = Encoding.GetEncoding(Thread.CurrentThread.CurrentCulture.TextInfo.ANSICodePage);
+
+		/// <summary>
+		/// 
+		/// </summary>
+		public Encoding TargetEncoding
+		{
+			get { return CHM_OptionDialog.Encoding; }
+		}
+
+        int _total = 0;
+
+        // ĿŸĘ÷ľÄ¸ůĎî
+        ContentTree _root = new ContentTree("root", "");
+
+        readonly static string AssemblyBasePath = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;
+
+        private readonly string _defaultHHCPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\HTML Help Workshop\\hhc.exe";
+
+        /// <summary>
+        /// HHC¡žś
+        /// </summary>
+        public string HHCPath
+        {
+            get
+            {
+                return string.IsNullOrEmpty(Settings.Default.HHCPath) ? _defaultHHCPath : Settings.Default.HHCPath;
+            }
+            set
+            {
+                Settings.Default.HHCPath = value;
+                Settings.Default.Save();
+            }
+        }
+
+
+        bool _isCanceled = false, _isFinish = false;
+        Process _hhcProcess = null;
+        AutoResetEvent _exitEvent = null;
+
+        string _target = null;
+        string _title = null;
+
+        readonly static Hashtable NameToTypeDictionary = new Hashtable();
+        readonly static Hashtable NameToTitleDictionary = new Hashtable();
+
+        static CHMDocumentBuilderFactory()
+        {
+            NameToTitleDictionary.Add("Constructor", Resources.strConstructor);
+            NameToTitleDictionary.Add("PublicMethod", Resources.strPublicMethod);
+            NameToTitleDictionary.Add("PrivateMethod", Resources.strPrivateMethod);
+            NameToTitleDictionary.Add("ProtectedMethod", Resources.strProtectedMethod);
+            NameToTitleDictionary.Add("PublicProperty", Resources.strPublicProperty);
+            NameToTitleDictionary.Add("PrivateProperty", Resources.strPrivateProperty);
+            NameToTitleDictionary.Add("ProtectedProperty", Resources.strProtectedProperty);
+            NameToTitleDictionary.Add("PublicField", Resources.strPublicField);
+            NameToTitleDictionary.Add("PrivateField", Resources.strPrivateField);
+            NameToTitleDictionary.Add("ProtectedField", Resources.strProtectedField);
+            NameToTitleDictionary.Add("Event", Resources.strEvent);
+            NameToTitleDictionary.Add("Class", Resources.strClass);
+            NameToTitleDictionary.Add("Interface", Resources.strInterface);
+            NameToTitleDictionary.Add("Delegate", Resources.strDelegate);
+            NameToTitleDictionary.Add("Enumeration", Resources.strEnumeration);
+            NameToTitleDictionary.Add("Structure", Resources.strStructure);
+
+            NameToTypeDictionary.Add("Constructor", Resources.strConstructor);
+            NameToTypeDictionary.Add("PublicMethod", Resources.strMethod);
+            NameToTypeDictionary.Add("PrivateMethod", Resources.strMethod);
+            NameToTypeDictionary.Add("ProtectedMethod", Resources.strMethod);
+            NameToTypeDictionary.Add("PublicProperty", Resources.strProperty);
+            NameToTypeDictionary.Add("PrivateProperty", Resources.strProperty);
+            NameToTypeDictionary.Add("ProtectedProperty", Resources.strProperty);
+            NameToTypeDictionary.Add("PublicField", Resources.strField);
+            NameToTypeDictionary.Add("PrivateField", Resources.strField);
+            NameToTypeDictionary.Add("ProtectedField", Resources.strField);
+            NameToTypeDictionary.Add("Event", Resources.strEvent);
+            NameToTypeDictionary.Add("Class", Resources.strClass);
+            NameToTypeDictionary.Add("Interface", Resources.strInterface);
+            NameToTypeDictionary.Add("Delegate", Resources.strDelegate);
+            NameToTypeDictionary.Add("Enumeration", Resources.strEnumeration);
+            NameToTypeDictionary.Add("Structure", Resources.strStructure);
+        }
+
+        /// <summary>
+        /// łőĘźťŻCHMDocumentBuilderFactoryĘľŔý
+        /// </summary>
+        /// <param name="data"></param>
+        /// <param name="interact"></param>
+        public CHMDocumentBuilderFactory(IGetData data, IInteract interact)
+            : base(data, interact)
+        {
+        }
+
+        /// <summary>
+        /// ÄżąęÎÄźţ¡žś
+        /// </summary>
+        public string Target
+        {
+            get { return _target; }
+        }
+
+        private string _targetDirectory = "";
+
+        /// <summary>
+        /// ÎÄľľąęĚâ
+        /// </summary>
+        public string Title
+        {
+            get { return _title; }
+        }
+
+        /// <summary>
+        /// ĘǡńŇŃž­ČĄĎű
+        /// </summary>
+        public bool IsCanceled
+        {
+            get { return _isCanceled; }
+        }
+
+        /// <summary>
+        /// ĘǡńŇŃÍęłÉ
+        /// </summary>
+        public bool IsFinish
+        {
+            get { return _isFinish; }
+        }
+
+        /// <summary>
+        /// ČĄĎűÉúłÉšýłĚ
+        /// </summary>
+        public void Cancel()
+        {
+            _isCanceled = true;
+            if (_hhcProcess != null && !_hhcProcess.HasExited)
+            {
+                _hhcProcess.Kill();
+            }
+        }
+
+        /// <summary>
+        /// ľČ´ýÖąľ˝ÍęłÉťňČĄĎű
+        /// </summary>
+        public void WaitForExit()
+        {
+            _exitEvent.WaitOne();
+        }
+
+        /// <summary>
+        /// ÉúłÉÎÄľľ
+        /// </summary>
+        /// <param name="title">ÎÄľľąęĚâ</param>
+        /// <param name="target">ÎÄľľÎÄźţ¡žś</param>
+        public override void Build(string title, string target)
+        {
+            #region ťńČĄHHCľÄ¡žś
+            if (!File.Exists(HHCPath))
+            {
+                string hhcPath;
+                do
+                {
+                    hhcPath = (string)Interact.Invoke(new GetHHCPathDelegate(this.GetHHCPathMehtod));
+                } while (!string.IsNullOrEmpty(hhcPath) && !File.Exists(hhcPath));
+                if (string.IsNullOrEmpty(hhcPath))
+                    return;
+                else
+                    HHCPath = hhcPath;
+            }
+            #endregion
+
+            if (!IsFinish)
+            {
+                #region łőĘźťŻÓëBuildˇ˝ˇ¨ĎŕšŘľÄąäÁż
+                FileInfo targetFileInfo = new FileInfo(target);
+                if (string.Compare(targetFileInfo.Extension, ".chm", true) != 0) target += ".chm";
+                _title = title;
+                _targetDirectory = targetFileInfo.DirectoryName;
+                _exitEvent = new AutoResetEvent(false);
+                _isCanceled = false;
+                _isFinish = false;
+                _hhcProcess = null;
+                _target = target;
+                #endregion
+
+                Interact.Invoke(new BeforeBuildDelegate(BeforeBuild));
+                try
+                {
+                    CreateContentTree();
+                    CreatePages();
+                    if (!IsCanceled) CreateCHM(CHM_OptionDialog.BuildMode);
+                }
+                finally
+                {
+                    _isFinish = true;
+                    _hhcProcess = null;
+					if (IsCanceled)
+						_buildProgress.InvokeNotify(NotifyType.Canceled, null);
+					else
+					{
+						if (CHM_OptionDialog.BuildMode == BuildMode.HTMLAndCHM)
+							_buildProgress.InvokeNotify(NotifyType.Finished, target);
+						else
+							_buildProgress.InvokeNotify(NotifyType.FinishedNoCHM, null);
+					}
+                    //Interact.Invoke(new AfterBuildDelegate(AfterBuild), IsCanceled ? null : target);
+                    _exitEvent.Set();
+                }
+            }
+            else
+            {
+                throw new Exception(Resources.String1);
+            }
+        }
+
+        private delegate string GetHHCPathDelegate();
+
+        private string GetHHCPathMehtod()
+        {
+            GetHHCPathDialog pathDialog = new GetHHCPathDialog();
+            if (pathDialog.ShowDialog(Interact.MainForm) == System.Windows.Forms.DialogResult.OK)
+                return pathDialog.HHCPath;
+            else
+                return null;
+        }
+
+        private void CreateCHM(BuildMode buildMode)
+        {
+            if (_root.Count > 0)
+            {
+                _outputCache.Remove(0, _outputCache.Length);
+                StringBuilder links = new StringBuilder();
+                StringBuilder files = new StringBuilder();
+                foreach (ContentTreeItem nsItem in _root.GetSubItemsCollection())
+                {
+                    if (nsItem.Name != null)
+                    {
+                        files.Append("\r\n");
+                        files.Append(RelativeHtmlFilePath + "\\" + nsItem.FileName);
+                        links.Append(tempLI_Link.Render(nsItem.Name, RelativeHtmlFilePath + "\\" + nsItem.FileName, "1"));
+                    }
+                    foreach (ContentTreeItem nsSubItem in nsItem.GetSubItemsCollection())
+                    {
+                        StringBuilder nsSubLinks = new StringBuilder();
+                        foreach (ContentTreeItem typeItem in nsSubItem.GetSubItemsCollection())
+                        {
+                            files.Append("\r\n");
+                            files.Append(RelativeHtmlFilePath + "\\" + typeItem.FileName);
+                            nsSubLinks.Append(tempLI_Link.Render(typeItem.Name + " " + NameToTypeDictionary[nsSubItem.Name], RelativeHtmlFilePath + "\\" + typeItem.FileName, "1"));
+                            StringBuilder typeSubItems = new StringBuilder();
+                            foreach (ContentTreeItem subTypeItem in typeItem.GetSubItemsCollection())
+                            {
+                                if (subTypeItem.GetSubItemsCollection().Count > 0)
+                                {
+                                    typeSubItems.Append(tempLI_Link.Render(NameToTitleDictionary[subTypeItem.Name], RelativeHtmlFilePath + "\\" + subTypeItem.FileName, "1"));
+                                    StringBuilder memLinks = new StringBuilder();
+                                    foreach (ContentTreeItem memItem in subTypeItem.GetSubItemsCollection())
+                                    {
+                                        memLinks.Append(tempLI_Link.Render(memItem.Name + " " + NameToTypeDictionary[subTypeItem.Name], RelativeHtmlFilePath + "\\" + memItem.FileName, "11"));
+                                    }
+                                    if (memLinks.Length > 0)
+                                    {
+                                        typeSubItems.Append("<UL>");
+                                        typeSubItems.Append(memLinks);
+                                        typeSubItems.Append("\r\n</UL>");
+                                    }
+                                }
+                            }
+                            if (typeSubItems.Length > 0)
+                            {
+                                nsSubLinks.Append("<UL>");
+                                nsSubLinks.Append(typeSubItems);
+                                nsSubLinks.Append("\r\n</UL>");
+                            }
+                        }
+                        if (nsSubLinks.Length > 0)
+                        {
+                            if (nsItem.Name != null)
+                            {
+                                links.Append("<UL>");
+                                links.Append(nsSubLinks);
+                                links.Append("\r\n</UL>");
+                            }
+                            else
+                                links.Append(nsSubLinks);
+                        }
+                    }
+                }
+                if (string.Compare(new FileInfo(_target).Extension, ".chm") != 0) _target += ".chm";
+                tempHHP_NoIndex.SaveAs(_targetDirectory + "\\Document.hhp", TargetEncoding, _target, "Document.hhc", _title, "Document.hhc", files);
+				tempHHC.SaveAs(_targetDirectory + "\\Document.hhc", TargetEncoding, links);
+                if (CHM_OptionDialog.BuildMode == BuildMode.HTMLAndCHM)
+                {
+                    _hhcProcess = new Process();
+                    _hhcProcess.StartInfo.UseShellExecute = false;
+                    _hhcProcess.StartInfo.CreateNoWindow = true;
+                    _hhcProcess.StartInfo.RedirectStandardOutput = true;
+                    _hhcProcess.StartInfo.RedirectStandardInput = true;
+                    _hhcProcess.StartInfo.FileName = _defaultHHCPath;
+                    _hhcProcess.StartInfo.Arguments = string.Format("\"{0}\\Document.hhp\"", _targetDirectory);
+                    _hhcProcess.OutputDataReceived += new DataReceivedEventHandler(this.hhc_OutputDataReceived);
+                    _hhcProcess.Start();
+                    try
+                    {
+                        _hhcProcess.BeginOutputReadLine();
+                    }
+                    finally
+                    {
+                        _hhcProcess.WaitForExit();
+                    }
+
+                    if (_outputCache.Length > 0)
+                        _buildProgress.BeginInvokeNotify(NotifyType.OutputDataReceived, _outputCache.ToString());
+                }
+            }
+        }
+
+        StringBuilder _outputCache = new StringBuilder(_cacheLength);
+        static readonly int _cacheLength = 4096;
+
+        private void hhc_OutputDataReceived(object sendingProcess, DataReceivedEventArgs outLine)
+        {
+            if (outLine.Data != null)
+            {
+                string data = outLine.Data + "\r\n";
+                if (_outputCache.Length + data.Length > _cacheLength)
+                {
+                    _buildProgress.BeginInvokeNotify(NotifyType.OutputDataReceived, _outputCache.ToString());
+                    _outputCache.Remove(0, _outputCache.Length);
+                }
+                else
+                {
+                    _outputCache.Append(data);
+                }
+            }
+        }
+
+        /// <summary>
+        /// ťńČĄÎÄźţĂűɸѥĆ÷×Öˇű´ŽŁŹ¸Ă×Öˇű´Žžöś¨śÔť°żňľÄĄ°Áí´ćÎŞÎÄźţŔŕĐÍĄążňÖĐłöĎÖľÄŃĄÔńÄÚČÝĄŁ
+        /// </summary>
+        public override string Filter
+        {
+            get { return "CHM|*.chm"; }
+        }
+
+        /// <summary>
+        /// ´´˝¨ÄżÂźĘ÷ŁŹ˛˘Čˇś¨ĂüĂűżŐźäŁŹŔŕĐÍŁŹłÉÔąśÔÓŚľÄŇłĂćľÄÎÄźţĂű
+        /// </summary>
+        /// <returns></returns>
+        private void CreateContentTree()
+        {
+            int pageCount = 0;
+			foreach (Type type in DataProvider.GetSelectedTypes())
+			{
+				ContentTreeItem nsItem = null, typeParentItem = null;
+				string typeParentName = "";
+				nsItem = _root.Find(type.Namespace);
+				if (nsItem == null)
+				{
+					string nsPageFileName = (++pageCount).ToString("000000") + Resources.Extension;
+					_root.Add(nsItem = new ContentTreeItem(type.Namespace, nsPageFileName));
+					if (!string.IsNullOrEmpty(type.Namespace)) _namespaceFileName.Add(type.Namespace, nsPageFileName);
+				}
+				if (type.IsClass)
+					typeParentName = "Class";
+				else if (type.IsEnum)
+					typeParentName = "Enumeration";
+				else if (type.IsValueType)
+					typeParentName = "Structure";
+				else if (type.IsInterface)
+					typeParentName = "Interface";
+				else
+					typeParentName = "Delegate";
+				typeParentItem = nsItem.Find(typeParentName);
+				if (typeParentItem == null) nsItem.Add(typeParentItem = new ContentTreeItem(typeParentName, ""));
+                ContentTreeItem typeItem = new ContentTreeItem(DocumentBuilderUtility.GetTypeDefinition(type, false), (++pageCount).ToString("000000") + Resources.Extension, type);
+				_memberFileName.Add(DocumentBuilderUtility.GetMemberID(type), typeItem.FileName);
+				typeParentItem.Add(typeItem);
+				foreach (MemberInfo memberInfo in DataProvider.GetTypeSelectedMembers(type))
+				{
+					string parentItemName = "";
+					#region ĚíźÓłÉÔą
+					switch (memberInfo.MemberType)
+					{
+					case MemberTypes.Constructor:
+						{
+							parentItemName = "Constructor";
+							break;
+						}
+					case MemberTypes.Method:
+						{
+							MethodInfo method = memberInfo as MethodInfo;
+							if (!method.IsSpecialName)
+							{
+								if (method.IsPublic)
+									parentItemName = "PublicMethod";
+								else if (method.IsPrivate)
+									parentItemName = "PrivateMethod";
+								else
+									parentItemName = "ProtectedMethod";
+							}
+							break;
+						}
+					case MemberTypes.Field:
+						{
+							FieldInfo field = memberInfo as FieldInfo;
+							if (field.IsPublic)
+								parentItemName = "PublicField";
+							else if (field.IsPrivate)
+								parentItemName = "PrivateField";
+							else
+								parentItemName = "ProtectedField";
+							break;
+						}
+					case MemberTypes.Property:
+						{
+							PropertyInfo property = memberInfo as PropertyInfo;
+							MethodInfo pm = property.GetGetMethod(true);
+							if (pm == null) pm = property.GetSetMethod(true);
+							if (pm != null)
+							{
+								if (pm.IsPublic)
+									parentItemName = "PublicProperty";
+								else if (pm.IsPrivate)
+									parentItemName = "PrivateProperty";
+								else
+									parentItemName = "ProtectedProperty";
+							}
+							break;
+						}
+					case MemberTypes.Event:
+						{
+							parentItemName = "Event";
+							break;
+						}
+					}
+					if (!string.IsNullOrEmpty(parentItemName))
+					{
+						ContentTreeItem parentItem = typeItem.Find(parentItemName);
+						if (parentItem == null)
+						{
+							parentItem = new ContentTreeItem(parentItemName, typeItem.FileName + "#" + parentItemName);
+							typeItem.Add(parentItem);
+						}
+						if (memberInfo.MemberType == MemberTypes.Constructor)
+						{
+							string fileName = (++pageCount).ToString("000000") + Resources.Extension;
+                            parentItem.Add(new ContentTreeItem(DocumentBuilderUtility.GetTypeDefinition(memberInfo.ReflectedType, false), fileName, memberInfo));
+						}
+						else
+						{
+							string fileName = _memberFileName[DocumentBuilderUtility.GetMemberID(memberInfo)] as string;
+							if (string.IsNullOrEmpty(fileName))
+							{
+								fileName = (++pageCount).ToString("000000") + Resources.Extension;
+								_memberFileName.Add(DocumentBuilderUtility.GetMemberID(memberInfo), fileName);
+							}
+							parentItem.Add(new ContentTreeItem(memberInfo.Name, fileName, memberInfo));
+						}
+					}
+					#endregion
+				}
+			}
+            _root.Sort();
+            _total = pageCount;
+        }
+
+        private bool CreatePages()
+        {
+            if (_total > 0)
+            {
+                Hashtable htmlFiles = new Hashtable();
+                int pageCmp = 0;
+                foreach (ContentTreeItem ns in _root.GetSubItemsCollection())
+                {
+                    if (!IsCanceled)
+                    {
+                        if (!string.IsNullOrEmpty(ns.Name)) CreateNamespacePage(ns, ns);
+                        pageCmp++;
+                    }
+                    else
+                        return false;
+                    foreach (ContentTreeItem nsSubItem in ns.GetSubItemsCollection())
+                        foreach (ContentTreeItem type in nsSubItem.GetSubItemsCollection())
+                        {
+                            if (!IsCanceled)
+                            {
+                                CreateTypePage(type, type);
+                                pageCmp++;
+                            }
+                            else
+                                return false;
+                            foreach (ContentTreeItem subTypeItem in type.GetSubItemsCollection())
+                                foreach (ContentTreeItem member in subTypeItem.GetSubItemsCollection())
+                                {
+                                    if (!IsCanceled)
+                                    {
+                                        if (!htmlFiles.ContainsKey(member.FileName))
+                                        {
+                                            CreateMemberPage(member);
+                                            htmlFiles.Add(member.FileName, 0);
+                                            pageCmp++;
+                                        }
+                                    }
+                                    else
+                                        return false;
+                                }
+                            _buildProgress.BeginInvokeNotify(NotifyType.ShowProgress, pageCmp * 100 / _total);
+                        }
+                }
+            }
+            return true;
+        }
+
+        delegate void BeforeBuildDelegate();
+
+        private void BeforeBuild()
+        {
+            _buildProgress = new BuildProgress(this);
+            _buildProgress.Show(Interact.MainForm);
+        }
+
+        delegate void AfterBuildDelegate(string target);
+
+        private void AfterBuild(string target)
+        {
+            _buildProgress.Notify(NotifyType.Finished, target);
+        }
+
+        /// <summary>