Pārlūkot izejas kodu

登录窗口->欢迎界面,Ribbon支持皮肤选择或保存。

jianfeng1.wang 2 gadi atpakaļ
vecāks
revīzija
9e90bb20f3

+ 18 - 10
FactoryTool/FactoryTool/FactoryTool.csproj

@@ -43,6 +43,7 @@
     <Reference Include="DevExpress.XtraEditors.v22.1" />
     <Reference Include="DevExpress.Drawing.v22.1" />
     <Reference Include="System" />
+    <Reference Include="System.Configuration" />
     <Reference Include="System.Core" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -70,11 +71,16 @@
     <Compile Include="MainViewModel.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SplashScreen1.cs">
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="WelcomeScreen.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Include="SplashScreen1.Designer.cs">
-      <DependentUpon>SplashScreen1.cs</DependentUpon>
+    <Compile Include="WelcomeScreen.Designer.cs">
+      <DependentUpon>WelcomeScreen.cs</DependentUpon>
     </Compile>
     <EmbeddedResource Include="LoginView.resx">
       <DependentUpon>LoginView.cs</DependentUpon>
@@ -85,15 +91,11 @@
     <EmbeddedResource Include="Properties\licenses.licx" />
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
       <SubType>Designer</SubType>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <EmbeddedResource Include="SplashScreen1.resx">
-      <DependentUpon>SplashScreen1.cs</DependentUpon>
+    <EmbeddedResource Include="WelcomeScreen.resx">
+      <DependentUpon>WelcomeScreen.cs</DependentUpon>
     </EmbeddedResource>
     <None Include="App.config" />
     <None Include="Properties\Settings.settings">
@@ -106,6 +108,12 @@
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
     </Compile>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\logo.bmp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\minlogo.png" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\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.

+ 95 - 2
FactoryTool/FactoryTool/LoginView.Designer.cs

@@ -30,7 +30,17 @@
         {
             this.components = new System.ComponentModel.Container();
             this.mvvmContext1 = new DevExpress.Utils.MVVM.MVVMContext(this.components);
+            this.pictureEdit1 = new DevExpress.XtraEditors.PictureEdit();
+            this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+            this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+            this.textEdit1 = new DevExpress.XtraEditors.TextEdit();
+            this.comboBoxEdit1 = new DevExpress.XtraEditors.ComboBoxEdit();
+            this.BTN_LOGIN = new DevExpress.XtraEditors.SimpleButton();
+            this.BTN_CANCLE = new DevExpress.XtraEditors.SimpleButton();
             ((System.ComponentModel.ISupportInitialize)(this.mvvmContext1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit1.Properties)).BeginInit();
             this.SuspendLayout();
             // 
             // mvvmContext1
@@ -38,20 +48,103 @@
             this.mvvmContext1.ContainerControl = this;
             this.mvvmContext1.ViewModelType = typeof(FactoryTool.LoginViewModel);
             // 
+            // pictureEdit1
+            // 
+            this.pictureEdit1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.pictureEdit1.EditValue = global::FactoryTool.Properties.Resources.logo;
+            this.pictureEdit1.Location = new System.Drawing.Point(0, 0);
+            this.pictureEdit1.Name = "pictureEdit1";
+            this.pictureEdit1.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
+            this.pictureEdit1.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.Auto;
+            this.pictureEdit1.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Stretch;
+            this.pictureEdit1.Size = new System.Drawing.Size(377, 125);
+            this.pictureEdit1.TabIndex = 0;
+            // 
+            // labelControl1
+            // 
+            this.labelControl1.Location = new System.Drawing.Point(106, 134);
+            this.labelControl1.Name = "labelControl1";
+            this.labelControl1.Size = new System.Drawing.Size(36, 14);
+            this.labelControl1.TabIndex = 1;
+            this.labelControl1.Text = "账号:";
+            // 
+            // labelControl2
+            // 
+            this.labelControl2.Location = new System.Drawing.Point(106, 160);
+            this.labelControl2.Name = "labelControl2";
+            this.labelControl2.Size = new System.Drawing.Size(36, 14);
+            this.labelControl2.TabIndex = 2;
+            this.labelControl2.Text = "密码:";
+            // 
+            // textEdit1
+            // 
+            this.textEdit1.Location = new System.Drawing.Point(148, 157);
+            this.textEdit1.Name = "textEdit1";
+            this.textEdit1.Size = new System.Drawing.Size(123, 20);
+            this.textEdit1.TabIndex = 3;
+            // 
+            // comboBoxEdit1
+            // 
+            this.comboBoxEdit1.Location = new System.Drawing.Point(148, 131);
+            this.comboBoxEdit1.Name = "comboBoxEdit1";
+            this.comboBoxEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.comboBoxEdit1.Size = new System.Drawing.Size(123, 20);
+            this.comboBoxEdit1.TabIndex = 4;
+            // 
+            // BTN_LOGIN
+            // 
+            this.BTN_LOGIN.Location = new System.Drawing.Point(69, 189);
+            this.BTN_LOGIN.Name = "BTN_LOGIN";
+            this.BTN_LOGIN.Size = new System.Drawing.Size(96, 23);
+            this.BTN_LOGIN.TabIndex = 5;
+            this.BTN_LOGIN.Text = "登录";
+            this.BTN_LOGIN.Click += new System.EventHandler(this.BTN_LOGIN_Click);
+            // 
+            // BTN_CANCLE
+            // 
+            this.BTN_CANCLE.Location = new System.Drawing.Point(212, 189);
+            this.BTN_CANCLE.Name = "BTN_CANCLE";
+            this.BTN_CANCLE.Size = new System.Drawing.Size(96, 23);
+            this.BTN_CANCLE.TabIndex = 6;
+            this.BTN_CANCLE.Text = "取消";
+            this.BTN_CANCLE.Click += new System.EventHandler(this.BTN_CANCLE_Click);
+            // 
             // LoginView
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(298, 268);
+            this.ClientSize = new System.Drawing.Size(377, 228);
+            this.Controls.Add(this.BTN_CANCLE);
+            this.Controls.Add(this.BTN_LOGIN);
+            this.Controls.Add(this.comboBoxEdit1);
+            this.Controls.Add(this.textEdit1);
+            this.Controls.Add(this.labelControl2);
+            this.Controls.Add(this.labelControl1);
+            this.Controls.Add(this.pictureEdit1);
+            this.IconOptions.Image = global::FactoryTool.Properties.Resources.logo;
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
             this.Name = "LoginView";
-            this.Text = "LoginView";
+            this.Text = "系统登录";
             ((System.ComponentModel.ISupportInitialize)(this.mvvmContext1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit1.Properties)).EndInit();
             this.ResumeLayout(false);
+            this.PerformLayout();
 
         }
 
         #endregion
 
         private DevExpress.Utils.MVVM.MVVMContext mvvmContext1;
+        private DevExpress.XtraEditors.SimpleButton BTN_CANCLE;
+        private DevExpress.XtraEditors.SimpleButton BTN_LOGIN;
+        private DevExpress.XtraEditors.ComboBoxEdit comboBoxEdit1;
+        private DevExpress.XtraEditors.TextEdit textEdit1;
+        private DevExpress.XtraEditors.LabelControl labelControl2;
+        private DevExpress.XtraEditors.LabelControl labelControl1;
+        private DevExpress.XtraEditors.PictureEdit pictureEdit1;
     }
 }

+ 10 - 0
FactoryTool/FactoryTool/LoginView.cs

@@ -17,5 +17,15 @@ namespace FactoryTool
         {
             InitializeComponent();
         }
+
+        private void BTN_LOGIN_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.OK;
+        }
+
+        private void BTN_CANCLE_Click(object sender, EventArgs e)
+        {
+            this.DialogResult=DialogResult.Cancel;
+        }
     }
 }

+ 17 - 2
FactoryTool/FactoryTool/MainView.Designer.cs

@@ -33,6 +33,7 @@
             this.ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
             this.ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             this.mvvmContext1 = new DevExpress.Utils.MVVM.MVVMContext(this.components);
+            this.skinRibbonGalleryBarItem1 = new DevExpress.XtraBars.SkinRibbonGalleryBarItem();
             ((System.ComponentModel.ISupportInitialize)(this.ribbonControl1)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.mvvmContext1)).BeginInit();
             this.SuspendLayout();
@@ -43,10 +44,11 @@
             this.ribbonControl1.ExpandCollapseItem.Id = 0;
             this.ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
             this.ribbonControl1.ExpandCollapseItem,
-            this.ribbonControl1.SearchEditItem});
+            this.ribbonControl1.SearchEditItem,
+            this.skinRibbonGalleryBarItem1});
             this.ribbonControl1.Location = new System.Drawing.Point(0, 0);
             this.ribbonControl1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
-            this.ribbonControl1.MaxItemId = 1;
+            this.ribbonControl1.MaxItemId = 2;
             this.ribbonControl1.Name = "ribbonControl1";
             this.ribbonControl1.OptionsMenuMinWidth = 385;
             this.ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] {
@@ -62,6 +64,7 @@
             // 
             // ribbonPageGroup1
             // 
+            this.ribbonPageGroup1.ItemLinks.Add(this.skinRibbonGalleryBarItem1);
             this.ribbonPageGroup1.Name = "ribbonPageGroup1";
             this.ribbonPageGroup1.Text = "ribbonPageGroup1";
             // 
@@ -70,6 +73,16 @@
             this.mvvmContext1.ContainerControl = this;
             this.mvvmContext1.ViewModelType = typeof(FactoryTool.MainViewModel);
             // 
+            // skinRibbonGalleryBarItem1
+            // 
+            this.skinRibbonGalleryBarItem1.Caption = "skinRibbonGalleryBarItem1";
+            // 
+            // 
+            // 
+            this.skinRibbonGalleryBarItem1.Gallery.ItemClick += new DevExpress.XtraBars.Ribbon.GalleryItemClickEventHandler(this.skinRibbonGalleryBarItem1_Gallery_ItemClick);
+            this.skinRibbonGalleryBarItem1.Id = 1;
+            this.skinRibbonGalleryBarItem1.Name = "skinRibbonGalleryBarItem1";
+            // 
             // MainView
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
@@ -80,6 +93,7 @@
             this.Name = "MainView";
             this.Ribbon = this.ribbonControl1;
             this.Text = "MainView";
+            this.Load += new System.EventHandler(this.MainView_Load);
             ((System.ComponentModel.ISupportInitialize)(this.ribbonControl1)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.mvvmContext1)).EndInit();
             this.ResumeLayout(false);
@@ -93,6 +107,7 @@
         private DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage1;
         private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup1;
         private DevExpress.Utils.MVVM.MVVMContext mvvmContext1;
+        private DevExpress.XtraBars.SkinRibbonGalleryBarItem skinRibbonGalleryBarItem1;
     }
 }
 

+ 59 - 1
FactoryTool/FactoryTool/MainView.cs

@@ -1,11 +1,17 @@
-using System;
+using DevExpress.XtraBars.Ribbon;
+using DevExpress.XtraBars;
+using DevExpress.XtraSplashScreen;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Windows.Forms;
+using System.Configuration;
+using FactoryTool.Properties;
 
 namespace FactoryTool
 {
@@ -13,14 +19,66 @@ namespace FactoryTool
     {
         public MainView()
         {
+            this.Load += ucRibbon_Load;
             InitializeComponent();
             if (!mvvmContext1.IsDesignMode)
                 InitializeBindings();
         }
 
+
+        string[] skinsToHide = { "Basic", "The Bezier", "Xmas 2008 Blue", "Seven Classic", "DevExpress Style", "Dark", "2010", "2007", "Sharp" };
+
+        void ucRibbon_Load(object sender, EventArgs e)
+        {
+            HideGalleryItemsByCaptions(skinRibbonGalleryBarItem1, skinsToHide);
+        }
+
+        private void HideGalleryItemsByCaptions(RibbonGalleryBarItem galleryItem, string[] skinsToHide)
+        {
+            var allItems = galleryItem.Gallery.GetAllItems();
+            foreach (GalleryItem item in allItems)
+            {
+                if (skinsToHide.Contains(item.Caption))
+                    item.Visible = false;
+            }
+        }
+
         void InitializeBindings()
         {
             var fluent = mvvmContext1.OfType<MainViewModel>();
         }
+
+        private void MainView_Load(object sender, EventArgs e)
+        {
+            LoginView loginView = new LoginView();
+            if ( loginView.ShowDialog() != DialogResult.OK )
+            {
+                Application.Exit();
+            }
+
+            // 显示欢迎界面;
+            SplashScreenManager.ShowForm(typeof(WelcomeScreen));
+            // 展示5秒;
+            Thread.Sleep(1000);
+            // 关闭欢迎界面;
+            SplashScreenManager.CloseForm();
+        }
+
+        private void skinRibbonGalleryBarItem1_Gallery_ItemClick(object sender, GalleryItemClickEventArgs e)
+        {
+            // 保存用户选择的皮肤;
+            string SkinName = e.Item.Value.ToString();
+            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
+            if (config.AppSettings.Settings["Skin"] == null)
+            {
+                config.AppSettings.Settings.Add("Skin", SkinName);               
+            }
+            else
+            {
+                config.AppSettings.Settings["Skin"].Value = SkinName;
+            }
+            config.Save(ConfigurationSaveMode.Modified);
+            ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
+        }
     }
 }

+ 48 - 1
FactoryTool/FactoryTool/Program.cs

@@ -1,7 +1,9 @@
-using DevExpress.Skins;
+using DevExpress.LookAndFeel;
+using DevExpress.Skins;
 using DevExpress.UserSkins;
 using System;
 using System.Collections.Generic;
+using System.Configuration;
 using System.Linq;
 using System.Windows.Forms;
 
@@ -9,12 +11,57 @@ namespace FactoryTool
 {
     internal static class Program
     {
+
+        public static string GetAppConfig(string strKey)
+        {
+            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
+            foreach (string key in config.AppSettings.Settings.AllKeys)
+            {
+                if (key == strKey)
+                {
+                    return config.AppSettings.Settings[strKey].Value.ToString();
+                }
+            }
+
+            return null;
+        }
+
+        public static void UpdateAppConfig(string newKey, string newValue)
+        {
+            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
+            bool exist = false;
+            foreach (string key in config.AppSettings.Settings.AllKeys)
+            {
+                if (key == newKey)
+                {
+                    exist = true;
+                }
+            }
+            if (exist)
+            {
+                config.AppSettings.Settings.Remove(newKey);
+            }
+            config.AppSettings.Settings.Add(newKey, newValue);
+            config.Save(ConfigurationSaveMode.Modified);
+            ConfigurationManager.RefreshSection("appSettings");
+        }
+
         /// <summary>
         /// The main entry point for the application.
         /// </summary>
         [STAThread]
         static void Main()
         {
+            // 启用Bonus或Custom皮肤功能;
+            BonusSkins.Register();
+            SkinManager.EnableFormSkins();
+            // 设置默认皮肤样式;
+            string skinName = GetAppConfig("Skin");
+            if (skinName != null)
+                UserLookAndFeel.Default.SetSkinStyle(skinName);
+            else
+                UserLookAndFeel.Default.SetSkinStyle(SkinStyle.Bezier);
+
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             Application.Run(new MainView());

+ 50 - 38
FactoryTool/FactoryTool/Properties/Resources.Designer.cs

@@ -1,71 +1,83 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.18047
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
 //
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace FactoryTool.Properties
-{
-
-
+namespace FactoryTool.Properties {
+    using System;
+    
+    
     /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    ///   一个强类型的资源类,用于查找本地化的字符串等。
     /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources
-    {
-
+    internal class Resources {
+        
         private static global::System.Resources.ResourceManager resourceMan;
-
+        
         private static global::System.Globalization.CultureInfo resourceCulture;
-
+        
         [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources()
-        {
+        internal Resources() {
         }
-
+        
         /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
+        ///   返回此类使用的缓存的 ResourceManager 实例。
         /// </summary>
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if ((resourceMan == null))
-                {
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
                     global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FactoryTool.Properties.Resources", typeof(Resources).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;
             }
         }
-
+        
         /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
+        ///   重写当前线程的 CurrentUICulture 属性,对
+        ///   使用此强类型资源类的所有资源查找执行重写。
         /// </summary>
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
                 return resourceCulture;
             }
-            set
-            {
+            set {
                 resourceCulture = value;
             }
         }
+        
+        /// <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 minlogo {
+            get {
+                object obj = ResourceManager.GetObject("minlogo", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
     }
 }

+ 26 - 16
FactoryTool/FactoryTool/Properties/Resources.resx

@@ -46,7 +46,7 @@
     
     mimetype: application/x-microsoft.net.object.binary.base64
     value   : The object must be serialized with 
-            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
             : and then encoded with base64 encoding.
     
     mimetype: application/x-microsoft.net.object.soap.base64
@@ -60,42 +60,45 @@
             : 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:element>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
               </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string"></xsd:attribute>
-              <xsd:attribute name="type" type="xsd:string"></xsd:attribute>
-              <xsd:attribute name="mimetype" type="xsd:string"></xsd:attribute>
+              <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>
-              <xsd:attribute name="name" type="xsd:string"></xsd:attribute>
+              <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>
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"></xsd:element>
+                <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" msdata:Ordinal="1"></xsd:attribute>
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"></xsd:attribute>
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"></xsd:attribute>
+              <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:element>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
               </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
             </xsd:complexType>
           </xsd:element>
         </xsd:choice>
@@ -109,9 +112,16 @@
     <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>
+    <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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <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="minlogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\minlogo.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.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
 </root>

+ 3 - 0
FactoryTool/FactoryTool/Properties/licenses.licx

@@ -1,2 +1,5 @@
+DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.1, Version=22.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v22.1, Version=22.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v22.1, Version=22.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
 DevExpress.Utils.MVVM.MVVMContext, DevExpress.Utils.v22.1, Version=22.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
 DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v22.1, Version=22.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

BIN
FactoryTool/FactoryTool/Resources/logo.bmp


BIN
FactoryTool/FactoryTool/Resources/minlogo.png


+ 0 - 315
FactoryTool/FactoryTool/SplashScreen1.resx

@@ -1,315 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace"></xsd:import>
-    <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:element>
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string"></xsd:attribute>
-              <xsd:attribute name="type" type="xsd:string"></xsd:attribute>
-              <xsd:attribute name="mimetype" type="xsd:string"></xsd:attribute>
-              <xsd:attribute ref="xml:space"></xsd:attribute>
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string"></xsd:attribute>
-              <xsd:attribute name="name" type="xsd:string"></xsd:attribute>
-            </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>
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"></xsd:element>
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"></xsd:attribute>
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"></xsd:attribute>
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"></xsd:attribute>
-              <xsd:attribute ref="xml:space"></xsd:attribute>
-            </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:element>
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
-            </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="DevExpress.Data.v22.1" name="DevExpress.Data.v22.1"></assembly>
-  <data name="peImage.EditValue" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.1" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-      AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIwLjEsIFZlcnNpb249MjAuMS4w
-      LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Nzk4NjhiODE0N2I1ZWFlNAUBAAAAHURl
-      dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAEoQAAAC77u/
-      PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-      IHZpZXdCb3g9IjAgMCA5OTYgMzk4IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
-      Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpz
-      cGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8xIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAg
-      MCA5OTYgMzk4Ij4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7Y2xpcC1wYXRoOnVybCgj
-      U1ZHSURfMl8pO30KCS5zdDF7Y2xpcC1wYXRoOnVybCgjU1ZHSURfNF8pO30KCS5zdDJ7ZmlsbDp1cmwo
-      I1NWR0lEXzVfKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF82Xyk7fQoJLnN0NHtvcGFjaXR5OjAuOTtm
-      aWxsOnVybCgjU1ZHSURfN18pO30KCS5zdDV7ZmlsbDp1cmwoI1NWR0lEXzhfKTt9Cgkuc3Q2e29wYWNp
-      dHk6MC41O2ZpbGw6dXJsKCNTVkdJRF85Xyk7fQo8L3N0eWxlPg0KICA8Zz4NCiAgICA8ZGVmcz4NCiAg
-      ICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI5OTYiIGhlaWdodD0iMzk4IiByeD0iMCIgcnk9IjAi
-      IGlkPSJTVkdJRF8xXyIgLz4NCiAgICA8L2RlZnM+DQogICAgPGNsaXBQYXRoIGlkPSJTVkdJRF8yXyI+
-      DQogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNTVkdJRF8xXyIgc3R5bGU9Im92ZXJmbG93OnZpc2libGUi
-      IC8+DQogICAgPC9jbGlwUGF0aD4NCiAgICA8ZyBjbGFzcz0ic3QwIj4NCiAgICAgIDxnPg0KICAgICAg
-      ICA8ZGVmcz4NCiAgICAgICAgICA8cmVjdCB4PSItMjQ5IiB5PSItMTAyIiB3aWR0aD0iMTQ5NCIgaGVp
-      Z2h0PSI1MDAiIHJ4PSIwIiByeT0iMCIgaWQ9IlNWR0lEXzNfIiAvPg0KICAgICAgICA8L2RlZnM+DQog
-      ICAgICAgIDxjbGlwUGF0aCBpZD0iU1ZHSURfNF8iPg0KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0i
-      I1NWR0lEXzNfIiBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZSIgLz4NCiAgICAgICAgPC9jbGlwUGF0aD4N
-      CiAgICAgICAgPGcgY2xhc3M9InN0MSI+DQogICAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSItNDcy
-      LjMyOTVweCIgeTE9IjkyMC42NTk5cHgiIHgyPSIxMTU3Ljg1NzhweCIgeTI9Ii01NjguNTA1OXB4IiBn
-      cmFkaWVudHVuaXRzPSJ1c2Vyc3BhY2VvbnVzZSIgc3ByZWFkbWV0aG9kPSJwYWQiIGlkPSJTVkdJRF81
-      XyI+DQogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjExLjMzJSIgc3R5bGU9InN0b3AtY29sb3I6I0ZF
-      RkVGRSIgLz4NCiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMTQuOTElIiBzdHlsZT0ic3RvcC1jb2xv
-      cjojRkFGQkZCIiAvPg0KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSI1MC41OSUiIHN0eWxlPSJzdG9w
-      LWNvbG9yOiNEOURERTEiIC8+DQogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjgwLjIzJSIgc3R5bGU9
-      InN0b3AtY29sb3I6I0M0Q0JEMiIgLz4NCiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3R5
-      bGU9InN0b3AtY29sb3I6I0JEQzRDQyIgLz4NCiAgICAgICAgICA8L2xpbmVhckdyYWRpZW50Pg0KICAg
-      ICAgICAgIDxyZWN0IHg9Ii0yNDkiIHk9Ii0xMDIiIHdpZHRoPSIxMjQ1IiBoZWlnaHQ9IjUwMCIgcng9
-      IjAiIHJ5PSIwIiBjbGFzcz0ic3QyIiAvPg0KICAgICAgICAgIDxnPg0KICAgICAgICAgICAgPGxpbmVh
-      ckdyYWRpZW50IHgxPSIxNDIuMTQ2NHB4IiB5MT0iLTE0Mi44MzAycHgiIHgyPSI5MjEuNzQzcHgiIHky
-      PSI1NjEuMzIyNHB4IiBncmFkaWVudHVuaXRzPSJ1c2Vyc3BhY2VvbnVzZSIgc3ByZWFkbWV0aG9kPSJw
-      YWQiIGlkPSJTVkdJRF82XyI+DQogICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMTEuMzMlIiBzdHls
-      ZT0ic3RvcC1jb2xvcjojRkVGRUZFIiAvPg0KICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjMxLjY3
-      JSIgc3R5bGU9InN0b3AtY29sb3I6I0Y1RjZGNyIgLz4NCiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0
-      PSI2NC4yNyUiIHN0eWxlPSJzdG9wLWNvbG9yOiNERUUxRTUiIC8+DQogICAgICAgICAgICAgIDxzdG9w
-      IG9mZnNldD0iMTAwJSIgc3R5bGU9InN0b3AtY29sb3I6I0JEQzRDQyIgLz4NCiAgICAgICAgICAgIDwv
-      bGluZWFyR3JhZGllbnQ+DQogICAgICAgICAgICA8cGF0aCBkPSJNMCwyOTUuM3YzNC4zYzEzMy4zLTIz
-      LjEsNDA0LjctNjQuMyw1NTItMTc4LjZDNjQ4LjcsNzYsOTEwLjksMTAuOSw5NDAtMjNsLTQ5Mi42LTIg
-      ICAgICAgQzMyMy4zLDE1NS41LDExNy4yLDI1Mi4zLDAsMjk1LjN6IiBjbGFzcz0ic3QzIiAvPg0KICAg
-      ICAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI0NTkuMzgzM3B4IiB5MT0iNzAuMDY2NnB4IiB4Mj0i
-      NjI5LjQ2MjhweCIgeTI9IjU2Ni44MzM5cHgiIGdyYWRpZW50dW5pdHM9InVzZXJzcGFjZW9udXNlIiBz
-      cHJlYWRtZXRob2Q9InBhZCIgaWQ9IlNWR0lEXzdfIj4NCiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0
-      PSIxMS4zMyUiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRUZFRkUiIC8+DQogICAgICAgICAgICAgIDxzdG9w
-      IG9mZnNldD0iNDIuNzIlIiBzdHlsZT0ic3RvcC1jb2xvcjojRTJFNUU4IiAvPg0KICAgICAgICAgICAg
-      ICA8c3RvcCBvZmZzZXQ9Ijc4LjcyJSIgc3R5bGU9InN0b3AtY29sb3I6I0M3Q0RENCIgLz4NCiAgICAg
-      ICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdHlsZT0ic3RvcC1jb2xvcjojQkRDNENDIiAvPg0K
-      ICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD4NCiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjQ1LDIy
-      NC41Vi0xMDJIOTc2LjlDODAxLDYzLTM0LjMsMzYwLjYtMjU4LDM2Ni40bC0zLDY2LjJDMjg1LjMsMzQ1
-      LjYsOTE2LjQsMjE4LjQsMTI0NSwyMjQuNXoiIGNsYXNzPSJzdDQiIC8+DQogICAgICAgICAgPC9nPg0K
-      ICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iNDkxLjExMjlweCIgeTE9IjI4My4wODgzcHgiIHgy
-      PSIyNTMuMTAxNXB4IiB5Mj0iODYuNzkwNHB4IiBncmFkaWVudHVuaXRzPSJ1c2Vyc3BhY2VvbnVzZSIg
-      c3ByZWFkbWV0aG9kPSJwYWQiIGlkPSJTVkdJRF84XyI+DQogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9
-      IjAlIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRkZGIiAvPg0KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0
-      PSIxMDAlIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRkZGO3N0b3Atb3BhY2l0eTowIiAvPg0KICAgICAg
-      ICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgICAgICAgPHBhdGggZD0iTTU4Mi03NEM1NDAuMS03LjEs
-      MzM4LDIyNC01LjQsMzA5LjFsLTU4LTExNC40YzIyLjYtOC44LDQ2LTE3LjIsNjguNC0yNS45ICAgICAg
-      Yzg1LjktMzMuMiwxNjIuMy03My41LDIyNi4yLTExOS4xYzI2LjYtMTksNTEuMy0zOS4yLDY3LjEtNjEu
-      N2M1LjUtNy44LDkuOC0xNS44LDEzLjMtMjMuOUw0NzgtNTcuMSAgICAgIGMtNy4zLDUuMy0xNCwxMC44
-      LTIwLjEsMTYuNkM0MzcuMy0yMS4xLDU5NS40LTk1LjQsNTgyLTc0eiIgY2xhc3M9InN0NSIgLz4NCiAg
-      ICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjYwNy42ODczcHgiIHkxPSIxNzIuNjQwNHB4IiB4Mj0i
-      NzkwLjU5MjJweCIgeTI9IjU1MS4wNjQ4cHgiIGdyYWRpZW50dW5pdHM9InVzZXJzcGFjZW9udXNlIiBz
-      cHJlYWRtZXRob2Q9InBhZCIgaWQ9IlNWR0lEXzlfIj4NCiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0i
-      MCUiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkZGRkYiIC8+DQogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9
-      Ijg1LjQyJSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRjtzdG9wLW9wYWNpdHk6MC4xNDU4IiAvPg0K
-      ICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRkZGO3N0
-      b3Atb3BhY2l0eTowIiAvPg0KICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgICAgICAgPHBh
-      dGggZD0iTTE1MjYsMzE1Yy01NDUtNDUtODMyLjktNy41LTEwOTksMjVDMzQuNSwzODcuOS04Ni40LDQy
-      Ni40LTE1MSw0NTVsLTQyLTM5LjcgICAgICBDMjEuNywyOTguNyw2MDUuNCwxOTUuNSw3ODguNCwxNTcu
-      MmMyMDIuOC00Mi40LDM4Ni45LTEwNi45LDUzNy43LTE4Ny4xTDE0NDksMTRDMTM0OC4yLDg5LjQsMTY4
-      NC41LDMyOC4xLDE1MjYsMzE1eiIgY2xhc3M9InN0NiIgLz4NCiAgICAgICAgPC9nPg0KICAgICAgPC9n
-      Pg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+Cw==
-    </value>
-  </data>
-  <data name="peLogo.EditValue" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.1" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIwLjEsIFZlcnNpb249MjAuMS4w
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Nzk4NjhiODE0N2I1ZWFlNAUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKAZAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAxNTQgMjciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
-        LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
-        YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
-        IDE1NCAyNyI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuYWx0UmVke2ZpbGw6I0QxMUMxQzt9
-        CgkuYWx0QmxhY2t7ZmlsbDojNDA0MDQxO30KCS5hbHRZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5zdDB7
-        b3BhY2l0eTowLjY7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMzYuMSw0LjljLTEuNywwLTMuMiwwLjIt
-        NC40LDAuNFYyMmMwLjgsMC4xLDIuMSwwLjIsMy43LDAuMmMzLDAsNS4zLTAuNyw2LjktMi4xYzEuMy0x
-        LjEsMi42LTMuMywyLjYtNyAgYzAtMy4xLTEtNS4yLTIuNi02LjVDNDAuOSw1LjQsMzksNC45LDM2LjEs
-        NC45eiBNMzYuMiwxOS42Yy0wLjUsMC0wLjksMC0xLjMtMC4xVjcuNmMwLjQtMC4xLDAuOC0wLjIsMS41
-        LTAuMmMzLDAsNC45LDEuOSw0LjksNS44ICBDNDEuNCwxNy43LDM5LjQsMTkuNiwzNi4yLDE5LjZ6IiBj
-        bGFzcz0iYWx0QmxhY2siIC8+DQogIDxwYXRoIGQ9Ik01Mi4yLDkuNWMtMy42LDAtNS42LDMtNS42LDYu
-        NmMwLDMuOSwyLjIsNi4yLDYsNi4yYzEuNSwwLDMtMC4zLDQtMC43bC0wLjUtMi4zYy0wLjgsMC4zLTEu
-        OCwwLjUtMywwLjUgIGMtMS43LDAtMy4zLTAuOC0zLjMtM2g3LjRjMC4xLTAuNCwwLjEtMC44LDAuMS0x
-        LjNDNTcuMSwxMS42LDU1LjIsOS41LDUyLjIsOS41eiBNNDkuNywxNC42YzAuMS0xLjIsMC44LTIuOSwy
-        LjQtMi45ICBzMi4xLDEuNiwyLjEsMi45SDQ5Ljd6IiBjbGFzcz0iYWx0QmxhY2siIC8+DQogIDxwYXRo
-        IGQ9Ik02Ni4zLDkuN2wtMS41LDZjLTAuMywxLjEtMC41LDIuMS0wLjcsMy4xSDY0Yy0wLjItMS4xLTAu
-        NS0yLjEtMC43LTMuMWwtMS42LTZoLTMuNmw0LjIsMTIuNGgzLjIgIGw0LjItMTIuNEM2OS43LDkuNyw2
-        Ni4zLDkuNyw2Ni4zLDkuN3oiIGNsYXNzPSJhbHRCbGFjayIgLz4NCiAgPHBhdGggZD0iTTMuNiwyMC40
-        QzMsMjEuMSwyLDIyLjksMiwyMy4ydjAuNUMyLDI0LjQsMi42LDI1LDMuMywyNWgyMC40YzAuOCwwLDEu
-        My0wLjYsMS4zLTEuM1Y4ICBDMTQsOS45LDcuMSwxNi4xLDMuNiwyMC40eiIgY2xhc3M9ImFsdEJsYWNr
-        IiAvPg0KICA8cG9seWdvbiBwb2ludHM9Ijc0LjksMTQuNiA4MC41LDE0LjYgODAuNSwxMS45IDc0Ljks
-        MTEuOSA3NC45LDcuOCA4MC44LDcuOCA4MC44LDUgNzEuNiw1IDcxLjYsMjIuMSA4MS4yLDIyLjEgICA4
-        MS4yLDE5LjMgNzQuOSwxOS4zICIgY2xhc3M9ImFsdFJlZCIgLz4NCiAgPHBhdGggZD0iTTkzLjYsOS43
-        aC0zLjVMODksMTEuOWMtMC4zLDAuNi0wLjYsMS4zLTAuOSwySDg4Yy0wLjMtMC42LTAuNi0xLjMtMS0y
-        bC0xLjEtMi4yaC0zLjZsMy42LDYuMUw4Mi4xLDIyaDMuNSAgbDEuMS0yLjRjMC4zLTAuNiwwLjYtMS4z
-        LDAuOS0yaDAuMWMwLjMsMC43LDAuNiwxLjMsMC45LDJsMS4yLDIuNGgzLjZsLTMuNy02LjRMOTMuNiw5
-        Ljd6IiBjbGFzcz0iYWx0UmVkIiAvPg0KICA8cGF0aCBkPSJNMTAxLjksOS41Yy0xLjYsMC0yLjksMC43
-        LTMuNiwyaC0wLjFMOTgsOS44aC0yLjljMC4xLDEuMSwwLjEsMi40LDAuMSw0djEzLjNoMy4zdi02LjJo
-        MC4xICBjMC41LDAuOCwxLjYsMS40LDMsMS40YzIuNSwwLDUuMS0yLDUuMS02LjVDMTA2LjYsMTIsMTA0
-        LjYsOS41LDEwMS45LDkuNXogTTEwMC43LDE5LjdjLTEuMSwwLTIuMi0wLjgtMi4yLTIuN3YtMi4zICBj
-        MC0xLjUsMS0yLjcsMi4zLTIuN2MxLjYsMCwyLjQsMS42LDIuNCwzLjhDMTAzLjMsMTguMSwxMDIuNCwx
-        OS43LDEwMC43LDE5Ljd6IiBjbGFzcz0iYWx0UmVkIiAvPg0KICA8cGF0aCBkPSJNMTExLjksMTEuOUwx
-        MTEuOSwxMS45bC0wLjItMi4xaC0yLjhjMC4xLDEuMSwwLjEsMi40LDAuMSwzLjl2OC41aDMuM3YtNi40
-        YzAtMi4xLDEuMS0zLjEsMi42LTMuMSAgYzAuMywwLDAuNiwwLDAuOCwwLjFWOS41Yy0wLjItMC4xLTAu
-        NS0wLjEtMC44LTAuMUMxMTMuOCw5LjUsMTEyLjQsMTAuMywxMTEuOSwxMS45eiIgY2xhc3M9ImFsdFJl
-        ZCIgLz4NCiAgPHBhdGggZD0iTTEyMi41LDkuNWMtMy42LDAtNS42LDMtNS42LDYuNmMwLDMuOSwyLjIs
-        Ni4yLDYsNi4yYzEuNSwwLDMtMC4zLDQtMC43bC0wLjUtMi4zYy0wLjgsMC4zLTEuOCwwLjUtMywwLjUg
-        IGMtMS43LDAtMy4zLTAuOC0zLjMtM2g3LjRjMC4xLTAuNCwwLjEtMC44LDAuMS0xLjNDMTI3LjUsMTEu
-        NiwxMjUuNSw5LjUsMTIyLjUsOS41eiBNMTE5LjksMTQuNmMwLjEtMS4yLDAuOC0yLjksMi40LTIuOSAg
-        czIuMSwxLjYsMi4xLDIuOUgxMTkuOXoiIGNsYXNzPSJhbHRSZWQiIC8+DQogIDxwYXRoIGQ9Ik0xMzQu
-        MiwxNC42Yy0xLjQtMC42LTEuOS0xLTEuOS0xLjdzMC41LTEuMSwxLjUtMS4xYzAuOSwwLDEuOCwwLjQs
-        Mi40LDAuNmwwLjYtMi4zYy0wLjctMC40LTEuOC0wLjctMy0wLjcgIGMtMi43LDAtNC42LDEuNy00LjYs
-        My45YzAsMS40LDAuOCwyLjcsMy4xLDMuNmMxLjQsMC42LDEuNywxLDEuNywxLjdzLTAuNSwxLjItMS43
-        LDEuMmMtMSwwLTIuMi0wLjUtMi45LTAuOGwtMC42LDIuNCAgYzAuOCwwLjUsMi4xLDAuOCwzLjUsMC44
-        YzMuMSwwLDQuOS0xLjUsNC45LTMuOUMxMzcuNCwxNi43LDEzNi40LDE1LjUsMTM0LjIsMTQuNnoiIGNs
-        YXNzPSJhbHRSZWQiIC8+DQogIDxwYXRoIGQ9Ik0xNDQuMSwxNC42Yy0xLjQtMC42LTEuOS0xLTEuOS0x
-        LjdzMC41LTEuMSwxLjUtMS4xYzAuOSwwLDEuOCwwLjQsMi40LDAuNmwwLjYtMi4zYy0wLjctMC40LTEu
-        OC0wLjctMy0wLjcgIGMtMi43LDAtNC42LDEuNy00LjYsMy45YzAsMS40LDAuOCwyLjcsMy4xLDMuNmMx
-        LjQsMC42LDEuNywxLDEuNywxLjdzLTAuNSwxLjItMS43LDEuMmMtMSwwLTIuMi0wLjUtMi45LTAuOGwt
-        MC42LDIuNCAgYzAuOCwwLjUsMi4xLDAuOCwzLjUsMC44YzMuMSwwLDQuOS0xLjUsNC45LTMuOUMxNDcu
-        MiwxNi43LDE0Ni4yLDE1LjUsMTQ0LjEsMTQuNnoiIGNsYXNzPSJhbHRSZWQiIC8+DQogIDxwYXRoIGQ9
-        Ik0yMy44LDJIMy4zQzIuNiwyLDIsMi42LDIsMy4zVjE2YzQuMS00LjIsMTEuMy05LjQsMjIuMi0xMC42
-        YzAuMywwLDAuOC0wLjIsMC44LTFWMy4zICBDMjUuMSwyLjYsMjQuNSwyLDIzLjgsMnoiIGNsYXNzPSJh
-        bHRSZWQiIC8+DQogIDxnIGNsYXNzPSJzdDAiPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iNzQuOSwxNC42
-        IDgwLjUsMTQuNiA4MC41LDExLjkgNzQuOSwxMS45IDc0LjksNy44IDgwLjgsNy44IDgwLjgsNSA3MS42
-        LDUgNzEuNiwyMi4xIDgxLjIsMjIuMSAgICA4MS4yLDE5LjMgNzQuOSwxOS4zICAiIGNsYXNzPSJhbHRZ
-        ZWxsb3ciIC8+DQogICAgPHBhdGggZD0iTTkzLjYsOS43aC0zLjVMODksMTEuOWMtMC4zLDAuNi0wLjYs
-        MS4zLTAuOSwySDg4Yy0wLjMtMC42LTAuNi0xLjMtMS0ybC0xLjEtMi4yaC0zLjZsMy42LDYuMUw4Mi4x
-        LDIyICAgaDMuNWwxLjEtMi40YzAuMy0wLjYsMC42LTEuMywwLjktMmgwLjFjMC4zLDAuNywwLjYsMS4z
-        LDAuOSwybDEuMiwyLjRoMy42bC0zLjctNi40TDkzLjYsOS43eiIgY2xhc3M9ImFsdFllbGxvdyIgLz4N
-        CiAgICA8cGF0aCBkPSJNMTAxLjksOS41Yy0xLjYsMC0yLjksMC43LTMuNiwyaC0wLjFMOTgsOS44aC0y
-        LjljMC4xLDEuMSwwLjEsMi40LDAuMSw0djEzLjNoMy4zdi02LjJoMC4xICAgYzAuNSwwLjgsMS42LDEu
-        NCwzLDEuNGMyLjUsMCw1LjEtMiw1LjEtNi41QzEwNi42LDEyLDEwNC42LDkuNSwxMDEuOSw5LjV6IE0x
-        MDAuNywxOS43Yy0xLjEsMC0yLjItMC44LTIuMi0yLjd2LTIuMyAgIGMwLTEuNSwxLTIuNywyLjMtMi43
-        YzEuNiwwLDIuNCwxLjYsMi40LDMuOEMxMDMuMywxOC4xLDEwMi40LDE5LjcsMTAwLjcsMTkuN3oiIGNs
-        YXNzPSJhbHRZZWxsb3ciIC8+DQogICAgPHBhdGggZD0iTTExMS45LDExLjlMMTExLjksMTEuOWwtMC4y
-        LTIuMWgtMi44YzAuMSwxLjEsMC4xLDIuNCwwLjEsMy45djguNWgzLjN2LTYuNGMwLTIuMSwxLjEtMy4x
-        LDIuNi0zLjEgICBjMC4zLDAsMC42LDAsMC44LDAuMVY5LjVjLTAuMi0wLjEtMC41LTAuMS0wLjgtMC4x
-        QzExMy44LDkuNSwxMTIuNCwxMC4zLDExMS45LDExLjl6IiBjbGFzcz0iYWx0WWVsbG93IiAvPg0KICAg
-        IDxwYXRoIGQ9Ik0xMjIuNSw5LjVjLTMuNiwwLTUuNiwzLTUuNiw2LjZjMCwzLjksMi4yLDYuMiw2LDYu
-        MmMxLjUsMCwzLTAuMyw0LTAuN2wtMC41LTIuMyAgIGMtMC44LDAuMy0xLjgsMC41LTMsMC41Yy0xLjcs
-        MC0zLjMtMC44LTMuMy0zaDcuNGMwLjEtMC40LDAuMS0wLjgsMC4xLTEuM0MxMjcuNSwxMS42LDEyNS41
-        LDkuNSwxMjIuNSw5LjV6IE0xMTkuOSwxNC42ICAgYzAuMS0xLjIsMC44LTIuOSwyLjQtMi45czIuMSwx
-        LjYsMi4xLDIuOUgxMTkuOXoiIGNsYXNzPSJhbHRZZWxsb3ciIC8+DQogICAgPHBhdGggZD0iTTEzNC4y
-        LDE0LjZjLTEuNC0wLjYtMS45LTEtMS45LTEuN3MwLjUtMS4xLDEuNS0xLjFjMC45LDAsMS44LDAuNCwy
-        LjQsMC42bDAuNi0yLjMgICBjLTAuNy0wLjQtMS44LTAuNy0zLTAuN2MtMi43LDAtNC42LDEuNy00LjYs
-        My45YzAsMS40LDAuOCwyLjcsMy4xLDMuNmMxLjQsMC42LDEuNywxLDEuNywxLjdzLTAuNSwxLjItMS43
-        LDEuMiAgIGMtMSwwLTIuMi0wLjUtMi45LTAuOGwtMC42LDIuNGMwLjgsMC41LDIuMSwwLjgsMy41LDAu
-        OGMzLjEsMCw0LjktMS41LDQuOS0zLjlDMTM3LjQsMTYuNywxMzYuNCwxNS41LDEzNC4yLDE0LjZ6IiBj
-        bGFzcz0iYWx0WWVsbG93IiAvPg0KICAgIDxwYXRoIGQ9Ik0xNDQuMSwxNC42Yy0xLjQtMC42LTEuOS0x
-        LTEuOS0xLjdzMC41LTEuMSwxLjUtMS4xYzAuOSwwLDEuOCwwLjQsMi40LDAuNmwwLjYtMi4zICAgYy0w
-        LjctMC40LTEuOC0wLjctMy0wLjdjLTIuNywwLTQuNiwxLjctNC42LDMuOWMwLDEuNCwwLjgsMi43LDMu
-        MSwzLjZjMS40LDAuNiwxLjcsMSwxLjcsMS43cy0wLjUsMS4yLTEuNywxLjIgICBjLTEsMC0yLjItMC41
-        LTIuOS0wLjhsLTAuNiwyLjRjMC44LDAuNSwyLjEsMC44LDMuNSwwLjhjMy4xLDAsNC45LTEuNSw0Ljkt
-        My45QzE0Ny4yLDE2LjcsMTQ2LjIsMTUuNSwxNDQuMSwxNC42eiIgY2xhc3M9ImFsdFllbGxvdyIgLz4N
-        CiAgICA8cGF0aCBkPSJNMjMuOCwySDMuM0MyLjYsMiwyLDIuNiwyLDMuM1YxNmM0LjEtNC4yLDExLjMt
-        OS40LDIyLjItMTAuNmMwLjMsMCwwLjgtMC4yLDAuOC0xVjMuMyAgIEMyNS4xLDIuNiwyNC41LDIsMjMu
-        OCwyeiIgY2xhc3M9ImFsdFllbGxvdyIgLz4NCiAgPC9nPg0KICA8cGF0aCBkPSJNMTUwLDdjLTEuMSww
-        LTIsMC45LTIsMnMwLjksMiwyLDJzMi0wLjksMi0yUzE1MS4xLDcsMTUwLDd6IE0xNTAsMTAuN2MtMC45
-        LDAtMS43LTAuOC0xLjctMS43ICBzMC44LTEuNywxLjctMS43czEuNywwLjgsMS43LDEuN1MxNTAuOSwx
-        MC43LDE1MCwxMC43eiIgY2xhc3M9ImFsdFJlZCIgLz4NCiAgPHBhdGggZD0iTTE1MS4xLDEwaC0wLjVs
-        LTAuMy0wLjVjMCwwLDAtMC4xLTAuMS0wLjFjMCwwLDAtMC4xLTAuMS0wLjFjMCwwLDAsMC0wLjEtMC4x
-        YzAsMC0wLjEsMC0wLjEsMGgtMC4xVjEwaC0wLjUgIFY3LjloMC44YzAuNSwwLDAuOCwwLjIsMC44LDAu
-        NmMwLDAuMSwwLDAuMSwwLDAuMnMtMC4xLDAuMS0wLjEsMC4ycy0wLjEsMC4xLTAuMSwwLjFjLTAuMSww
-        LTAuMSwwLjEtMC4yLDAuMXYwYzAsMCwwLjEsMCwwLjEsMCAgYzAsMCwwLjEsMCwwLjEsMC4xczAuMSww
-        LjEsMC4xLDAuMWMwLDAsMCwwLjEsMC4xLDAuMUwxNTEuMSwxMHogTTE0OS44LDguMnYwLjZoMC4yYzAu
-        MSwwLDAuMiwwLDAuMi0wLjFjMC4xLTAuMSwwLjEtMC4xLDAuMS0wLjIgIGMwLTAuMi0wLjEtMC4zLTAu
-        My0wLjNIMTQ5Ljh6IiBjbGFzcz0iYWx0UmVkIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0
-        aCBkPSJNMTUwLDdjLTEuMSwwLTIsMC45LTIsMnMwLjksMiwyLDJzMi0wLjksMi0yUzE1MS4xLDcsMTUw
-        LDd6IE0xNTAsMTAuN2MtMC45LDAtMS43LTAuOC0xLjctMS43ICAgczAuOC0xLjcsMS43LTEuN3MxLjcs
-        MC44LDEuNywxLjdTMTUwLjksMTAuNywxNTAsMTAuN3oiIGNsYXNzPSJhbHRZZWxsb3ciIC8+DQogICAg
-        PHBhdGggZD0iTTE1MS4xLDEwaC0wLjVsLTAuMy0wLjVjMCwwLDAtMC4xLTAuMS0wLjFjMCwwLDAtMC4x
-        LTAuMS0wLjFjMCwwLDAsMC0wLjEtMC4xYzAsMC0wLjEsMC0wLjEsMGgtMC4xVjEwICAgaC0wLjVWNy45
-        aDAuOGMwLjUsMCwwLjgsMC4yLDAuOCwwLjZjMCwwLjEsMCwwLjEsMCwwLjJzLTAuMSwwLjEtMC4xLDAu
-        MnMtMC4xLDAuMS0wLjEsMC4xYy0wLjEsMC0wLjEsMC4xLTAuMiwwLjF2MCAgIGMwLDAsMC4xLDAsMC4x
-        LDBjMCwwLDAuMSwwLDAuMSwwLjFzMC4xLDAuMSwwLjEsMC4xYzAsMCwwLDAuMSwwLjEsMC4xTDE1MS4x
-        LDEweiBNMTQ5LjgsOC4ydjAuNmgwLjJjMC4xLDAsMC4yLDAsMC4yLTAuMSAgIGMwLjEtMC4xLDAuMS0w
-        LjEsMC4xLTAuMmMwLTAuMi0wLjEtMC4zLTAuMy0wLjNIMTQ5Ljh6IiBjbGFzcz0iYWx0WWVsbG93IiAv
-        Pg0KICA8L2c+DQo8L3N2Zz4L
-</value>
-  </data>
-</root>

+ 28 - 29
FactoryTool/FactoryTool/SplashScreen1.Designer.cs → FactoryTool/FactoryTool/WelcomeScreen.Designer.cs

@@ -1,6 +1,6 @@
 namespace FactoryTool
 {
-    partial class SplashScreen1
+    partial class WelcomeScreen
     {
         /// <summary>
         /// Required designer variable.
@@ -28,49 +28,38 @@
         /// </summary>
 		private void InitializeComponent()
         {
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen1));
-            this.progressBarControl = new DevExpress.XtraEditors.MarqueeProgressBarControl();
             this.labelCopyright = new DevExpress.XtraEditors.LabelControl();
             this.labelStatus = new DevExpress.XtraEditors.LabelControl();
             this.peImage = new DevExpress.XtraEditors.PictureEdit();
             this.peLogo = new DevExpress.XtraEditors.PictureEdit();
-            ((System.ComponentModel.ISupportInitialize)(this.progressBarControl.Properties)).BeginInit();
+            this.progressBarControl = new DevExpress.XtraEditors.MarqueeProgressBarControl();
             ((System.ComponentModel.ISupportInitialize)(this.peImage.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.peLogo.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.progressBarControl.Properties)).BeginInit();
             this.SuspendLayout();
             // 
-            // progressBarControl
-            // 
-            this.progressBarControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.progressBarControl.EditValue = 0;
-            this.progressBarControl.Location = new System.Drawing.Point(24, 232);
-            this.progressBarControl.Name = "progressBarControl";
-            this.progressBarControl.Size = new System.Drawing.Size(402, 12);
-            this.progressBarControl.TabIndex = 5;
-            // 
             // labelCopyright
             // 
             this.labelCopyright.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
-            this.labelCopyright.Location = new System.Drawing.Point(24, 287);
+            this.labelCopyright.Location = new System.Drawing.Point(24, 265);
             this.labelCopyright.Name = "labelCopyright";
-            this.labelCopyright.Size = new System.Drawing.Size(47, 13);
+            this.labelCopyright.Size = new System.Drawing.Size(52, 14);
             this.labelCopyright.TabIndex = 6;
             this.labelCopyright.Text = "Copyright";
             // 
             // labelStatus
             // 
-            this.labelStatus.Location = new System.Drawing.Point(24, 215);
+            this.labelStatus.Location = new System.Drawing.Point(24, 198);
             this.labelStatus.Margin = new System.Windows.Forms.Padding(3, 3, 3, 1);
             this.labelStatus.Name = "labelStatus";
-            this.labelStatus.Size = new System.Drawing.Size(50, 13);
+            this.labelStatus.Size = new System.Drawing.Size(55, 14);
             this.labelStatus.TabIndex = 7;
             this.labelStatus.Text = "Starting...";
             // 
             // peImage
             // 
             this.peImage.Dock = System.Windows.Forms.DockStyle.Top;
-            this.peImage.EditValue = ((object)(resources.GetObject("peImage.EditValue")));
+            this.peImage.EditValue = global::FactoryTool.Properties.Resources.logo;
             this.peImage.Location = new System.Drawing.Point(1, 1);
             this.peImage.Name = "peImage";
             this.peImage.Properties.AllowFocused = false;
@@ -80,15 +69,15 @@
             this.peImage.Properties.ShowMenu = false;
             this.peImage.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Stretch;
             this.peImage.Properties.SvgImageColorizationMode = DevExpress.Utils.SvgImageColorizationMode.None;
-            this.peImage.Size = new System.Drawing.Size(448, 200);
+            this.peImage.Size = new System.Drawing.Size(463, 191);
             this.peImage.TabIndex = 9;
             // 
             // peLogo
             // 
-            this.peLogo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            this.peLogo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
-            this.peLogo.EditValue = ((object)(resources.GetObject("peLogo.EditValue")));
-            this.peLogo.Location = new System.Drawing.Point(279, 267);
+            this.peLogo.EditValue = global::FactoryTool.Properties.Resources.minlogo;
+            this.peLogo.Location = new System.Drawing.Point(340, 246);
             this.peLogo.Name = "peLogo";
             this.peLogo.Properties.AllowFocused = false;
             this.peLogo.Properties.Appearance.BackColor = System.Drawing.Color.Transparent;
@@ -96,25 +85,35 @@
             this.peLogo.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
             this.peLogo.Properties.ShowMenu = false;
             this.peLogo.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Squeeze;
-            this.peLogo.Size = new System.Drawing.Size(158, 42);
+            this.peLogo.Size = new System.Drawing.Size(112, 33);
             this.peLogo.TabIndex = 8;
             // 
-            // SplashScreen1
+            // progressBarControl
+            // 
+            this.progressBarControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.progressBarControl.EditValue = 0;
+            this.progressBarControl.Location = new System.Drawing.Point(24, 214);
+            this.progressBarControl.Name = "progressBarControl";
+            this.progressBarControl.Size = new System.Drawing.Size(417, 11);
+            this.progressBarControl.TabIndex = 5;
+            // 
+            // WelcomeScreen
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(450, 320);
+            this.ClientSize = new System.Drawing.Size(465, 295);
             this.Controls.Add(this.peImage);
             this.Controls.Add(this.peLogo);
             this.Controls.Add(this.labelStatus);
             this.Controls.Add(this.labelCopyright);
             this.Controls.Add(this.progressBarControl);
-            this.Name = "SplashScreen1";
+            this.Name = "WelcomeScreen";
             this.Padding = new System.Windows.Forms.Padding(1);
             this.Text = "SplashScreen1";
-            ((System.ComponentModel.ISupportInitialize)(this.progressBarControl.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.peImage.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.peLogo.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.progressBarControl.Properties)).EndInit();
             this.ResumeLayout(false);
             this.PerformLayout();
 

+ 4 - 3
FactoryTool/FactoryTool/SplashScreen1.cs → FactoryTool/FactoryTool/WelcomeScreen.cs

@@ -9,12 +9,13 @@ using System.Windows.Forms;
 
 namespace FactoryTool
 {
-    public partial class SplashScreen1 : SplashScreen
+    public partial class WelcomeScreen : SplashScreen
     {
-        public SplashScreen1()
+        public WelcomeScreen()
         {
             InitializeComponent();
-            this.labelCopyright.Text = "Copyright © 1998-" + DateTime.Now.Year.ToString();
+            //this.labelCopyright.Text = "Copyright © 1998-" + DateTime.Now.Year.ToString();
+            this.labelCopyright.Text = "Copyright ©2000-2020\nMoka Technology (Guangdong) Co., Ltd All Rights reserved.";
         }
 
         #region Overrides

+ 120 - 0
FactoryTool/FactoryTool/WelcomeScreen.resx

@@ -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>